lib-qliblisted
Install: claude install-skill howard-lynn-ye/fin-skills
# qlib
Microsoft's AI-oriented quant research platform — expression engine, `Alpha158`/`Alpha360` feature
sets, a 20+ model zoo, `qrun` YAML workflows. **Its default label is leakage-safe; its default
preprocessing is not, and its official dataset is switched off.**
| | |
|---|---|
| pip / import | **`pyqlib`**, imported as `qlib`. The PyPI package named `qlib` is an unrelated abandoned 2018 package |
| Version | 0.9.7 (2025-08-15) while `microsoft/qlib` was pushed 2026-09-02 — **packaging lags the repo by ~12 months** |
| Licence | MIT (PyPI classifier + GitHub SPDX) |
| Python | `requires_python >=3.8.0`, but wheels are **cp38–cp312 only with NO sdist** — `pip install pyqlib` **fails outright on 3.13+** |
| Status | 48,285★, 301 open issues. Windows wheels exist for cp310/311/312 (`win_amd64`) |
## The trap that costs you money
**`ZScoreNorm` leaks your test set into training, and it is silent.** From
`qlib/contrib/data/handler.py`:
```python
_DEFAULT_INFER_PROCESSORS = [
{"class": "ProcessInf"},
{"class": "ZScoreNorm"}, # time-series z-score, fit on [fit_start_time, fit_end_time]
{"class": "Fillna"},
]
```
`ZScoreNorm` is a **time-series** normalizer fit over `[fit_start_time, fit_end_time]`. Qlib forces
you to pass those (`check_transform_proc` asserts non-None) but does nothing to stop you passing the
whole sample — and every tutorial that sets `fit_end_time` to the end of the data has **leaked
test-set moments into training features**. **Set both