Risk Dashboard

Vol-target position sizing and a drawdown guard — the sizing/risk layer from CLAUDE.md's 'Elements of a profitable strategy' framework, now live on the USDCHF paper-trading model.

Both pieces only ever scale a model's raw ±1 signal downtoward 0 — they never flip its sign or add leverage beyond the unscaled position. Validated impact on the confirmed USDCHF (1h, h=4) model: Sharpe 0.83 → 1.09 and max drawdown -5.2% → -3.0% on the 2024-25 test window; Sharpe 1.98 → 2.16 and drawdown -4.0% → -3.6% on the 2021-22 robustness window. This is one strategy — the roadmap's multi-strategy portfolio-combination layer doesn't exist yet.

Vol-target sizing

position_sizing.py — vol_target_scale()

Shrinks position size when recent realized volatility is above a 10% annualized target, grows it (capped at 1.0×, so it never levers past the unscaled signal) when vol is below target. Warm-up or zero-vol periods scale to 0 (flat).

Current scale

100%

Drawdown guard

position_sizing.py — DrawdownGuard

Forces flat once peak-to-trough equity drawdown breaches 10% from the running peak NAV; stays flat until drawdown recovers to 5% (hysteresis, so it doesn't flap at the boundary). Ground truth comes from the OANDA account's actual NAV, not a reconstruction from the local log.

Current state

Armed — not tripped