Add v6new experiment suite: scoring v8/v9/v9g, cross-event drift, coverage engines

Scoring additions (libs/backtest/scoring.py):
- v8: conditional financial bonus (eps_growth_qoq/revenue_growth_qoq)
- v9: cross-event drift momentum (+/-10% from prior same-ticker 5d return)
- v9g: gated variant — reject events with negative prior drift

Snapshot export (libs/export/snapshot_export.py):
- _enrich_prior_event_drift: computes prior_event_fwd5d for all snapshots
- smallcap-liquid-long-v1 universe profile ($500M-$2B)
- market_cap_max support in screener and filtering

8 experiment configs (v6new.1-v6new.8):
- v6new.1: unknown event reclassification (neutral)
- v6new.2: financial features (neutral, EPS growth is noise)
- v6new.3: small-cap (blocked, survivorship bias)
- v6new.4-6: cross-event drift variants (rejected)
- v6new.7: engine pruning (quality up, count down)
- v6new.8: coverage expansion with 2 new post-market engines (best result)

Best result: v6new.8 SQS 41.5 vs v6.29 control 32.3 on same conditions.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
main
I Luk Kim 5 months ago
parent 02542248b7
commit 85c4d98987

File diff suppressed because it is too large Load Diff

@ -0,0 +1,623 @@
{
"experiment_name": "return_max_long_v6new.1",
"dataset_snapshot_id": "midlarge-liquid-long-v2",
"description": "v6.29 on reclassified unknown events snapshot - tests if unknown->typed reclassification expands candidate pool",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v5",
"score_threshold": 0.45,
"max_candidates_per_day": 18,
"a_tier_score_threshold": 0.58
},
"risk": {
"per_trade_risk_pct": 0.052,
"per_trade_risk_pct_a_tier": 0.058,
"max_daily_new_risk_pct": 0.76,
"max_positions": 24,
"max_positions_per_sector": 5,
"max_position_value_pct": 1.0,
"max_adv_fraction": 0.2,
"macro_regime_neutral_size_scaler": 1.0,
"macro_regime_risk_off_size_scaler": 1.0,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false
},
"execution": {
"a_tier_target_1_r": 3.5,
"a_tier_target_1_fraction": 0.0,
"non_a_tier_target_1_r": 2.25,
"non_a_tier_target_1_fraction": 0.2,
"trailing_warmup_days": 6,
"max_holding_days": 25,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.15,
"early_failure_no_progress_fraction": 1.0
},
"event_type_profiles": {
"material_contract": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
},
"other_material_event": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
}
}
},
"strategy_engines": [
{
"engine_id": "reaction_close_long_bullish_raised_priority",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.45,
"reaction_day_return_min": 0.08,
"reaction_day_return_max": 0.18,
"close_location_min": 0.55,
"volume_ratio_min": 2.0,
"gap_size_min": 0.0,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.5,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_material_patient",
"event_types": ["material_contract"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.25,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.15,
"close_location_min": 0.5,
"close_location_max": 0.85,
"gap_size_min": 0.0,
"gap_size_max": 0.02,
"volume_ratio_min": 0.8,
"volume_ratio_max": 2.0,
"max_market_cap_proxy": 10000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.45,
"next_open_gap_cap_pct": 0.02,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"min_market_cap_proxy": 5000000000.0
},
{
"engine_id": "reaction_close_long_core",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 1.0,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.18,
"close_location_min": 0.45,
"volume_ratio_min": 1.0,
"gap_size_min": 0.0,
"weak_reaction_threshold": 0.03,
"weak_reaction_gap_max": 0.02,
"unknown_direction_reaction_min": 0.05,
"unknown_direction_close_location_min": 0.7,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.42,
"enabled": true,
"residual_reserve_selected": true,
"mixed_inline_close_location_max": 0.88,
"mixed_inline_gap_size_max": 0.1,
"unknown_inline_exit_close_location_min": 0.9,
"unknown_inline_exit_gap_size_max": 0.04,
"unknown_inline_early_failure_no_progress_days_override": 2,
"unknown_inline_early_failure_no_progress_r_override": 0.1,
"unknown_inline_early_failure_no_progress_fraction_override": 1.0,
"per_trade_risk_pct_override": 0.038,
"trailing_warmup_days_override": 8
},
{
"engine_id": "next_open_long_bullish_raised_recovery",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"filing_time_buckets": ["post_market", "pre_market"],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": -0.1,
"reaction_day_return_max": 0.08,
"close_location_min": 0.03,
"close_location_max": 0.55,
"gap_size_min": 0.0,
"gap_size_max": 0.09,
"volume_ratio_min": 1.2,
"volume_ratio_max": 4.0,
"min_market_cap_proxy": 4000000000.0,
"max_market_cap_proxy": 50000000000.0,
"document_quality_score_min": 0.68,
"parse_confidence_overall_min": 0.68,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"use_reaction_day_low_stop_override": false,
"stop_atr_multiplier_override": 2.25,
"next_open_gap_cap_pct": 0.09,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_lowclose_gap_d3",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.35,
"close_location_max": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"residual_reserve_selected": true,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 3,
"early_failure_no_progress_r_override": 0.25,
"early_failure_no_progress_fraction_override": 1.0,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_smallcap_gap",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"enabled": true
},
{
"engine_id": "reaction_close_long_extreme_orderly",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.35,
"reaction_day_return_min": 0.2,
"reaction_day_return_max": 0.4,
"close_location_min": 0.83,
"volume_ratio_min": 6.0,
"gap_size_min": 0.0,
"gap_size_max": 0.15,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.65,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_inline_hivol",
"event_types": ["earnings_release"],
"event_directions": ["unknown"],
"guidance_statuses": ["inline_or_maintained"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.1,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.06,
"close_location_min": 0.74,
"close_location_max": 0.86,
"gap_size_min": 0.0,
"gap_size_max": 0.04,
"volume_ratio_min": 2.1,
"volume_ratio_max": 2.8,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_oneoff_penalty_override": 1.0,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "next_open_long_guidance_unknown_orderly",
"event_types": ["guidance_update"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.05,
"close_location_min": 0.9,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 9000000000.0,
"document_quality_score_min": 0.52,
"parse_confidence_overall_min": 0.48,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 6.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 15,
"enabled": true,
"veto_parse_confidence_min_override": 0.48,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_earnings_mixed_inline_orderly",
"event_types": ["earnings_release"],
"event_directions": ["mixed"],
"guidance_statuses": ["inline_or_maintained"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"gap_size_min": -0.02,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.64,
"per_trade_risk_pct_override": 0.02,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_material_orderly",
"event_types": ["material_contract"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"close_location_max": 0.8,
"gap_size_min": -0.02,
"gap_size_max": 0.02,
"volume_ratio_min": 0.9,
"volume_ratio_max": 1.4,
"min_market_cap_proxy": 10000000000.0,
"max_market_cap_proxy": 100000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_other_material_mixed_orderly",
"event_types": ["other_material_event"],
"event_directions": ["mixed"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.04,
"reaction_day_return_max": 0.06,
"close_location_min": 0.45,
"gap_size_min": -0.03,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 6000000000.0,
"document_quality_score_min": 0.54,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.5,
"veto_oneoff_penalty_override": 0.25,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_guidance_unknown_premarket_orderly",
"event_types": ["guidance_update"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["pre_market"],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.04,
"close_location_min": 0.35,
"close_location_max": 0.85,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.3,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 6,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_ome_orderly",
"event_types": ["other_material_event"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.05,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.12,
"close_location_min": 0.55,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 4.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_mixed_ome_orderly",
"event_types": ["other_material_event"],
"event_directions": ["mixed"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.06,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_recovery_broad_oneoff",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.1,
"close_location_min": 0.3,
"close_location_max": 0.75,
"gap_size_min": 0.01,
"gap_size_max": 0.12,
"volume_ratio_min": 1.3,
"volume_ratio_max": 5.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.66,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.66,
"veto_oneoff_penalty_override": 0.75,
"allow_oneoff_downsizing_override": true,
"oneoff_downsize_floor_override": 0.15,
"next_open_gap_cap_pct": 0.12,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"per_trade_risk_pct_override": 0.008,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_other_material_unknown_orderly",
"event_types": ["other_material_event"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.04,
"reaction_day_return_min": -0.05,
"reaction_day_return_max": 0.08,
"close_location_min": 0.35,
"close_location_max": 0.98,
"gap_size_min": -0.03,
"gap_size_max": 0.06,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.6,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.05,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.01,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
}
],
"splits": [
{"kind": "named_snapshot", "params": {"name": "train"}},
{"kind": "named_snapshot", "params": {"name": "valid"}},
{"kind": "named_snapshot", "params": {"name": "test"}}
],
"tags": ["return-max", "v6new", "unknown-reclass"],
"notes": "v6.29 identical config on v2 snapshot with reclassified unknown events. Tests expanded candidate pool."
}

@ -0,0 +1,623 @@
{
"experiment_name": "return_max_long_v6new.2",
"dataset_snapshot_id": "midlarge-liquid-long-v1-fin",
"description": "v6.29 + financial features (eps_growth_qoq, revenue_growth_qoq) via scoring v8 conditional bonus",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v8",
"score_threshold": 0.45,
"max_candidates_per_day": 18,
"a_tier_score_threshold": 0.58
},
"risk": {
"per_trade_risk_pct": 0.052,
"per_trade_risk_pct_a_tier": 0.058,
"max_daily_new_risk_pct": 0.76,
"max_positions": 24,
"max_positions_per_sector": 5,
"max_position_value_pct": 1.0,
"max_adv_fraction": 0.2,
"macro_regime_neutral_size_scaler": 1.0,
"macro_regime_risk_off_size_scaler": 1.0,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false
},
"execution": {
"a_tier_target_1_r": 3.5,
"a_tier_target_1_fraction": 0.0,
"non_a_tier_target_1_r": 2.25,
"non_a_tier_target_1_fraction": 0.2,
"trailing_warmup_days": 6,
"max_holding_days": 25,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.15,
"early_failure_no_progress_fraction": 1.0
},
"event_type_profiles": {
"material_contract": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
},
"other_material_event": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
}
}
},
"strategy_engines": [
{
"engine_id": "reaction_close_long_bullish_raised_priority",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.45,
"reaction_day_return_min": 0.08,
"reaction_day_return_max": 0.18,
"close_location_min": 0.55,
"volume_ratio_min": 2.0,
"gap_size_min": 0.0,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.5,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_material_patient",
"event_types": ["material_contract"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.25,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.15,
"close_location_min": 0.5,
"close_location_max": 0.85,
"gap_size_min": 0.0,
"gap_size_max": 0.02,
"volume_ratio_min": 0.8,
"volume_ratio_max": 2.0,
"max_market_cap_proxy": 10000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.45,
"next_open_gap_cap_pct": 0.02,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"min_market_cap_proxy": 5000000000.0
},
{
"engine_id": "reaction_close_long_core",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 1.0,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.18,
"close_location_min": 0.45,
"volume_ratio_min": 1.0,
"gap_size_min": 0.0,
"weak_reaction_threshold": 0.03,
"weak_reaction_gap_max": 0.02,
"unknown_direction_reaction_min": 0.05,
"unknown_direction_close_location_min": 0.7,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.42,
"enabled": true,
"residual_reserve_selected": true,
"mixed_inline_close_location_max": 0.88,
"mixed_inline_gap_size_max": 0.1,
"unknown_inline_exit_close_location_min": 0.9,
"unknown_inline_exit_gap_size_max": 0.04,
"unknown_inline_early_failure_no_progress_days_override": 2,
"unknown_inline_early_failure_no_progress_r_override": 0.1,
"unknown_inline_early_failure_no_progress_fraction_override": 1.0,
"per_trade_risk_pct_override": 0.038,
"trailing_warmup_days_override": 8
},
{
"engine_id": "next_open_long_bullish_raised_recovery",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"filing_time_buckets": ["post_market", "pre_market"],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": -0.1,
"reaction_day_return_max": 0.08,
"close_location_min": 0.03,
"close_location_max": 0.55,
"gap_size_min": 0.0,
"gap_size_max": 0.09,
"volume_ratio_min": 1.2,
"volume_ratio_max": 4.0,
"min_market_cap_proxy": 4000000000.0,
"max_market_cap_proxy": 50000000000.0,
"document_quality_score_min": 0.68,
"parse_confidence_overall_min": 0.68,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"use_reaction_day_low_stop_override": false,
"stop_atr_multiplier_override": 2.25,
"next_open_gap_cap_pct": 0.09,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_lowclose_gap_d3",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.35,
"close_location_max": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"residual_reserve_selected": true,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 3,
"early_failure_no_progress_r_override": 0.25,
"early_failure_no_progress_fraction_override": 1.0,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_smallcap_gap",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"enabled": true
},
{
"engine_id": "reaction_close_long_extreme_orderly",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.35,
"reaction_day_return_min": 0.2,
"reaction_day_return_max": 0.4,
"close_location_min": 0.83,
"volume_ratio_min": 6.0,
"gap_size_min": 0.0,
"gap_size_max": 0.15,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.65,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_inline_hivol",
"event_types": ["earnings_release"],
"event_directions": ["unknown"],
"guidance_statuses": ["inline_or_maintained"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.1,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.06,
"close_location_min": 0.74,
"close_location_max": 0.86,
"gap_size_min": 0.0,
"gap_size_max": 0.04,
"volume_ratio_min": 2.1,
"volume_ratio_max": 2.8,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_oneoff_penalty_override": 1.0,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "next_open_long_guidance_unknown_orderly",
"event_types": ["guidance_update"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.05,
"close_location_min": 0.9,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 9000000000.0,
"document_quality_score_min": 0.52,
"parse_confidence_overall_min": 0.48,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 6.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 15,
"enabled": true,
"veto_parse_confidence_min_override": 0.48,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_earnings_mixed_inline_orderly",
"event_types": ["earnings_release"],
"event_directions": ["mixed"],
"guidance_statuses": ["inline_or_maintained"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"gap_size_min": -0.02,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.64,
"per_trade_risk_pct_override": 0.02,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_material_orderly",
"event_types": ["material_contract"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"close_location_max": 0.8,
"gap_size_min": -0.02,
"gap_size_max": 0.02,
"volume_ratio_min": 0.9,
"volume_ratio_max": 1.4,
"min_market_cap_proxy": 10000000000.0,
"max_market_cap_proxy": 100000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_other_material_mixed_orderly",
"event_types": ["other_material_event"],
"event_directions": ["mixed"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.04,
"reaction_day_return_max": 0.06,
"close_location_min": 0.45,
"gap_size_min": -0.03,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 6000000000.0,
"document_quality_score_min": 0.54,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.5,
"veto_oneoff_penalty_override": 0.25,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_guidance_unknown_premarket_orderly",
"event_types": ["guidance_update"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["pre_market"],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.04,
"close_location_min": 0.35,
"close_location_max": 0.85,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.3,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 6,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_ome_orderly",
"event_types": ["other_material_event"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.05,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.12,
"close_location_min": 0.55,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 4.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_mixed_ome_orderly",
"event_types": ["other_material_event"],
"event_directions": ["mixed"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.06,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_recovery_broad_oneoff",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.1,
"close_location_min": 0.3,
"close_location_max": 0.75,
"gap_size_min": 0.01,
"gap_size_max": 0.12,
"volume_ratio_min": 1.3,
"volume_ratio_max": 5.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.66,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.66,
"veto_oneoff_penalty_override": 0.75,
"allow_oneoff_downsizing_override": true,
"oneoff_downsize_floor_override": 0.15,
"next_open_gap_cap_pct": 0.12,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"per_trade_risk_pct_override": 0.008,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_other_material_unknown_orderly",
"event_types": ["other_material_event"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.04,
"reaction_day_return_min": -0.05,
"reaction_day_return_max": 0.08,
"close_location_min": 0.35,
"close_location_max": 0.98,
"gap_size_min": -0.03,
"gap_size_max": 0.06,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.6,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.05,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.01,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
}
],
"splits": [
{"kind": "named_snapshot", "params": {"name": "train"}},
{"kind": "named_snapshot", "params": {"name": "valid"}},
{"kind": "named_snapshot", "params": {"name": "test"}}
],
"tags": ["return-max", "v6new", "financial-features"],
"notes": "v6.29 + scoring v8 financial bonus on snapshot with financial_v1 features. Tests eps_growth_qoq/revenue_growth_qoq signal."
}

@ -0,0 +1,624 @@
{
"experiment_name": "return_max_long_v6new.3",
"dataset_snapshot_id": "smallcap-liquid-long-v1",
"description": "v6.29 adapted for small-cap ($500M-$2B) universe - lower risk, wider stops, no large-cap market_cap gates",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v5",
"score_threshold": 0.45,
"max_candidates_per_day": 18,
"a_tier_score_threshold": 0.58
},
"risk": {
"per_trade_risk_pct": 0.03,
"per_trade_risk_pct_a_tier": 0.035,
"max_daily_new_risk_pct": 0.50,
"max_positions": 20,
"max_positions_per_sector": 4,
"max_position_value_pct": 1.0,
"max_adv_fraction": 0.05,
"macro_regime_neutral_size_scaler": 1.0,
"macro_regime_risk_off_size_scaler": 1.0,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false
},
"execution": {
"a_tier_target_1_r": 3.5,
"a_tier_target_1_fraction": 0.0,
"non_a_tier_target_1_r": 2.25,
"non_a_tier_target_1_fraction": 0.2,
"trailing_warmup_days": 6,
"max_holding_days": 25,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.15,
"early_failure_no_progress_fraction": 1.0
},
"event_type_profiles": {
"material_contract": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
},
"other_material_event": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
}
}
},
"strategy_engines": [
{
"engine_id": "reaction_close_long_bullish_raised_priority",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.45,
"reaction_day_return_min": 0.08,
"reaction_day_return_max": 0.18,
"close_location_min": 0.55,
"volume_ratio_min": 2.0,
"gap_size_min": 0.0,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.5,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_material_patient",
"event_types": ["material_contract"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.25,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.15,
"close_location_min": 0.5,
"close_location_max": 0.85,
"gap_size_min": 0.0,
"gap_size_max": 0.02,
"volume_ratio_min": 0.8,
"volume_ratio_max": 2.0,
"min_market_cap_proxy": 500000000.0,
"max_market_cap_proxy": 2000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.45,
"next_open_gap_cap_pct": 0.02,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"stop_atr_multiplier_override": 3.5
},
{
"engine_id": "reaction_close_long_core",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 1.0,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.18,
"close_location_min": 0.45,
"volume_ratio_min": 1.0,
"gap_size_min": 0.0,
"weak_reaction_threshold": 0.03,
"weak_reaction_gap_max": 0.02,
"unknown_direction_reaction_min": 0.05,
"unknown_direction_close_location_min": 0.7,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.42,
"enabled": true,
"residual_reserve_selected": true,
"mixed_inline_close_location_max": 0.88,
"mixed_inline_gap_size_max": 0.1,
"unknown_inline_exit_close_location_min": 0.9,
"unknown_inline_exit_gap_size_max": 0.04,
"unknown_inline_early_failure_no_progress_days_override": 2,
"unknown_inline_early_failure_no_progress_r_override": 0.1,
"unknown_inline_early_failure_no_progress_fraction_override": 1.0,
"per_trade_risk_pct_override": 0.025,
"trailing_warmup_days_override": 8
},
{
"engine_id": "next_open_long_bullish_raised_recovery",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"filing_time_buckets": ["post_market", "pre_market"],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": -0.1,
"reaction_day_return_max": 0.08,
"close_location_min": 0.03,
"close_location_max": 0.55,
"gap_size_min": 0.0,
"gap_size_max": 0.09,
"volume_ratio_min": 1.2,
"volume_ratio_max": 4.0,
"min_market_cap_proxy": 500000000.0,
"max_market_cap_proxy": 2000000000.0,
"document_quality_score_min": 0.68,
"parse_confidence_overall_min": 0.68,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"use_reaction_day_low_stop_override": false,
"stop_atr_multiplier_override": 3.0,
"next_open_gap_cap_pct": 0.09,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_lowclose_gap_d3",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.35,
"close_location_max": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 2000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"residual_reserve_selected": true,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 3,
"early_failure_no_progress_r_override": 0.25,
"early_failure_no_progress_fraction_override": 1.0,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_smallcap_gap",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 2000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"enabled": true
},
{
"engine_id": "reaction_close_long_extreme_orderly",
"event_types": ["earnings_release", "guidance_update"],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.35,
"reaction_day_return_min": 0.2,
"reaction_day_return_max": 0.4,
"close_location_min": 0.83,
"volume_ratio_min": 6.0,
"gap_size_min": 0.0,
"gap_size_max": 0.15,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.65,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_inline_hivol",
"event_types": ["earnings_release"],
"event_directions": ["unknown"],
"guidance_statuses": ["inline_or_maintained"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.1,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.06,
"close_location_min": 0.74,
"close_location_max": 0.86,
"gap_size_min": 0.0,
"gap_size_max": 0.04,
"volume_ratio_min": 2.1,
"volume_ratio_max": 2.8,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_oneoff_penalty_override": 1.0,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "next_open_long_guidance_unknown_orderly",
"event_types": ["guidance_update"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.05,
"close_location_min": 0.9,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 500000000.0,
"document_quality_score_min": 0.52,
"parse_confidence_overall_min": 0.48,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 6.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 15,
"enabled": true,
"veto_parse_confidence_min_override": 0.48,
"per_trade_risk_pct_override": 0.012,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_earnings_mixed_inline_orderly",
"event_types": ["earnings_release"],
"event_directions": ["mixed"],
"guidance_statuses": ["inline_or_maintained"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"gap_size_min": -0.02,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 500000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.64,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_material_orderly",
"event_types": ["material_contract"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"close_location_max": 0.8,
"gap_size_min": -0.02,
"gap_size_max": 0.02,
"volume_ratio_min": 0.9,
"volume_ratio_max": 1.4,
"min_market_cap_proxy": 500000000.0,
"max_market_cap_proxy": 2000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.012,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_other_material_mixed_orderly",
"event_types": ["other_material_event"],
"event_directions": ["mixed"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.04,
"reaction_day_return_max": 0.06,
"close_location_min": 0.45,
"gap_size_min": -0.03,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 500000000.0,
"document_quality_score_min": 0.54,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.5,
"veto_oneoff_penalty_override": 0.25,
"per_trade_risk_pct_override": 0.012,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_guidance_unknown_premarket_orderly",
"event_types": ["guidance_update"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["pre_market"],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.04,
"close_location_min": 0.35,
"close_location_max": 0.85,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.3,
"min_market_cap_proxy": 500000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 6,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.012,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_ome_orderly",
"event_types": ["other_material_event"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.05,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.12,
"close_location_min": 0.55,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 500000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.012,
"stop_atr_multiplier_override": 4.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_mixed_ome_orderly",
"event_types": ["other_material_event"],
"event_directions": ["mixed"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.06,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 500000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.012,
"stop_atr_multiplier_override": 4.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_recovery_broad_oneoff",
"event_types": ["earnings_release"],
"event_directions": ["bullish"],
"guidance_statuses": ["raised"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.1,
"close_location_min": 0.3,
"close_location_max": 0.75,
"gap_size_min": 0.01,
"gap_size_max": 0.12,
"volume_ratio_min": 1.3,
"volume_ratio_max": 5.0,
"min_market_cap_proxy": 500000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.66,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.66,
"veto_oneoff_penalty_override": 0.75,
"allow_oneoff_downsizing_override": true,
"oneoff_downsize_floor_override": 0.15,
"next_open_gap_cap_pct": 0.12,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"per_trade_risk_pct_override": 0.006,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_other_material_unknown_orderly",
"event_types": ["other_material_event"],
"event_directions": ["unknown"],
"guidance_statuses": ["not_provided"],
"filing_time_buckets": ["post_market"],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.04,
"reaction_day_return_min": -0.05,
"reaction_day_return_max": 0.08,
"close_location_min": 0.35,
"close_location_max": 0.98,
"gap_size_min": -0.03,
"gap_size_max": 0.06,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.6,
"min_market_cap_proxy": 500000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.05,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.008,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
}
],
"splits": [
{"kind": "named_snapshot", "params": {"name": "train"}},
{"kind": "named_snapshot", "params": {"name": "valid"}},
{"kind": "named_snapshot", "params": {"name": "test"}}
],
"tags": ["return-max", "v6new", "small-cap"],
"notes": "v6.29 adapted for small-cap $500M-$2B universe. Lower risk (3%), tighter ADV (5%), wider ATR stops, no large-cap market_cap gates."
}

@ -0,0 +1,757 @@
{
"experiment_name": "return_max_long_v6new.4",
"dataset_snapshot_id": "midlarge-liquid-long-v2",
"description": "v6.29 + scoring v9 cross-event drift momentum (prior_event_fwd5d). 8pp WR spread signal.",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v9",
"score_threshold": 0.45,
"max_candidates_per_day": 18,
"a_tier_score_threshold": 0.58
},
"risk": {
"per_trade_risk_pct": 0.052,
"per_trade_risk_pct_a_tier": 0.058,
"max_daily_new_risk_pct": 0.76,
"max_positions": 24,
"max_positions_per_sector": 5,
"max_position_value_pct": 1.0,
"max_adv_fraction": 0.2,
"macro_regime_neutral_size_scaler": 1.0,
"macro_regime_risk_off_size_scaler": 1.0,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false
},
"execution": {
"a_tier_target_1_r": 3.5,
"a_tier_target_1_fraction": 0.0,
"non_a_tier_target_1_r": 2.25,
"non_a_tier_target_1_fraction": 0.2,
"trailing_warmup_days": 6,
"max_holding_days": 25,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.15,
"early_failure_no_progress_fraction": 1.0
},
"event_type_profiles": {
"material_contract": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
},
"other_material_event": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
}
}
},
"strategy_engines": [
{
"engine_id": "reaction_close_long_bullish_raised_priority",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.45,
"reaction_day_return_min": 0.08,
"reaction_day_return_max": 0.18,
"close_location_min": 0.55,
"volume_ratio_min": 2.0,
"gap_size_min": 0.0,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.5,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_material_patient",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.25,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.15,
"close_location_min": 0.5,
"close_location_max": 0.85,
"gap_size_min": 0.0,
"gap_size_max": 0.02,
"volume_ratio_min": 0.8,
"volume_ratio_max": 2.0,
"max_market_cap_proxy": 10000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.45,
"next_open_gap_cap_pct": 0.02,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"min_market_cap_proxy": 5000000000.0
},
{
"engine_id": "reaction_close_long_core",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 1.0,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.18,
"close_location_min": 0.45,
"volume_ratio_min": 1.0,
"gap_size_min": 0.0,
"weak_reaction_threshold": 0.03,
"weak_reaction_gap_max": 0.02,
"unknown_direction_reaction_min": 0.05,
"unknown_direction_close_location_min": 0.7,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.42,
"enabled": true,
"residual_reserve_selected": true,
"mixed_inline_close_location_max": 0.88,
"mixed_inline_gap_size_max": 0.1,
"unknown_inline_exit_close_location_min": 0.9,
"unknown_inline_exit_gap_size_max": 0.04,
"unknown_inline_early_failure_no_progress_days_override": 2,
"unknown_inline_early_failure_no_progress_r_override": 0.1,
"unknown_inline_early_failure_no_progress_fraction_override": 1.0,
"per_trade_risk_pct_override": 0.038,
"trailing_warmup_days_override": 8
},
{
"engine_id": "next_open_long_bullish_raised_recovery",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market",
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": -0.1,
"reaction_day_return_max": 0.08,
"close_location_min": 0.03,
"close_location_max": 0.55,
"gap_size_min": 0.0,
"gap_size_max": 0.09,
"volume_ratio_min": 1.2,
"volume_ratio_max": 4.0,
"min_market_cap_proxy": 4000000000.0,
"max_market_cap_proxy": 50000000000.0,
"document_quality_score_min": 0.68,
"parse_confidence_overall_min": 0.68,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"use_reaction_day_low_stop_override": false,
"stop_atr_multiplier_override": 2.25,
"next_open_gap_cap_pct": 0.09,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_lowclose_gap_d3",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.35,
"close_location_max": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"residual_reserve_selected": true,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 3,
"early_failure_no_progress_r_override": 0.25,
"early_failure_no_progress_fraction_override": 1.0,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_smallcap_gap",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"enabled": true
},
{
"engine_id": "reaction_close_long_extreme_orderly",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.35,
"reaction_day_return_min": 0.2,
"reaction_day_return_max": 0.4,
"close_location_min": 0.83,
"volume_ratio_min": 6.0,
"gap_size_min": 0.0,
"gap_size_max": 0.15,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.65,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_inline_hivol",
"event_types": [
"earnings_release"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.1,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.06,
"close_location_min": 0.74,
"close_location_max": 0.86,
"gap_size_min": 0.0,
"gap_size_max": 0.04,
"volume_ratio_min": 2.1,
"volume_ratio_max": 2.8,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_oneoff_penalty_override": 1.0,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "next_open_long_guidance_unknown_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.05,
"close_location_min": 0.9,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 9000000000.0,
"document_quality_score_min": 0.52,
"parse_confidence_overall_min": 0.48,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 6.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 15,
"enabled": true,
"veto_parse_confidence_min_override": 0.48,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_earnings_mixed_inline_orderly",
"event_types": [
"earnings_release"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"gap_size_min": -0.02,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.64,
"per_trade_risk_pct_override": 0.02,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_material_orderly",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"close_location_max": 0.8,
"gap_size_min": -0.02,
"gap_size_max": 0.02,
"volume_ratio_min": 0.9,
"volume_ratio_max": 1.4,
"min_market_cap_proxy": 10000000000.0,
"max_market_cap_proxy": 100000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_other_material_mixed_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.04,
"reaction_day_return_max": 0.06,
"close_location_min": 0.45,
"gap_size_min": -0.03,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 6000000000.0,
"document_quality_score_min": 0.54,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.5,
"veto_oneoff_penalty_override": 0.25,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_guidance_unknown_premarket_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.04,
"close_location_min": 0.35,
"close_location_max": 0.85,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.3,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 6,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.05,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.12,
"close_location_min": 0.55,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 4.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_mixed_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.06,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_recovery_broad_oneoff",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.1,
"close_location_min": 0.3,
"close_location_max": 0.75,
"gap_size_min": 0.01,
"gap_size_max": 0.12,
"volume_ratio_min": 1.3,
"volume_ratio_max": 5.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.66,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.66,
"veto_oneoff_penalty_override": 0.75,
"allow_oneoff_downsizing_override": true,
"oneoff_downsize_floor_override": 0.15,
"next_open_gap_cap_pct": 0.12,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"per_trade_risk_pct_override": 0.008,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_other_material_unknown_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.04,
"reaction_day_return_min": -0.05,
"reaction_day_return_max": 0.08,
"close_location_min": 0.35,
"close_location_max": 0.98,
"gap_size_min": -0.03,
"gap_size_max": 0.06,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.6,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.05,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.01,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
}
],
"splits": [
{
"kind": "named_snapshot",
"params": {
"name": "train"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "valid"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "test"
}
}
],
"tags": [
"return-max",
"v6new",
"cross-event-momentum"
],
"notes": "V9 scoring adds +/-10% bonus from prior same-ticker event 5d drift. Empirical 56.8% vs 48.7% WR spread."
}

@ -0,0 +1,758 @@
{
"experiment_name": "return_max_long_v6new.5",
"dataset_snapshot_id": "midlarge-liquid-long-v2",
"description": "v6new.4 + prior drift hard gate: only trade when prior same-ticker drift >= 0 (or no prior)",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v9g",
"score_threshold": 0.45,
"max_candidates_per_day": 18,
"a_tier_score_threshold": 0.58
},
"risk": {
"per_trade_risk_pct": 0.052,
"per_trade_risk_pct_a_tier": 0.058,
"max_daily_new_risk_pct": 0.76,
"max_positions": 24,
"max_positions_per_sector": 5,
"max_position_value_pct": 1.0,
"max_adv_fraction": 0.2,
"macro_regime_neutral_size_scaler": 1.0,
"macro_regime_risk_off_size_scaler": 1.0,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false
},
"execution": {
"a_tier_target_1_r": 3.5,
"a_tier_target_1_fraction": 0.0,
"non_a_tier_target_1_r": 2.25,
"non_a_tier_target_1_fraction": 0.2,
"trailing_warmup_days": 6,
"max_holding_days": 25,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.15,
"early_failure_no_progress_fraction": 1.0
},
"event_type_profiles": {
"material_contract": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
},
"other_material_event": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
}
}
},
"strategy_engines": [
{
"engine_id": "reaction_close_long_bullish_raised_priority",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.45,
"reaction_day_return_min": 0.08,
"reaction_day_return_max": 0.18,
"close_location_min": 0.55,
"volume_ratio_min": 2.0,
"gap_size_min": 0.0,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.5,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_material_patient",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.25,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.15,
"close_location_min": 0.5,
"close_location_max": 0.85,
"gap_size_min": 0.0,
"gap_size_max": 0.02,
"volume_ratio_min": 0.8,
"volume_ratio_max": 2.0,
"max_market_cap_proxy": 10000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.45,
"next_open_gap_cap_pct": 0.02,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"min_market_cap_proxy": 5000000000.0
},
{
"engine_id": "reaction_close_long_core",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 1.0,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.18,
"close_location_min": 0.45,
"volume_ratio_min": 1.0,
"gap_size_min": 0.0,
"weak_reaction_threshold": 0.03,
"weak_reaction_gap_max": 0.02,
"unknown_direction_reaction_min": 0.05,
"unknown_direction_close_location_min": 0.7,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.42,
"enabled": true,
"residual_reserve_selected": true,
"mixed_inline_close_location_max": 0.88,
"mixed_inline_gap_size_max": 0.1,
"unknown_inline_exit_close_location_min": 0.9,
"unknown_inline_exit_gap_size_max": 0.04,
"unknown_inline_early_failure_no_progress_days_override": 2,
"unknown_inline_early_failure_no_progress_r_override": 0.1,
"unknown_inline_early_failure_no_progress_fraction_override": 1.0,
"per_trade_risk_pct_override": 0.038,
"trailing_warmup_days_override": 8
},
{
"engine_id": "next_open_long_bullish_raised_recovery",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market",
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": -0.1,
"reaction_day_return_max": 0.08,
"close_location_min": 0.03,
"close_location_max": 0.55,
"gap_size_min": 0.0,
"gap_size_max": 0.09,
"volume_ratio_min": 1.2,
"volume_ratio_max": 4.0,
"min_market_cap_proxy": 4000000000.0,
"max_market_cap_proxy": 50000000000.0,
"document_quality_score_min": 0.68,
"parse_confidence_overall_min": 0.68,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"use_reaction_day_low_stop_override": false,
"stop_atr_multiplier_override": 2.25,
"next_open_gap_cap_pct": 0.09,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_lowclose_gap_d3",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.35,
"close_location_max": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"residual_reserve_selected": true,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 3,
"early_failure_no_progress_r_override": 0.25,
"early_failure_no_progress_fraction_override": 1.0,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_smallcap_gap",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"enabled": true
},
{
"engine_id": "reaction_close_long_extreme_orderly",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.35,
"reaction_day_return_min": 0.2,
"reaction_day_return_max": 0.4,
"close_location_min": 0.83,
"volume_ratio_min": 6.0,
"gap_size_min": 0.0,
"gap_size_max": 0.15,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.65,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_inline_hivol",
"event_types": [
"earnings_release"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.1,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.06,
"close_location_min": 0.74,
"close_location_max": 0.86,
"gap_size_min": 0.0,
"gap_size_max": 0.04,
"volume_ratio_min": 2.1,
"volume_ratio_max": 2.8,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_oneoff_penalty_override": 1.0,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "next_open_long_guidance_unknown_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.05,
"close_location_min": 0.9,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 9000000000.0,
"document_quality_score_min": 0.52,
"parse_confidence_overall_min": 0.48,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 6.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 15,
"enabled": true,
"veto_parse_confidence_min_override": 0.48,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_earnings_mixed_inline_orderly",
"event_types": [
"earnings_release"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"gap_size_min": -0.02,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.64,
"per_trade_risk_pct_override": 0.02,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_material_orderly",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"close_location_max": 0.8,
"gap_size_min": -0.02,
"gap_size_max": 0.02,
"volume_ratio_min": 0.9,
"volume_ratio_max": 1.4,
"min_market_cap_proxy": 10000000000.0,
"max_market_cap_proxy": 100000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_other_material_mixed_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.04,
"reaction_day_return_max": 0.06,
"close_location_min": 0.45,
"gap_size_min": -0.03,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 6000000000.0,
"document_quality_score_min": 0.54,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.5,
"veto_oneoff_penalty_override": 0.25,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_guidance_unknown_premarket_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.04,
"close_location_min": 0.35,
"close_location_max": 0.85,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.3,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 6,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.05,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.12,
"close_location_min": 0.55,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 4.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_mixed_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.06,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_recovery_broad_oneoff",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.1,
"close_location_min": 0.3,
"close_location_max": 0.75,
"gap_size_min": 0.01,
"gap_size_max": 0.12,
"volume_ratio_min": 1.3,
"volume_ratio_max": 5.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.66,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.66,
"veto_oneoff_penalty_override": 0.75,
"allow_oneoff_downsizing_override": true,
"oneoff_downsize_floor_override": 0.15,
"next_open_gap_cap_pct": 0.12,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"per_trade_risk_pct_override": 0.008,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_other_material_unknown_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.04,
"reaction_day_return_min": -0.05,
"reaction_day_return_max": 0.08,
"close_location_min": 0.35,
"close_location_max": 0.98,
"gap_size_min": -0.03,
"gap_size_max": 0.06,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.6,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.05,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.01,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
}
],
"splits": [
{
"kind": "named_snapshot",
"params": {
"name": "train"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "valid"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "test"
}
}
],
"tags": [
"return-max",
"v6new",
"cross-event-momentum",
"drift-gate"
],
"notes": "Uses prior_event_fwd5d >= 0 as additional gate. Hypothesis: negative prior drift = contaminated ticker."
}

@ -0,0 +1,758 @@
{
"experiment_name": "return_max_long_v6new.6",
"dataset_snapshot_id": "midlarge-liquid-long-v1",
"description": "v6.29 + v9g cross-event drift gate on ORIGINAL v1 snapshot (proper A/B test)",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v9g",
"score_threshold": 0.45,
"max_candidates_per_day": 18,
"a_tier_score_threshold": 0.58
},
"risk": {
"per_trade_risk_pct": 0.052,
"per_trade_risk_pct_a_tier": 0.058,
"max_daily_new_risk_pct": 0.76,
"max_positions": 24,
"max_positions_per_sector": 5,
"max_position_value_pct": 1.0,
"max_adv_fraction": 0.2,
"macro_regime_neutral_size_scaler": 1.0,
"macro_regime_risk_off_size_scaler": 1.0,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false
},
"execution": {
"a_tier_target_1_r": 3.5,
"a_tier_target_1_fraction": 0.0,
"non_a_tier_target_1_r": 2.25,
"non_a_tier_target_1_fraction": 0.2,
"trailing_warmup_days": 6,
"max_holding_days": 25,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.15,
"early_failure_no_progress_fraction": 1.0
},
"event_type_profiles": {
"material_contract": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
},
"other_material_event": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
}
}
},
"strategy_engines": [
{
"engine_id": "reaction_close_long_bullish_raised_priority",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.45,
"reaction_day_return_min": 0.08,
"reaction_day_return_max": 0.18,
"close_location_min": 0.55,
"volume_ratio_min": 2.0,
"gap_size_min": 0.0,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.5,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_material_patient",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.25,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.15,
"close_location_min": 0.5,
"close_location_max": 0.85,
"gap_size_min": 0.0,
"gap_size_max": 0.02,
"volume_ratio_min": 0.8,
"volume_ratio_max": 2.0,
"max_market_cap_proxy": 10000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.45,
"next_open_gap_cap_pct": 0.02,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"min_market_cap_proxy": 5000000000.0
},
{
"engine_id": "reaction_close_long_core",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 1.0,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.18,
"close_location_min": 0.45,
"volume_ratio_min": 1.0,
"gap_size_min": 0.0,
"weak_reaction_threshold": 0.03,
"weak_reaction_gap_max": 0.02,
"unknown_direction_reaction_min": 0.05,
"unknown_direction_close_location_min": 0.7,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.42,
"enabled": true,
"residual_reserve_selected": true,
"mixed_inline_close_location_max": 0.88,
"mixed_inline_gap_size_max": 0.1,
"unknown_inline_exit_close_location_min": 0.9,
"unknown_inline_exit_gap_size_max": 0.04,
"unknown_inline_early_failure_no_progress_days_override": 2,
"unknown_inline_early_failure_no_progress_r_override": 0.1,
"unknown_inline_early_failure_no_progress_fraction_override": 1.0,
"per_trade_risk_pct_override": 0.038,
"trailing_warmup_days_override": 8
},
{
"engine_id": "next_open_long_bullish_raised_recovery",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market",
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": -0.1,
"reaction_day_return_max": 0.08,
"close_location_min": 0.03,
"close_location_max": 0.55,
"gap_size_min": 0.0,
"gap_size_max": 0.09,
"volume_ratio_min": 1.2,
"volume_ratio_max": 4.0,
"min_market_cap_proxy": 4000000000.0,
"max_market_cap_proxy": 50000000000.0,
"document_quality_score_min": 0.68,
"parse_confidence_overall_min": 0.68,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"use_reaction_day_low_stop_override": false,
"stop_atr_multiplier_override": 2.25,
"next_open_gap_cap_pct": 0.09,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_lowclose_gap_d3",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.35,
"close_location_max": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"residual_reserve_selected": true,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 3,
"early_failure_no_progress_r_override": 0.25,
"early_failure_no_progress_fraction_override": 1.0,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_smallcap_gap",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"enabled": true
},
{
"engine_id": "reaction_close_long_extreme_orderly",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.35,
"reaction_day_return_min": 0.2,
"reaction_day_return_max": 0.4,
"close_location_min": 0.83,
"volume_ratio_min": 6.0,
"gap_size_min": 0.0,
"gap_size_max": 0.15,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.65,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_inline_hivol",
"event_types": [
"earnings_release"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.1,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.06,
"close_location_min": 0.74,
"close_location_max": 0.86,
"gap_size_min": 0.0,
"gap_size_max": 0.04,
"volume_ratio_min": 2.1,
"volume_ratio_max": 2.8,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_oneoff_penalty_override": 1.0,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "next_open_long_guidance_unknown_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.05,
"close_location_min": 0.9,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 9000000000.0,
"document_quality_score_min": 0.52,
"parse_confidence_overall_min": 0.48,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 6.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 15,
"enabled": true,
"veto_parse_confidence_min_override": 0.48,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_earnings_mixed_inline_orderly",
"event_types": [
"earnings_release"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"gap_size_min": -0.02,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.64,
"per_trade_risk_pct_override": 0.02,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_material_orderly",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"close_location_max": 0.8,
"gap_size_min": -0.02,
"gap_size_max": 0.02,
"volume_ratio_min": 0.9,
"volume_ratio_max": 1.4,
"min_market_cap_proxy": 10000000000.0,
"max_market_cap_proxy": 100000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_other_material_mixed_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.04,
"reaction_day_return_max": 0.06,
"close_location_min": 0.45,
"gap_size_min": -0.03,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 6000000000.0,
"document_quality_score_min": 0.54,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.5,
"veto_oneoff_penalty_override": 0.25,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_guidance_unknown_premarket_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.04,
"close_location_min": 0.35,
"close_location_max": 0.85,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.3,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 6,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.05,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.12,
"close_location_min": 0.55,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 4.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_mixed_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.06,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_recovery_broad_oneoff",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.1,
"close_location_min": 0.3,
"close_location_max": 0.75,
"gap_size_min": 0.01,
"gap_size_max": 0.12,
"volume_ratio_min": 1.3,
"volume_ratio_max": 5.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.66,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.66,
"veto_oneoff_penalty_override": 0.75,
"allow_oneoff_downsizing_override": true,
"oneoff_downsize_floor_override": 0.15,
"next_open_gap_cap_pct": 0.12,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"per_trade_risk_pct_override": 0.008,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_other_material_unknown_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.04,
"reaction_day_return_min": -0.05,
"reaction_day_return_max": 0.08,
"close_location_min": 0.35,
"close_location_max": 0.98,
"gap_size_min": -0.03,
"gap_size_max": 0.06,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.6,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.05,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.01,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
}
],
"splits": [
{
"kind": "named_snapshot",
"params": {
"name": "train"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "valid"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "test"
}
}
],
"tags": [
"return-max",
"v6new",
"cross-event-momentum",
"v1-snapshot"
],
"notes": "Same v1 snapshot as v6.29 baseline. Only change: scoring v5 -> v9g (reject negative prior drift)."
}

@ -0,0 +1,757 @@
{
"experiment_name": "return_max_long_v6new.7",
"dataset_snapshot_id": "midlarge-liquid-long-v1",
"description": "v6.29 with 2 weakest OOS engines disabled (unknown_ome, other_material_unknown)",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v5",
"score_threshold": 0.45,
"max_candidates_per_day": 18,
"a_tier_score_threshold": 0.58
},
"risk": {
"per_trade_risk_pct": 0.052,
"per_trade_risk_pct_a_tier": 0.058,
"max_daily_new_risk_pct": 0.76,
"max_positions": 24,
"max_positions_per_sector": 5,
"max_position_value_pct": 1.0,
"max_adv_fraction": 0.2,
"macro_regime_neutral_size_scaler": 1.0,
"macro_regime_risk_off_size_scaler": 1.0,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false
},
"execution": {
"a_tier_target_1_r": 3.5,
"a_tier_target_1_fraction": 0.0,
"non_a_tier_target_1_r": 2.25,
"non_a_tier_target_1_fraction": 0.2,
"trailing_warmup_days": 6,
"max_holding_days": 25,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.15,
"early_failure_no_progress_fraction": 1.0
},
"event_type_profiles": {
"material_contract": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
},
"other_material_event": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
}
}
},
"strategy_engines": [
{
"engine_id": "reaction_close_long_bullish_raised_priority",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.45,
"reaction_day_return_min": 0.08,
"reaction_day_return_max": 0.18,
"close_location_min": 0.55,
"volume_ratio_min": 2.0,
"gap_size_min": 0.0,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.5,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_material_patient",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.25,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.15,
"close_location_min": 0.5,
"close_location_max": 0.85,
"gap_size_min": 0.0,
"gap_size_max": 0.02,
"volume_ratio_min": 0.8,
"volume_ratio_max": 2.0,
"max_market_cap_proxy": 10000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.45,
"next_open_gap_cap_pct": 0.02,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"min_market_cap_proxy": 5000000000.0
},
{
"engine_id": "reaction_close_long_core",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 1.0,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.18,
"close_location_min": 0.45,
"volume_ratio_min": 1.0,
"gap_size_min": 0.0,
"weak_reaction_threshold": 0.03,
"weak_reaction_gap_max": 0.02,
"unknown_direction_reaction_min": 0.05,
"unknown_direction_close_location_min": 0.7,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.42,
"enabled": true,
"residual_reserve_selected": true,
"mixed_inline_close_location_max": 0.88,
"mixed_inline_gap_size_max": 0.1,
"unknown_inline_exit_close_location_min": 0.9,
"unknown_inline_exit_gap_size_max": 0.04,
"unknown_inline_early_failure_no_progress_days_override": 2,
"unknown_inline_early_failure_no_progress_r_override": 0.1,
"unknown_inline_early_failure_no_progress_fraction_override": 1.0,
"per_trade_risk_pct_override": 0.038,
"trailing_warmup_days_override": 8
},
{
"engine_id": "next_open_long_bullish_raised_recovery",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market",
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": -0.1,
"reaction_day_return_max": 0.08,
"close_location_min": 0.03,
"close_location_max": 0.55,
"gap_size_min": 0.0,
"gap_size_max": 0.09,
"volume_ratio_min": 1.2,
"volume_ratio_max": 4.0,
"min_market_cap_proxy": 4000000000.0,
"max_market_cap_proxy": 50000000000.0,
"document_quality_score_min": 0.68,
"parse_confidence_overall_min": 0.68,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"use_reaction_day_low_stop_override": false,
"stop_atr_multiplier_override": 2.25,
"next_open_gap_cap_pct": 0.09,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_lowclose_gap_d3",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.35,
"close_location_max": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"residual_reserve_selected": true,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 3,
"early_failure_no_progress_r_override": 0.25,
"early_failure_no_progress_fraction_override": 1.0,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_smallcap_gap",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"enabled": true
},
{
"engine_id": "reaction_close_long_extreme_orderly",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.35,
"reaction_day_return_min": 0.2,
"reaction_day_return_max": 0.4,
"close_location_min": 0.83,
"volume_ratio_min": 6.0,
"gap_size_min": 0.0,
"gap_size_max": 0.15,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.65,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_inline_hivol",
"event_types": [
"earnings_release"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.1,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.06,
"close_location_min": 0.74,
"close_location_max": 0.86,
"gap_size_min": 0.0,
"gap_size_max": 0.04,
"volume_ratio_min": 2.1,
"volume_ratio_max": 2.8,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_oneoff_penalty_override": 1.0,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "next_open_long_guidance_unknown_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.05,
"close_location_min": 0.9,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 9000000000.0,
"document_quality_score_min": 0.52,
"parse_confidence_overall_min": 0.48,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 6.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 15,
"enabled": true,
"veto_parse_confidence_min_override": 0.48,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_earnings_mixed_inline_orderly",
"event_types": [
"earnings_release"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"gap_size_min": -0.02,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.64,
"per_trade_risk_pct_override": 0.02,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_material_orderly",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"close_location_max": 0.8,
"gap_size_min": -0.02,
"gap_size_max": 0.02,
"volume_ratio_min": 0.9,
"volume_ratio_max": 1.4,
"min_market_cap_proxy": 10000000000.0,
"max_market_cap_proxy": 100000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_other_material_mixed_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.04,
"reaction_day_return_max": 0.06,
"close_location_min": 0.45,
"gap_size_min": -0.03,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 6000000000.0,
"document_quality_score_min": 0.54,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.5,
"veto_oneoff_penalty_override": 0.25,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_guidance_unknown_premarket_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.04,
"close_location_min": 0.35,
"close_location_max": 0.85,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.3,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 6,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.05,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.12,
"close_location_min": 0.55,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": false,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 4.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_mixed_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.06,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_recovery_broad_oneoff",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.1,
"close_location_min": 0.3,
"close_location_max": 0.75,
"gap_size_min": 0.01,
"gap_size_max": 0.12,
"volume_ratio_min": 1.3,
"volume_ratio_max": 5.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.66,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.66,
"veto_oneoff_penalty_override": 0.75,
"allow_oneoff_downsizing_override": true,
"oneoff_downsize_floor_override": 0.15,
"next_open_gap_cap_pct": 0.12,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"per_trade_risk_pct_override": 0.008,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_other_material_unknown_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.04,
"reaction_day_return_min": -0.05,
"reaction_day_return_max": 0.08,
"close_location_min": 0.35,
"close_location_max": 0.98,
"gap_size_min": -0.03,
"gap_size_max": 0.06,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.6,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.05,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": false,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.01,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
}
],
"splits": [
{
"kind": "named_snapshot",
"params": {
"name": "train"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "valid"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "test"
}
}
],
"tags": [
"return-max",
"v6new",
"engine-pruning"
],
"notes": "Disable 2 engines that are OOS-negative: unknown_ome (0% WR OOS), other_material_unknown (33% WR, worst trades)."
}

@ -0,0 +1,839 @@
{
"experiment_name": "return_max_long_v6new.8",
"dataset_snapshot_id": "midlarge-liquid-long-v1",
"description": "v6.29 + 2 engines targeting 386 missed quality post-market events (61% WR pool)",
"base_config": "configs/backtest/return_max_long_v1.json",
"overrides": {
"signal": {
"scoring_model": "return_max_long_v5",
"score_threshold": 0.45,
"max_candidates_per_day": 18,
"a_tier_score_threshold": 0.58
},
"risk": {
"per_trade_risk_pct": 0.052,
"per_trade_risk_pct_a_tier": 0.058,
"max_daily_new_risk_pct": 0.76,
"max_positions": 24,
"max_positions_per_sector": 5,
"max_position_value_pct": 1.0,
"max_adv_fraction": 0.2,
"macro_regime_neutral_size_scaler": 1.0,
"macro_regime_risk_off_size_scaler": 1.0,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false
},
"execution": {
"a_tier_target_1_r": 3.5,
"a_tier_target_1_fraction": 0.0,
"non_a_tier_target_1_r": 2.25,
"non_a_tier_target_1_fraction": 0.2,
"trailing_warmup_days": 6,
"max_holding_days": 25,
"early_failure_no_progress_days": 1,
"early_failure_no_progress_r": 0.15,
"early_failure_no_progress_fraction": 1.0
},
"event_type_profiles": {
"material_contract": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
},
"other_material_event": {
"enabled": true,
"direction_filter": "any",
"max_holding_days_override": 20
}
}
},
"strategy_engines": [
{
"engine_id": "reaction_close_long_bullish_raised_priority",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.45,
"reaction_day_return_min": 0.08,
"reaction_day_return_max": 0.18,
"close_location_min": 0.55,
"volume_ratio_min": 2.0,
"gap_size_min": 0.0,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.5,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_material_patient",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.25,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.15,
"close_location_min": 0.5,
"close_location_max": 0.85,
"gap_size_min": 0.0,
"gap_size_max": 0.02,
"volume_ratio_min": 0.8,
"volume_ratio_max": 2.0,
"max_market_cap_proxy": 10000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.45,
"next_open_gap_cap_pct": 0.02,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"min_market_cap_proxy": 5000000000.0
},
{
"engine_id": "reaction_close_long_core",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 1.0,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.18,
"close_location_min": 0.45,
"volume_ratio_min": 1.0,
"gap_size_min": 0.0,
"weak_reaction_threshold": 0.03,
"weak_reaction_gap_max": 0.02,
"unknown_direction_reaction_min": 0.05,
"unknown_direction_close_location_min": 0.7,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.42,
"enabled": true,
"residual_reserve_selected": true,
"mixed_inline_close_location_max": 0.88,
"mixed_inline_gap_size_max": 0.1,
"unknown_inline_exit_close_location_min": 0.9,
"unknown_inline_exit_gap_size_max": 0.04,
"unknown_inline_early_failure_no_progress_days_override": 2,
"unknown_inline_early_failure_no_progress_r_override": 0.1,
"unknown_inline_early_failure_no_progress_fraction_override": 1.0,
"per_trade_risk_pct_override": 0.038,
"trailing_warmup_days_override": 8
},
{
"engine_id": "next_open_long_bullish_raised_recovery",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market",
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": -0.1,
"reaction_day_return_max": 0.08,
"close_location_min": 0.03,
"close_location_max": 0.55,
"gap_size_min": 0.0,
"gap_size_max": 0.09,
"volume_ratio_min": 1.2,
"volume_ratio_max": 4.0,
"min_market_cap_proxy": 4000000000.0,
"max_market_cap_proxy": 50000000000.0,
"document_quality_score_min": 0.68,
"parse_confidence_overall_min": 0.68,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"use_reaction_day_low_stop_override": false,
"stop_atr_multiplier_override": 2.25,
"next_open_gap_cap_pct": 0.09,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_lowclose_gap_d3",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.35,
"close_location_max": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"residual_reserve_selected": true,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 3,
"early_failure_no_progress_r_override": 0.25,
"early_failure_no_progress_fraction_override": 1.0,
"enabled": true
},
{
"engine_id": "reaction_close_long_residual_smallcap_gap",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 25,
"engine_risk_budget_pct": 0.12,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.45,
"volume_ratio_min": 1.25,
"gap_size_min": 0.05,
"gap_size_max": 0.1,
"max_market_cap_proxy": 10000000000.0,
"score_threshold_override": 0.35,
"target_1_r_override": 3.0,
"target_1_fraction_override": 0.1,
"enabled": true
},
{
"engine_id": "reaction_close_long_extreme_orderly",
"event_types": [
"earnings_release",
"guidance_update"
],
"timing_class": "same_day",
"direction": "long_only",
"entry_timing_policy": "reaction_close",
"max_holding_days": 18,
"engine_risk_budget_pct": 0.35,
"reaction_day_return_min": 0.2,
"reaction_day_return_max": 0.4,
"close_location_min": 0.83,
"volume_ratio_min": 6.0,
"gap_size_min": 0.0,
"gap_size_max": 0.15,
"attention_max_wiki_spike_10d": 6.0,
"score_threshold_override": 0.65,
"enabled": true,
"target_1_r_override": 99.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 8,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": null,
"early_failure_no_progress_r_override": null,
"early_failure_no_progress_fraction_override": null
},
{
"engine_id": "next_open_long_unknown_inline_hivol",
"event_types": [
"earnings_release"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.1,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.06,
"close_location_min": 0.74,
"close_location_max": 0.86,
"gap_size_min": 0.0,
"gap_size_max": 0.04,
"volume_ratio_min": 2.1,
"volume_ratio_max": 2.8,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_oneoff_penalty_override": 1.0,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true
},
{
"engine_id": "next_open_long_guidance_unknown_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.05,
"close_location_min": 0.9,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 9000000000.0,
"document_quality_score_min": 0.52,
"parse_confidence_overall_min": 0.48,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 6.0,
"target_1_fraction_override": 0.0,
"trailing_warmup_days_override": 15,
"enabled": true,
"veto_parse_confidence_min_override": 0.48,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_earnings_mixed_inline_orderly",
"event_types": [
"earnings_release"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"inline_or_maintained"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"gap_size_min": -0.02,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.64,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.64,
"per_trade_risk_pct_override": 0.02,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_material_orderly",
"event_types": [
"material_contract"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"close_location_max": 0.8,
"gap_size_min": -0.02,
"gap_size_max": 0.02,
"volume_ratio_min": 0.9,
"volume_ratio_max": 1.4,
"min_market_cap_proxy": 10000000000.0,
"max_market_cap_proxy": 100000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_other_material_mixed_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.04,
"reaction_day_return_max": 0.06,
"close_location_min": 0.45,
"gap_size_min": -0.03,
"gap_size_max": 0.05,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 6000000000.0,
"document_quality_score_min": 0.54,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.5,
"veto_oneoff_penalty_override": 0.25,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_guidance_unknown_premarket_orderly",
"event_types": [
"guidance_update"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"pre_market"
],
"timing_class": "any",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.02,
"reaction_day_return_min": -0.03,
"reaction_day_return_max": 0.04,
"close_location_min": 0.35,
"close_location_max": 0.85,
"gap_size_min": -0.02,
"gap_size_max": 0.03,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.3,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.03,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 6,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_unknown_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.05,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.12,
"close_location_min": 0.55,
"volume_ratio_min": 1.0,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 4.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_mixed_ome_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.06,
"reaction_day_return_min": -0.02,
"reaction_day_return_max": 0.06,
"close_location_min": 0.5,
"volume_ratio_min": 0.8,
"min_market_cap_proxy": 4000000000.0,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.04,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.4,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.5,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_recovery_broad_oneoff",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.03,
"reaction_day_return_min": 0.0,
"reaction_day_return_max": 0.1,
"close_location_min": 0.3,
"close_location_max": 0.75,
"gap_size_min": 0.01,
"gap_size_max": 0.12,
"volume_ratio_min": 1.3,
"volume_ratio_max": 5.0,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.66,
"parse_confidence_overall_min": 0.66,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"veto_parse_confidence_min_override": 0.66,
"veto_oneoff_penalty_override": 0.75,
"allow_oneoff_downsizing_override": true,
"oneoff_downsize_floor_override": 0.15,
"next_open_gap_cap_pct": 0.12,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"per_trade_risk_pct_override": 0.008,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_other_material_unknown_orderly",
"event_types": [
"other_material_event"
],
"event_directions": [
"unknown"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.04,
"reaction_day_return_min": -0.05,
"reaction_day_return_max": 0.08,
"close_location_min": 0.35,
"close_location_max": 0.98,
"gap_size_min": -0.03,
"gap_size_max": 0.06,
"volume_ratio_min": 0.75,
"volume_ratio_max": 1.6,
"min_market_cap_proxy": 8000000000.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.45,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.05,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 15,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 12,
"enabled": true,
"veto_parse_confidence_min_override": 0.45,
"per_trade_risk_pct_override": 0.01,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false
},
{
"engine_id": "next_open_long_bullish_raised_strong",
"event_types": [
"earnings_release"
],
"event_directions": [
"bullish"
],
"guidance_statuses": [
"raised"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.15,
"reaction_day_return_min": 0.03,
"reaction_day_return_max": 0.2,
"close_location_min": 0.55,
"volume_ratio_min": 1.2,
"volume_ratio_max": 6.0,
"document_quality_score_min": 0.6,
"parse_confidence_overall_min": 0.6,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.1,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 12,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 10,
"per_trade_risk_pct_override": 0.025,
"stop_atr_multiplier_override": 2.5,
"use_reaction_day_low_stop_override": false,
"enabled": true
},
{
"engine_id": "next_open_long_mixed_notprovided_postmarket",
"event_types": [
"earnings_release"
],
"event_directions": [
"mixed"
],
"guidance_statuses": [
"not_provided"
],
"filing_time_buckets": [
"post_market"
],
"timing_class": "after_close",
"direction": "long_only",
"entry_timing_policy": "next_open",
"max_holding_days": 20,
"engine_risk_budget_pct": 0.08,
"reaction_day_return_min": 0.02,
"reaction_day_return_max": 0.15,
"close_location_min": 0.55,
"volume_ratio_min": 1.2,
"volume_ratio_max": 5.0,
"document_quality_score_min": 0.5,
"parse_confidence_overall_min": 0.5,
"score_threshold_override": 0.0,
"residual_reserve_selected": true,
"next_open_gap_cap_pct": 0.08,
"early_failure_close_below_entry_and_reaction_close_override": false,
"early_failure_no_progress_days_override": 10,
"early_failure_no_progress_r_override": 0.0,
"early_failure_no_progress_fraction_override": 1.0,
"target_1_r_override": 5.0,
"target_1_fraction_override": 0.1,
"trailing_warmup_days_override": 10,
"per_trade_risk_pct_override": 0.015,
"stop_atr_multiplier_override": 3.0,
"use_reaction_day_low_stop_override": false,
"enabled": true
}
],
"splits": [
{
"kind": "named_snapshot",
"params": {
"name": "train"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "valid"
}
},
{
"kind": "named_snapshot",
"params": {
"name": "test"
}
}
],
"tags": [
"return-max",
"v6new",
"coverage-expansion"
],
"notes": "2 new engines: bullish_raised_strong (154 events, 61% WR) + mixed_notprovided_postmarket (95 events, 62% WR). Target: increase trade count without quality dilution."
}

@ -1,100 +1,149 @@
# Strategy Improvement Leaderboard
_Updated: 2026-03-18T00:26:47.429362+00:00_
_Updated: 2026-03-24T03:10:15.979240+00:00_
| # | Experiment | SQS | [T]PF | [T]Ret% | [T]WR | [T]Sharpe | [T]DD% | [T]N | [T]Gross% | [T]Net% | [T]DIM% | [V]PF | [V]Ret% | [V]WR | [V]Sharpe | [V]DD% | [V]N | [V]Gross% | [V]Net% | [V]DIM% | Date |
|---|-----------|-----|-------|---------|-------|-----------|--------|------|-----------|---------|---------|-------|---------|-------|-----------|--------|------|-----------|---------|---------|------|
| 1 | pead_midcap_step56_short_core_macro_block_crashcap_gap10_interleave_longtrend25 | 51.3 | 4.03 | +1.1 | 80% | 3.4 | 0.2 | 20 | 2.5 | -1.5 | 51.1 | 4.82 | +1.9 | 68% | 4.0 | 0.6 | 28 | 4.2 | -2.7 | 56.1 | 2026-03-17 |
| 2 | pead_midcap_step75_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react12_sdlongwikimax25 | 51.1 | 3.69 | +1.0 | 80% | 3.4 | 0.2 | 20 | 2.5 | -1.5 | 48.9 | 5.15 | +1.9 | 73% | 4.6 | 0.3 | 26 | 3.5 | -2.0 | 49.1 | 2026-03-18 |
| 3 | pead_midcap_step74_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react12_sdlongwikimax20 | 51.1 | 3.69 | +1.0 | 80% | 3.4 | 0.2 | 20 | 2.5 | -1.5 | 48.9 | 5.15 | +1.9 | 73% | 4.6 | 0.3 | 26 | 3.5 | -2.0 | 49.1 | 2026-03-18 |
| 4 | pead_midcap_step62_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10 | 50.9 | 3.69 | +1.0 | 80% | 3.4 | 0.2 | 20 | 2.5 | -1.5 | 48.9 | 4.64 | +1.8 | 69% | 4.5 | 0.4 | 26 | 3.5 | -2.0 | 49.1 | 2026-03-17 |
| 5 | pead_midcap_step66_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react12 | 50.9 | 3.69 | +1.0 | 80% | 3.4 | 0.2 | 20 | 2.5 | -1.5 | 48.9 | 4.64 | +1.8 | 69% | 4.5 | 0.4 | 26 | 3.5 | -2.0 | 49.1 | 2026-03-17 |
| 6 | pead_midcap_step64_short_core_macro_block_crashcap_gap10_interleave_max4_acsgap10 | 50.6 | 3.69 | +1.0 | 80% | 3.4 | 0.2 | 20 | 2.5 | -1.5 | 48.9 | 4.33 | +1.7 | 65% | 3.7 | 0.6 | 26 | 3.8 | -2.3 | 49.1 | 2026-03-17 |
| 7 | pead_midcap_step55_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25 | 49.8 | 3.40 | +1.0 | 78% | 3.1 | 0.2 | 23 | 3.0 | -2.0 | 53.2 | 4.62 | +1.9 | 71% | 4.5 | 0.3 | 28 | 3.8 | -2.4 | 56.1 | 2026-03-17 |
| 8 | pead_midcap_step52_short_core_macro_block_crashcap_gap10 | 49.8 | 3.35 | +1.0 | 77% | 3.0 | 0.2 | 22 | 2.9 | -2.2 | 53.2 | 5.66 | +1.8 | 72% | 4.8 | 0.2 | 25 | 3.6 | -2.6 | 56.1 | 2026-03-17 |
| 9 | pead_midcap_step48_short_core_macro_block_nolong | 46.9 | 3.40 | +0.8 | 80% | 2.4 | 0.4 | 20 | 2.6 | +2.6 | 52.2 | 5.73 | +1.3 | 70% | 3.4 | 0.3 | 20 | 3.3 | +3.3 | 51.8 | 2026-03-17 |
| 10 | pead_midcap_step58_short_core_macro_block_crashcap_gap7_longtrend12_sdlong25 | 46.6 | 2.76 | +0.9 | 74% | 2.8 | 0.2 | 23 | 3.2 | -1.3 | 53.2 | 2.89 | +1.6 | 69% | 3.6 | 0.5 | 29 | 4.0 | -2.0 | 56.1 | 2026-03-17 |
| 11 | pead_midcap_step54_short_core_macro_block_crashcap_gap10_longtrend12 | 46.5 | 2.99 | +0.9 | 77% | 2.5 | 0.3 | 22 | 2.9 | -2.2 | 53.2 | 6.10 | +2.0 | 73% | 4.7 | 0.2 | 26 | 3.6 | -2.6 | 56.1 | 2026-03-17 |
| 12 | pead_midcap_step57_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4 | 46.5 | 2.66 | +0.9 | 75% | 2.9 | 0.2 | 24 | 3.2 | -2.2 | 53.2 | 4.44 | +1.9 | 69% | 4.5 | 0.3 | 29 | 3.9 | -2.5 | 56.1 | 2026-03-17 |
| 13 | pead_midcap_step46_short_core_macro_block_acshort12 | 45.8 | 4.52 | +1.3 | 71% | 3.6 | 0.3 | 21 | 2.1 | +2.1 | 40.4 | 2.44 | +1.3 | 69% | 3.2 | 0.4 | 26 | 4.0 | +4.0 | 57.9 | 2026-03-17 |
| 14 | pead_midcap_step36_balanced_sleeves_nofrac_aclong12_sdlong12 | 44.5 | 2.06 | +2.1 | 61% | 4.5 | 0.4 | 54 | 6.0 | +6.0 | 76.6 | - | - | - | - | - | 0 | - | - | - | 2026-03-17 |
| 15 | pead_midcap_step51_short_core_macro_block_crashcap | 44.4 | 4.19 | +1.2 | 73% | 3.6 | 0.2 | 22 | 2.3 | -0.8 | 42.6 | 2.31 | +1.3 | 68% | 3.0 | 0.4 | 28 | 4.1 | -1.9 | 57.9 | 2026-03-17 |
| 16 | pead_midcap_step45_short_core_macro_block | 44.3 | 3.78 | +1.2 | 70% | 3.4 | 0.3 | 23 | 2.4 | +2.4 | 42.6 | 2.31 | +1.3 | 68% | 3.0 | 0.4 | 28 | 4.2 | +4.2 | 57.9 | 2026-03-17 |
| 17 | pead_midcap_step53_short_core_macro_block_crashcap_gap14 | 39.5 | 4.60 | +1.1 | 84% | 3.5 | 0.2 | 19 | 2.3 | +2.3 | 53.2 | 8.21 | +2.0 | 76% | 5.3 | 0.2 | 25 | 3.6 | +3.6 | 56.1 | 2026-03-17 |
| 18 | pead_midcap_step65_short_core_macro_block_crashcap_gap10_interleave_max4_acsgap12 | 38.3 | 3.60 | +0.9 | 79% | 3.2 | 0.2 | 19 | 1.9 | -0.9 | 38.3 | 4.56 | +1.5 | 67% | 4.0 | 0.5 | 24 | 3.4 | -1.9 | 47.4 | 2026-03-17 |
| 19 | pead_midcap_step63_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap12 | 38.2 | 3.60 | +0.9 | 79% | 3.2 | 0.2 | 19 | 1.9 | -0.9 | 38.3 | 5.27 | +1.8 | 71% | 4.9 | 0.3 | 24 | 3.1 | -1.6 | 45.6 | 2026-03-17 |
| 20 | pead_midcap_step67_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react14 | 38.2 | 3.60 | +0.9 | 79% | 3.2 | 0.2 | 19 | 1.9 | -0.9 | 38.3 | 5.33 | +1.8 | 72% | 4.4 | 0.5 | 25 | 3.2 | -1.7 | 47.4 | 2026-03-17 |
| 21 | pead_midcap_step50_same_day_short_long_macro_block | 36.2 | 3.21 | +0.8 | 60% | 2.7 | 0.4 | 15 | 1.6 | +1.6 | 38.3 | 2.21 | +1.0 | 65% | 2.7 | 0.3 | 20 | 3.4 | +3.4 | 43.9 | 2026-03-17 |
| 22 | pead_midcap_step30_balanced_sleeves_nofrac | 35.4 | 1.41 | +1.4 | 54% | 2.8 | 0.8 | 67 | 8.0 | +8.0 | 76.6 | - | - | - | - | - | 0 | - | - | - | 2026-03-17 |
| 23 | pead_midcap_step47_short_core_macro_block_sdlong25 | 35.2 | 3.43 | +1.3 | 68% | 3.3 | 0.3 | 25 | 2.9 | +2.9 | 48.9 | 1.77 | +1.0 | 65% | 2.2 | 0.4 | 31 | 4.6 | +4.6 | 57.9 | 2026-03-17 |
| 24 | pead_midcap_step44_short_core_macro50 | 35.0 | 2.01 | +1.3 | 57% | 2.6 | 0.7 | 58 | 4.5 | -1.6 | 72.3 | 1.78 | +1.1 | 55% | 2.5 | 0.4 | 40 | 4.8 | -2.0 | 73.7 | 2026-03-17 |
| 25 | pead_midcap_step33_balanced_sleeves_nofrac_acshort6 | 35.0 | 1.47 | +1.2 | 52% | 2.3 | 0.7 | 48 | 6.2 | +6.2 | 70.2 | - | - | - | - | - | 0 | - | - | - | 2026-03-17 |
| 26 | pead_midcap_step59_same_day_only_max4_longtrend25 | 33.2 | 2.61 | +0.6 | 69% | 2.3 | 0.3 | 13 | 1.4 | -0.5 | 31.9 | 6.63 | +1.9 | 73% | 4.5 | 0.4 | 22 | 3.9 | -2.4 | 42.1 | 2026-03-17 |
| 27 | pead_midcap_step60_same_day_only_interleave_max4_longtrend25 | 33.2 | 2.61 | +0.6 | 69% | 2.3 | 0.3 | 13 | 1.4 | -0.5 | 31.9 | 6.63 | +1.9 | 73% | 4.5 | 0.4 | 22 | 3.9 | -2.4 | 42.1 | 2026-03-17 |
| 28 | pead_midcap_step61_same_day_only_max5_longtrend25 | 33.2 | 2.61 | +0.6 | 69% | 2.3 | 0.3 | 13 | 1.4 | -0.5 | 31.9 | 6.63 | +1.9 | 73% | 4.5 | 0.4 | 22 | 3.9 | -2.4 | 42.1 | 2026-03-17 |
| 29 | pead_midcap_step43_short_core_sdlong25 | 31.7 | 1.66 | +1.5 | 57% | 2.0 | 1.3 | 58 | 7.1 | +7.1 | 72.3 | 1.46 | +1.0 | 56% | 1.9 | 0.6 | 45 | 6.2 | +6.2 | 73.7 | 2026-03-17 |
| 30 | pead_midcap_step41_short_core_sdlong12_acshort50 | 30.7 | 1.53 | +1.2 | 56% | 1.6 | 1.3 | 59 | 6.8 | +6.8 | 72.3 | 1.48 | +0.9 | 55% | 1.8 | 0.6 | 40 | 5.6 | +5.6 | 73.7 | 2026-03-17 |
| 31 | pead_midcap_step37_balanced_sleeves_aclong_vol3 | 30.6 | 1.38 | +1.2 | 54% | 2.5 | 0.8 | 63 | 7.5 | +7.5 | 76.6 | 1.38 | +1.1 | 51% | 1.8 | 0.9 | 57 | 7.9 | +7.9 | 77.2 | 2026-03-17 |
| 32 | pead_midcap_step42_short_core_only | 30.5 | 1.44 | +0.8 | 63% | 1.2 | 1.2 | 46 | 5.5 | +5.5 | 71.7 | 2.55 | +1.2 | 58% | 2.8 | 0.5 | 31 | 4.5 | +4.5 | 71.4 | 2026-03-17 |
| 33 | pead_midcap_step14_score65 | 29.9 | 1.22 | +0.7 | 57% | 1.3 | 0.9 | 72 | - | - | - | 1.40 | +1.0 | 56% | 1.6 | 0.7 | 66 | - | - | - | 2026-03-17 |
| 34 | pead_midcap_step18_nofrac | 29.4 | 1.23 | +0.8 | 52% | 1.4 | 0.9 | 64 | - | - | - | 1.46 | +1.2 | 47% | 1.9 | 0.6 | 55 | - | - | - | 2026-03-17 |
| 35 | pead_midcap_step31_balanced_sleeves_nofrac_acshort12 | 29.3 | 1.49 | +1.6 | 55% | 3.2 | 0.7 | 64 | 7.6 | +7.6 | 76.6 | 1.38 | +1.1 | 52% | 1.8 | 0.9 | 58 | 8.0 | +8.0 | 77.2 | 2026-03-17 |
| 36 | pead_midcap_step19_hold5 | 29.2 | 1.20 | +0.7 | 57% | 1.2 | 0.9 | 72 | - | - | - | 1.55 | +1.4 | 57% | 2.2 | 0.7 | 68 | - | - | - | 2026-03-17 |
| 37 | pead_midcap_step49_same_day_short_macro_block | 29.1 | 2.40 | +0.4 | 70% | 1.6 | 0.4 | 10 | 1.0 | +1.0 | 26.1 | 25.09 | +1.2 | 75% | 3.2 | 0.3 | 12 | 2.6 | +2.6 | 32.1 | 2026-03-17 |
| 38 | pead_midcap_step20_best3 | 28.7 | 1.22 | +0.7 | 52% | 1.3 | 0.9 | 64 | - | - | - | 1.61 | +1.6 | 48% | 2.5 | 0.6 | 56 | - | - | - | 2026-03-17 |
| 39 | pead_midcap_step40_short_core_sdlong12 | 28.6 | 1.77 | +1.5 | 58% | 2.2 | 1.1 | 55 | 6.4 | +6.4 | 72.3 | 1.48 | +0.9 | 55% | 1.8 | 0.6 | 40 | 5.6 | +5.6 | 73.7 | 2026-03-17 |
| 40 | pead_midcap_step17_target2 | 27.3 | 1.18 | +0.6 | 53% | 1.1 | 0.8 | 66 | - | - | - | 1.38 | +1.0 | 51% | 1.5 | 0.7 | 59 | - | - | - | 2026-03-17 |
| 41 | pead_midcap_step39_balanced_sleeves_sdlong12 | 27.0 | 1.50 | +1.5 | 55% | 3.4 | 0.5 | 62 | 7.4 | +7.4 | 76.6 | 1.38 | +1.0 | 51% | 1.7 | 0.9 | 53 | 7.5 | +7.5 | 77.2 | 2026-03-17 |
| 42 | pead_midcap_step27_sdlong_close7_budget25 | 26.4 | 1.17 | +0.6 | 54% | 0.9 | 1.3 | 68 | 8.5 | +8.5 | 72.3 | - | - | - | - | - | 0 | - | - | - | 2026-03-17 |
| 43 | pead_midcap_step13_best | 26.3 | 1.12 | +0.4 | 55% | 0.8 | 0.9 | 75 | - | - | - | 1.61 | +1.6 | 59% | 2.2 | 0.7 | 70 | - | - | - | 2026-03-16 |
| 44 | pead_midcap_step23_sdlong_close7 | 24.9 | 1.13 | +0.5 | 54% | 0.7 | 1.4 | 69 | 8.6 | +8.6 | 72.3 | - | - | - | - | - | 0 | - | - | - | 2026-03-17 |
| 45 | pead_midcap_step34_balanced_sleeves_nofrac_aclong25 | 23.9 | 1.62 | +1.8 | 56% | 3.8 | 0.6 | 62 | 7.4 | +7.4 | 76.6 | 1.30 | +0.9 | 51% | 1.4 | 0.9 | 57 | 7.9 | +7.9 | 77.2 | 2026-03-17 |
| 46 | pead_midcap_step16_react7_score65 | 23.8 | 0.97 | -0.1 | 56% | -0.2 | 1.6 | 89 | - | - | - | 2.01 | +2.8 | 63% | 3.7 | 0.8 | 83 | - | - | - | 2026-03-17 |
| 47 | pead_midcap_step5_maxcand3 | 23.4 | 0.95 | -0.2 | 54% | -0.4 | 1.4 | 96 | - | - | - | 2.08 | +3.3 | 65% | 4.0 | 1.1 | 89 | - | - | - | 2026-03-16 |
| 48 | pead_midcap_step38_balanced_sleeves_aclong_vol4 | 23.3 | 1.12 | +0.4 | 51% | 0.8 | 0.9 | 61 | 7.4 | +7.4 | 76.6 | 1.29 | +0.8 | 53% | 1.4 | 0.9 | 53 | 7.6 | +7.6 | 77.2 | 2026-03-17 |
| 49 | pead_midcap_step15_react7 | 23.0 | 0.94 | -0.3 | 55% | -0.5 | 1.6 | 91 | - | - | - | 1.89 | +2.6 | 62% | 3.5 | 0.9 | 84 | - | - | - | 2026-03-17 |
| 50 | pead_midcap_portfolio_v2 | 23.0 | 1.08 | +0.3 | 51% | 0.5 | 1.8 | 70 | 7.9 | +7.9 | 72.3 | - | - | - | - | - | 0 | - | - | - | 2026-03-17 |
| 51 | pead_midcap_step11_score60 | 22.1 | 1.02 | +0.1 | 52% | 0.2 | 0.9 | 77 | - | - | - | 1.91 | +2.3 | 62% | 3.0 | 0.7 | 72 | - | - | - | 2026-03-16 |
| 52 | pead_midcap_step12_vol2x | 22.1 | 1.02 | +0.1 | 52% | 0.1 | 0.9 | 77 | - | - | - | 1.91 | +2.3 | 62% | 3.0 | 0.7 | 72 | - | - | - | 2026-03-16 |
| 53 | pead_midcap_step3_10pct | 21.9 | 1.00 | +0.0 | 50% | 0.0 | 1.4 | 98 | - | - | - | 1.66 | +2.0 | 60% | 2.9 | 0.7 | 78 | - | - | - | 2026-03-16 |
| 54 | pead_midcap_step10_short | 21.5 | 1.00 | -0.0 | 52% | -0.0 | 0.9 | 79 | - | - | - | 1.61 | +1.6 | 59% | 2.2 | 0.7 | 70 | - | - | - | 2026-03-16 |
| 55 | pead_midcap_step35_balanced_sleeves_nofrac_aclong12 | 21.2 | 2.01 | +2.2 | 61% | 4.2 | 0.4 | 56 | 6.2 | +1.1 | 76.6 | 1.24 | +0.7 | 51% | 1.2 | 0.9 | 53 | 7.5 | +1.6 | 77.2 | 2026-03-17 |
| 56 | pead_midcap_step2_notrail | 17.2 | 0.93 | -0.3 | 67% | -0.4 | 1.7 | 54 | - | - | - | 1.07 | +0.4 | 73% | 0.4 | 1.7 | 62 | - | - | - | 2026-03-16 |
| 57 | pead_midcap_step1_fixedr | 16.2 | 0.91 | -0.5 | 47% | -0.7 | 1.5 | 95 | - | - | - | 1.77 | +2.8 | 49% | 3.4 | 1.6 | 69 | - | - | - | 2026-03-16 |
| 58 | pead_midcap_combo_10pct_maxcand3 | 15.9 | 0.97 | -0.1 | 51% | -0.2 | 0.9 | 79 | - | - | - | 1.91 | +2.3 | 62% | 3.0 | 0.7 | 72 | - | - | - | 2026-03-16 |
| 59 | pead_midcap_step6_drift | 14.7 | 0.86 | -0.9 | 43% | -1.6 | 1.7 | 100 | - | - | - | 1.70 | +2.7 | 51% | 3.7 | 1.0 | 75 | - | - | - | 2026-03-16 |
| 60 | pead_midcap_step7_fixedr | 13.8 | 0.94 | -0.2 | 45% | -0.4 | 1.0 | 71 | - | - | - | 2.00 | +2.4 | 53% | 3.1 | 0.7 | 53 | - | - | - | 2026-03-16 |
| 61 | pead_midcap_step4_longonly | 12.2 | 0.84 | -0.8 | 45% | -1.2 | 1.4 | 78 | - | - | - | 1.43 | +1.5 | 61% | 1.7 | 1.6 | 76 | - | - | - | 2026-03-16 |
| 62 | pead_midcap_step8_nft | 11.5 | 0.65 | -1.8 | 41% | -3.0 | 2.2 | 71 | - | - | - | 1.55 | +1.8 | 46% | 2.4 | 1.0 | 57 | - | - | - | 2026-03-16 |
| 63 | pead_midcap_step9_stop2 | 11.4 | 0.77 | -1.7 | 45% | -1.8 | 2.5 | 71 | - | - | - | 1.81 | +3.2 | 53% | 2.8 | 1.2 | 53 | - | - | - | 2026-03-16 |
_Default view excludes retired legacy PEAD / short-core / exact-pocket families and incomplete train-only scans. Use `fithia2 lb --include-retired` to inspect archived research._
| # | Experiment | SQS | [Tr]Ret% | [V]Ret% | [T]Ret% | [T]Ann% | [T]DD% | [T]Gross% | [T]DIM% | [T]R/G | Date |
|---|-----------|-----|----------|----------|----------|----------|--------|------------|----------|---------|------|
| 1 | return_max_long_v6.46 | 63.0 | +61.9 | +39.9 | +55.1 | +128.4 | 3.3 | 37.3 | 71.1 | 1.48 | 2026-03-23 |
| 2 | return_max_long_v6.44 | 62.8 | +61.9 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-23 |
| 3 | return_max_long_v6.84 | 62.4 | +59.6 | +39.9 | +57.4 | +134.8 | 4.0 | 44.2 | 82.2 | 1.30 | 2026-03-23 |
| 4 | return_max_long_v6.45 | 62.4 | +59.5 | +40.5 | +55.2 | +128.6 | 4.0 | 40.5 | 71.1 | 1.36 | 2026-03-23 |
| 5 | return_max_long_v1.312 | 61.9 | +51.3 | +35.8 | +48.2 | +109.8 | 4.0 | 40.5 | 71.1 | 1.19 | 2026-03-23 |
| 6 | return_max_long_v1.314 | 61.8 | +51.3 | +35.8 | +51.7 | +119.0 | 4.0 | 40.1 | 71.1 | 1.29 | 2026-03-23 |
| 7 | return_max_long_v6.29 | 61.7 | +61.9 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-23 |
| 8 | return_max_long_v1.319 | 61.6 | +50.4 | +36.1 | +48.3 | +110.1 | 4.0 | 40.4 | 71.1 | 1.20 | 2026-03-23 |
| 9 | return_max_long_v6.34 | 61.5 | +62.3 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-23 |
| 10 | return_max_long_v1.315 | 61.3 | +50.6 | +36.3 | +51.9 | +119.8 | 4.0 | 39.9 | 71.1 | 1.30 | 2026-03-23 |
| 11 | return_max_long_v1.304 | 61.0 | +51.3 | +35.8 | +48.3 | +110.0 | 4.0 | 40.5 | 71.1 | 1.19 | 2026-03-23 |
| 12 | return_max_long_v6.35 | 60.8 | +51.3 | +38.1 | +57.2 | +134.2 | 4.1 | 41.5 | 75.6 | 1.38 | 2026-03-23 |
| 13 | return_max_long_v6.33 | 60.7 | +61.3 | +41.9 | +56.7 | +132.9 | 4.0 | 39.3 | 68.1 | 1.44 | 2026-03-23 |
| 14 | return_max_long_v6.39 | 60.7 | +61.9 | +41.0 | +57.7 | +135.8 | 4.1 | 40.0 | 68.1 | 1.44 | 2026-03-23 |
| 15 | return_max_long_v1.298 | 60.6 | +51.8 | +35.1 | +48.3 | +110.0 | 4.0 | 40.5 | 71.1 | 1.19 | 2026-03-23 |
| 16 | return_max_long_v6.42 | 60.1 | +59.5 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-23 |
| 17 | return_max_long_v6.26 | 57.6 | +67.5 | +40.3 | +57.1 | +134.1 | 4.1 | 41.4 | 74.8 | 1.38 | 2026-03-23 |
| 18 | return_max_long_v6.25 | 57.2 | +69.0 | +40.3 | +59.1 | +139.7 | 4.1 | 40.5 | 73.3 | 1.46 | 2026-03-23 |
| 19 | return_max_long_v1.275 | 57.0 | +53.8 | +35.8 | +47.2 | +107.1 | 4.0 | 40.5 | 69.6 | 1.16 | 2026-03-23 |
| 20 | return_max_long_v6.22 | 57.0 | +62.9 | +38.3 | +59.1 | +139.7 | 4.1 | 40.5 | 73.3 | 1.46 | 2026-03-23 |
| 21 | return_max_long_v6.20 | 56.7 | +69.1 | +40.3 | +59.1 | +139.7 | 4.1 | 40.5 | 73.3 | 1.46 | 2026-03-23 |
| 22 | return_max_long_v6.18 | 56.4 | +64.0 | +38.3 | +59.1 | +139.7 | 4.1 | 40.5 | 73.3 | 1.46 | 2026-03-23 |
| 23 | return_max_long_v6.15 | 54.8 | +63.8 | +34.5 | +59.1 | +139.7 | 4.1 | 40.3 | 73.3 | 1.47 | 2026-03-23 |
| 24 | return_max_long_v1.284 | 54.0 | +59.4 | +35.8 | +48.6 | +110.9 | 4.0 | 40.4 | 70.4 | 1.20 | 2026-03-23 |
| 25 | return_max_long_v1.256 | 52.1 | +58.3 | +35.8 | +46.8 | +106.0 | 4.0 | 42.0 | 69.6 | 1.11 | 2026-03-23 |
| 26 | return_max_long_v6.3 | 52.0 | +52.6 | +35.2 | +59.6 | +141.0 | 4.1 | 39.9 | 70.4 | 1.49 | 2026-03-23 |
| 27 | return_max_long_v6new.2 | 51.9 | +129.8 | +20.4 | +82.3 | +95.9 | 3.4 | 32.1 | 68.4 | 2.56 | 2026-03-23 |
| 28 | return_max_long_v1.236 | 51.7 | +55.5 | +35.5 | +46.8 | +105.9 | 4.0 | 42.0 | 69.6 | 1.11 | 2026-03-22 |
| 29 | return_max_long_v1.248 | 51.1 | +56.7 | +35.5 | +47.2 | +107.1 | 4.0 | 41.6 | 66.7 | 1.13 | 2026-03-23 |
| 30 | return_max_long_v1.251 | 50.9 | +58.0 | +35.3 | +46.8 | +105.9 | 4.0 | 42.0 | 69.6 | 1.11 | 2026-03-23 |
| 31 | return_max_long_v1.231 | 50.9 | +51.6 | +35.5 | +46.8 | +105.9 | 4.0 | 42.0 | 69.6 | 1.11 | 2026-03-22 |
| 32 | return_max_long_v1.227 | 50.8 | +51.8 | +35.0 | +46.8 | +105.9 | 4.0 | 42.0 | 69.6 | 1.11 | 2026-03-22 |
| 33 | return_max_long_v4.41 | 50.4 | +52.6 | +35.2 | +59.2 | +140.0 | 4.1 | 39.7 | 70.4 | 1.49 | 2026-03-22 |
| 34 | return_max_long_v1.232 | 50.3 | +52.8 | +35.5 | +47.2 | +107.1 | 4.0 | 41.6 | 66.7 | 1.13 | 2026-03-22 |
| 35 | return_max_long_v6new.5 | 50.2 | +97.9 | +15.5 | +77.9 | +90.7 | 3.1 | 26.5 | 64.9 | 2.94 | 2026-03-23 |
| 36 | return_max_long_v6.4 | 49.7 | +55.3 | +37.2 | +59.8 | +141.8 | 4.1 | 39.3 | 70.4 | 1.52 | 2026-03-23 |
| 37 | return_max_long_v6.15 | 48.9 | - | +34.5 | +59.1 | +139.7 | 4.1 | 40.3 | 73.3 | 1.47 | 2026-03-23 |
| 38 | return_max_long_v4.42 | 47.9 | +53.3 | +35.8 | +27.7 | +90.8 | 2.3 | 34.7 | 70.5 | 0.80 | 2026-03-22 |
| 39 | return_max_long_v1.264 | 47.7 | +58.5 | +36.2 | +46.9 | +106.3 | 4.0 | 41.9 | 69.6 | 1.12 | 2026-03-23 |
| 40 | return_max_long_v4.40 | 46.2 | +52.8 | +33.9 | +59.1 | +139.6 | 4.0 | 38.3 | 63.7 | 1.54 | 2026-03-22 |
| 41 | return_max_long_v4.38 | 45.6 | +52.8 | +33.9 | +59.1 | +139.6 | 4.0 | 37.9 | 63.0 | 1.56 | 2026-03-22 |
| 42 | return_max_long_v1.214 | 45.6 | +54.8 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 43 | return_max_long_v4.39 | 45.4 | +53.3 | +35.8 | +27.6 | +90.8 | 2.3 | 33.0 | 69.5 | 0.84 | 2026-03-22 |
| 44 | return_max_long_v1.212 | 45.3 | +54.4 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 45 | return_max_long_v1.199 | 45.3 | +53.8 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 46 | return_max_long_v1.199 | 45.3 | +53.8 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 47 | return_max_long_v1.204 | 45.1 | +54.5 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 48 | return_max_long_v4.28 | 45.0 | +51.8 | +37.5 | +59.1 | +139.8 | 4.0 | 37.8 | 63.0 | 1.56 | 2026-03-22 |
| 49 | return_max_long_v4.43 | 44.9 | +52.9 | +33.9 | +59.0 | +139.5 | 4.1 | 39.6 | 63.7 | 1.49 | 2026-03-22 |
| 50 | return_max_long_v4.36 | 44.7 | +52.3 | +38.4 | +58.6 | +138.2 | 4.1 | 39.3 | 63.0 | 1.49 | 2026-03-22 |
| 51 | return_max_long_v4.19 | 44.6 | +54.8 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 52 | return_max_long_v4.20 | 44.3 | +55.4 | +30.5 | +27.6 | +90.8 | 2.3 | 33.0 | 69.5 | 0.84 | 2026-03-22 |
| 53 | return_max_long_v4.31 | 44.2 | +55.9 | +38.4 | +27.7 | +79.3 | 2.3 | 29.8 | 62.3 | 0.93 | 2026-03-22 |
| 54 | return_max_long_v4.29 | 43.8 | +56.4 | +38.3 | +26.2 | +74.2 | 2.6 | 30.2 | 62.3 | 0.87 | 2026-03-22 |
| 55 | return_max_long_v6new.1 | 43.8 | +131.2 | +17.0 | +105.2 | +123.7 | 3.4 | 34.7 | 71.6 | 3.03 | 2026-03-23 |
| 56 | return_max_long_v1.192 | 43.4 | +51.6 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 57 | return_max_long_v1.188 | 42.7 | +48.9 | +37.5 | +47.6 | +108.2 | 4.0 | 41.1 | 66.7 | 1.16 | 2026-03-22 |
| 58 | return_max_long_v1.194 | 42.6 | +51.6 | +37.5 | +47.6 | +108.2 | 4.0 | 41.1 | 66.7 | 1.16 | 2026-03-22 |
| 59 | return_max_long_v6new.4 | 42.0 | +85.6 | +18.4 | +77.9 | +90.7 | 3.1 | 26.5 | 64.9 | 2.94 | 2026-03-23 |
| 60 | return_max_long_v6new.8 | 41.5 | +71.1 | +40.5 | +48.9 | +111.6 | 4.2 | 46.4 | 77.8 | 1.05 | 2026-03-24 |
| 61 | return_max_long_v1.278 | 41.2 | +52.2 | +31.2 | +53.6 | +124.5 | 4.0 | 41.5 | 71.1 | 1.29 | 2026-03-23 |
| 62 | return_max_long_v1.180 | 41.0 | +42.9 | +37.5 | +47.7 | +108.4 | 4.0 | 40.9 | 66.7 | 1.17 | 2026-03-22 |
| 63 | return_max_long_v1.174 | 40.5 | +43.0 | +36.9 | +46.1 | +104.3 | 4.0 | 40.4 | 66.7 | 1.14 | 2026-03-22 |
| 64 | return_max_long_v1.201 | 39.9 | +54.1 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 65 | return_max_long_v6.44 | 39.6 | +36.3 | +20.5 | +43.1 | +96.2 | 4.8 | 42.6 | 70.4 | 1.01 | 2026-03-23 |
| 66 | return_max_long_v1.218 | 39.5 | +57.1 | +37.5 | +47.1 | +106.9 | 4.0 | 41.5 | 66.7 | 1.14 | 2026-03-22 |
| 67 | return_max_long_v1.207 | 39.0 | +56.7 | +37.5 | +47.3 | +107.3 | 4.0 | 41.9 | 72.6 | 1.13 | 2026-03-22 |
| 68 | return_max_long_v4.12 | 37.9 | +54.8 | +30.5 | +26.7 | +87.2 | 2.5 | 30.9 | 68.4 | 0.86 | 2026-03-22 |
| 69 | return_max_long_v1.170 | 37.1 | +43.5 | +35.3 | +41.4 | +92.0 | 4.7 | 39.0 | 58.5 | 1.06 | 2026-03-22 |
| 70 | return_max_long_v4.16 | 37.0 | +57.1 | +30.1 | +24.7 | +79.5 | 3.0 | 31.5 | 68.4 | 0.78 | 2026-03-22 |
| 71 | return_max_long_v4.9 | 34.9 | +42.9 | +37.5 | +47.7 | +108.4 | 4.0 | 40.9 | 66.7 | 1.17 | 2026-03-22 |
| 72 | return_max_long_v4.11 | 34.9 | +42.9 | +37.5 | +47.7 | +108.4 | 4.0 | 40.9 | 66.7 | 1.17 | 2026-03-22 |
| 73 | return_max_long_v6new.5 | 33.7 | +97.9 | +15.5 | +77.9 | +90.7 | 3.1 | 26.5 | 64.9 | 2.94 | 2026-03-23 |
| 74 | return_max_long_v4.10 | 33.2 | +44.0 | +37.5 | +47.7 | +108.4 | 4.0 | 40.2 | 66.7 | 1.19 | 2026-03-22 |
| 75 | return_max_long_v6.29 | 32.3 | +61.9 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-24 |
| 76 | return_max_long_v6new.1 | 29.9 | +131.2 | +17.0 | +105.2 | +123.7 | 3.4 | 34.7 | 71.6 | 3.03 | 2026-03-23 |
| 77 | return_max_long_v1.102 | 28.5 | +35.6 | +35.3 | +42.6 | +95.0 | 4.7 | 34.7 | 40.7 | 1.23 | 2026-03-22 |
| 78 | return_max_long_v1.128 | 28.5 | +35.6 | +35.3 | +42.6 | +95.0 | 4.7 | 34.7 | 40.7 | 1.23 | 2026-03-22 |
| 79 | return_max_long_v2.4 | 28.4 | +35.6 | +35.3 | +42.5 | +94.8 | 5.0 | 34.9 | 40.7 | 1.22 | 2026-03-22 |
| 80 | return_max_long_v1.101 | 28.2 | +36.7 | +35.3 | +42.6 | +95.1 | 4.7 | 34.8 | 40.7 | 1.23 | 2026-03-22 |
| 81 | return_max_long_v6new.7 | 27.8 | +58.1 | +42.7 | +59.2 | +139.9 | 4.0 | 38.0 | 63.7 | 1.56 | 2026-03-24 |
| 82 | return_max_long_v6new.7 | 27.8 | +58.1 | +42.7 | +59.2 | +139.9 | 4.0 | 38.0 | 63.7 | 1.56 | 2026-03-24 |
| 83 | return_max_long_v1.51 | 26.4 | +37.9 | +35.3 | +42.7 | +95.3 | 4.7 | 35.0 | 40.7 | 1.22 | 2026-03-22 |
| 84 | return_max_long_v6new.6 | 25.2 | +51.5 | +17.5 | +37.9 | +83.2 | 1.3 | 23.5 | 57.8 | 1.62 | 2026-03-23 |
| 85 | return_max_long_v1.52 | 24.9 | +40.0 | +35.3 | +42.7 | +95.3 | 4.7 | 35.0 | 40.7 | 1.22 | 2026-03-22 |
| 86 | return_max_long_v4.17 | 24.5 | +54.8 | +30.5 | +26.7 | +87.2 | 2.5 | 30.9 | 68.4 | 0.86 | 2026-03-22 |
| 87 | return_max_long_v2.3 | 21.0 | +30.7 | +35.3 | +28.2 | +59.7 | 4.7 | 33.3 | 39.3 | 0.85 | 2026-03-22 |
| 88 | return_max_long_v3.7 | 17.4 | +37.2 | +35.3 | +42.7 | +95.3 | 4.7 | 35.0 | 40.7 | 1.22 | 2026-03-22 |
| 89 | return_max_long_v2.5 | 16.5 | +21.7 | +35.3 | +54.5 | +126.9 | 4.7 | 35.0 | 40.7 | 1.56 | 2026-03-22 |
| 90 | return_max_long_v4.6 | 14.8 | +30.8 | +39.6 | +34.1 | +73.6 | 4.0 | 47.9 | 70.4 | 0.71 | 2026-03-22 |
| 91 | return_max_long_v3.16 | 14.6 | +33.1 | +29.9 | +51.4 | +118.4 | 4.9 | 22.8 | 26.7 | 2.25 | 2026-03-22 |
| 92 | return_max_long_v3.20 | 14.6 | +34.1 | +31.4 | +56.5 | +132.3 | 10.1 | 25.0 | 28.9 | 2.26 | 2026-03-22 |
| 93 | return_max_long_v3.2 | 14.4 | +15.9 | +36.6 | +44.5 | +99.9 | 4.7 | 43.7 | 52.6 | 1.02 | 2026-03-22 |
| 94 | return_max_long_v3.5 | 14.2 | +35.8 | +28.3 | +32.9 | +70.7 | 5.4 | 33.0 | 37.0 | 1.00 | 2026-03-22 |
| 95 | return_max_long_v3.3 | 14.0 | +25.5 | +35.3 | +37.4 | +81.8 | 4.9 | 47.3 | 56.3 | 0.79 | 2026-03-22 |
| 96 | return_max_long_v3.1 | 13.8 | +3.8 | +39.9 | +50.7 | +116.4 | 4.7 | 42.0 | 51.9 | 1.21 | 2026-03-22 |
| 97 | return_max_long_v1.53 | 13.5 | +50.9 | +38.8 | +43.4 | +97.2 | 6.8 | 36.3 | 45.2 | 1.19 | 2026-03-22 |
| 98 | return_max_long_v3.8 | 13.3 | +38.2 | +27.6 | +42.3 | +94.3 | 4.8 | 34.6 | 40.7 | 1.22 | 2026-03-22 |
| 99 | return_max_long_v4.7 | 13.2 | +23.0 | +37.6 | +33.6 | +72.4 | 3.2 | 42.9 | 70.4 | 0.78 | 2026-03-22 |
| 100 | return_max_long_v4.8 | 11.7 | +25.7 | +42.6 | +49.1 | +112.2 | 3.4 | 36.3 | 67.4 | 1.35 | 2026-03-22 |
| 101 | return_max_long_v1c.4 | 8.6 | +36.3 | +12.1 | +16.3 | +32.9 | 9.0 | 30.6 | 40.0 | 0.53 | 2026-03-22 |
| 102 | return_max_long_v1c.4 | 8.6 | +36.3 | +12.1 | +16.3 | +32.9 | 9.0 | 30.6 | 40.0 | 0.53 | 2026-03-22 |
| 103 | return_max_long_v1c.1 | 7.4 | +34.4 | +11.8 | +15.0 | +30.1 | 8.5 | 27.9 | 40.0 | 0.54 | 2026-03-22 |
| 104 | return_max_long_v1c.1 | 7.4 | +34.4 | +11.8 | +15.0 | +30.1 | 8.5 | 27.9 | 40.0 | 0.54 | 2026-03-22 |
| 105 | return_max_long_v1c.9 | 6.3 | +36.3 | +12.1 | +22.3 | +46.0 | 8.8 | 34.7 | 45.2 | 0.64 | 2026-03-22 |
| 106 | return_max_long_v1c.15 | 6.2 | +40.1 | +14.8 | +23.1 | +47.9 | 11.5 | 40.6 | 47.4 | 0.57 | 2026-03-22 |
| 107 | return_max_long_v1c.14 | 6.1 | +38.9 | +13.9 | +21.7 | +44.7 | 11.5 | 39.4 | 47.4 | 0.55 | 2026-03-22 |
| 108 | return_max_long_v1.129 | 5.4 | +41.3 | +29.5 | +47.4 | +107.7 | 5.7 | 36.4 | 49.6 | 1.30 | 2026-03-22 |
| 109 | return_max_long_v1c.7 | 4.7 | +41.4 | +15.7 | +17.0 | +34.4 | 11.8 | 36.7 | 42.2 | 0.46 | 2026-03-22 |
| 110 | return_max_long_v1c.7 | 4.7 | +41.4 | +15.7 | +17.0 | +34.4 | 11.8 | 36.7 | 42.2 | 0.46 | 2026-03-22 |
| 111 | return_max_long_v1.143 | 4.5 | +35.1 | +35.3 | +42.6 | +95.0 | 4.7 | 34.7 | 40.7 | 1.23 | 2026-03-22 |
| 112 | return_max_long_v1.55 | 3.6 | +37.9 | +35.3 | +48.0 | +109.3 | 4.7 | 34.4 | 39.3 | 1.40 | 2026-03-22 |
| 113 | return_max_long_v1.76 | 3.6 | +37.9 | +35.3 | +48.0 | +109.3 | 4.7 | 34.4 | 39.3 | 1.40 | 2026-03-22 |
| 114 | return_max_long_v1c.13 | 3.3 | +41.4 | +15.7 | +24.5 | +51.0 | 11.5 | 41.7 | 47.4 | 0.59 | 2026-03-22 |
| 115 | return_max_long_v1.146 | 3.2 | +27.2 | +35.2 | +50.1 | +114.8 | 6.0 | 37.1 | 49.6 | 1.35 | 2026-03-22 |
| 116 | return_max_long_v2.2 | 2.9 | +28.2 | +33.5 | +32.2 | +69.1 | 3.6 | 28.6 | 31.9 | 1.13 | 2026-03-22 |
| 117 | return_max_long_v4.1 | 1.7 | +22.8 | +16.5 | +15.1 | +30.3 | 7.3 | 39.4 | 41.5 | 0.38 | 2026-03-22 |
| 118 | return_max_long_v2.1 | 0.4 | +13.8 | +13.2 | +22.2 | +45.9 | 3.2 | 22.3 | 28.1 | 0.99 | 2026-03-22 |
## Recent Entries
### IMP-0063 (2026-03-18) — pead_midcap_step74_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react12_sdlongwikimax20
Hypothesis: A softer 2.0x wiki attention cap on same-day longs may remove only the most crowded winners while preserving the rest of the long sleeve.
Verdict: **BETTER** (SQS 51.1)
Reasoning: With max-only attention caps treating missing data as pass-through, the 2.0x cap lifted train from +5.09% to +5.50% and valid from +1.78% to +1.89% while holding test at +0.98% and cutting drawdown.
Next: Probe slightly looser same-day-long wiki caps to find the best plateau without giving back the valid lift.
### IMP-0513 (2026-03-24) — return_max_long_v6new.8
Hypothesis: 2 new engines for missed quality post-market events (bullish_raised_strong + mixed_notprovided)
Verdict: **UNKNOWN** (SQS 41.5)
### IMP-0062 (2026-03-18) — pead_midcap_step75_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react12_sdlongwikimax25
Hypothesis: Relaxing the same-day-long wiki cap to 2.5x may keep the recent valid/test improvements while recovering more train-side winners.
Verdict: **BETTER** (SQS 51.1)
Reasoning: The 2.5x cap matched step74 on valid and test, but improved train again to +5.53% with PF 1.72 and max drawdown 0.83%. This is the current best attention-aware branch.
Next: Use step75 as the new attention-enhanced baseline; only continue if a new change improves test without giving back the train and valid gains.
### IMP-0512 (2026-03-24) — return_max_long_v6.29
Hypothesis: v6.29 control re-run with proper OOT on v1 snapshot
Verdict: **UNKNOWN** (SQS 32.3)
### IMP-0061 (2026-03-17) — pead_midcap_step67_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react14
Hypothesis: A stricter 14% downside reaction requirement may further improve the filtered after-close short sleeve by keeping only the sharpest downside continuation setups.
Verdict: **NEUTRAL** (SQS 38.2)
Reasoning: This pushed train to +5.32% and lifted valid slightly, but test slipped back to +0.95%. It is a stronger train-focused branch, not a clear overall winner versus step66.
Next: Favor step66 for balance; step67 is only useful if we optimize explicitly for train-heavy return.
### IMP-0511 (2026-03-24) — return_max_long_v6new.7
Hypothesis: Prune 2 OOS-negative engines
Verdict: **UNKNOWN** (SQS 27.8)
### IMP-0060 (2026-03-17) — pead_midcap_step66_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react12
Hypothesis: Adding a 12% downside reaction requirement on top of the 10% after-close gap filter may remove the weakest residual after-close shorts without sacrificing the recent OOS edge.
Verdict: **BETTER** (SQS 50.9)
Reasoning: This matched step62 on valid/test while lifting train from +5.01% to +5.09%. It is a cleaner version of the filtered short-sleeve branch with no observable downside so far.
Next: Use step66 as the balanced return-first branch; only test further changes if they can raise test above +1.0% without giving back the train lift.
### IMP-0510 (2026-03-24) — return_max_long_v6new.7
Hypothesis: v6.29 with 2 OOS-negative engines pruned (unknown_ome, other_material_unknown)
Verdict: **UNKNOWN** (SQS 27.8)
Reasoning: Engine pruning: removed 2 engines with 0-33% OOS WR. Train SQS 91.1 (+1.3 vs 89.8). Test +59.16%. WFV 91.7% positive, 9.46% mean, gap 11.53%. RM 84.4%/-1.85%.
### IMP-0059 (2026-03-17) — pead_midcap_step65_short_core_macro_block_crashcap_gap10_interleave_max4_acsgap12
Hypothesis: A stricter after-close gap gate plus interleaving may produce the strongest hybrid of train lift and balanced sleeve participation.
Verdict: **WORSE** (SQS 38.3)
Reasoning: Train ticked up slightly, but valid deteriorated meaningfully and test did not improve. Interleaving is not helping this filtered branch.
Next: Stay with the non-interleaved filtered short sleeve; the next branch should tune the filtered after-close short only if we need more test return.
### IMP-0509 (2026-03-24) — return_max_long_v6new.7
Hypothesis: v6.29 with 2 weakest OOS engines disabled (unknown_ome, other_material_unknown)
Verdict: **UNKNOWN** (SQS None)
Reasoning: Auto-synced from official manifest.

File diff suppressed because one or more lines are too long

@ -26,6 +26,10 @@ class ExitReason(str, Enum):
KILL_SWITCH = "KILL_SWITCH"
MISSING_BAR = "MISSING_BAR"
NO_FOLLOW_THROUGH = "NO_FOLLOW_THROUGH"
EARLY_FAILURE = "EARLY_FAILURE"
NO_PROGRESS = "NO_PROGRESS"
GIVEBACK = "GIVEBACK"
RECYCLE = "RECYCLE"
class BacktestMode(str, Enum):
@ -56,13 +60,35 @@ class Candidate(BaseModel):
engine_id: str = "default"
entry_timing_policy: str = "next_open"
shadow_only: bool = False
engine_min_entry_price: float | None = None
engine_max_entry_price: float | None = None
engine_max_holding_days: int | None = None
engine_max_positions_per_sector: int | None = None
engine_risk_budget_pct: float = 1.0
engine_per_trade_risk_pct: float | None = None
engine_target_atr_multiplier: float | None = None
engine_stop_atr_multiplier: float | None = None
engine_target_1_r: float | None = None
engine_target_1_fraction: float | None = None
engine_trailing_model: str | None = None
engine_trailing_warmup_days: int | None = None
engine_use_reaction_day_low_stop: bool | None = None
engine_early_failure_close_below_entry_and_reaction_close: bool | None = None
engine_early_failure_no_progress_days: int | None = None
engine_early_failure_no_progress_r: float | None = None
engine_early_failure_no_progress_fraction: float | None = None
engine_veto_oneoff_penalty: float | None = None
engine_allow_oneoff_downsizing: bool | None = None
engine_oneoff_downsize_floor: float | None = None
engine_veto_parse_confidence_min: float | None = None
engine_allow_unknown_direction: bool | None = None
engine_next_open_gap_cap_pct: float | None = None
engine_add_on_max_count: int | None = None
engine_add_on_size_fraction: float | None = None
trade_direction: str = "long" # "long" or "short"
parent_position_id: str | None = None
is_add_on: bool = False
forced_shares: int | None = None
features: dict[str, Any] = Field(default_factory=dict)
@ -81,6 +107,8 @@ class PlannedOrder(BaseModel):
engine_id: str = "default"
entry_timing_policy: str = "next_open"
shadow_only: bool = False
parent_position_id: str | None = None
is_add_on: bool = False
skip_reason: str | None = None # non-None means the order was rejected
@ -97,6 +125,8 @@ class FilledTrade(BaseModel):
engine_id: str = "default"
entry_timing_policy: str = "next_open"
shadow_only: bool = False
parent_position_id: str | None = None
is_add_on: bool = False
entry_date: dt.date
exit_date: dt.date
entry_price: float
@ -125,6 +155,8 @@ class OpenPosition(BaseModel):
peak_price: float
shares_open: int
shares_total: int
parent_position_id: str | None = None
is_add_on: bool = False
days_held: int = 0
status: PositionStatus = PositionStatus.ENTERED
partial_fills: list[FilledTrade] = Field(default_factory=list)
@ -136,6 +168,7 @@ class DailyPortfolioState(BaseModel):
date: dt.date
equity: float
sizing_equity: float | None = None # equity used for position sizing; defaults to equity when None
cash_available: float
gross_exposure: float
net_exposure: float
@ -185,6 +218,12 @@ class MetricsBundle(BaseModel):
target_exit_rate: float | None = None
no_follow_through_exit_rate: float | None = None
score_bucket_hit_rate: dict[str, float] = Field(default_factory=dict)
qqq_benchmark_return_pct: float | None = None
excess_vs_qqq_pct: float | None = None
long_net_pnl: float | None = None
short_net_pnl: float | None = None
long_pnl_contribution_pct: float | None = None
short_pnl_contribution_pct: float | None = None
# Bootstrap confidence intervals (95%)
bootstrap_cis: dict[str, tuple[float, float] | None] = Field(default_factory=dict)
@ -197,6 +236,7 @@ class MetricsBundle(BaseModel):
class UniverseConfig(BaseModel):
min_price: float = 5.0
min_avg_dollar_volume: float = 1_000_000.0
min_market_cap_proxy: float | None = None
exclude_asset_types: list[str] = Field(default_factory=list)
allowed_exchanges: list[str] | None = None
@ -207,22 +247,34 @@ class SignalConfig(BaseModel):
execution_timing: str = "next_open"
decision_timing: str = "reaction_close"
ranking_fields: list[str] = Field(default_factory=list)
ranking_model_path: str | None = None
scoring_model: str = "default" # "default" or "pead"
pead_reaction_threshold: float = 0.05
pead_volume_threshold: float = 1.5
a_tier_score_threshold: float | None = None
prior_drift_min: float | None = None
class RiskConfig(BaseModel):
per_trade_risk_pct: float = 0.01 # 1% of equity per trade
per_trade_risk_pct_a_tier: float | None = None
max_daily_new_risk_pct: float = 0.03 # 3% of equity per day
allow_budget_downsizing: bool = False # when True, clip order size to remaining daily/engine risk budget
allow_oneoff_downsizing: bool = False # when True, clip risk for high one-off candidates instead of hard veto
oneoff_downsize_floor: float = 0.25 # minimum risk scaler when oneoff_downsizing is enabled
max_positions: int = 10
max_positions_per_sector: int = 3
buying_power_multiplier: float = 1.0 # max gross notional / equity for new long exposure
max_position_value_pct: float | None = None # max fraction of equity in one position
max_adv_fraction: float | None = None # max fraction of avg daily volume
cooldown_after_loss_streak: int = 0 # consecutive losses to trigger cooldown
cooldown_days: int = 0 # days to sit out after streak
macro_regime_enabled: bool = False # block entries when SPY < SMA
macro_regime_size_scaler: float = 1.0 # size scaler when SPY < SMA (< 1.0 = scale down instead of block)
macro_regime_mode: str = "legacy_spy" # "legacy_spy" or "spy_qqq_scaler"
macro_regime_neutral_size_scaler: float | None = None
macro_regime_risk_off_size_scaler: float | None = None
macro_regime_risk_off_a_tier_only: bool = False
macro_sma_period: int = 20 # SMA lookback for macro regime
stop_atr_multiplier: float = 1.5 # ATR multiplier for stop distance
backtest_mode: str = "research" # "research" or "live"
@ -232,6 +284,10 @@ class RiskConfig(BaseModel):
veto_parse_confidence_min: float = 0.4 # block if parse_confidence < this
veto_unknown_direction: bool = True # block if event_direction == "unknown"
veto_bearish_direction: bool = True # block if event_direction == "bearish"
fixed_capital_sizing: bool = False # when True, position sizing uses initial_capital instead of current equity
vix_size_scaler_low: float = 15.0 # VIX level below which sizing is 1.0 (full)
vix_size_scaler_high: float = 30.0 # VIX level above which sizing is at minimum
vix_size_scaler_min: float = 0.35 # minimum size scaler at high VIX
class ExecutionConfig(BaseModel):
@ -245,10 +301,33 @@ class ExecutionConfig(BaseModel):
target_1_r: float | None = None # R-multiple for first target (fixed_r model)
target_atr_multiplier: float = 1.5 # ATR multiplier for target (atr_multiple model)
target_1_fraction: float | None = None # fraction to exit at target_1 (partial exit)
use_tiered_targets: bool = False
a_tier_target_1_r: float | None = None
a_tier_target_1_fraction: float | None = None
non_a_tier_target_1_r: float | None = None
non_a_tier_target_1_fraction: float | None = None
trailing_model: str | None = None
trailing_warmup_days: int = 0 # days after entry before trailing activates
max_holding_days: int = 10
no_follow_through_exit: bool = False # exit at D+1 close if close < entry price
early_failure_close_below_entry_and_reaction_close: bool = False
early_failure_no_progress_days: int | None = None
early_failure_no_progress_r: float | None = None
early_failure_no_progress_fraction: float | None = None
early_pop_giveback_days_min: int | None = None
early_pop_giveback_days_max: int | None = None
early_pop_giveback_trigger_r: float | None = None
early_pop_giveback_min_r: float | None = None
early_pop_giveback_from_peak_pct: float | None = None
early_pop_giveback_fraction: float | None = None
adaptive_exit_enabled: bool = False
adaptive_exit_exhaustion_close_min: float = 0.90
adaptive_exit_exhaustion_max_hold: int = 7
adaptive_exit_exhaustion_trailing_warmup: int = 1
adaptive_exit_orderly_close_min: float = 0.70
adaptive_exit_orderly_close_max: float = 0.88
adaptive_exit_orderly_max_hold: int = 25
adaptive_exit_orderly_trailing_warmup: int = 12
class StrategyEngineConfig(BaseModel):
@ -256,22 +335,101 @@ class StrategyEngineConfig(BaseModel):
engine_id: str
event_types: list[str] = Field(default_factory=list)
event_directions: list[str] | None = None
guidance_statuses: list[str] | None = None
filing_time_buckets: list[str] | None = None
allowed_exchanges: list[str] | None = None
timing_class: str = "any" # "same_day", "after_close", "any"
direction: str = "any" # "long_only", "short_only", "any"
forced_trade_direction_override: str | None = None # "long" or "short"
entry_timing_policy: str = "next_open" # "next_open", "reaction_close"
max_holding_days: int | None = None
max_positions_per_sector_override: int | None = None
engine_risk_budget_pct: float = 1.0
per_trade_risk_pct_override: float | None = None
stop_atr_multiplier_override: float | None = None
target_atr_multiplier_override: float | None = None
target_1_r_override: float | None = None
target_1_fraction_override: float | None = None
recycle_on_cash_block: bool = False
recycle_min_days_held: int | None = None
recycle_min_score_delta: float | None = None
recycle_allowed_victim_engine_ids: list[str] | None = None
recycle_positive_pnl_only: bool = True
trailing_model_override: str | None = None
trailing_warmup_days_override: int | None = None
use_reaction_day_low_stop_override: bool | None = None
early_failure_close_below_entry_and_reaction_close_override: bool | None = None
early_failure_no_progress_days_override: int | None = None
early_failure_no_progress_r_override: float | None = None
early_failure_no_progress_fraction_override: float | None = None
veto_oneoff_penalty_override: float | None = None
allow_oneoff_downsizing_override: bool | None = None
oneoff_downsize_floor_override: float | None = None
veto_parse_confidence_min_override: float | None = None
score_threshold_override: float | None = None
residual_reserve_selected: bool = False
pead_reaction_threshold_override: float | None = None
pead_volume_threshold_override: float | None = None
reaction_day_return_min: float | None = None
reaction_day_return_max: float | None = None
close_location_min: float | None = None
close_location_max: float | None = None
volume_ratio_min: float | None = None
volume_ratio_max: float | None = None
min_entry_price_override: float | None = None
max_entry_price_override: float | None = None
avg_dollar_volume_min: float | None = None
avg_dollar_volume_max: float | None = None
gap_size_min: float | None = None
gap_size_max: float | None = None
reaction_day_range_pct_min: float | None = None
reaction_day_range_pct_max: float | None = None
upper_wick_pct_min: float | None = None
upper_wick_pct_max: float | None = None
min_market_cap_proxy: float | None = None
max_market_cap_proxy: float | None = None
document_quality_score_min: float | None = None
document_quality_score_max: float | None = None
signal_strength_score_min: float | None = None
signal_strength_score_max: float | None = None
parse_confidence_overall_min: float | None = None
parse_confidence_overall_max: float | None = None
weak_reaction_threshold: float | None = None
weak_reaction_gap_max: float | None = None
unknown_direction_reaction_min: float | None = None
unknown_direction_close_location_min: float | None = None
unknown_direction_close_location_max: float | None = None
unknown_direction_gap_size_min: float | None = None
unknown_inline_exit_close_location_min: float | None = None
unknown_inline_exit_gap_size_max: float | None = None
unknown_inline_early_failure_close_below_entry_and_reaction_close_override: bool | None = None
unknown_inline_early_failure_no_progress_days_override: int | None = None
unknown_inline_early_failure_no_progress_r_override: float | None = None
unknown_inline_early_failure_no_progress_fraction_override: float | None = None
mixed_inline_close_location_min: float | None = None
mixed_inline_close_location_max: float | None = None
mixed_inline_gap_size_max: float | None = None
mixed_inline_early_failure_close_below_entry_and_reaction_close_override: bool | None = None
mixed_inline_early_failure_no_progress_days_override: int | None = None
mixed_inline_early_failure_no_progress_r_override: float | None = None
mixed_inline_early_failure_no_progress_fraction_override: float | None = None
next_open_gap_cap_pct: float | None = None
add_on_min_parent_days_held: int | None = None
add_on_max_parent_days_held: int | None = None
add_on_schedule_days: list[int] | None = None
add_on_close_location_min: float | None = None
add_on_progress_r_min: float | None = None
add_on_progress_r_levels: list[float] | None = None
add_on_parent_score_min: float | None = None
add_on_parent_engine_ids: list[str] | None = None
add_on_max_count: int = 1
add_on_size_fraction: float = 0.5
add_on_require_above_reaction_high: bool = False
delayed_entry_lookback_days: int | None = None # e.g. 3 = look at events from 3 trading days ago
delayed_entry_source_engine_ids: list[str] | None = None # which engines' candidates to consider
delayed_entry_min_drift_pct: float | None = None # min price change since reaction close
delayed_entry_close_location_min: float | None = None # today's close location requirement
attention_min_wiki_spike_10d: float | None = None
attention_min_wiki_zscore_20d: float | None = None
attention_max_wiki_spike_10d: float | None = None
@ -280,6 +438,7 @@ class StrategyEngineConfig(BaseModel):
attention_min_us_article_count_3d: int | None = None
attention_min_resolver_confidence: float | None = None
shadow_only: bool = False
synthetic_only: bool = False
enabled: bool = True
@ -311,7 +470,7 @@ class BacktestConfig(BaseModel):
reporting: ReportingConfig = Field(default_factory=ReportingConfig)
event_type_profiles: dict[str, EventTypeProfile] = Field(default_factory=dict)
strategy_engines: list[StrategyEngineConfig] = Field(default_factory=list)
strategy_engine_selection_mode: str = "interleave" # "interleave" or "global_score"
strategy_engine_selection_mode: str = "interleave" # "interleave", "interleave_head_score", "global_score", "interleave_cap_efficiency_soft", "interleave_cap_efficiency_strict", or "interleave_cash_tiebreak"
def get_event_profile(self, event_type: str) -> EventTypeProfile | None:
"""Look up event-type-specific profile. Returns None if no override."""
@ -416,6 +575,66 @@ class UnifiedScoreWeights(BaseModel):
gap_quality: float = 0.15
class ReturnScoreWeights(BaseModel):
"""Weights for return-max ranking across train/valid/test splits."""
split_total_return: float = 0.28
split_annualized_return: float = 0.12
split_profitability: float = 0.12
split_sharpe: float = 0.08
split_drawdown: float = 0.12
split_return_on_gross: float = 0.18
split_gross_exposure: float = 0.05
split_days_in_market: float = 0.05
train_quality: float = 0.35
valid_quality: float = 0.30
test_quality: float = 0.35
floor_quality: float = 0.15
gap_quality: float = 0.10
missing_train_penalty: float = 0.85
low_trade_penalty_threshold: int = 10
low_trade_penalty_factor: float = 0.85
class WalkForwardScoreWeights(BaseModel):
"""Weights for walk-forward robustness scoring."""
median_return: float = 0.25
mean_return: float = 0.15
worst_return: float = 0.15
positive_fold_rate: float = 0.15
profit_factor: float = 0.10
drawdown: float = 0.10
train_test_gap: float = 0.05
fold_count: float = 0.05
low_fold_penalty_threshold: int = 6
low_fold_penalty_factor: float = 0.85
class WFQSv2Weights(BaseModel):
"""Weights for walk-forward quality score v2 with multiplicative penalties."""
median_return: float = 0.25
mean_return: float = 0.15
worst_return: float = 0.20
positive_fold_rate: float = 0.15
profit_factor: float = 0.10
drawdown: float = 0.10
fold_count: float = 0.05
low_fold_penalty_threshold: int = 6
low_fold_penalty_factor: float = 0.85
recent_fold_quality: float = 0.20
recent_lookback_days: int = 365
recent_min_folds: int = 2
class DeploymentScoreWeights(BaseModel):
"""Weights for deployment-oriented scoring."""
rqs_quality: float = 0.45
wfqs_quality: float = 0.55
class SplitResult(BaseModel):
"""Metrics for a single backtest split (train/valid/test)."""
@ -423,6 +642,7 @@ class SplitResult(BaseModel):
trade_count: int = 0
profit_factor: float | None = None
total_return_pct: float | None = None
annualized_return_pct: float | None = None
win_rate: float | None = None
max_drawdown_pct: float | None = None
sharpe_ratio: float | None = None
@ -433,6 +653,80 @@ class SplitResult(BaseModel):
days_in_market_pct: float | None = None
class WalkForwardFoldResult(BaseModel):
"""Metrics and run metadata for one walk-forward fold."""
fold_index: int
train_start: dt.date
train_end: dt.date
test_start: dt.date
test_end: dt.date
train_run_id: str
test_run_id: str
train_metrics: SplitResult
test_metrics: SplitResult
class WalkForwardAggregate(BaseModel):
"""Aggregate statistics over walk-forward folds."""
mean_return_pct: float | None = None
median_return_pct: float | None = None
worst_return_pct: float | None = None
positive_fold_rate_pct: float | None = None
mean_profit_factor: float | None = None
mean_max_drawdown_pct: float | None = None
mean_trade_count: float | None = None
mean_win_rate: float | None = None
class WalkForwardGapStats(BaseModel):
"""Train vs test drift statistics over walk-forward folds."""
mean_train_test_return_gap_pct: float | None = None
worst_train_test_return_gap_pct: float | None = None
fold_return_cv: float | None = None
class WalkForwardSummary(BaseModel):
"""Full walk-forward validation summary."""
window_mode: str = "rolling_fixed"
train_days: int
test_days: int
step_days: int
fold_count: int
folds: list[WalkForwardFoldResult] = Field(default_factory=list)
train_aggregate: WalkForwardAggregate = Field(default_factory=WalkForwardAggregate)
test_aggregate: WalkForwardAggregate = Field(default_factory=WalkForwardAggregate)
gap_stats: WalkForwardGapStats = Field(default_factory=WalkForwardGapStats)
engine_reliability_ratio: float | None = None
class RobustnessHorizonSummary(BaseModel):
"""Aggregate statistics for one rolling horizon in the robustness matrix."""
horizon_days: int
window_count: int
mean_return_pct: float | None = None
median_return_pct: float | None = None
worst_return_pct: float | None = None
positive_window_rate_pct: float | None = None
mean_max_drawdown_pct: float | None = None
class RobustnessMatrixSummary(BaseModel):
"""Compact summary of horizon/start-date robustness validation."""
window_mode: str = "rolling_horizon"
horizons_days: list[int] = Field(default_factory=list)
step_days: int
overall_window_count: int = 0
overall_positive_window_rate_pct: float | None = None
overall_worst_return_pct: float | None = None
horizon_summaries: list[RobustnessHorizonSummary] = Field(default_factory=list)
class ConfigDelta(BaseModel):
"""Records what changed from a baseline experiment."""
@ -449,6 +743,9 @@ class JournalEntry(BaseModel):
hypothesis: str
config_delta: ConfigDelta | None = None
results: dict[str, SplitResult] = Field(default_factory=dict) # split_name → SplitResult
walk_forward_summary: WalkForwardSummary | None = None
robustness_matrix_summary: RobustnessMatrixSummary | None = None
out_of_time_robustness_summary: RobustnessMatrixSummary | None = None
sqs_score: float | None = None
sqs_breakdown: dict[str, float] = Field(default_factory=dict)
sqs_v2_score: float | None = None
@ -457,6 +754,14 @@ class JournalEntry(BaseModel):
promotion_breakdown: dict[str, float] = Field(default_factory=dict)
unified_score: float | None = None
unified_breakdown: dict[str, float] = Field(default_factory=dict)
rqs_score: float | None = None
rqs_breakdown: dict[str, float] = Field(default_factory=dict)
wfqs_score: float | None = None
wfqs_breakdown: dict[str, float] = Field(default_factory=dict)
wfqs_v2_score: float | None = None
wfqs_v2_breakdown: dict[str, float] = Field(default_factory=dict)
deployment_score: float | None = None
deployment_breakdown: dict[str, float] = Field(default_factory=dict)
verdict: str = "unknown" # better / worse / neutral / unknown
verdict_reasoning: str = ""
next_direction: str = ""
@ -468,13 +773,26 @@ class RegistryEntry(BaseModel):
entry_id: str
experiment_name: str
sqs_score: float
strategy_family: str = "other"
is_retired: bool = False
sqs_score: float | None = None
sqs_v2_score: float | None = None
promotion_score: float | None = None
unified_score: float | None = None
rqs_score: float | None = None
wfqs_score: float | None = None
wfqs_v2_score: float | None = None
deployment_score: float | None = None
walk_forward_summary: WalkForwardSummary | None = None
robustness_matrix_summary: RobustnessMatrixSummary | None = None
out_of_time_robustness_summary: RobustnessMatrixSummary | None = None
# train split metrics
train_total_return_pct: float | None = None
train_annualized_return_pct: float | None = None
# test split metrics
profit_factor: float | None = None
total_return_pct: float | None = None
annualized_return_pct: float | None = None
win_rate: float | None = None
sharpe_ratio: float | None = None
max_drawdown_pct: float | None = None
@ -485,6 +803,7 @@ class RegistryEntry(BaseModel):
# valid split metrics
valid_profit_factor: float | None = None
valid_total_return_pct: float | None = None
valid_annualized_return_pct: float | None = None
valid_win_rate: float | None = None
valid_sharpe_ratio: float | None = None
valid_max_drawdown_pct: float | None = None

@ -35,6 +35,31 @@ from libs.common.logging import get_logger
logger = get_logger(__name__)
_RETURN_MAX_LONG_V2_WEIGHTS = {
"document_quality": 0.20,
"guidance_direction": 0.12,
"oneoff_inverse": 0.08,
"parse_overall": 0.05,
"parse_direction": 0.05,
"reaction": 0.15,
"close_location": 0.10,
"volume": 0.08,
"gap": 0.07,
}
_RETURN_MAX_LONG_V3_WEIGHTS = {
"document_quality": 0.14,
"guidance_direction": 0.08,
"oneoff_inverse": 0.07,
"parse_overall": 0.03,
"parse_direction": 0.03,
"reaction": 0.24,
"close_location": 0.16,
"volume": 0.10,
"gap": 0.05,
}
def compute_entry_score(row: dict[str, Any]) -> float:
"""Compute composite entry score from empirically validated features.
@ -123,6 +148,606 @@ def compute_pead_score(
return max(0.0, min(1.0, raw))
def compute_return_max_long_score(row: dict[str, Any]) -> float:
return _compute_return_max_long_score(
row,
earnings_reaction_fallback=False,
use_signal_strength_proxy=False,
weights=_RETURN_MAX_LONG_V2_WEIGHTS,
)
def compute_return_max_long_score_v2(row: dict[str, Any]) -> float:
"""V2 long-biased score with earnings-direction fallback.
For earnings releases, parser event_direction may be mixed/unknown even when
the market reaction is unambiguously positive. V2 allows those cases when
the reaction itself is positive, while still hard-rejecting explicitly
bearish parser outputs.
"""
return _compute_return_max_long_score(
row,
earnings_reaction_fallback=True,
use_signal_strength_proxy=True,
weights=_RETURN_MAX_LONG_V2_WEIGHTS,
)
def compute_return_max_long_score_v3(row: dict[str, Any]) -> float:
"""V3 long-biased score with a more market-confirmed ranking profile.
V3 keeps the same hard gates and earnings fallback as v2, but tilts the
ranking toward reaction/close/volume and away from parser-quality terms.
The goal is to preserve v2's eligibility semantics while changing only the
ordering inside the already-eligible cohort.
"""
return _compute_return_max_long_score(
row,
earnings_reaction_fallback=True,
use_signal_strength_proxy=True,
weights=_RETURN_MAX_LONG_V3_WEIGHTS,
)
def compute_return_max_long_score_v4(row: dict[str, Any]) -> float:
"""Backward-compatible alias for v5."""
return compute_return_max_long_score_v5(row)
def compute_return_max_long_score_v5(row: dict[str, Any]) -> float:
"""V5 keeps v2 semantics and adds a conservative generic material-event branch."""
return _compute_return_max_long_score(
row,
earnings_reaction_fallback=True,
use_signal_strength_proxy=True,
weights=_RETURN_MAX_LONG_V2_WEIGHTS,
allow_generic_material_events=True,
)
def compute_return_max_long_score_v6(row: dict[str, Any]) -> float:
"""V6 replaces linear market scoring with empirical zone functions.
Zone functions capture non-linear optimal regions discovered in data:
- Reaction: peak at 8-20%, drops at 25%+ (mean reversion)
- Close location: peak at 80-90%, drops at 92%+ (exhaustion)
- Volume: peak at 3-5x, drops at 6x+ (overhyped)
"""
return _compute_return_max_long_score(
row,
earnings_reaction_fallback=True,
use_signal_strength_proxy=True,
weights=_RETURN_MAX_LONG_V2_WEIGHTS,
allow_generic_material_events=True,
use_zone_scoring=True,
)
def compute_return_max_long_score_v7(row: dict[str, Any]) -> float:
"""V7 = V5 + market-confirmed parse gate relaxation.
For earnings with strong market confirmation (ret>5%, close>0.55, vol>1.3),
the parse_confidence gate is lowered from 0.60 to 0.45. This unlocks
events where the parser was uncertain but the market clearly validated.
Only affects events currently at score=0 due to parse<0.60.
"""
return _compute_return_max_long_score(
row,
earnings_reaction_fallback=True,
use_signal_strength_proxy=True,
weights=_RETURN_MAX_LONG_V2_WEIGHTS,
allow_generic_material_events=True,
use_market_confirmed_gate=True,
)
def compute_return_max_long_score_v8(row: dict[str, Any]) -> float:
"""V8 = V5 + conditional financial feature bonus.
For earnings_release events with eps_growth_qoq/revenue_growth_qoq data,
adds a conservative bonus (up to 7%) to the score. Only applied when
financial data is present (not null). Designed for snapshots that include
financial_v1 features.
"""
return _compute_return_max_long_score(
row,
earnings_reaction_fallback=True,
use_signal_strength_proxy=True,
weights=_RETURN_MAX_LONG_V2_WEIGHTS,
allow_generic_material_events=True,
use_financial_bonus=True,
)
def _compute_generic_material_event_score(row: dict[str, Any]) -> float:
"""Score orderly after-close material events without using earnings-specific logic."""
parse_conf_overall = _safe_float(row.get("parse_confidence_overall"))
if parse_conf_overall is None or parse_conf_overall < 0.45:
return 0.0
oneoff_penalty = _safe_float(row.get("oneoff_penalty"))
if oneoff_penalty is None or oneoff_penalty >= 0.40:
return 0.0
reaction_day_return = _safe_float(row.get("reaction_day_return"))
if reaction_day_return is None or reaction_day_return <= -0.05:
return 0.0
document_quality = max(
_normalized(row.get("document_quality_score")),
_normalized(row.get("signal_strength_score")),
)
document_component = (
document_quality * 0.18
+ _normalized(parse_conf_overall) * 0.12
+ (1.0 - _normalized(oneoff_penalty)) * 0.10
)
market_component = (
_orderly_material_close_score(row.get("close_location")) * 0.22
+ _normalize_linear(reaction_day_return, -0.02, 0.08) * 0.18
+ _orderly_material_volume_score(row.get("volume_ratio_20d")) * 0.10
+ _orderly_material_gap_score(row) * 0.10
)
return _clamp(document_component + market_component - _overheat_penalty(row))
def _orderly_material_close_score(raw: Any) -> float:
value = _safe_float(raw)
if value is None:
return 0.0
if value <= 0.45:
return 0.0
if value <= 0.70:
return _normalize_linear(value, 0.45, 0.70)
if value <= 0.85:
return 1.0 - 0.30 * _normalize_linear(value, 0.70, 0.85)
if value >= 0.95:
return 0.20
return 0.70 - 0.50 * _normalize_linear(value, 0.85, 0.95)
def _orderly_material_volume_score(raw: Any) -> float:
value = _safe_float(raw)
if value is None:
return 0.5
if value <= 0.80:
return 0.20
if value <= 1.20:
return 0.20 + 0.80 * _normalize_linear(value, 0.80, 1.20)
if value <= 2.00:
return 1.0 - 0.40 * _normalize_linear(value, 1.20, 2.00)
if value <= 3.00:
return 0.60 - 0.40 * _normalize_linear(value, 2.00, 3.00)
return 0.20
def _orderly_material_gap_score(row: dict[str, Any]) -> float:
gap = _safe_float(row.get("gap_size"))
if gap is None:
return 0.5
if -0.02 <= gap <= 0.02:
return 1.0
if -0.04 <= gap < -0.02:
return 0.45
if 0.02 < gap <= 0.05:
return 0.50
return 0.0
def compute_return_max_long_score_v9g(row: dict[str, Any]) -> float:
"""V9G = V9 + hard gate: reject events with negative prior same-ticker drift.
When prior_event_fwd5d < 0 (and is available), returns 0.0.
Null prior (first event for ticker) passes through.
"""
prior = _safe_float(row.get("prior_event_fwd5d"))
if prior is not None and prior < 0.0:
return 0.0
return compute_return_max_long_score_v9(row)
def compute_return_max_long_score_v9(row: dict[str, Any]) -> float:
"""V9 = V5 + cross-event momentum bonus from prior same-ticker drift.
When the same ticker's prior event had positive 5d drift (> +2%),
adds a bonus (up to 10%) reflecting PEAD persistence. When prior
drift was negative (< -2%), applies a penalty. Neutral when no
prior event or prior drift near zero.
"""
return _compute_return_max_long_score(
row,
earnings_reaction_fallback=True,
use_signal_strength_proxy=True,
weights=_RETURN_MAX_LONG_V2_WEIGHTS,
allow_generic_material_events=True,
use_prior_drift_momentum=True,
)
def _compute_return_max_long_score(
row: dict[str, Any],
*,
earnings_reaction_fallback: bool,
use_signal_strength_proxy: bool,
weights: dict[str, float],
allow_generic_material_events: bool = False,
use_zone_scoring: bool = False,
use_market_confirmed_gate: bool = False,
use_financial_bonus: bool = False,
use_prior_drift_momentum: bool = False,
) -> float:
"""Long-biased score for return-max event strategies.
Hard gates are applied before the score is computed. Scores are in [0, 1].
Missing wiki/attention data is treated as neutral (no overheat penalty).
"""
event_type = str(row.get("event_type", "")).lower()
if event_type == "management_change":
return _compute_management_change_score(row)
if allow_generic_material_events and event_type in {"material_contract", "other_material_event"}:
return _compute_generic_material_event_score(row)
if event_type not in {"earnings_release", "guidance_update"}:
return 0.0
event_direction = str(row.get("event_direction", "unknown")).lower()
reaction_day_return = _safe_float(row.get("reaction_day_return"))
if event_type == "earnings_release" and earnings_reaction_fallback:
if event_direction == "bearish":
return 0.0
if event_direction != "bullish" and (reaction_day_return is None or reaction_day_return <= 0.0):
return 0.0
elif event_direction != "bullish":
return 0.0
parse_conf_overall = _safe_float(row.get("parse_confidence_overall"))
parse_gate = 0.60
if (
use_market_confirmed_gate
and event_type == "earnings_release"
and reaction_day_return is not None and reaction_day_return > 0.05
):
cl = _safe_float(row.get("close_location"))
vol = _safe_float(row.get("volume_ratio_20d"))
if cl is not None and cl > 0.55 and vol is not None and vol > 1.3:
parse_gate = 0.45
if parse_conf_overall is None or parse_conf_overall < parse_gate:
return 0.0
oneoff_penalty = _safe_float(row.get("oneoff_penalty"))
if oneoff_penalty is None or oneoff_penalty >= 0.40:
return 0.0
parse_conf_direction = _safe_float(row.get("parse_confidence_event_direction"))
if parse_conf_direction is None:
parse_conf_direction = parse_conf_overall
guidance_conf = _safe_float(row.get("parse_confidence_guidance"))
if guidance_conf is None:
guidance_conf = parse_conf_overall
if event_type == "guidance_update":
guidance_status = str(row.get("guidance_status", "")).lower()
if guidance_status != "raised" or guidance_conf < 0.70:
return 0.0
document_quality = _normalized(row.get("document_quality_score"))
if use_signal_strength_proxy:
document_quality = max(document_quality, _normalized(row.get("signal_strength_score")))
document_component = (
document_quality * weights["document_quality"]
+ _normalized(row.get("guidance_direction_score")) * weights["guidance_direction"]
+ (1.0 - _normalized(row.get("oneoff_penalty"))) * weights["oneoff_inverse"]
+ _normalized(parse_conf_overall) * weights["parse_overall"]
+ _normalized(parse_conf_direction) * weights["parse_direction"]
)
if use_zone_scoring:
market_component = (
_zone_reaction_score(row.get("reaction_day_return")) * weights["reaction"]
+ _zone_close_location_score(row.get("close_location")) * weights["close_location"]
+ _zone_volume_score(row.get("volume_ratio_20d")) * weights["volume"]
+ _gap_quality_score(row) * weights["gap"]
)
conviction = _safe_float(row.get("institutional_conviction_score"))
if conviction is not None:
market_component += conviction * 0.03
else:
market_component = (
_normalize_linear(row.get("reaction_day_return"), 0.03, 0.12) * weights["reaction"]
+ _normalize_linear(row.get("close_location"), 0.60, 0.90) * weights["close_location"]
+ _normalize_linear(row.get("volume_ratio_20d"), 1.0, 2.5) * weights["volume"]
+ _gap_quality_score(row) * weights["gap"]
)
positive_weight_sum = sum(weights.values())
if positive_weight_sum <= 0.0:
return 0.0
raw = (document_component + market_component) / positive_weight_sum - _overheat_penalty(row)
if use_financial_bonus:
raw += _financial_bonus_score(row) * 0.07
if use_prior_drift_momentum:
raw += _prior_drift_momentum_score(row) * 0.10
return _clamp(raw)
def _compute_management_change_score(row: dict[str, Any]) -> float:
"""Score management_change events for long-side PEAD.
Empirically validated on 343 train events (2022-2025):
- Bullish reaction MC: 65.2% win rate at 5d, +0.23% mean
- close_location >= 0.5 is the strongest single filter (69.7% WR)
- Volume filtering hurts (opposite of earnings) minimal weight
Hard gates:
- reaction_day_return > 0 (bullish market reaction only)
- parse_confidence_overall >= 0.50
- oneoff_penalty < 0.40
Components:
Document (35%): document_quality (20%), parse_confidence (10%),
risk penalty (5%)
Market (65%): close_location (30%), reaction_magnitude (20%),
gap_quality (10%), volume (5%)
"""
reaction = _safe_float(row.get("reaction_day_return"))
if reaction is None or reaction <= 0.0:
return 0.0
parse_conf = _safe_float(row.get("parse_confidence_overall"))
if parse_conf is None or parse_conf < 0.50:
return 0.0
oneoff = _safe_float(row.get("oneoff_penalty"))
if oneoff is None or oneoff >= 0.40:
return 0.0
# --- Document component (35%) ---
document_component = (
_normalized(row.get("document_quality_score")) * 0.20
+ _normalized(parse_conf) * 0.10
+ (1.0 - _normalized(oneoff)) * 0.05
)
# --- Market component (65%) ---
# close_location is the strongest MC signal (69.7% WR when >= 0.5)
# Reaction: 0-2% is the sweet spot; larger reactions have poor follow-through
# Volume: minimal weight (filtering hurts MC unlike earnings)
market_component = (
_normalize_linear(row.get("close_location"), 0.40, 0.80) * 0.30
+ _normalize_linear(reaction, 0.0, 0.05) * 0.20
+ _gap_quality_score(row) * 0.10
+ _normalize_linear(row.get("volume_ratio_20d"), 0.8, 2.0) * 0.05
)
raw = document_component + market_component
return _clamp(raw)
def _clamp(value: float, low: float = 0.0, high: float = 1.0) -> float:
return max(low, min(high, value))
def _normalize_linear(raw: Any, low: float, high: float) -> float:
value = _safe_float(raw)
if value is None:
return 0.0
if high <= low:
return 0.0
return _clamp((value - low) / (high - low))
def _normalized(raw: Any) -> float:
value = _safe_float(raw)
if value is None:
return 0.0
return _clamp(value)
def _gap_quality_score(row: dict[str, Any]) -> float:
gap = _safe_float(row.get("gap_size"))
if gap is None:
return 0.5
if gap < 0.0:
return 0.0
if gap <= 0.02:
return 1.0
if gap >= 0.05:
return 0.0
return _clamp(1.0 - (gap - 0.02) / 0.03)
def _zone_reaction_score(raw: Any) -> float:
"""Non-linear reaction scoring: peak at 8-20%, drops at 25%+.
Empirical zones from data analysis:
- 0-3%: weak signal, ramp 0.2 -> 0.5
- 3-8%: moderate, ramp 0.5 -> 0.85
- 8-20%: optimal zone, plateau 0.85 -> 1.0
- 20-25%: cooling, drop 1.0 -> 0.40
- 25%+: mean-reversion risk, floor 0.15
"""
value = _safe_float(raw)
if value is None:
return 0.0
r = abs(value)
if r < 0.03:
return 0.20 + (r / 0.03) * 0.30
if r < 0.08:
return 0.50 + ((r - 0.03) / 0.05) * 0.35
if r <= 0.20:
return 0.85 + ((r - 0.08) / 0.12) * 0.15
if r <= 0.25:
return 1.0 - ((r - 0.20) / 0.05) * 0.60
return 0.15
def _zone_close_location_score(raw: Any) -> float:
"""Non-linear close location scoring: peak at 80-90%, exhaustion at 92%+.
Empirical zones:
- 0-60%: weak, ramp 0.10 -> 0.40
- 60-70%: moderate, dip zone 0.40 -> 0.55
- 70-80%: building, ramp 0.55 -> 0.85
- 80-90%: optimal zone, plateau 0.85 -> 1.0
- 90-92%: transition 1.0 -> 0.55
- 92%+: exhaustion, floor 0.20
"""
value = _safe_float(raw)
if value is None:
return 0.0
if value < 0.60:
return 0.10 + (value / 0.60) * 0.30
if value < 0.70:
return 0.40 + ((value - 0.60) / 0.10) * 0.15
if value < 0.80:
return 0.55 + ((value - 0.70) / 0.10) * 0.30
if value <= 0.90:
return 0.85 + ((value - 0.80) / 0.10) * 0.15
if value <= 0.92:
return 1.0 - ((value - 0.90) / 0.02) * 0.45
return 0.20
def _zone_volume_score(raw: Any) -> float:
"""Non-linear volume scoring: peak at 3-5x, drops at 6x+.
Empirical zones:
- 0-1x: below average, floor 0.15
- 1-2x: normal conviction, ramp 0.15 -> 0.55
- 2-3x: building, ramp 0.55 -> 0.85
- 3-5x: optimal institutional zone, plateau 0.85 -> 1.0
- 5-6x: cooling, drop 1.0 -> 0.35
- 6x+: overhyped, floor 0.10
"""
value = _safe_float(raw)
if value is None:
return 0.0
if value < 1.0:
return 0.15
if value < 2.0:
return 0.15 + ((value - 1.0) / 1.0) * 0.40
if value < 3.0:
return 0.55 + ((value - 2.0) / 1.0) * 0.30
if value <= 5.0:
return 0.85 + ((value - 3.0) / 2.0) * 0.15
if value <= 6.0:
return 1.0 - ((value - 5.0) / 1.0) * 0.65
return 0.10
def _exhaustion_penalty(row: dict[str, Any]) -> float:
"""Penalty for empirically identified exhaustion zones.
Applied on top of linear scoring to penalize entries in zones
where follow-through is poor, without changing the core scoring.
Zones (from data analysis):
- Close >= 93%: exhaustion buying (-0.15% mean OOS)
- Reaction >= 22%: mean-reversion risk
- Volume >= 6x: overhyped crowd behavior (46% WR)
"""
penalty = 0.0
cl = _safe_float(row.get("close_location"))
if cl is not None:
if cl >= 0.92:
penalty += _normalize_linear(cl, 0.92, 1.0) * 0.05
elif cl < 0.60:
penalty += (1.0 - _normalize_linear(cl, 0.40, 0.60)) * 0.02
reaction = _safe_float(row.get("reaction_day_return"))
if reaction is not None and abs(reaction) >= 0.20:
penalty += _normalize_linear(abs(reaction), 0.20, 0.30) * 0.04
vol = _safe_float(row.get("volume_ratio_20d"))
if vol is not None and vol >= 5.0:
penalty += _normalize_linear(vol, 5.0, 8.0) * 0.03
return penalty
def _prior_drift_momentum_score(row: dict[str, Any]) -> float:
"""Score from prior same-ticker event's 5d forward return (cross-event momentum).
Empirical finding: prior positive drift (>+2%) predicts 56.8% WR on next event
vs 48.7% WR when prior drift was negative (<-2%). 8.1pp spread, 0.87% mean
return spread across 10,729 events.
Returns [-1.0, +1.0]; caller scales by desired weight (e.g. 0.10 = 10%).
Positive when prior drift was positive, negative when prior drift was negative.
"""
prior = _safe_float(row.get("prior_event_fwd5d"))
if prior is None:
return 0.0
if prior > 0.02:
return min(1.0, prior / 0.06)
elif prior < -0.02:
return max(-1.0, prior / 0.06)
else:
return 0.0
def _financial_bonus_score(row: dict[str, Any]) -> float:
"""Conditional bonus from financial features (eps_growth_qoq, revenue_growth_qoq).
Only active for earnings_release events with non-null financial data.
Returns 0.0-1.0; caller scales by desired weight (e.g. 0.07 = 7%).
"""
event_type = str(row.get("event_type", "")).lower()
if event_type != "earnings_release":
return 0.0
eps = _safe_float(row.get("eps_growth_qoq"))
rev = _safe_float(row.get("revenue_growth_qoq"))
if eps is None and rev is None:
return 0.0
bonus = 0.0
if eps is not None and eps > 0:
bonus += min(1.0, eps / 0.20) * 0.6
if rev is not None and rev > 0:
bonus += min(1.0, rev / 0.15) * 0.4
return min(1.0, bonus)
def _overheat_penalty(row: dict[str, Any]) -> float:
penalties: list[float] = []
wiki_spike = _safe_float(row.get("attention_wiki_spike_10d"))
if wiki_spike is not None and wiki_spike > 1.0:
penalties.append(_normalize_linear(wiki_spike, 1.5, 4.0))
gap = _safe_float(row.get("gap_size"))
if gap is not None and gap > 0.02:
penalties.append(_normalize_linear(gap, 0.02, 0.08))
reaction = _safe_float(row.get("reaction_day_return"))
if reaction is not None and reaction > 0.12:
penalties.append(_normalize_linear(reaction, 0.12, 0.20))
if not penalties:
return 0.0
return statistics_mean(penalties) * 0.10
def statistics_mean(values: list[float]) -> float:
return sum(values) / len(values) if values else 0.0
def _safe_float(raw: Any) -> float | None:
try:
return float(raw)
except (TypeError, ValueError):
return None
# ---------------------------------------------------------------------------
# Market feature scoring
# ---------------------------------------------------------------------------
@ -369,6 +994,131 @@ def _direction_clarity_score(row: dict[str, Any]) -> float:
# ---------------------------------------------------------------------------
def compute_patient_drift_score(row: dict[str, Any]) -> float:
"""Market-only score for patient drift execution model.
Designed from MFE/MAE empirical analysis: NLP features have zero
forward-return predictive power, so only market confirmation signals
are used. Paired with a patient execution model (fixed 4% stop,
no target, trailing + time exit, no early failure, no partials).
Hard gates (all must pass):
- event_type in {earnings_release, guidance_update}
- reaction_day_return > 0
- parse_confidence_overall >= 0.50
- oneoff_penalty < 0.40
Weighted components (100% market):
- Reaction magnitude (40%)
- Close location (35%)
- Volume conviction (15%)
- Gap alignment (10%)
Returns float in [0.0, 1.0]. Returns 0.0 if any gate fails.
"""
event_type = str(row.get("event_type", "")).lower()
if event_type not in {"earnings_release", "guidance_update"}:
return 0.0
reaction = _safe_float(row.get("reaction_day_return"))
if reaction is None or reaction <= 0.0:
return 0.0
parse_conf = _safe_float(row.get("parse_confidence_overall"))
if parse_conf is None or parse_conf < 0.50:
return 0.0
oneoff = _safe_float(row.get("oneoff_penalty"))
if oneoff is None or oneoff >= 0.40:
return 0.0
# --- Component 1: Reaction magnitude (40%) ---
# Linear: 0% -> 0.0, 3% -> 0.5, 8% -> 0.85, 15%+ -> 1.0
reaction_component = _normalize_linear(reaction, 0.0, 0.15)
# --- Component 2: Close location (35%) ---
# Linear: 0.40 -> 0.0, 0.90 -> 1.0
close_component = _normalize_linear(row.get("close_location"), 0.40, 0.90)
# --- Component 3: Volume conviction (15%) ---
# Linear: 1.0 -> 0.0, 2.5 -> 1.0; below 1.0 gets 0
volume_component = _normalize_linear(row.get("volume_ratio_20d"), 1.0, 2.5)
# --- Component 4: Gap alignment (10%) ---
gap_component = _gap_quality_score(row)
raw = (
reaction_component * 0.40
+ close_component * 0.35
+ volume_component * 0.15
+ gap_component * 0.10
)
return _clamp(raw)
def compute_microstructure_score(row: dict[str, Any]) -> float:
"""Event-agnostic score based on pure price microstructure signals.
Hypothesis: when the market reacts "quietly but decisively" to any
catalyst (positive return, close near high, below-average volume),
information asymmetry exists and subsequent drift follows.
No event_type gate all events are eligible.
Hard gates:
- reaction_day_return must exist and > 0
Weighted components:
- Close location (35%) close near high = decisive buying
- Reaction magnitude (30%) positive confirms direction
- Volume quietness (20%) below-average volume = informed, not crowd
- Gap alignment (15%) small positive gap = orderly
Returns float in [0.0, 1.0]. Returns 0.0 if gate fails.
"""
reaction = _safe_float(row.get("reaction_day_return"))
if reaction is None or reaction <= 0.0:
return 0.0
# --- Component 1: Close location (35%) ---
# Higher close = more decisive buying
close_component = _normalize_linear(row.get("close_location"), 0.50, 0.95)
# --- Component 2: Reaction magnitude (30%) ---
# Moderate reactions (2-8%) are ideal; very large reactions may revert
reaction_component = _normalize_linear(reaction, 0.0, 0.10)
# --- Component 3: Volume quietness (20%) ---
# INVERSE: below-average volume scores HIGH (quiet conviction)
# vol < 0.5 -> 1.0, vol = 1.0 -> 0.5, vol > 2.0 -> 0.0
vol = _safe_float(row.get("volume_ratio_20d"))
if vol is None:
volume_component = 0.5
else:
volume_component = _clamp(1.0 - _normalize_linear(vol, 0.5, 2.0))
# --- Component 4: Gap alignment (15%) ---
gap = _safe_float(row.get("gap_size"))
if gap is None:
gap_component = 0.5
elif gap < 0:
gap_component = 0.1 # negative gap contradicts positive reaction
elif gap <= 0.02:
gap_component = 1.0 # small positive gap = orderly
elif gap <= 0.05:
gap_component = 0.6 # moderate gap
else:
gap_component = 0.2 # large gap = exhaustion risk
raw = (
close_component * 0.35
+ reaction_component * 0.30
+ volume_component * 0.20
+ gap_component * 0.15
)
return _clamp(raw)
def _text_sentiment_score(row: dict[str, Any]) -> float:
"""Score based on Loughran-McDonald text sentiment features.

@ -1,6 +1,7 @@
"""Export feature snapshots + labels to Parquet with train/valid/test split."""
from __future__ import annotations
import asyncio
import datetime as dt
import json
import subprocess
@ -14,13 +15,51 @@ from sqlalchemy import select
from sqlalchemy.ext.asyncio import AsyncSession
from libs.common.logging import get_logger
from libs.common.time_utils import utc_now
from libs.common.time_utils import filing_time_bucket as classify_time_bucket, utc_now
logger = get_logger(__name__)
MANIFEST_FILENAME = "manifest.json"
_UNIVERSE_PROFILE_MIDLARGE_LIQUID_LONG_V1 = "midlarge-liquid-long-v1"
_UNIVERSE_PROFILE_MIDPLUS_LIQUID_LONG_V1 = "midplus-liquid-long-v1"
_UNIVERSE_PROFILE_MIDWIDE_LIQUID_LONG_V1 = "midwide-liquid-long-v1"
_UNIVERSE_PROFILE_SMALLCAP_LIQUID_LONG_V1 = "smallcap-liquid-long-v1"
_UNIVERSE_PROFILES: dict[str, dict[str, Any]] = {
_UNIVERSE_PROFILE_MIDLARGE_LIQUID_LONG_V1: {
"market_cap_min": 2_000_000_000,
"price_min": 15,
"avg_dollar_volume_20d_min": 75_000_000,
"exchange": "NYSE,NASDAQ,AMEX",
"exclude_types": "ETF,FUND,ADR,SPAC",
},
_UNIVERSE_PROFILE_MIDPLUS_LIQUID_LONG_V1: {
"market_cap_min": 1_500_000_000,
"price_min": 12,
"avg_dollar_volume_20d_min": 65_000_000,
"exchange": "NYSE,NASDAQ,AMEX",
"exclude_types": "ETF,FUND,ADR,SPAC",
},
_UNIVERSE_PROFILE_MIDWIDE_LIQUID_LONG_V1: {
"market_cap_min": 1_000_000_000,
"price_min": 10,
"avg_dollar_volume_20d_min": 50_000_000,
"exchange": "NYSE,NASDAQ,AMEX",
"exclude_types": "ETF,FUND,ADR,SPAC",
},
_UNIVERSE_PROFILE_SMALLCAP_LIQUID_LONG_V1: {
"market_cap_min": 500_000_000,
"market_cap_max": 2_000_000_000,
"price_min": 8,
"avg_dollar_volume_20d_min": 15_000_000,
"exchange": "NYSE,NASDAQ,AMEX",
"exclude_types": "ETF,FUND,ADR,SPAC",
},
}
def _get_git_commit_hash() -> str:
"""Return the current git commit hash (short), or 'unknown'."""
try:
@ -81,6 +120,198 @@ def _rows_to_table(rows: list[dict[str, Any]]) -> pa.Table:
return pa.table({k: pa.array(v) for k, v in arrays.items()})
async def _resolve_universe_profile(
universe_profile: str | None,
) -> dict[str, dict[str, Any]]:
if not universe_profile:
return {}
profile = _UNIVERSE_PROFILES.get(universe_profile)
if profile is None:
raise ValueError(f"Unknown universe_profile: {universe_profile}")
from libs.oracle_client import ScreenerService, make_oracle_client
async with make_oracle_client() as client:
svc = ScreenerService(client)
stocks = await svc.search_all_stocks(
market_cap_min=profile["market_cap_min"],
market_cap_max=profile.get("market_cap_max"),
exchange=profile["exchange"],
exclude_types=profile["exclude_types"],
price_min=profile["price_min"],
)
return {
stock.symbol.upper(): {
"exchange_proxy": stock.exchange,
"market_cap_proxy": stock.market_cap,
}
for stock in stocks
if stock.symbol
}
async def _resolve_symbol_metadata(
symbols: list[str] | set[str] | None,
*,
concurrency: int = 16,
) -> dict[str, dict[str, Any]]:
"""Resolve exchange/market-cap metadata for explicit symbol lists.
This keeps symbol-based exports aligned with universe-profile exports so
backtests can still apply market-cap proxy filters.
"""
if not symbols:
return {}
from libs.oracle_client import CompanyService, ScreenerService, make_oracle_client
normalized = sorted({str(symbol).upper() for symbol in symbols if symbol})
semaphore = asyncio.Semaphore(concurrency)
result: dict[str, dict[str, Any]] = {}
async with make_oracle_client() as client:
svc = CompanyService(client)
async def _fetch(sym: str) -> tuple[str, dict[str, Any]]:
async with semaphore:
try:
company = await svc.get_company(sym)
except Exception as exc:
logger.warning(
"snapshot_export_symbol_metadata_failed",
symbol=sym,
error=str(exc),
)
return sym, {}
meta = {
"exchange_proxy": company.exchange,
"market_cap_proxy": company.market_cap,
}
if not meta["exchange_proxy"] and not meta["market_cap_proxy"]:
return sym, {}
return sym, meta
rows = await asyncio.gather(*(_fetch(sym) for sym in normalized))
for sym, meta in rows:
if meta:
result[sym] = meta
unresolved = [sym for sym in normalized if sym not in result]
if unresolved:
screener = ScreenerService(client)
try:
stocks = await screener.search_all_stocks(
exchange="NYSE,NASDAQ,AMEX",
exclude_types="ETF,FUND,ADR,SPAC",
)
lookup = {
stock.symbol.upper(): {
"exchange_proxy": stock.exchange,
"market_cap_proxy": stock.market_cap,
}
for stock in stocks
if stock.symbol
}
for sym in unresolved:
meta = lookup.get(sym)
if meta:
result[sym] = meta
except Exception as exc:
logger.warning(
"snapshot_export_symbol_metadata_screener_failed",
error=str(exc),
unresolved=len(unresolved),
)
return result
def _parse_iso_date(raw: Any) -> dt.date | None:
if isinstance(raw, dt.date):
return raw
if isinstance(raw, str):
try:
return dt.date.fromisoformat(raw)
except ValueError:
return None
return None
def _enrich_prior_event_drift(rows: list[dict[str, Any]]) -> None:
"""Add prior_event_fwd5d: the same ticker's most recent prior event's fwd_return_5d.
This is a non-leaking cross-event momentum feature. By the time the current
event occurs, the prior event's 5-day return is fully realized.
Sorted by (ticker, event_date) and looks back one event per ticker.
"""
sorted_rows = sorted(rows, key=lambda r: (r.get("ticker", ""), r.get("event_date", "")))
prev_by_ticker: dict[str, float | None] = {}
for row in sorted_rows:
ticker = row.get("ticker", "")
row["prior_event_fwd5d"] = prev_by_ticker.get(ticker)
fwd5 = row.get("fwd_return_5d")
if fwd5 is not None:
prev_by_ticker[ticker] = fwd5
async def _backfill_market_fields(rows: list[dict[str, Any]]) -> None:
pending_rows = [
row for row in rows
if row.get("ticker")
and (
row.get("avg_dollar_volume_20d") is None
or row.get("reaction_day_low") is None
or row.get("reaction_day_high") is None
)
]
if not pending_rows:
return
from libs.backtest.snapshot_store import SnapshotStore
from libs.common.config import get_settings
symbols = sorted({str(row["ticker"]).upper() for row in pending_rows if row.get("ticker")})
dates = [
parsed
for row in pending_rows
for parsed in [_parse_iso_date(row.get("reaction_date") or row.get("event_date"))]
if parsed is not None
]
if not symbols or not dates:
return
settings = get_settings()
date_range = (min(dates) - dt.timedelta(days=45), max(dates) + dt.timedelta(days=5))
bars_by_symbol, _ = await SnapshotStore._fetch_price_data(
symbols,
date_range,
settings.stock_oracle_url,
)
for row in pending_rows:
ticker = str(row.get("ticker") or "").upper()
reaction_date = _parse_iso_date(row.get("reaction_date") or row.get("event_date"))
if not ticker or reaction_date is None:
continue
date_bars = bars_by_symbol.get(ticker, {})
if reaction_date not in date_bars:
continue
sorted_dates = sorted(date_bars)
idx = sorted_dates.index(reaction_date)
event_bar = date_bars[reaction_date]
if row.get("reaction_day_low") is None:
row["reaction_day_low"] = event_bar.get("low")
if row.get("reaction_day_high") is None:
row["reaction_day_high"] = event_bar.get("high")
if row.get("avg_dollar_volume_20d") is None and idx > 0:
prior = sorted_dates[max(0, idx - 20) : idx]
if prior:
row["avg_dollar_volume_20d"] = sum(
float(date_bars[d]["close"]) * float(date_bars[d]["volume"])
for d in prior
) / len(prior)
async def export_dataset_snapshot(
session: AsyncSession,
snapshot_id: str | None,
@ -91,6 +322,9 @@ async def export_dataset_snapshot(
label_version: str = "label-1.0.0",
parser_version: str = "rule-1.0.0",
symbols: list[str] | None = None,
universe_profile: str | None = None,
start_date: dt.date | None = None,
end_date: dt.date | None = None,
) -> dict[str, Any]:
"""Join FeatureSnapshot + EventLabel and export to Parquet.
@ -103,6 +337,9 @@ async def export_dataset_snapshot(
feature_versions: Merge multiple feature types (e.g. ["market_v1", "event_v1"]).
label_version: Label version filter for EventLabel.
parser_version: Parser version filter for Event.
universe_profile: Optional named live screener profile to filter symbols.
start_date: Optional inclusive lower bound on Event.event_date.
end_date: Optional inclusive upper bound on Event.event_date.
Returns:
Manifest dict with metadata and row counts.
@ -112,28 +349,50 @@ async def export_dataset_snapshot(
if snapshot_id is None:
snapshot_id = str(uuid.uuid4())
versions = feature_versions or [feature_version]
if feature_versions:
versions = list(dict.fromkeys(feature_versions))
else:
versions = [feature_version]
# The live research snapshots merge event parser features into the market rows.
# Keep export defaults aligned so OOT snapshots exercise the same strategy fields.
if feature_version == "market_v1":
versions.append("event_v1")
out_path = Path(output_dir) / snapshot_id
out_path.mkdir(parents=True, exist_ok=True)
profile_symbol_meta = await _resolve_universe_profile(universe_profile)
explicit_symbols = {s.upper() for s in symbols} if symbols else None
if profile_symbol_meta:
profile_symbols = set(profile_symbol_meta.keys())
explicit_symbols = profile_symbols if explicit_symbols is None else (explicit_symbols & profile_symbols)
explicit_symbol_meta: dict[str, dict[str, Any]] = {}
if explicit_symbols:
missing_meta_symbols = (
explicit_symbols - set(profile_symbol_meta.keys())
if profile_symbol_meta
else explicit_symbols
)
explicit_symbol_meta = await _resolve_symbol_metadata(missing_meta_symbols)
# Query: JOIN feature_snapshots + event_labels via event_id
# When merging multiple versions, query all and group by event_id
stmt = (
select(FeatureSnapshot, EventLabel, Event)
select(FeatureSnapshot, EventLabel, Event, SymbolMaster)
.join(EventLabel, FeatureSnapshot.event_id == EventLabel.event_id)
.join(Event, FeatureSnapshot.event_id == Event.event_id)
.outerjoin(SymbolMaster, Event.symbol_id == SymbolMaster.symbol_id)
.where(FeatureSnapshot.snapshot_name.in_(versions))
.where(EventLabel.label_version == label_version)
.where(EventLabel.label_status.in_(["ok", "truncated"]))
.where(EventLabel.invalid_event_for_labeling.is_(False))
)
if symbols:
if explicit_symbols:
stmt = stmt.where(
Event.symbol_id.in_(
select(SymbolMaster.symbol_id).where(
SymbolMaster.ticker.in_([s.upper() for s in symbols])
SymbolMaster.ticker.in_(sorted(explicit_symbols))
)
)
)
@ -145,19 +404,33 @@ async def export_dataset_snapshot(
event_features: dict[str, dict[str, Any]] = {}
event_labels: dict[str, Any] = {}
event_dates: dict[str, dt.date] = {}
for fs, lbl, evt in pairs:
event_filed_at: dict[str, dt.datetime | None] = {}
event_symbols: dict[str, str] = {}
event_symbol_meta: dict[str, dict[str, Any]] = {}
for fs, lbl, evt, sym in pairs:
eid = fs.event_id
if eid not in event_features:
event_features[eid] = {}
event_labels[eid] = lbl
event_dates[eid] = evt.event_date
event_filed_at[eid] = evt.filed_at_utc
ticker = (sym.ticker if sym and sym.ticker else "").upper()
event_symbols[eid] = ticker
event_symbol_meta[eid] = {
"asset_type_proxy": sym.asset_type if sym else None,
"exchange_proxy": (sym.venue if sym else None),
}
event_features[eid].update(fs.feature_json)
rows: list[dict[str, Any]] = []
preliminary_rows: list[dict[str, Any]] = []
for eid, features in event_features.items():
ticker = event_symbols.get(eid, "")
if explicit_symbols is not None and ticker not in explicit_symbols:
continue
lbl = event_labels[eid]
row: dict[str, Any] = {
"event_id": eid,
"ticker": ticker,
"snapshot_name": "+".join(versions),
"snapshot_version": "1.0.0",
**features,
@ -188,6 +461,46 @@ async def export_dataset_snapshot(
# Use DB Event.event_date as authoritative source
ed = event_dates.get(eid)
row["event_date"] = ed.isoformat() if ed else row.get("event_date", "")
filed_at = event_filed_at.get(eid)
if (
isinstance(filed_at, dt.datetime)
and str(row.get("filing_time_bucket", "unknown")).lower() == "unknown"
):
row["filing_time_bucket"] = classify_time_bucket(filed_at)
if start_date is not None and ed is not None and ed < start_date:
continue
if end_date is not None and ed is not None and ed > end_date:
continue
symbol_meta = dict(event_symbol_meta.get(eid, {}))
if ticker and ticker in explicit_symbol_meta:
symbol_meta.update(explicit_symbol_meta[ticker])
if ticker and ticker in profile_symbol_meta:
symbol_meta.update(profile_symbol_meta[ticker])
row.update(symbol_meta)
preliminary_rows.append(row)
await _backfill_market_fields(preliminary_rows)
# Compute cross-event momentum: prior same-ticker event's 5d forward return
_enrich_prior_event_drift(preliminary_rows)
rows: list[dict[str, Any]] = []
for row in preliminary_rows:
market_cap_proxy = row.get("market_cap_proxy")
avg_dollar_volume_20d = row.get("avg_dollar_volume_20d")
profile = _UNIVERSE_PROFILES.get(universe_profile) if universe_profile else None
if profile is not None:
if market_cap_proxy is None or float(market_cap_proxy) < float(profile["market_cap_min"]):
continue
if "market_cap_max" in profile and float(market_cap_proxy) > float(profile["market_cap_max"]):
continue
if (
avg_dollar_volume_20d is None
or float(avg_dollar_volume_20d) < float(profile["avg_dollar_volume_20d_min"])
):
continue
rows.append(row)
logger.info("snapshot_export_rows", snapshot_id=snapshot_id, total=len(rows))
@ -210,6 +523,9 @@ async def export_dataset_snapshot(
"parser_version": parser_version,
"label_version": label_version,
"split_policy": split_policy,
"universe_profile": universe_profile,
"start_date": start_date.isoformat() if start_date else None,
"end_date": end_date.isoformat() if end_date else None,
"row_counts": row_counts,
"total_rows": len(rows),
"output_dir": str(out_path),

Loading…
Cancel
Save