Cache-path features nose close-time, compute-path open-time; merge daje nula redova. Tri generatora su bila „mrtva po dizajnu“ — zapravo ih je gasio bug. Posle fix-a regime_cycle je profitabilan.
Datum: 2026-06-04. Branch: benchmark/full-history-2026-06. Nastavak 2026-06-03 full-history benchmark — korak B handoff plana (docs/plans/PLAN_2026-06-03_benchmark_handoff.md).
merge(on='timestamp') mešaju cache-path feature frame (timestamp = close-time) sa compute-path frame-om (non-default config → timestamp = open-time) dobijaju 0 redova (open vs close se nikad ne poklapaju). All-or-nothing → svaki generator sa >0 eventa je dokazano bezbedan.rsi_macd_trend, growth_threshold_regime_cycle, adx_di_trend. Prvi su bili na listi "0 po dizajnu" — pogrešno; bug ih je gasio. adx_di_trend prethodna sesija uopšte nije flagovala.close_time (konzistentan u cache / compute / kline izvorima). Primenjen u sva 3 originala + obe relaksirane varijante.growth_threshold_regime_cycle je PROFITABILAN (+0.274%/trade posle fee, 1215 trejdova / 8 god) → skinut sa liste za arhiviranje.get_features(symbol, tf, start, end, config=X) u generator_manager._build_context:
X = None → cache path (feature_store.get_features iz klines_cache.db) → timestamp = close time (04:59:59.999).X = dict (non-default) → compute path (compute_features(get_klines(...))) → timestamp = open time (04:00:00).rsi_macd_trend i adx_di_trend: usdt_config non-None (trend_ema=50≠20 → compute) ali btc_config=None (btc_ema=20 → cache) → mešано → merge(on='timestamp') = 0 redova. growth_threshold_regime_cycle: btc_regime_config UVEK non-None (ema 50/100 → compute) dok su usdt/btc-pair default (cache) → isto 0. Quality/dual_growth winneri: default EMA (20/50/20) → OBA frame-a None → oba cache → konzistentno → bezbedni (zato 5k–287k eventa).
Dijagnostika (ETHUSDT 1h): merge(on='timestamp') = 0 redova vs merge(on='close_time') = 12.419 redova.
| Generator | Trejdovi | Win% | Avg % | Posle fee % | Median % | Hold h |
|---|---|---|---|---|---|---|
| rsi_macd_trend (strogi, bug-fixed) | 3.632 | 34.7 | +0.113 | −0.087 | −0.81 | 8.2 |
| rsi_macd_trend_relaxed | 30.220 | 32.7 | −0.039 | −0.239 | −0.82 | 7.1 |
| growth_threshold_regime_cycle (strogi, bug-fixed) | 1.215 | 35.7 | +0.474 | +0.274 | 0.0 | 22.1 |
| growth_threshold_regime_relaxed | 1.215 | 35.7 | +0.474 | +0.274 | 0.0 | 22.1 |
| adx_di_trend (strogi, bug-fixed) | 5.686 | 27.3 | −0.185 | −0.385 | −0.84 | 8.6 |
growth_threshold_regime_relaxed obrisan kao suvišan.growth_threshold_quality_regime_combo, high_conviction_combo) bili su 0 jer im je izvor regime_cycle bio bug-gašen → posle fix-a mogu da prорade (treba re-benchmark).Combo gens čitaju izvorne signale iz tabela; bili su 0 jer im je izvor bio bug-gašen.
growth_threshold_quality_regime_combo: 0 → 160 eventa / 80 trejdova / +0.330%/trade posle fee (čita growth_threshold_quality_buy + growth_threshold_regime_buy). Odblokiran fix-om, profitabilan (malo bolji od izvora regime_cycle jer dodaje quality potvrdu).high_conviction_combo: ostaje 0 — NE zbog bug-a: rules.json traži trostruku potvrdu (donchian+rsi_macd+adx u 180min, ili +bollinger). donchian_volume_breakout ima ~36 trejdova ukupno → presek tri retka signala ≈ 0. Legitimna strogost rule-a.Iz reports/generator_monthly_benchmarks.json (mesečni tool pokriva poslednjih 12 meseci, NE pun istorijat):
| Generator | Fixed-slot | Compound | Status |
|---|---|---|---|
| growth_threshold_regime_cycle | +26.6% | +32.7% ($1327) | keeper |
| growth_threshold_quality_regime_combo | +2.8% | +8.2% ($1082) | pozitivan |
| rsi_macd_trend | −24.2% | −22.5% ($775) | gubitnik (slot saturacija) |
| adx_di_trend | −44.2% | −45.2% ($548) | jak gubitnik |
regime_cycle +32.7% compound u 12 meseci → dodatna potvrda da NIJE za arhivu. Winneri (reports/historical_generator_stats.txt) regenerisani — regime_cycle #13/26 per-trade.
reports/relaxed_full_history.json (relaksirani), reports/originals_bugfixed_full_history.json (strogi).reports/relaxed_analysis_full.txt (per-trade svih generatora).signal_generators/{rsi_macd_trend,growth_threshold_regime_cycle,adx_di_trend}/generator.py (merge na close_time, oba path-a).Izvor: crypto_scanner/reports/analysis/2026-06-04_merge_timestamp_bug_and_relaxed_generators.md