← all research

Window: IS[0..504] OOS[509..635] (equal-weight baseline net Sharpe: +0.026) Seeds: [0, 1, 2] | total_timesteps: 6000

Ablation table

LabelMedian SharpeMean SharpeStdUplift vs EWMedian turnoverMean cost bpsMedian maxDD
A_baseline_ppo_no_costs_no_constraints+0.052+0.0410.016+0.0260.0030.0-32.49%
B_costs_in_env+0.015+0.0120.016-0.0100.0030.4-32.58%
C_costs_plus_turnover_penalty+0.018+0.0120.017-0.0080.0030.4-32.57%
D_costs_penalty_weekly_rebalance+0.025+0.0220.007-0.0000.0010.1-32.60%
E_constrained_overlay+0.028+0.0240.006+0.0020.0010.1-32.57%
F_no_trade_band+0.020+0.0250.019-0.0060.0000.0-32.43%
G_full_v4_with_regime_obs+0.020+0.0250.019-0.0060.0000.0-32.43%

Ablation flags (what each experiment toggles OFF)

FlagABCDEFG
no_constraintsONONONONOFFOFFOFF
no_costONOFFOFFOFFOFFOFFOFF
no_turnover_penaltyONONOFFOFFOFFOFFOFF
daily_rebalance (1d vs 7d)ONONONOFFOFFOFFOFF
no_no_trade_bandONONONONONOFFOFF
no_regime_obs (vs full v4 G)OFFOFFOFFOFFOFFOFFOFF

Attribution

Compare rows in order to attribute which v4 feature fixes what:

  • A → B: adding cost to env
  • B → C: adding turnover penalty
  • C → D: switching from daily to weekly rebalance
  • D → E: enabling the constraint overlay (cash/daily-change/turnover caps)
  • E → F: enabling the no-trade band
  • F → G: enabling the regime-aware observation block (this env always has the regime slot; G is the full v4 with no ablations)

elapsed: 786.1s