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
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."]
|
|
}
|