2.9 KiB
Consistency Auditor Memory
Last Audit: 2026-02-11 (Hourly Trading Update)
CRITICAL FINDINGS
1. Cooldown Timer Missing in Live Bot ❌
Location: backtester.rs has it (lines 40, 63, 174-179, 275-281), bot.rs missing Issue: Backtester prevents whipsaw re-entry for REENTRY_COOLDOWN_BARS (7 bars) after stop-loss. Live bot can immediately re-buy on same cycle. Impact: Live bot will churn more, potentially re-entering failed positions immediately. Backtest vs live divergence. Fix Required: Add cooldown_timers HashMap to TradingBot, track in execute_sell, check in execute_buy.
2. Gradual Ramp-Up Missing in Live Bot ⚠️
Location: backtester.rs has it (lines 42, 64, 196-198, 226, 508), bot.rs missing Issue: Backtester limits new positions to 1 per bar during first RAMPUP_PERIOD_BARS (30 bars). Live bot could deploy all capital on first cycle. Impact: Live initial deployment faster/riskier than backtest simulates. Fix Required: Add new_positions_this_cycle counter to TradingBot, reset each cycle, check in execute_buy.
Confirmed Consistent (2026-02-11)
Core Trading Logic ✅
- Drawdown halt: Time-based (35 bars), bot uses trading_cycle_count vs backtester current_bar (equivalent)
- bars_held increment: Both at START of trading cycle/bar (bot:660-663, bt:531-534) — previous bug FIXED
- Position sizing: Identical ATR volatility adjustment, confidence scaling (0.7+0.3*conf), caps
- Stop-loss: Identical 2.5x ATR + 4% hard cap + fixed fallback
- Trailing stop: Identical 1.5x ATR activation/distance + fixed fallback
- Time exit: Identical 30-bar threshold
- Sector limits: Both max 2 per sector (was 3 in daily)
- Max positions: Both 5 concurrent (was 8 in daily)
- Config constants: All parameters identical (verified config.rs)
Warmup Requirements ✅
Hourly min_bars(): max(35 MACD, 15 RSI, 100 EMA, 28 ADX, 20 BB, 63 momentum) + 5 = 105 bars Both fetch ~158 calendar days for hourly. MACD needs slow+signal (26+9=35), ADX needs 2x (14*2=28), all accounted for.
Expected Differences ✅
- Slippage: Backtester 10 bps, live actual fills (correct)
- Already-holding: Different APIs, same logic
Config (2026-02-11 Hourly)
- RISK_PER_TRADE: 0.75% (was 1% daily)
- ATR_STOP_MULTIPLIER: 2.5x (was 2.0x daily)
- ATR_TRAIL_MULTIPLIER: 1.5x
- ATR_TRAIL_ACTIVATION_MULTIPLIER: 1.5x
- MAX_CONCURRENT_POSITIONS: 5 (was 8 daily)
- MAX_SECTOR_POSITIONS: 2 (was 3 daily)
- TIME_EXIT_BARS: 30 (~4.3 days)
- REENTRY_COOLDOWN_BARS: 7 (~1 day)
- RAMPUP_PERIOD_BARS: 30 (~4.3 days)
- DRAWDOWN_HALT_BARS: 35 (~5 days)
- Partial exits REMOVED (was destroying avg win/loss ratio)
- Take profit REMOVED (was capping winners)
Hourly Indicator Periods
RSI/MACD/ADX/BB/ATR: Standard periods (14, 12/26/9, etc) — NOT 7x scaled Momentum: 63 (~9 days), EMA: 20/50/100. Uses textbook periods appropriate for hourly bars.