← ClaudeAtlas

lib-qliblisted

Microsoft Qlib (pip name pyqlib, imported as qlib) ships Alpha158/Alpha360 and a default normalizer that leaks your test set into training, silently. TRIGGER - qlib, pyqlib, "pip install pyqlib", qlib.init, provider_uri, REG_CN, Alpha158, Alpha360, DataHandlerLP, ZScoreNorm, CSZScoreNorm, fit_start_time, fit_end_time, qrun, workflow_config yaml, "qlib_data --region cn", LABEL0, "Ref($close, -2)", qlib expression engine, qlib .bin dataset, investment_data qlib_bin. Wheels are cp38-cp312 with no sdist so it fails outright on Python 3.13+, packaging lags the repo by about a year, and the official China dataset was switched off. SKIP for lib-alphalens, which is the skill for scoring a factor you already have. SKIP when the question is WHICH library to choose, or names no library at all - both belong to the domain skill.
howard-lynn-ye/fin-skills · ★ 1 · AI & Automation · score 77
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