Kline-source counterfactual

2026-05-09 nalaz

Pun OHLC ground truth umesto snapshot proxy-ja. qcv2 flipuje u plus (+2.28%), regime_cycle raste na +9.09%. Workhorse ostaje −75%.

↑ Svi izveštaji ← Kompletna mapa testiranog Snapshot vs kline MFE — validacija proxy-ja →

Završetak step 4 iz IMPROVEMENT_PLAN_2026-05-08: pun kline-based counterfactual nad prod backup-om. Snapshot proxy validacija (2026-05-09_snapshot_proxy_validation.md) pokazala je da je snapshot biased low ~0.25%; ovde merimo OHLC ground truth.

Sta je izgrađeno

Rezultat (N=4, arm=1.0%, 365d window, $1000 startup)

GeneratortradesPRE %snap POST %kline POST %kline deltalocked (snap→kline)no_cov (snap→kline)
growth_threshold_regime_cycle54+4.16+7.34+9.09+4.9313→2222→0
growth_threshold_quality_cycle_v2138−10.30−3.21+2.28+12.5824→4272→15
dual_growth_liquidity20−5.45−4.57−4.57+0.882→216→12
growth_threshold_cycle (workhorse)7920−75.34−75.33−75.01+0.331092→16041913→3612

Glavni nalazi

  1. qcv2 FLIP-uje POZITIVNO pod ground-truth podacima. Snapshot verzija je ostala −3.21% (na granici break-even); klines pokazuje +2.28%. Sa profit-lock-om već wired (commit c21d944), qcv2 je drugi validni slot-portfolio kandidat pored regime_cycle.
  1. regime_cycle se diže sa +7.34% na +9.09% (full coverage: no_cov pao sa 22 na 0). Ovo je top kandidat za real-money testiranje.
  1. gtc je strukturno isti. −75% i kod snap-a i kod kline-a. Slot-saturation dominira nezavisno od kvaliteta MFE estimate-a. Profit-lock zaključa 47% više trade-ova (1604 vs 1092) ali kapitalna kriva se jedva pomeri (+0.33%). gtc ostaje webhook-alarm generator.
  1. dgl se ne menja jer 12 od 20 trade-ova u 365d prozoru je pre 2026-01-01 (kad počinje klines cache). Iste limitacije kao snapshot verzija — treba kraći prozor ili širi cache.

Arm threshold sweep (klines source)

Generatorarm=0.5arm=1.0arm=1.5arm=2.0
regime_cycle+13.24+9.09+7.33+7.04
qcv2+6.73+2.28−1.32−5.08
dgl−3.53−4.57−4.57−4.57
gtc−75.18−75.01−75.48−76.46

Niži arm = više breakeven izlaza, ne propušta male reverziale. Caveat: counterfactual lock-uje samo trade-ove gde exit_price već pokazuje minus; u realnom trading-u, agresivniji arm bi mogao da pomera trailing stop pre nego što su vinneri imali šansu da kapitalizuju. Ne preporučuje se bezbrzo spuštanje arm-a u live profile-ima — ovo je upper-bound mera.

Sta ovo znaci za odluke

Sledeci koraci

  1. Train meta-score za regime_cycle i qcv2 — sad kada profit-lock menja trade outcomes, vidi da li klasifikator za P(realized_pnl > 0) diže AUC iznad 0.55. Tool: tools/analysis/train_meta_score.py.
  2. Live monitoring profit-lock-ovanih generatora 2-4 nedelje, pa re-run kline counterfactual sa novim trade-ovima.
  3. Pre-2026-01-01 klines fetch za dgl ako se odluči o promotee-u (verovatno preskoči — 20 trade-a je premalo za odluku).

Reproducibility

cd crypto_scanner
.venv39/Scripts/python.exe -m tools.analysis.slot_portfolio_counterfactual \
  --db-path database/crypto_scanner_prod_20260509_safe.db \
  --source klines --slots 4 --arm-pct 1.0 \
  --generators growth_threshold_regime_cycle growth_threshold_quality_cycle_v2 \
               dual_growth_liquidity growth_threshold_cycle

Izvor: crypto_scanner/reports/analysis/2026-05-09_kline_counterfactual.md