Releases: VernonOY/qtype
qtype v0.1.2 — bilingual README
Documentation release: bilingual README. No source code changes from v0.1.1.
What changed
- 🌏 README is now bilingual: `README.md` (English, GitHub default) + `README.zh.md` (Simplified Chinese, full translation)
- Each file has a language switcher at the top — `English | 简体中文` and `English | 简体中文` respectively
- The Chinese README is a content-equivalent translation, hand-crafted, not auto-translated
What did NOT change
- No modifications to `src/qtype/` — runtime behavior identical to v0.1.0/v0.1.1
- All 5 rules (QT001-QT005) work the same
- CLI commands and Python SDK API unchanged
- CHANGELOG.md stays English-only (historical/technical content, low translation value)
- LICENSE stays in canonical MIT English (legal requirement)
Notes
If you installed v0.1.0 or v0.1.1 and just want to read the docs in Chinese, you don't need to upgrade — visit README.zh.md directly on GitHub.
qtype v0.1.1 — CI fix release
CI fix release. No source code or runtime behavior changes from v0.1.0.
What changed
v0.1.0 was tagged on a commit whose GitHub Actions CI workflow failed:
- `tests/e2e/test_cli.py` was committed with stale formatting (forgot to re-run `ruff format` after a late edit)
- `uv.lock` was gitignored, so CI could resolve to different tool versions than local dev
v0.1.1 fixes both:
- Reformats the e2e test file
- Commits `uv.lock` so CI uses identical dependency versions to local dev
- Updates `test_e2e_version_flag` to read `version` dynamically (so future version bumps don't break the test)
What did NOT change
- No source code modifications in `src/qtype/`
- All 5 rules (QT001-QT005) behave identically to v0.1.0
- CLI commands (check / rules / init) behave identically
- Python SDK API unchanged
If you installed v0.1.0 and it works for you, you do not need to upgrade. v0.1.1 only matters if you care about the CI badge being green.
CI status
v0.1.0: ❌ failing (stale format)
v0.1.1: ✅ passing
qtype v0.1.0 — first release
First release of qtype — a Python AST-based static analyzer for quantitative trading code.
What it catches
| ID | Name | Severity | Detects |
|---|---|---|---|
| QT001 | look-ahead-bias | error | `.shift(N)` with negative integer literal |
| QT002 | future-function | error | calls to `lead`, `look_forward`, `peek_future`, `forward_fill_future` |
| QT003 | survival-bias | warning | universe builders missing ST/suspended/delisted filters |
| QT004 | alignment-error | warning | `.merge()` calls without explicit join key |
| QT005 | return-offset | warning | `pct_change()` assigned to forward-named variable |
Try it
```bash
pip install qtype
qtype check my_strategy.py
```
Or with uv:
```bash
uv add qtype
```
What's in v0.1
- 13 commits, 1333 lines added
- 45 tests passing (38 unit + 7 e2e), 96.12% line coverage
- 3-layer architecture (core / cli / no server in v0.1)
- Pluggable Rule ABC with internal ALL_RULES registry
- click + rich CLI with json/rich output formats and `--rules` filtering
- Python SDK: `from qtype import QtypeAnalyzer, Violation`
- PEP 561 typed package (ships `py.typed`)
- CI: ruff check + ruff format + mypy --strict + pytest with coverage gate
Roadmap
- v0.2: `# noqa: QTNNN` inline suppression + `.qtype.toml` config + `--fix` autofix
- v0.3: GitHub Action wrapper + ruff plugin compatibility
- v0.4: LLM-assisted suggestions for missed rules
Part of `alpha-kit`
qtype is the first tool in alpha-kit — a polyrepo of focused, single-purpose quant research tools. Each tool ships independently.