You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

86 lines
4.1 KiB
JSON

{
"experiment_name": "vol_breakout_52w_poc_v1",
"dataset_snapshot_id": "broad-liquid-long-v1_bucketfix_full_audit_canonical",
"description": "Standalone VolBreakout52w engine isolation backtest. Honest, look-ahead-safe descendant of the retired topgainer family. Buy at next_open T when T-1 close is a 52-week high (close_T-1 > max(high[T-252..T-2])), volume_T-1 >= 2 * median_volume_20d_T-2, and ATR_14_T-1/close_T-1 in [0.015, 0.06]. Skip if pre-open implied gap > +4% (CURRENTLY DISABLED — premarket data not in snapshot; flag vol_breakout_52w_skip_if_no_gap_data=true to suppress the gap guard with a loud warning). Exits: -3% intraday stop, +5% target, max_holding_days=2 (mandatory MOC). Universe: broad (small/mid where 52w-high alpha lives), gated by ADV >= $10M and price >= $5. No PEAD engines, no parking, no idle alpha — pure standalone EV measurement. Falsification plan: (a) run with feature shift 0 vs -1 — gap < 10% of edge; (b) bootstrap permutation of entry-day flags — edge must vanish.",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v13e",
"score_threshold": 0.0,
"max_candidates_per_day": 30,
"a_tier_score_threshold": 0.99
},
"risk": {
"per_trade_risk_pct": 0.5,
"per_trade_risk_pct_a_tier": 0.5,
"max_daily_new_risk_pct": 50,
"max_positions": 30,
"max_positions_per_sector": 30,
"max_position_value_pct": 25,
"max_adv_fraction": 0.3,
"macro_regime_neutral_size_scaler": 1,
"macro_regime_risk_off_size_scaler": 1,
"veto_unknown_direction": false,
"veto_bearish_direction": false,
"macro_regime_risk_off_a_tier_only": false,
"stop_atr_multiplier": 1.5,
"allow_budget_downsizing": true,
"cash_parking_preset": null,
"fixed_capital_sizing": false
},
"execution": {
"trailing_warmup_days": 7,
"max_holding_days": 2,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.0,
"early_failure_no_progress_fraction": 0,
"lookback_entry_enabled": false
},
"event_type_profiles": {
"vol_breakout_52w": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 2
}
},
"idle_alpha_sleeve_preset": null,
"form4_capture_sleeve_preset": null,
"ownership_capture_sleeve_preset": null,
"risk_off_alpha_sleeve_preset": null,
"dividend_capture_sleeve_preset": null
},
"strategy_engines": [
{
"engine_id": "vol_breakout_52w_long",
"event_types": ["vol_breakout_52w"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"engine_risk_budget_pct": 1.0,
"score_threshold_override": 0.0,
"max_holding_days": 2,
"vol_breakout_52w_enabled": true,
"vol_breakout_52w_lookback_days": 252,
"vol_breakout_52w_volume_ratio_min": 2.0,
"vol_breakout_52w_volume_median_window": 20,
"vol_breakout_52w_atr_normalized_min": 0.015,
"vol_breakout_52w_atr_normalized_max": 0.06,
"vol_breakout_52w_pre_open_gap_max": 0.04,
"vol_breakout_52w_skip_if_no_gap_data": true,
"vol_breakout_52w_min_avg_dollar_volume": 10000000.0,
"vol_breakout_52w_min_price": 5.0,
"vol_breakout_52w_stop_pct": 0.03,
"vol_breakout_52w_target_pct": 0.05,
"vol_breakout_52w_max_holding_days": 2,
"enabled": true
}
],
"tags": ["vol_breakout_52w", "topgainer_descendant", "lookahead_safe", "poc"],
"version_family": "vol_breakout_52w",
"status": "draft",
"changelog": "Initial PoC: standalone VolBreakout52w engine on broad-liquid snapshot. 52w high + 2x volume + ATR/close band, -3%/+5%/2-day MOC. Pre-open gap guard inactive (premarket data not in snapshot) — vol_breakout_52w_skip_if_no_gap_data=true. Falsification plan: feature-shift honest replay + bootstrap permutation.",
"parent": null,
"performance_summary": null,
"missing_infrastructure": ["pre_open_gap_provider — premarket gap data not in snapshot; the +4% gap-fade guard is INACTIVE for this PoC. Mark all derived PnL accordingly."]
}