Files
foxhunt/crates
jgrusewski 050407dbd5 fix: 3 critical findings — state blindness, cold-start, reward scaling
Finding 1: STATE BLINDNESS — Q-network couldn't see risk
  Portfolio features expanded from 3 (useless: pv/pv≈1, cash/pv≈1) to 8:
  position, unrealized_pnl/equity, drawdown, hold_time/100, realized_pnl/equity,
  distance_to_floor, trade_return, cash_ratio.
  PORTFOLIO_DIM 3→8 across all NVRTC injection sites.
  State dim: 48→56 (without OFI), 56→64 (with OFI).

Finding 2: Q-GAP COLD-START — model couldn't trade to learn
  Q-gap threshold ramps linearly from 0.0 to target over first 10 epochs.
  At epoch 0, all Q-values ≈ 0 → Q-gap < threshold → no trades → no signal.
  Added current_epoch field to DQNTrainer.

Finding 3: TRADE REWARD SCALING — idle penalty dominated trade signal
  trade_return scaling: ×100 → ×1000 (1 ES tick = 0.36 reward, was 0.036).
  idle penalty max: 0.05 → 0.01 (was competing with 1-tick trade reward).
  Now: trade reward (0.36) >> idle penalty (0.01). Correct incentive.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
2026-03-23 10:13:27 +01:00
..