Skip to content

Releases: VernonOY/qtype

qtype v0.1.2 — bilingual README

07 Apr 10:03

Choose a tag to compare

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

07 Apr 09:55

Choose a tag to compare

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:

  1. Reformats the e2e test file
  2. Commits `uv.lock` so CI uses identical dependency versions to local dev
  3. 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

07 Apr 09:30

Choose a tag to compare

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.