1# Pre-registered forecasting protocol (frozen with docs/preregistered_protocol.md; git tag prereg-frozen).2units: {returns: "percent log return", variance: "percent^2"}3horizons: [1, 5, 22] # trading days; target = variance of the h-day cumulative return4estimation:5 scheme: rolling # primary; 'expanding' and window 2000 are robustness variants6 window: 10007 refit_every: 5 # trading days; daily filtering with fixed parameters in between8 max_restarts: 39 seed: 4610 simulation_paths: 2000 # multi-step forecasts for models without an analytic recursion11periods:12 validation: {start: "2012-01-03", end: "2015-12-31"} # used for design checks and failure accounting only13 test: {start: "2016-01-04", end: "2026-10-30"} # untouched until the protocol is frozen14primary_loss: qlike15primary_proxy: rv5ss_on16secondary_losses: [mse, mae, mse_sd]17secondary_proxies: [rv5_on, rv1_on, bv5_on, medrv_on, r2, rv5ss_scaled]18tier_b_input: rv5ss_on19inference:20 dm: {hac: "Newey-West Bartlett", bandwidth: "h - 1 + floor(4 (n/100)^(2/9))"}21 mcs: {alpha: 0.10, bootstrap: stationary, block_length: 22, reps: 2000, statistic: "Tmax"}22 spa: {reps: 2000, block_length: 22}23 cross_asset: "block bootstrap over time with assets kept together (dependence across assets preserved)"24tail_risk: {levels: [0.01, 0.05], tests: [kupiec_uc, christoffersen_cc, engle_manganelli_dq, fz0_loss]}25regimes:26 trailing_vol_terciles: "terciles of the 22-day trailing realized variance of the instrument, computed at the origin (no look-ahead), thresholds from the validation period"27 calendar_episodes:28 covid: {start: "2020-02-20", end: "2020-06-30"}29 rate_shock_2022: {start: "2022-01-03", end: "2022-12-30"}30 tariff_shock_2025: {start: "2025-04-02", end: "2025-05-30"}31 return_sign: "sign of the previous day's return at the origin"32