Prvi pun presek. Samo regime_cycle ima pozitivan mean PnL. Workhorse je strukturno neispravan za slot-portfolio (−75% pri N=4).
DB: database/crypto_scanner_prod_20260509_safe.db (294 MB, WAL-checkpointed prod backup). Slot-portfolio: $1000 startup, 0.1% fee per side, 365d window ending pri max signal time, fixed mode. Counterfactual: snapshot range 2026-02-25 -> 2026-05-06, MFE arm threshold 1.0%.
| Generator | Sigs | Trades | WR% | mean% | med% | best% | worst% | avg_h | Status |
|---|---|---|---|---|---|---|---|---|---|
growth_threshold_cycle | 15 887 | 7 920 | 23.6 | -0.47 | -0.74 | +137.11 | -14.52 | 26.4 | workhorse, slot-saturation |
dual_growth_liquidity_cancel_test | 10 116 | (cancel-shape) | - | - | - | - | - | - | exit ide kroz cancel path; 5077 buy / 5009 cancel / 30 sell |
dual_growth_liquidity | 3 268 | 20 | 25.0 | -0.89 | -3.26 | +13.33 | -4.90 | 24.7 | sparse fire u 365d window |
growth_threshold_quality_cycle_v2 | 276 | 138 | 37.7 | -0.05 | -0.83 | +14.29 | -7.46 | 21.6 | best WR od svih |
growth_threshold_regime_cycle | 108 | 54 | 31.5 | +0.05 | -1.17 | +14.29 | -4.34 | 24.9 | jedini sa pozitivnim mean |
growth_threshold_quality_regime_combo | 4 | 2 | 50.0 | -0.76 | -0.76 | +1.66 | -3.17 | 22.0 | premalo data |
dual_growth_trailing_stop | 3 | 0 (only buys) | - | - | - | - | - | - | nema sells u prod-u jos |
| Generator | N=1 | N=2 | N=3 | N=4 | N=5 |
|---|---|---|---|---|---|
growth_threshold_cycle | -2.65 | -50.39 | -66.81 | -75.34 | -80.02 |
growth_threshold_regime_cycle | +7.21 | +5.54 | +2.30 | +4.16 | +2.13 |
growth_threshold_quality_cycle_v2 | -1.56 | -11.73 | -12.57 | -10.30 | -8.58 |
dual_growth_liquidity | -0.96 | -7.38 | -6.16 | -5.45 | -4.36 |
growth_threshold_quality_regime_combo | -3.37 | -0.95 | -0.64 | -0.48 | -0.38 |
| Generator | N=1 | N=2 | N=3 | N=4 | N=5 |
|---|---|---|---|---|---|
growth_threshold_cycle | 0.00 | 49.15 | 60.75 | 70.48 | 75.84 |
dual_growth_liquidity | 0.00 | 11.76 | 8.06 | 6.13 | 4.91 |
growth_threshold_quality_cycle_v2 | 0.00 | 12.24 | 45.72 | 62.70 | 70.90 |
growth_threshold_regime_cycle | 7.06 | 50.89 | 67.17 | 75.18 | 80.06 |
growth_threshold_quality_regime_combo | 0.00 | 0.00 | 0.00 | 0.00 | 0.00 |
| Generator | N=1 d | N=2 d | N=3 d | N=4 d | N=5 d | locked | no_cov |
|---|---|---|---|---|---|---|---|
growth_threshold_quality_cycle_v2 | +0.00 | +7.15 | +8.33 | +7.09 | +5.96 | 24 | 72 |
growth_threshold_regime_cycle | +1.47 | +4.31 | +4.23 | +3.17 | +3.32 | 13 | 22 |
dual_growth_liquidity | +0.00 | +1.76 | +1.17 | +0.88 | +0.70 | 2 | 16 |
growth_threshold_cycle | +0.00 | +0.03 | +0.11 | +0.01 | +0.57 | 1 092 | 1 913 |
growth_threshold_quality_regime_combo | +0.00 | +0.00 | +0.00 | +0.00 | +0.00 | 0 | 0 |
Lift snimljen kroz tools/analysis/slot_portfolio_counterfactual.py (snapshot range 2026-02-25 -> 2026-05-06; trades izvan window-a su no_cov i ostavljeni netaknuti — counterfactual je KONZERVATIVAN).
| Kategorija | Generatori |
|---|---|
| Quality family (cekaju aktivaciju) | growth_threshold_quality_cycle, *_best_symbols_cycle, *_best_symbols_cycle_v2, *_best_symbols_cycle_v3, *_blacklist_cycle, *_largecap_cycle |
| Trend / momentum | ema_trend_pullback, rsi_macd_trend, donchian_volume_breakout, adx_di_trend, bollinger_volume_expansion |
| Meta / kombinator | external_trend_confirmed_cycle, high_conviction_combo, combinator_template |
| Test / template | template_python, green2_red1_test |
src/feature_store.py, jedan izvor istine)Defaults iz _DEFAULT_FEATURES:
| Indikator | Default param | Kolone u features tabeli |
|---|---|---|
| EMA fast / slow / long | 20 / 50 / 200 | ema_fast, ema_slow, ema_long |
| SMA | length param | (samo helper) |
| RSI | length=14 | rsi |
| MACD | (helper, ne persistira) | - |
| ATR | length=14 | atr |
| ADX / +DI / -DI | length=14 | adx, plus_di, minus_di |
| Stochastic | (helper, ne persistira) | - |
| Bollinger Band Width | length=20, std=2.0 | bb_width |
| Volume Z-score | length=20 | vol_z |
| Taker buy ratio | iz Binance kline-a | taker_buy_ratio |
| BTC reference | EMA fast 20 | btc_close, btc_ema_fast, btc_ret_pct |
| Funding rate | z-window=60 events | funding_rate, funding_rate_z |
| Open interest change | 4h, 24h windows | oi_change_pct_4h, oi_change_pct_24h |
growth_threshold_regime_cycle ima pozitivan mean PnL (+0.05%) i pozitivan slot-portfolio na svim N. Sa profit-lock-om: postaje +7.34% pri N=4.growth_threshold_cycle strukturno ne radi za slot-portfolio — -75% pri N=4. Profit-lock daje samo +0.01% lift; problem je slot-saturation, ne exit-logika. Drzi ga kao webhook-alarm.growth_threshold_quality_cycle_v2 je najveci beneficijar profit-lock-a (+7-8% lift across N), ali baseline ostaje negativan; potrebno vise istorije pre selekcije.# Per-generator base stats (sigs/trades/WR/mean):
python -c "
import sys, sqlite3, statistics
sys.path.insert(0,'.')
from datetime import timedelta
from tools.analysis.capital_benchmark_monthly import load_trades, parse_dt
from tools.analysis.slot_portfolio_compare import _detect_signal_names, _list_active_generators
db='database/crypto_scanner_prod_20260509_safe.db'; c=sqlite3.connect(db)
for g in _list_active_generators(c):
table=f'signal_events__{g}'
n=c.execute(f'SELECT COUNT(*) FROM \"{table}\"').fetchone()[0]
buy,sell=_detect_signal_names(c,g)
if not buy or not sell: continue
trades=load_trades(c,table,buy,sell)
if not trades: continue
pnls=[((t['exit_price']-t['entry_price'])/t['entry_price']*100.0) for t in trades]
wr=sum(1 for p in pnls if p>0)/len(pnls)*100
print(f'{g} sigs={n} trades={len(trades)} WR={wr:.1f}% mean={statistics.mean(pnls):+.2f}%')
"
# Slot-portfolio comparison:
python -m tools.analysis.slot_portfolio_compare \
--db-path database/crypto_scanner_prod_20260509_safe.db --slots 1,2,3,4,5
# Counterfactual:
python -m tools.analysis.slot_portfolio_counterfactual \
--db-path database/crypto_scanner_prod_20260509_safe.db --slots 4 --arm-pct 1.0Izvor: crypto_scanner/reports/analysis/2026-05-09_generator_stats_complete.md