Add vix_pead regime sizing mode and macro experiments (v6new.19-21)

New in allocator.py:
- vix_pead mode: boosts sizing at VIX>18 (PEAD favorable), penalizes VIX 15-18
- Fixed vix_scaler application to support boost (scaler > 1.0)

Results:
- v6new.19 (spy_qqq risk_off=0.55): SQS 62.8 — reduces size in favorable PEAD regime
- v6new.21 (vix_pead boost+penalty): SQS 46.9 — penalty too aggressive, kills trades

VIX signal is real (62.3% vs 48.2% WR) but sizing alone can't capture it:
- Boosting doesn't help because same trades just get bigger
- Penalizing shrinks or drops trades, losing count
- Need the signal in TRADE SELECTION, not just sizing

v6new.9 (SQS 63.3) remains best.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
main
I Luk Kim 5 months ago
parent 8dacdaab4e
commit 3c13c9e1b5

@ -0,0 +1,841 @@
{
"experiment_name": "return_max_long_v6new.19",
"dataset_snapshot_id": "midlarge-liquid-long-v1",
"description": "v6new.9 + spy_qqq_scaler macro regime: reduce size in risk_off, full in risk_on",
"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": 0.85,
"macro_regime_risk_off_size_scaler": 0.55,
"veto_unknown_direction": false,
"macro_regime_risk_off_a_tier_only": false,
"macro_regime_enabled": true,
"macro_regime_mode": "spy_qqq_scaler"
},
"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.1,
"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.015,
"stop_atr_multiplier_override": 3.0,
"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.05,
"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.01,
"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",
"macro-regime-sizing"
],
"notes": "Enable SPY/QQQ macro regime sizing. risk_on=1.0, neutral=0.85, risk_off=0.55. Should reduce DD in risk-off without changing trade selection."
}

@ -0,0 +1,841 @@
{
"experiment_name": "return_max_long_v6new.20",
"dataset_snapshot_id": "midlarge-liquid-long-v1",
"description": "v6new.9 + INVERTED macro: boost in risk_off (high VIX = PEAD favorable), reduce in risk_on (low VIX complacent)",
"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.048,
"per_trade_risk_pct_a_tier": 0.054,
"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,
"macro_regime_enabled": true,
"macro_regime_mode": "spy_qqq_scaler"
},
"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.1,
"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.015,
"stop_atr_multiplier_override": 3.0,
"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.05,
"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.01,
"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",
"pead-regime"
],
"notes": "Key insight: SPY risk_off correlates with high VIX which is PEAD-favorable. Dont reduce size in risk_off."
}

@ -0,0 +1,842 @@
{
"experiment_name": "return_max_long_v6new.21",
"dataset_snapshot_id": "midlarge-liquid-long-v1",
"description": "v6new.9 + vix_pead regime sizing: boost at VIX>18, penalize VIX 15-18 complacent zone",
"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,
"macro_regime_enabled": true,
"macro_regime_mode": "vix_pead",
"vix_size_scaler_min": 0.75
},
"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.1,
"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.015,
"stop_atr_multiplier_override": 3.0,
"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.05,
"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.01,
"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",
"vix-pead-regime"
],
"notes": "VIX PEAD regime: VIX>18 = up to 1.3x sizing (62.3% WR), VIX 15-18 = 0.75x (48.2% WR), VIX<15 = 1.0x."
}

@ -1,5 +1,5 @@
# Strategy Improvement Leaderboard
_Updated: 2026-03-24T06:17:45.329064+00:00_
_Updated: 2026-03-24T06:37:40.257270+00:00_
_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._
@ -15,150 +15,155 @@ _Default view excludes retired legacy PEAD / short-core / exact-pocket families
| 8 | 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 |
| 9 | return_max_long_v6.29 | 62.8 | +61.9 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-24 |
| 10 | return_max_long_v6.29 | 62.8 | +61.9 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-24 |
| 11 | return_max_long_v6new.11 | 62.7 | +61.7 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-24 |
| 12 | return_max_long_v6.59 | 62.6 | +61.0 | +39.3 | +56.4 | +132.1 | 4.0 | 43.8 | 82.2 | 1.29 | 2026-03-23 |
| 13 | 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 |
| 14 | 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 |
| 15 | 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 |
| 16 | return_max_long_v6new.10 | 61.9 | +61.2 | +41.0 | +58.8 | +138.9 | 4.0 | 38.5 | 69.6 | 1.53 | 2026-03-24 |
| 17 | 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 |
| 18 | return_max_long_v6new.8 | 61.8 | +71.1 | +40.5 | +48.9 | +111.6 | 4.2 | 46.4 | 77.8 | 1.05 | 2026-03-24 |
| 19 | 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 |
| 20 | 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 |
| 21 | 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 |
| 22 | 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 |
| 23 | return_max_long_v6new.14 | 61.2 | +57.5 | +41.1 | +50.8 | +116.7 | 4.2 | 44.6 | 81.5 | 1.14 | 2026-03-24 |
| 24 | 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 |
| 25 | 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 |
| 26 | 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 |
| 27 | 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 |
| 28 | 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 |
| 29 | 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 |
| 30 | return_max_long_v6new.16 | 59.8 | +54.3 | +41.1 | +52.1 | +120.1 | 4.0 | 44.4 | 80.0 | 1.17 | 2026-03-24 |
| 31 | return_max_long_v6new.17 | 59.1 | +64.8 | +24.2 | +36.5 | +79.7 | 2.9 | 30.5 | 66.7 | 1.20 | 2026-03-24 |
| 32 | return_max_long_v6new.15 | 58.6 | +55.1 | +37.1 | +50.3 | +115.3 | 4.0 | 43.6 | 77.8 | 1.15 | 2026-03-24 |
| 33 | 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 |
| 34 | 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 |
| 35 | 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 |
| 36 | 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 |
| 37 | 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 |
| 38 | 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 |
| 39 | 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 |
| 40 | 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 |
| 41 | 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 |
| 42 | 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 |
| 43 | 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 |
| 44 | 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 |
| 45 | 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 |
| 46 | 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 |
| 47 | 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 |
| 48 | 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 |
| 49 | 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 |
| 50 | 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 |
| 51 | 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 |
| 52 | 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 |
| 53 | return_max_long_v6.15 | 48.9 | - | +34.5 | +59.1 | +139.7 | 4.1 | 40.3 | 73.3 | 1.47 | 2026-03-23 |
| 54 | 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 |
| 55 | 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 |
| 56 | 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 |
| 57 | 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 |
| 58 | 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 |
| 59 | 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 |
| 60 | 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 |
| 61 | 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 |
| 62 | 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 |
| 63 | 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 |
| 64 | 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 |
| 65 | 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 |
| 66 | 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 |
| 67 | 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 |
| 68 | 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 |
| 69 | 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 |
| 70 | 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 |
| 71 | 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 |
| 72 | 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 |
| 73 | 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 |
| 74 | 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 |
| 75 | 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 |
| 76 | 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 |
| 77 | 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 |
| 78 | 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 |
| 79 | 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 |
| 80 | 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 |
| 81 | 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 |
| 82 | 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 |
| 83 | 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 |
| 84 | 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 |
| 85 | 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 |
| 86 | 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 |
| 87 | 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 |
| 88 | 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 |
| 89 | 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 |
| 90 | 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 |
| 91 | 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 |
| 92 | 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 |
| 93 | 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 |
| 94 | 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 |
| 95 | 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 |
| 96 | 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 |
| 97 | 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 |
| 98 | 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 |
| 99 | 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 |
| 100 | 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 |
| 101 | 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 |
| 102 | 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 |
| 103 | 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 |
| 104 | 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 |
| 105 | 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 |
| 106 | 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 |
| 107 | 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 |
| 108 | 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 |
| 109 | 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 |
| 110 | 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 |
| 111 | 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 |
| 112 | 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 |
| 113 | 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 |
| 114 | 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 |
| 115 | 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 |
| 116 | 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 |
| 117 | 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 |
| 118 | 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 |
| 119 | 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 |
| 120 | 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 |
| 121 | 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 |
| 122 | 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 |
| 123 | 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 |
| 124 | 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 |
| 125 | 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 |
| 126 | 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 |
| 127 | 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 |
| 128 | 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 |
| 129 | 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 |
| 130 | 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 |
| 131 | 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 |
| 132 | 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 |
| 133 | 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 |
| 134 | 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 |
| 11 | return_max_long_v6new.19 | 62.8 | +62.8 | +37.9 | +47.4 | +107.5 | 3.4 | 37.2 | 77.8 | 1.27 | 2026-03-24 |
| 12 | return_max_long_v6new.11 | 62.7 | +61.7 | +40.5 | +56.8 | +133.2 | 4.0 | 39.5 | 71.1 | 1.44 | 2026-03-24 |
| 13 | return_max_long_v6.59 | 62.6 | +61.0 | +39.3 | +56.4 | +132.1 | 4.0 | 43.8 | 82.2 | 1.29 | 2026-03-23 |
| 14 | 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 |
| 15 | 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 |
| 16 | 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 |
| 17 | return_max_long_v6new.10 | 61.9 | +61.2 | +41.0 | +58.8 | +138.9 | 4.0 | 38.5 | 69.6 | 1.53 | 2026-03-24 |
| 18 | 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 |
| 19 | return_max_long_v6new.8 | 61.8 | +71.1 | +40.5 | +48.9 | +111.6 | 4.2 | 46.4 | 77.8 | 1.05 | 2026-03-24 |
| 20 | 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 |
| 21 | 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 |
| 22 | 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 |
| 23 | 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 |
| 24 | return_max_long_v6new.14 | 61.2 | +57.5 | +41.1 | +50.8 | +116.7 | 4.2 | 44.6 | 81.5 | 1.14 | 2026-03-24 |
| 25 | 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 |
| 26 | 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 |
| 27 | 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 |
| 28 | 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 |
| 29 | 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 |
| 30 | 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 |
| 31 | return_max_long_v6new.16 | 59.8 | +54.3 | +41.1 | +52.1 | +120.1 | 4.0 | 44.4 | 80.0 | 1.17 | 2026-03-24 |
| 32 | return_max_long_v6new.17 | 59.1 | +64.8 | +24.2 | +36.5 | +79.7 | 2.9 | 30.5 | 66.7 | 1.20 | 2026-03-24 |
| 33 | return_max_long_v6new.15 | 58.6 | +55.1 | +37.1 | +50.3 | +115.3 | 4.0 | 43.6 | 77.8 | 1.15 | 2026-03-24 |
| 34 | 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 |
| 35 | 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 |
| 36 | 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 |
| 37 | 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 |
| 38 | 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 |
| 39 | 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 |
| 40 | 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 |
| 41 | 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 |
| 42 | 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 |
| 43 | 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 |
| 44 | 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 |
| 45 | 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 |
| 46 | 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 |
| 47 | 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 |
| 48 | 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 |
| 49 | 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 |
| 50 | 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 |
| 51 | 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 |
| 52 | 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 |
| 53 | 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 |
| 54 | return_max_long_v6.15 | 48.9 | - | +34.5 | +59.1 | +139.7 | 4.1 | 40.3 | 73.3 | 1.47 | 2026-03-23 |
| 55 | 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 |
| 56 | 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 |
| 57 | return_max_long_v6new.21 | 46.9 | +43.4 | +34.8 | +40.8 | +90.4 | 4.1 | 33.2 | 61.5 | 1.23 | 2026-03-24 |
| 58 | 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 |
| 59 | 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 |
| 60 | 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 |
| 61 | 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 |
| 62 | 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 |
| 63 | 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 |
| 64 | 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 |
| 65 | 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 |
| 66 | 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 |
| 67 | 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 |
| 68 | 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 |
| 69 | 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 |
| 70 | 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 |
| 71 | 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 |
| 72 | 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 |
| 73 | 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 |
| 74 | 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 |
| 75 | 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 |
| 76 | 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 |
| 77 | 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 |
| 78 | 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 |
| 79 | 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 |
| 80 | 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 |
| 81 | 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 |
| 82 | 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 |
| 83 | 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 |
| 84 | 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 |
| 85 | 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 |
| 86 | 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 |
| 87 | 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 |
| 88 | 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 |
| 89 | 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 |
| 90 | 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 |
| 91 | 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 |
| 92 | 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 |
| 93 | 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 |
| 94 | 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 |
| 95 | 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 |
| 96 | 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 |
| 97 | 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 |
| 98 | 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 |
| 99 | 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 |
| 100 | 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 |
| 101 | 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 |
| 102 | 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 |
| 103 | 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 |
| 104 | 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 |
| 105 | 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 |
| 106 | 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 |
| 107 | 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 |
| 108 | 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 |
| 109 | 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 |
| 110 | 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 |
| 111 | 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 |
| 112 | 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 |
| 113 | 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 |
| 114 | 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 |
| 115 | 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 |
| 116 | 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 |
| 117 | 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 |
| 118 | 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 |
| 119 | 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 |
| 120 | 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 |
| 121 | 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 |
| 122 | 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 |
| 123 | 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 |
| 124 | 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 |
| 125 | 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 |
| 126 | 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 |
| 127 | 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 |
| 128 | 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 |
| 129 | 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 |
| 130 | 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 |
| 131 | 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 |
| 132 | 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 |
| 133 | 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 |
| 134 | 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 |
| 135 | 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 |
| 136 | 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-0533 (2026-03-24) — return_max_long_v6new.17
Hypothesis: v6new.9 + v10 macro regime scoring (VIX>18 + HY>3.25 bonus)
Verdict: **UNKNOWN** (SQS 59.1)
### IMP-0539 (2026-03-24) — return_max_long_v6.97
Hypothesis: v6.59 + lower per-trade risk on other_material_unknown_orderly (0.007) | other_material_unknown_orderly risk=0.0065 | other_material_unknown_orderly risk=0.006 | downsize guidance_unknown_premarket_orderly on corrected snapshot research branch
Verdict: **UNKNOWN** (SQS None)
Reasoning: Auto-synced from official manifest.
### IMP-0532 (2026-03-24) — return_max_long_v6new.16
Hypothesis: v6new.9 + trailing warmup 8d, max holding 27d (moderate patience)
Verdict: **UNKNOWN** (SQS 59.8)
### IMP-0538 (2026-03-24) — return_max_long_v6.96
Hypothesis: v6.59 + lower per-trade risk on other_material_unknown_orderly (0.007) | other_material_unknown_orderly risk=0.0065 | other_material_unknown_orderly risk=0.006 | disable guidance_unknown_premarket_orderly on corrected snapshot research branch
Verdict: **UNKNOWN** (SQS None)
Reasoning: Auto-synced from official manifest.
### IMP-0531 (2026-03-24) — return_max_long_v6new.15
Hypothesis: execution tuning v6new.15
Verdict: **UNKNOWN** (SQS 58.6)
### IMP-0537 (2026-03-24) — return_max_long_v6new.21
Hypothesis: vix_pead sizing: boost VIX>18, penalize VIX 15-18
Verdict: **WORSE** (SQS 46.9)
### IMP-0530 (2026-03-24) — return_max_long_v6new.15
Hypothesis: v6new.9 + tighter early failure (no progress d1->d2, r 0.15->0.20) to cut bad trades faster
### IMP-0536 (2026-03-24) — return_max_long_v6.95
Hypothesis: v6.59 + lower per-trade risk on other_material_unknown_orderly (0.007) | other_material_unknown_orderly risk=0.0065 | other_material_unknown_orderly risk=0.006 | split broad_oneoff into low-close sibling, residual parent risk=0.007
Verdict: **UNKNOWN** (SQS None)
Reasoning: Auto-synced from official manifest.
### IMP-0529 (2026-03-24) — return_max_long_v6new.14
Hypothesis: execution tuning v6new.14
Verdict: **UNKNOWN** (SQS 61.2)
### IMP-0535 (2026-03-24) — return_max_long_v6.94
Hypothesis: v6.59 + lower per-trade risk on other_material_unknown_orderly (0.007) | other_material_unknown_orderly risk=0.0065 | other_material_unknown_orderly risk=0.006 | split broad_oneoff into high-gap sibling, residual parent risk=0.007
Verdict: **UNKNOWN** (SQS None)
Reasoning: Auto-synced from official manifest.

File diff suppressed because one or more lines are too long

@ -22,6 +22,13 @@ logger = get_logger(__name__)
_KILL_SWITCH_DRAWDOWN_PCT = 25.0
def _resolve_sizing_equity(portfolio_state: DailyPortfolioState) -> float:
"""Return sizing_equity if set, otherwise fall back to equity."""
if portfolio_state.sizing_equity is not None:
return portfolio_state.sizing_equity
return portfolio_state.equity
def compute_stop_price(candidate: Candidate, config: RiskConfig) -> float:
"""Compute stop price based on ATR-14 or a percentage fallback.
@ -37,7 +44,33 @@ def compute_stop_price(candidate: Candidate, config: RiskConfig) -> float:
stop_distance = price * 0.02
if candidate.trade_direction == "short":
return price + stop_distance
return max(0.01, price - stop_distance)
atr_stop = max(0.01, price - stop_distance)
if candidate.engine_use_reaction_day_low_stop is False:
return atr_stop
reaction_day_low = candidate.features.get("reaction_day_low")
if reaction_day_low is None:
return atr_stop
try:
reaction_stop = float(reaction_day_low)
except (TypeError, ValueError):
return atr_stop
if reaction_stop <= 0:
return atr_stop
return max(0.01, max(atr_stop, reaction_stop))
def _resolve_stop_risk_config(candidate: Candidate, config: BacktestConfig) -> RiskConfig:
profile = config.get_event_profile(candidate.event_type)
stop_atr_mult = (
candidate.engine_stop_atr_multiplier
if candidate.engine_stop_atr_multiplier is not None
else (
profile.stop_atr_multiplier_override
if profile and profile.stop_atr_multiplier_override is not None
else config.risk.stop_atr_multiplier
)
)
return RiskConfig(**{**config.risk.model_dump(), "stop_atr_multiplier": stop_atr_mult})
def compute_target_price(
@ -75,16 +108,103 @@ def compute_shares(
entry_price: float,
stop_price: float,
config: RiskConfig,
risk_pct_override: float | None = None,
) -> int:
"""Compute integer share count. Always math.floor() -- never round up."""
stop_distance = abs(entry_price - stop_price)
if stop_distance <= 0:
return 0
risk_dollars = equity * config.per_trade_risk_pct
risk_dollars = equity * (risk_pct_override if risk_pct_override is not None else config.per_trade_risk_pct)
raw_shares = risk_dollars / stop_distance
return max(0, math.floor(raw_shares))
def _cap_shares_to_cash(
shares: int,
candidate: Candidate,
portfolio_state: DailyPortfolioState,
) -> int:
"""Clamp long share count to the available cash budget.
The prior behavior rejected the order entirely when risk-based sizing
implied a notional bigger than current cash. For long-only sleeves with
low participation this discards viable trades unnecessarily. We instead
scale down to the largest whole-share position that the account can fund.
"""
if shares <= 0:
return 0
entry_price = float(candidate.entry_price_est)
if entry_price <= 0:
return 0
if candidate.trade_direction == "long":
max_cash_shares = math.floor(portfolio_state.cash_available / entry_price)
return max(0, min(shares, max_cash_shares))
return shares
def _cap_shares_by_position_limits(
shares: int,
candidate: Candidate,
portfolio_state: DailyPortfolioState,
config: BacktestConfig,
) -> int:
"""Apply notional and liquidity caps before the final cash clamp."""
if shares <= 0:
return 0
entry_price = float(candidate.entry_price_est)
if entry_price <= 0:
return 0
capped = shares
max_position_value_pct = config.risk.max_position_value_pct
if max_position_value_pct is not None and max_position_value_pct > 0:
max_position_value = _resolve_sizing_equity(portfolio_state) * max_position_value_pct
capped = min(capped, math.floor(max_position_value / entry_price))
max_adv_fraction = config.risk.max_adv_fraction
if max_adv_fraction is not None and max_adv_fraction > 0 and candidate.avg_dollar_volume > 0:
max_adv_notional = candidate.avg_dollar_volume * max_adv_fraction
capped = min(capped, math.floor(max_adv_notional / entry_price))
return max(0, capped)
def _remaining_risk_budget_dollars(
candidate: Candidate,
portfolio_state: DailyPortfolioState,
config: BacktestConfig,
*,
engine_daily_new_risk_used: float = 0.0,
) -> tuple[float, float, float]:
"""Return remaining (effective, daily, engine) risk budget in dollars."""
sizing_equity = _resolve_sizing_equity(portfolio_state)
daily_budget = sizing_equity * config.risk.max_daily_new_risk_pct
daily_remaining = max(0.0, daily_budget - portfolio_state.daily_new_risk_used)
engine_budget = daily_budget * candidate.engine_risk_budget_pct
engine_remaining = max(0.0, engine_budget - engine_daily_new_risk_used)
effective_remaining = min(daily_remaining, engine_remaining)
return effective_remaining, daily_remaining, engine_remaining
def _cap_shares_to_remaining_risk_budget(
shares: int,
entry_price: float,
stop_price: float,
remaining_risk_dollars: float,
) -> int:
"""Clip shares to fit the remaining risk budget."""
if shares <= 0:
return 0
stop_distance = abs(entry_price - stop_price)
if stop_distance <= 0:
return 0
max_budget_shares = math.floor(remaining_risk_dollars / stop_distance)
return max(0, min(shares, max_budget_shares))
def _count_sector_positions(open_positions: list[OpenPosition], sector: str) -> int:
return sum(1 for p in open_positions if p.plan.candidate.sector == sector)
@ -93,6 +213,149 @@ def _open_symbols(open_positions: list[OpenPosition]) -> set[str]:
return {p.plan.candidate.symbol for p in open_positions}
def _is_a_tier_candidate(candidate: Candidate, config: BacktestConfig) -> bool:
threshold = config.signal.a_tier_score_threshold
return threshold is not None and candidate.score >= threshold
def _resolve_per_trade_risk_pct(candidate: Candidate, config: BacktestConfig) -> float:
if candidate.engine_per_trade_risk_pct is not None:
return candidate.engine_per_trade_risk_pct
if _is_a_tier_candidate(candidate, config) and config.risk.per_trade_risk_pct_a_tier is not None:
return config.risk.per_trade_risk_pct_a_tier
return config.risk.per_trade_risk_pct
def _resolve_oneoff_threshold(candidate: Candidate, config: BacktestConfig) -> float:
if candidate.engine_veto_oneoff_penalty is not None:
return candidate.engine_veto_oneoff_penalty
return config.risk.veto_oneoff_penalty
def _allow_oneoff_downsizing(candidate: Candidate, config: BacktestConfig) -> bool:
if candidate.engine_allow_oneoff_downsizing is not None:
return candidate.engine_allow_oneoff_downsizing
return config.risk.allow_oneoff_downsizing
def _resolve_oneoff_downsize_floor(candidate: Candidate, config: BacktestConfig) -> float:
if candidate.engine_oneoff_downsize_floor is not None:
return candidate.engine_oneoff_downsize_floor
return config.risk.oneoff_downsize_floor
def _oneoff_risk_scaler(candidate: Candidate, config: BacktestConfig) -> float:
if not _allow_oneoff_downsizing(candidate, config):
return 1.0
oneoff = candidate.features.get("oneoff_penalty")
if oneoff is None:
return 1.0
threshold = _resolve_oneoff_threshold(candidate, config)
try:
oneoff_value = float(oneoff)
except (TypeError, ValueError):
return 1.0
if oneoff_value < threshold:
return 1.0
span = max(1e-9, 1.0 - threshold)
excess = min(1.0, max(0.0, (oneoff_value - threshold) / span))
floor = min(1.0, max(0.0, _resolve_oneoff_downsize_floor(candidate, config)))
return 1.0 - excess * (1.0 - floor)
def _resolve_effective_per_trade_risk_pct(candidate: Candidate, config: BacktestConfig) -> float:
return _resolve_per_trade_risk_pct(candidate, config) * _oneoff_risk_scaler(candidate, config)
def _macro_regime_state(config: BacktestConfig, macro_data: dict[str, Any] | None) -> str:
if not config.risk.macro_regime_enabled or not macro_data:
return "disabled"
if config.risk.macro_regime_mode == "spy_qqq_scaler":
spy_close = macro_data.get("spy_close")
spy_sma = macro_data.get("spy_sma_20")
qqq_close = macro_data.get("qqq_close")
qqq_sma = macro_data.get("qqq_sma_20")
if None in (spy_close, spy_sma, qqq_close, qqq_sma):
return "unknown"
spy_on = float(spy_close) >= float(spy_sma)
qqq_on = float(qqq_close) >= float(qqq_sma)
if spy_on and qqq_on:
return "risk_on"
if spy_on or qqq_on:
return "neutral"
return "risk_off"
spy_close = macro_data.get("spy_close")
spy_sma = macro_data.get("spy_sma_20")
if spy_close is None or spy_sma is None:
return "unknown"
return "risk_off" if float(spy_close) < float(spy_sma) else "risk_on"
def _macro_size_scaler(config: BacktestConfig, regime_state: str) -> float:
if regime_state in {"disabled", "unknown", "risk_on"}:
return 1.0
if config.risk.macro_regime_mode == "spy_qqq_scaler":
if regime_state == "neutral":
return config.risk.macro_regime_neutral_size_scaler or 0.6
if regime_state == "risk_off":
return config.risk.macro_regime_risk_off_size_scaler or 0.35
if regime_state == "risk_off":
return config.risk.macro_regime_size_scaler
return 1.0
def _vix_continuous_size_scaler(config: BacktestConfig, macro_data: dict[str, Any] | None) -> float:
"""Continuous position sizing scaler based on VIX level.
Uses FRED series VIXCLS from macro_observations table.
Mode "vix_continuous" (default): defensive scales DOWN as VIX rises.
Linearly interpolates between 1.0 (at vix_low) and vix_min (at vix_high).
Mode "vix_pead": PEAD-optimized scales UP when VIX > 18 (favorable PEAD
regime with 62.3% WR), penalizes VIX 15-18 complacent zone (48.2% WR).
Uses vix_size_scaler_min as the complacent-zone floor.
Returns 1.0 if VIX data is missing or mode is not vix_continuous/vix_pead.
"""
if config.risk.macro_regime_mode not in ("vix_continuous", "vix_pead"):
return 1.0
if not macro_data:
return 1.0
vix = macro_data.get("VIXCLS")
if vix is None:
return 1.0
try:
vix_val = float(vix)
except (TypeError, ValueError):
return 1.0
if config.risk.macro_regime_mode == "vix_pead":
# PEAD-optimized: high VIX = boost, mid VIX = penalize
if vix_val > 18:
return min(1.3, 1.0 + (vix_val - 18) / 20) # +5% per VIX point above 18, max 1.3
if 15 < vix_val <= 18:
return config.risk.vix_size_scaler_min # complacent zone penalty
return 1.0 # low VIX = normal
# Default: defensive
low = config.risk.vix_size_scaler_low
high = config.risk.vix_size_scaler_high
floor = config.risk.vix_size_scaler_min
if vix_val <= low:
return 1.0
if vix_val >= high:
return floor
frac = (vix_val - low) / (high - low)
return 1.0 - frac * (1.0 - floor)
def run_entry_gates(
candidate: Candidate,
portfolio_state: DailyPortfolioState,
@ -120,14 +383,16 @@ def run_entry_gates(
12. Unknown direction (veto: event_direction == "unknown")
13. Bearish direction (veto: event_direction == "bearish")
"""
# Gate 0: Macro regime filter (hard block only when size_scaler >= 1.0)
if config.risk.macro_regime_enabled and macro_data:
spy_close = macro_data.get("spy_close")
spy_sma = macro_data.get("spy_sma_20")
if spy_close is not None and spy_sma is not None and spy_close < spy_sma:
if config.risk.macro_regime_size_scaler >= 1.0:
# Gate 0: Macro regime filter / tier restriction
regime_state = _macro_regime_state(config, macro_data)
regime_scaler = _macro_size_scaler(config, regime_state)
if config.risk.macro_regime_enabled:
if config.risk.macro_regime_mode == "spy_qqq_scaler":
if regime_state == "risk_off" and config.risk.macro_regime_risk_off_a_tier_only:
if candidate.trade_direction != "long" or not _is_a_tier_candidate(candidate, config):
return "macro_regime_risk_off_non_a_tier"
elif regime_state == "risk_off" and regime_scaler >= 1.0:
return "macro_regime_unfavorable"
# else: size scaler applied in build_planned_order
# Gate 1: Kill switch (skip if log-only mode)
if portfolio_state.current_drawdown_pct >= _KILL_SWITCH_DRAWDOWN_PCT:
@ -140,35 +405,75 @@ def run_entry_gates(
# Gate 3: Duplicate symbol
if candidate.symbol in _open_symbols(open_positions):
if not candidate.is_add_on:
return "duplicate_symbol"
if candidate.parent_position_id is None:
return "orphan_add_on"
parent = next(
(position for position in open_positions if position.position_id == candidate.parent_position_id),
None,
)
if parent is None:
return "orphan_add_on"
allowed_add_on_count = candidate.engine_add_on_max_count or 1
existing_add_on_count = sum(
position.plan.candidate.symbol == candidate.symbol
and position.parent_position_id == candidate.parent_position_id
and position.is_add_on
for position in open_positions
)
if existing_add_on_count >= allowed_add_on_count:
return "duplicate_add_on"
# Gate 4: Sector concentration
sector_count = _count_sector_positions(open_positions, candidate.sector)
if sector_count >= config.risk.max_positions_per_sector:
max_positions_per_sector = (
candidate.engine_max_positions_per_sector
if candidate.engine_max_positions_per_sector is not None
else config.risk.max_positions_per_sector
)
if sector_count >= max_positions_per_sector:
return "sector_limit"
# Gate 5: Daily new risk budget
trade_risk = portfolio_state.equity * config.risk.per_trade_risk_pct
daily_budget = portfolio_state.equity * config.risk.max_daily_new_risk_pct
if portfolio_state.daily_new_risk_used + trade_risk > daily_budget:
trade_risk_pct = _resolve_effective_per_trade_risk_pct(candidate, config)
trade_risk = _resolve_sizing_equity(portfolio_state) * trade_risk_pct
remaining_risk, daily_remaining, engine_remaining = _remaining_risk_budget_dollars(
candidate,
portfolio_state,
config,
engine_daily_new_risk_used=engine_daily_new_risk_used,
)
daily_budget = _resolve_sizing_equity(portfolio_state) * config.risk.max_daily_new_risk_pct
if daily_remaining <= 0:
return "daily_risk_budget"
engine_budget = daily_budget * candidate.engine_risk_budget_pct
if engine_budget <= 0:
return "engine_daily_risk_budget"
if engine_remaining <= 0:
return "engine_daily_risk_budget"
if not config.risk.allow_budget_downsizing:
if portfolio_state.daily_new_risk_used + trade_risk > daily_budget:
return "daily_risk_budget"
if engine_daily_new_risk_used + trade_risk > engine_budget:
return "engine_daily_risk_budget"
elif remaining_risk <= 0:
return "daily_risk_budget"
# Gate 6: Cash available (estimate position cost)
stop_price = compute_stop_price(candidate, config.risk)
stop_price = compute_stop_price(candidate, _resolve_stop_risk_config(candidate, config))
est_shares = compute_shares(
portfolio_state.equity,
_resolve_sizing_equity(portfolio_state),
candidate.entry_price_est,
stop_price,
config.risk,
risk_pct_override=trade_risk_pct,
)
est_cost = est_shares * candidate.entry_price_est
if est_cost > portfolio_state.cash_available:
if candidate.forced_shares is not None:
est_shares = candidate.forced_shares
est_shares = _cap_shares_to_cash(est_shares, candidate, portfolio_state)
if est_shares <= 0:
return "insufficient_cash"
# Gate 7: Cooldown
@ -188,17 +493,34 @@ def run_entry_gates(
# Gate 10: High one-off risk
oneoff = candidate.features.get("oneoff_penalty")
if oneoff is not None and float(oneoff) >= config.risk.veto_oneoff_penalty:
oneoff_threshold = _resolve_oneoff_threshold(candidate, config)
if (
oneoff is not None
and float(oneoff) >= oneoff_threshold
and not _allow_oneoff_downsizing(candidate, config)
):
return "high_oneoff_risk"
# Gate 11: Low parse confidence
parse_conf = candidate.features.get("parse_confidence_overall")
if parse_conf is not None and float(parse_conf) < config.risk.veto_parse_confidence_min:
parse_threshold = (
candidate.engine_veto_parse_confidence_min
if candidate.engine_veto_parse_confidence_min is not None
else config.risk.veto_parse_confidence_min
)
if parse_conf is not None and float(parse_conf) < parse_threshold:
return "low_parse_confidence"
# Gate 12: Unknown direction
# Engines that explicitly target unknown direction (event_directions includes "unknown")
# are exempt — their selection IS the intent to handle these events.
event_dir = candidate.features.get("event_direction")
if config.risk.veto_unknown_direction and event_dir is not None and str(event_dir).lower() == "unknown":
if (
config.risk.veto_unknown_direction
and event_dir is not None
and str(event_dir).lower() == "unknown"
and not candidate.engine_allow_unknown_direction
):
return "unknown_direction"
# Gate 13: Bearish direction (all event types, document-based)
@ -226,14 +548,10 @@ def build_planned_order(
)
exec_cfg = execution_config or config.execution
trade_risk_pct = _resolve_effective_per_trade_risk_pct(candidate, config)
# Apply event-type-specific overrides for stop/target ATR multipliers
profile = config.get_event_profile(candidate.event_type)
stop_atr_mult = (
profile.stop_atr_multiplier_override
if profile and profile.stop_atr_multiplier_override is not None
else config.risk.stop_atr_multiplier
)
target_atr_mult = (
candidate.engine_target_atr_multiplier
if candidate.engine_target_atr_multiplier is not None
@ -244,49 +562,105 @@ def build_planned_order(
)
)
stop_price = compute_stop_price(
candidate, RiskConfig(**{**config.risk.model_dump(), "stop_atr_multiplier": stop_atr_mult})
)
stop_price = compute_stop_price(candidate, _resolve_stop_risk_config(candidate, config))
target_r = exec_cfg.target_1_r or 2.0
target_price = compute_target_price(
candidate.entry_price_est,
stop_price,
target_r,
target_model=exec_cfg.target_model,
target_atr_multiplier=target_atr_mult,
atr_14=candidate.atr_14,
trade_direction=candidate.trade_direction,
)
if exec_cfg.use_tiered_targets:
if _is_a_tier_candidate(candidate, config):
if exec_cfg.a_tier_target_1_r is not None:
target_r = exec_cfg.a_tier_target_1_r
else:
if exec_cfg.non_a_tier_target_1_r is not None:
target_r = exec_cfg.non_a_tier_target_1_r
shares = 0
risk_dollars = 0.0
if skip_reason is None:
if candidate.forced_shares is not None:
shares = candidate.forced_shares
else:
shares = compute_shares(
portfolio_state.equity,
_resolve_sizing_equity(portfolio_state),
candidate.entry_price_est,
stop_price,
config.risk,
risk_pct_override=trade_risk_pct,
)
if shares == 0:
skip_reason = "zero_shares"
else:
# Apply macro size scaler when SPY < SMA and scaler < 1.0
if (
config.risk.macro_regime_enabled
and config.risk.macro_regime_size_scaler < 1.0
and macro_data
):
spy_close = macro_data.get("spy_close")
spy_sma = macro_data.get("spy_sma_20")
if (
spy_close is not None
and spy_sma is not None
and spy_close < spy_sma
regime_state = _macro_regime_state(config, macro_data)
scaler = _macro_size_scaler(config, regime_state)
if config.risk.macro_regime_enabled and scaler < 1.0:
shares = max(1, math.floor(shares * scaler))
vix_scaler = _vix_continuous_size_scaler(config, macro_data)
if vix_scaler != 1.0:
shares = max(1, math.floor(shares * vix_scaler))
if config.risk.allow_budget_downsizing:
remaining_risk, daily_remaining, engine_remaining = _remaining_risk_budget_dollars(
candidate,
portfolio_state,
config,
engine_daily_new_risk_used=engine_daily_new_risk_used,
)
shares = _cap_shares_to_remaining_risk_budget(
shares,
candidate.entry_price_est,
stop_price,
remaining_risk,
)
shares = _cap_shares_by_position_limits(
shares,
candidate,
portfolio_state,
config,
)
shares = _cap_shares_to_cash(shares, candidate, portfolio_state)
if shares == 0:
if config.risk.allow_budget_downsizing and (
daily_remaining <= 0 or engine_remaining <= 0
):
shares = max(1, math.floor(shares * config.risk.macro_regime_size_scaler))
skip_reason = "daily_risk_budget" if daily_remaining <= 0 else "engine_daily_risk_budget"
else:
skip_reason = "zero_shares"
risk_dollars = 0.0
target_price = compute_target_price(
candidate.entry_price_est,
stop_price,
target_r,
target_model=exec_cfg.target_model,
target_atr_multiplier=target_atr_mult,
atr_14=candidate.atr_14,
trade_direction=candidate.trade_direction,
)
return PlannedOrder(
candidate=candidate,
shares=shares,
entry_price_limit=candidate.entry_price_est,
stop_price=stop_price,
target_price=target_price,
risk_dollars=risk_dollars,
event_date=candidate.event_date,
timing_class=candidate.timing_class,
engine_id=candidate.engine_id,
entry_timing_policy=candidate.entry_timing_policy,
shadow_only=candidate.shadow_only,
parent_position_id=candidate.parent_position_id,
is_add_on=candidate.is_add_on,
skip_reason=skip_reason,
)
risk_dollars = abs(candidate.entry_price_est - stop_price) * shares
target_price = compute_target_price(
candidate.entry_price_est,
stop_price,
target_r,
target_model=exec_cfg.target_model,
target_atr_multiplier=target_atr_mult,
atr_14=candidate.atr_14,
trade_direction=candidate.trade_direction,
)
return PlannedOrder(
candidate=candidate,
shares=shares,
@ -299,5 +673,7 @@ def build_planned_order(
engine_id=candidate.engine_id,
entry_timing_policy=candidate.entry_timing_policy,
shadow_only=candidate.shadow_only,
parent_position_id=candidate.parent_position_id,
is_add_on=candidate.is_add_on,
skip_reason=skip_reason,
)

Loading…
Cancel
Save