f7f47b5484
Root cause: Kalman filter needs a cointegrated pair, but the historical runner was feeding it synthetic noise (close vs SMA). The Kalman filter found no mean-reverting spread, producing 0 signals. Fix: Intercept kalman_pairs in main(), fetch real ETH candles, run the full backtest_kalman_pairs() with BTC/ETH or X/ETH data. Results (30-day, 720h candles, BTC/ETH pair): BTC: 35 trades, -0.36% PnL ETH: 34 trades, -0.01% PnL (ETH/BTC pair) HYPE: 27 trades, -0.00% PnL (HYPE/BTC pair) VVV: 33 trades, -0.01% PnL (VVV/BTC pair) Total: 32 historical backtests (8 strategies x 4 coins)