Модель не получилась с первого раза. Было около семи крупных переделок плюс десятки мелких экспериментов. Главный момент — апрель 2026: обнаружился баг с «подглядыванием в будущее» (look-ahead leakage): модель тайно использовала данные, которых в реальности в этот момент знать не могла, и от этого все исторические метрики были завышены на +5..+10 пунктов Sharpe. После фикса честная цифра оказалась ниже репортированной в ~10 раз. Пришлось переобучить с нуля. С 15.05.2026 продукт уходит в песочницу как Astrobot v1.0 — уже без скрытых дырок.
| Итерация | Суть | Итог |
|---|---|---|
| v1-legacy | Binary classifier + best.json (look-ahead leakage) | Инфлированные метрики, RESEARCH_ONLY |
| v1.1 — v4.0 | Удалён best.json, переход на regression + vote aggregates + raw indicators + macro | Sharpe 1.31 → 3.25 (pre-fix) |
| v5.0 | Расширение universe 11 → 26 тикеров. Long-only, 31 фича | Sharpe 3.66 test (pre-fix, inflated) |
| v1.5 — v1.7 stack | D_10/26 priority rotation + shared-pool cb=30% + hurdle 12bps + kelly_vol long-only. Deployed DRY_RUN | Reported Sharpe 5.06; honest Sharpe −0.62 после look-ahead fix. Retired |
| Look-ahead fix | 🚨 Look-ahead bug в simulate_D обнаружен. Все исторические KPI до этого inflated на +5..+10 Sharpe. simulate_D_no_lookahead добавлена | Reset: re-eval всех stack'ов через honest sim |
| v6.0 | Retrain на signed-position data, long+short capability, 35 features (31 v5 + 4 short-track vote aggregates), kelly_vol L+S, hurdle 24 bps sym | TEST Sharpe +2.14 (cost 0.0006), +1.23..+1.70 realistic. Superseded v7.0 |
| v7.0 | Top-50 raw_individual (не top-100 by Sharpe), 73 features (replace vote aggregates на 50 raw {sid}_position), n_slots=10 fixed, hurdle 24 bps sym, WARMUP=2000 | TEST Sharpe +2.93 ± 0.45 / CAGR +31% / MaxDD −9% (multi-seed) |
| v7.0 rev1 hurdle | Asym hurdle 24L/8S (replace sym 24). Single-seed evidence | Overturned в тот же день — single-seed lottery |
| v7.0 rev2 | Grand sweep 440 sims × 5 seeds: 18L/12S eps=0.10 выигрывает в 9/10 годов, bull +6.88 vs +4.88 baseline Sharpe, bear +3.33 vs +2.88. EPS_ACTIVE 0.01 → 0.10. Production config | Final v1.0 architecture |
GO — попали в v1.7 stack (retired) или ortho перенесены в v7.0. v7.0 retrain (top-50 raw_individual) сделал большинство этих ortho к новому artifact'у — повторный sweep на v7.0 был только для hurdle (grand sweep 440 sims).
| Эксп. | Тема | Статус |
|---|---|---|
| 1 | Kelly + vol-target (long-only) | NO-GO |
| 2 | Uncertainty fix (σ_rescaled) | DONE |
| 3 | Purged k-fold CV + uniqueness weights | HOLD |
| 4 | Cross-sectional ranks | NO-GO |
| 5 | Train без 2022 | OK |
| 6 | Horizon sweep / target IC audit | DIAG |
| 7 | Qlib alpha158 (40 → 20 фич) поверх 31-feat baseline | NO-GO |
| 12 | Target switch ensemble → price | NO-GO |
| 13a | Sizer μ-rescale | NO-GO |
| 14 | Strategy universe audit | NO-GO |
| 15a | Oracle top-K trace | GO |
| 15b | Mixture-of-Experts (K=8, J=2) | REGRESSION |
| 15d | Capital allocation (priority rotation) | В V1.0 |
| 16 | Short-сигналы (long-only era) | NO-GO |
| 17 | Long-only vs long-short (v5 era) | SUPERSEDED v7 |
| 18 | Research↔Live verification + D_26/26 + SL+cooldown sweep | DONE |
| 19 | Shared-pool (cash_balance=30%) | В V1.0 |
| 20 | V3a hysteresis / V3c sticky / μ-priority alone | FALSIFIED |
| 21 | Hurdle entry filter (12→24→18L/12S asym) | В V1.0 |
| 23 | Sizer revisited: kelly_vol vs tanh. Kelly wins 10/10 years | В V1.0 |
| v7 grand sweep | 440 sims × 5 seeds × triangular hurdle × eps grid — 18L/12S eps=0.10 wins | В V1.0 |
Главные уроки за путь к v1.0: (1) Look-ahead bug — все pre-30.04 KPI были inflated на +5..+10 Sharpe; honest re-eval показал v1.7 Sharpe −0.62 вместо reported +5.06. (2) Multi-seed обязателен — D_4/10 simulator amplifier даёт std ±0.45-0.74; single-seed picks (как rev1 24L/8S) — lottery. (3) Per-row reward ≠ Sharpe — ML-policy на decoupled target collapsed в portfolio simulator (4969 vs 604 entries, Sharpe Δ −2.13). (4) Frozen holdout — one-shot — открыть можно один раз, дальше consumed.