From e2229646e6f892c2f1f5026f6f7cce85b900248c Mon Sep 17 00:00:00 2001 From: I Luk Kim Date: Thu, 26 Mar 2026 16:56:53 -0700 Subject: [PATCH] =?UTF-8?q?Add=20oversold=20bounce=20engine=20experiments?= =?UTF-8?q?=20(v6new.259-264)=20=E2=80=94=20blocked=20by=20architecture?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bounce engine (buy negative reaction, bet on mean reversion) could not execute: system architecture ties scoring to single model per backtest, and selector/store indexes are optimized for positive-reaction PEAD. Negative-reaction candidates get score=0 from PEAD scoring, blocking engine selection regardless of engine-level threshold overrides. Implementing bounce trades requires: dual scoring model support, selector changes for negative-reaction candidate routing, and store indexing changes. Deferred to future refactor. Current best CW return: 293.2% (v6new.255) Co-Authored-By: Claude Opus 4.6 (1M context) --- apps/backtester/run.py | 3 + .../return_max_long_v6new.259.json | 845 +++++++++++++++++ .../return_max_long_v6new.260.json | 845 +++++++++++++++++ .../return_max_long_v6new.261.json | 847 ++++++++++++++++++ .../return_max_long_v6new.262.json | 846 +++++++++++++++++ .../return_max_long_v6new.263.json | 105 +++ .../return_max_long_v6new.264.json | 130 +++ libs/backtest/scoring.py | 41 + 8 files changed, 3662 insertions(+) create mode 100644 configs/experiments/return_max_long_v6new.259.json create mode 100644 configs/experiments/return_max_long_v6new.260.json create mode 100644 configs/experiments/return_max_long_v6new.261.json create mode 100644 configs/experiments/return_max_long_v6new.262.json create mode 100644 configs/experiments/return_max_long_v6new.263.json create mode 100644 configs/experiments/return_max_long_v6new.264.json diff --git a/apps/backtester/run.py b/apps/backtester/run.py index fd448db..4c46d89 100644 --- a/apps/backtester/run.py +++ b/apps/backtester/run.py @@ -2141,6 +2141,9 @@ def _build_store( elif config.signal.scoring_model == "return_max_long_v14e": from libs.backtest.scoring import compute_return_max_long_score_v14e scoring_fn = compute_return_max_long_score_v14e + elif config.signal.scoring_model == "oversold_bounce": + from libs.backtest.scoring import compute_oversold_bounce_score + scoring_fn = compute_oversold_bounce_score elif config.signal.scoring_model == "patient_drift": from libs.backtest.scoring import compute_patient_drift_score diff --git a/configs/experiments/return_max_long_v6new.259.json b/configs/experiments/return_max_long_v6new.259.json new file mode 100644 index 0000000..aaea0ae --- /dev/null +++ b/configs/experiments/return_max_long_v6new.259.json @@ -0,0 +1,845 @@ +{ + "experiment_name": "return_max_long_v6new.259", + "dataset_snapshot_id": "midlarge-liquid-long-v1_bucketfix_full_audit_tier3", + "description": "v255 + oversold bounce engine (risk 0.015, mhd=7, large-cap)", + "base_config": "configs/backtest/return_max_long_v1.json", + "overrides": { + "signal": { + "scoring_model": "return_max_long_v13e", + "score_threshold": 0.45, + "max_candidates_per_day": 18, + "a_tier_score_threshold": 0.58 + }, + "risk": { + "per_trade_risk_pct": 0.069, + "per_trade_risk_pct_a_tier": 0.0759, + "max_daily_new_risk_pct": 0.76, + "max_positions": 24, + "max_positions_per_sector": 5, + "max_position_value_pct": 1.5, + "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, + "stop_atr_multiplier": 1.45 + }, + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "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 + }, + { + "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": 12, + "engine_risk_budget_pct": 0.025, + "reaction_day_return_min": 0.0, + "reaction_day_return_max": 0.08, + "close_location_max": 0.55, + "gap_size_min": 0.02, + "gap_size_max": 0.09, + "volume_ratio_min": 2.0, + "volume_ratio_max": 4.0, + "min_market_cap_proxy": 15000000000.0, + "max_market_cap_proxy": 50000000000.0, + "document_quality_score_min": 0.5, + "parse_confidence_overall_min": 0.5, + "score_threshold_override": 0.0, + "residual_reserve_selected": true, + "allow_oneoff_downsizing_override": true, + "oneoff_downsize_floor_override": 0.1, + "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, + "per_trade_risk_pct_override": 0.007, + "enabled": true, + "engine_id": "next_open_long_bullish_raised_recovery_oneoff_largecap_tight", + "close_location_min": 0.15 + }, + { + "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": 12, + "engine_risk_budget_pct": 0.1, + "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.5, + "parse_confidence_overall_min": 0.5, + "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, + "per_trade_risk_pct_override": 0.0035 + }, + { + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "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.5, + "parse_confidence_overall_min": 0.5, + "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": 12, + "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": 12, + "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.5, + "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, + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "engine_risk_budget_pct": 0.04, + "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.008, + "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": 12, + "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": 12, + "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.5, + "parse_confidence_overall_min": 0.5, + "score_threshold_override": 0.0, + "residual_reserve_selected": true, + "veto_parse_confidence_min_override": 0.5, + "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": 12, + "engine_risk_budget_pct": 0.045, + "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.003, + "stop_atr_multiplier_override": 3.0, + "use_reaction_day_low_stop_override": false + }, + { + "engine_id": "next_open_long_oversold_bounce_largecap", + "event_types": [ + "earnings_release" + ], + "event_directions": [ + "mixed", + "unknown", + "bearish" + ], + "timing_class": "any", + "direction": "long_only", + "entry_timing_policy": "next_open", + "max_holding_days": 7, + "engine_risk_budget_pct": 0.08, + "reaction_day_return_min": -0.2, + "reaction_day_return_max": -0.05, + "close_location_min": 0.2, + "volume_ratio_min": 1.5, + "min_market_cap_proxy": 20000000000.0, + "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": 3, + "early_failure_no_progress_r_override": 0.0, + "early_failure_no_progress_fraction_override": 1.0, + "target_1_r_override": 2.0, + "target_1_fraction_override": 0.3, + "trailing_warmup_days_override": 4, + "per_trade_risk_pct_override": 0.015, + "stop_atr_multiplier_override": 2.5, + "use_reaction_day_low_stop_override": false, + "veto_parse_confidence_min_override": 0.35, + "veto_oneoff_penalty_override": 0.7, + "allow_unknown_direction_override": true, + "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", + "bounce-engine" + ], + "notes": "C o r r e c t e d - s n a p s h o t c o n t r o l f o r v 6 c o r e s t r u c t u r e w i t h o u t s i z i n g o r h o l d i n g - p e r i o d a d d - o n s . Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Lowers per-trade risk for next_open_long_other_material_unknown_orderly to 0.007 and raises engine budget to 0.05. Fine risk sweep from corrected v6.63. Fine risk sweep from corrected v6.91." +} \ No newline at end of file diff --git a/configs/experiments/return_max_long_v6new.260.json b/configs/experiments/return_max_long_v6new.260.json new file mode 100644 index 0000000..76593ba --- /dev/null +++ b/configs/experiments/return_max_long_v6new.260.json @@ -0,0 +1,845 @@ +{ + "experiment_name": "return_max_long_v6new.260", + "dataset_snapshot_id": "midlarge-liquid-long-v1_bucketfix_full_audit_tier3", + "description": "v255 + bounce engine broader (mcap 10B, risk 0.02)", + "base_config": "configs/backtest/return_max_long_v1.json", + "overrides": { + "signal": { + "scoring_model": "return_max_long_v13e", + "score_threshold": 0.45, + "max_candidates_per_day": 18, + "a_tier_score_threshold": 0.58 + }, + "risk": { + "per_trade_risk_pct": 0.069, + "per_trade_risk_pct_a_tier": 0.0759, + "max_daily_new_risk_pct": 0.76, + "max_positions": 24, + "max_positions_per_sector": 5, + "max_position_value_pct": 1.5, + "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, + "stop_atr_multiplier": 1.45 + }, + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "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 + }, + { + "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": 12, + "engine_risk_budget_pct": 0.025, + "reaction_day_return_min": 0.0, + "reaction_day_return_max": 0.08, + "close_location_max": 0.55, + "gap_size_min": 0.02, + "gap_size_max": 0.09, + "volume_ratio_min": 2.0, + "volume_ratio_max": 4.0, + "min_market_cap_proxy": 15000000000.0, + "max_market_cap_proxy": 50000000000.0, + "document_quality_score_min": 0.5, + "parse_confidence_overall_min": 0.5, + "score_threshold_override": 0.0, + "residual_reserve_selected": true, + "allow_oneoff_downsizing_override": true, + "oneoff_downsize_floor_override": 0.1, + "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, + "per_trade_risk_pct_override": 0.007, + "enabled": true, + "engine_id": "next_open_long_bullish_raised_recovery_oneoff_largecap_tight", + "close_location_min": 0.15 + }, + { + "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": 12, + "engine_risk_budget_pct": 0.1, + "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.5, + "parse_confidence_overall_min": 0.5, + "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, + "per_trade_risk_pct_override": 0.0035 + }, + { + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "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.5, + "parse_confidence_overall_min": 0.5, + "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": 12, + "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": 12, + "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.5, + "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, + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "engine_risk_budget_pct": 0.04, + "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.008, + "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": 12, + "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": 12, + "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.5, + "parse_confidence_overall_min": 0.5, + "score_threshold_override": 0.0, + "residual_reserve_selected": true, + "veto_parse_confidence_min_override": 0.5, + "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": 12, + "engine_risk_budget_pct": 0.045, + "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.003, + "stop_atr_multiplier_override": 3.0, + "use_reaction_day_low_stop_override": false + }, + { + "engine_id": "next_open_long_oversold_bounce_largecap", + "event_types": [ + "earnings_release" + ], + "event_directions": [ + "mixed", + "unknown", + "bearish" + ], + "timing_class": "any", + "direction": "long_only", + "entry_timing_policy": "next_open", + "max_holding_days": 7, + "engine_risk_budget_pct": 0.12, + "reaction_day_return_min": -0.2, + "reaction_day_return_max": -0.05, + "close_location_min": 0.2, + "volume_ratio_min": 1.5, + "min_market_cap_proxy": 10000000000.0, + "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": 3, + "early_failure_no_progress_r_override": 0.0, + "early_failure_no_progress_fraction_override": 1.0, + "target_1_r_override": 2.0, + "target_1_fraction_override": 0.3, + "trailing_warmup_days_override": 4, + "per_trade_risk_pct_override": 0.02, + "stop_atr_multiplier_override": 2.5, + "use_reaction_day_low_stop_override": false, + "veto_parse_confidence_min_override": 0.35, + "veto_oneoff_penalty_override": 0.7, + "allow_unknown_direction_override": true, + "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", + "bounce-engine" + ], + "notes": "C o r r e c t e d - s n a p s h o t c o n t r o l f o r v 6 c o r e s t r u c t u r e w i t h o u t s i z i n g o r h o l d i n g - p e r i o d a d d - o n s . Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Lowers per-trade risk for next_open_long_other_material_unknown_orderly to 0.007 and raises engine budget to 0.05. Fine risk sweep from corrected v6.63. Fine risk sweep from corrected v6.91." +} \ No newline at end of file diff --git a/configs/experiments/return_max_long_v6new.261.json b/configs/experiments/return_max_long_v6new.261.json new file mode 100644 index 0000000..71415fe --- /dev/null +++ b/configs/experiments/return_max_long_v6new.261.json @@ -0,0 +1,847 @@ +{ + "experiment_name": "return_max_long_v6new.261", + "dataset_snapshot_id": "midlarge-liquid-long-v1_bucketfix_full_audit_tier3", + "description": "v255 + bounce all event types (earnings+guidance+OME)", + "base_config": "configs/backtest/return_max_long_v1.json", + "overrides": { + "signal": { + "scoring_model": "return_max_long_v13e", + "score_threshold": 0.45, + "max_candidates_per_day": 18, + "a_tier_score_threshold": 0.58 + }, + "risk": { + "per_trade_risk_pct": 0.069, + "per_trade_risk_pct_a_tier": 0.0759, + "max_daily_new_risk_pct": 0.76, + "max_positions": 24, + "max_positions_per_sector": 5, + "max_position_value_pct": 1.5, + "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, + "stop_atr_multiplier": 1.45 + }, + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "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 + }, + { + "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": 12, + "engine_risk_budget_pct": 0.025, + "reaction_day_return_min": 0.0, + "reaction_day_return_max": 0.08, + "close_location_max": 0.55, + "gap_size_min": 0.02, + "gap_size_max": 0.09, + "volume_ratio_min": 2.0, + "volume_ratio_max": 4.0, + "min_market_cap_proxy": 15000000000.0, + "max_market_cap_proxy": 50000000000.0, + "document_quality_score_min": 0.5, + "parse_confidence_overall_min": 0.5, + "score_threshold_override": 0.0, + "residual_reserve_selected": true, + "allow_oneoff_downsizing_override": true, + "oneoff_downsize_floor_override": 0.1, + "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, + "per_trade_risk_pct_override": 0.007, + "enabled": true, + "engine_id": "next_open_long_bullish_raised_recovery_oneoff_largecap_tight", + "close_location_min": 0.15 + }, + { + "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": 12, + "engine_risk_budget_pct": 0.1, + "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.5, + "parse_confidence_overall_min": 0.5, + "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, + "per_trade_risk_pct_override": 0.0035 + }, + { + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "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.5, + "parse_confidence_overall_min": 0.5, + "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": 12, + "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": 12, + "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.5, + "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, + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "engine_risk_budget_pct": 0.04, + "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.008, + "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": 12, + "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": 12, + "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.5, + "parse_confidence_overall_min": 0.5, + "score_threshold_override": 0.0, + "residual_reserve_selected": true, + "veto_parse_confidence_min_override": 0.5, + "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": 12, + "engine_risk_budget_pct": 0.045, + "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.003, + "stop_atr_multiplier_override": 3.0, + "use_reaction_day_low_stop_override": false + }, + { + "engine_id": "next_open_long_oversold_bounce_largecap", + "event_types": [ + "earnings_release", + "guidance_update", + "other_material_event" + ], + "event_directions": [ + "mixed", + "unknown", + "bearish" + ], + "timing_class": "any", + "direction": "long_only", + "entry_timing_policy": "next_open", + "max_holding_days": 7, + "engine_risk_budget_pct": 0.1, + "reaction_day_return_min": -0.2, + "reaction_day_return_max": -0.05, + "close_location_min": 0.2, + "volume_ratio_min": 1.5, + "min_market_cap_proxy": 20000000000.0, + "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": 3, + "early_failure_no_progress_r_override": 0.0, + "early_failure_no_progress_fraction_override": 1.0, + "target_1_r_override": 2.0, + "target_1_fraction_override": 0.3, + "trailing_warmup_days_override": 4, + "per_trade_risk_pct_override": 0.015, + "stop_atr_multiplier_override": 2.5, + "use_reaction_day_low_stop_override": false, + "veto_parse_confidence_min_override": 0.35, + "veto_oneoff_penalty_override": 0.7, + "allow_unknown_direction_override": true, + "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", + "bounce-engine" + ], + "notes": "C o r r e c t e d - s n a p s h o t c o n t r o l f o r v 6 c o r e s t r u c t u r e w i t h o u t s i z i n g o r h o l d i n g - p e r i o d a d d - o n s . Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Lowers per-trade risk for next_open_long_other_material_unknown_orderly to 0.007 and raises engine budget to 0.05. Fine risk sweep from corrected v6.63. Fine risk sweep from corrected v6.91." +} \ No newline at end of file diff --git a/configs/experiments/return_max_long_v6new.262.json b/configs/experiments/return_max_long_v6new.262.json new file mode 100644 index 0000000..fb7e508 --- /dev/null +++ b/configs/experiments/return_max_long_v6new.262.json @@ -0,0 +1,846 @@ +{ + "experiment_name": "return_max_long_v6new.262", + "dataset_snapshot_id": "midlarge-liquid-long-v1_bucketfix_full_audit_tier3", + "description": "v255 + bounce + allow bearish direction", + "base_config": "configs/backtest/return_max_long_v1.json", + "overrides": { + "signal": { + "scoring_model": "return_max_long_v13e", + "score_threshold": 0.45, + "max_candidates_per_day": 18, + "a_tier_score_threshold": 0.58 + }, + "risk": { + "per_trade_risk_pct": 0.069, + "per_trade_risk_pct_a_tier": 0.0759, + "max_daily_new_risk_pct": 0.76, + "max_positions": 24, + "max_positions_per_sector": 5, + "max_position_value_pct": 1.5, + "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, + "stop_atr_multiplier": 1.45, + "veto_bearish_direction": false + }, + "execution": { + "a_tier_target_1_r": 3.5, + "a_tier_target_1_fraction": 0.0, + "non_a_tier_target_1_r": 2.25, + "non_a_tier_target_1_fraction": 0.2, + "trailing_warmup_days": 6, + "max_holding_days": 12, + "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": 12, + "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": 12, + "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": 12, + "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 + }, + { + "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": 12, + "engine_risk_budget_pct": 0.025, + "reaction_day_return_min": 0.0, + "reaction_day_return_max": 0.08, + "close_location_max": 0.55, + "gap_size_min": 0.02, + "gap_size_max": 0.09, + "volume_ratio_min": 2.0, + "volume_ratio_max": 4.0, + "min_market_cap_proxy": 15000000000.0, + "max_market_cap_proxy": 50000000000.0, + "document_quality_score_min": 0.5, + "parse_confidence_overall_min": 0.5, + "score_threshold_override": 0.0, + "residual_reserve_selected": true, + "allow_oneoff_downsizing_override": true, + "oneoff_downsize_floor_override": 0.1, + "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, + "per_trade_risk_pct_override": 0.007, + "enabled": true, + "engine_id": "next_open_long_bullish_raised_recovery_oneoff_largecap_tight", + "close_location_min": 0.15 + }, + { + "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": 12, + "engine_risk_budget_pct": 0.1, + "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.5, + "parse_confidence_overall_min": 0.5, + "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, + "per_trade_risk_pct_override": 0.0035 + }, + { + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "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.5, + "parse_confidence_overall_min": 0.5, + "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": 12, + "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": 12, + "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.5, + "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, + "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": 12, + "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": 12, + "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": 12, + "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": 12, + "engine_risk_budget_pct": 0.04, + "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.008, + "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": 12, + "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": 12, + "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.5, + "parse_confidence_overall_min": 0.5, + "score_threshold_override": 0.0, + "residual_reserve_selected": true, + "veto_parse_confidence_min_override": 0.5, + "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": 12, + "engine_risk_budget_pct": 0.045, + "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.003, + "stop_atr_multiplier_override": 3.0, + "use_reaction_day_low_stop_override": false + }, + { + "engine_id": "next_open_long_oversold_bounce_largecap", + "event_types": [ + "earnings_release" + ], + "event_directions": [ + "mixed", + "unknown", + "bearish" + ], + "timing_class": "any", + "direction": "long_only", + "entry_timing_policy": "next_open", + "max_holding_days": 7, + "engine_risk_budget_pct": 0.08, + "reaction_day_return_min": -0.2, + "reaction_day_return_max": -0.05, + "close_location_min": 0.2, + "volume_ratio_min": 1.5, + "min_market_cap_proxy": 20000000000.0, + "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": 3, + "early_failure_no_progress_r_override": 0.0, + "early_failure_no_progress_fraction_override": 1.0, + "target_1_r_override": 2.0, + "target_1_fraction_override": 0.3, + "trailing_warmup_days_override": 4, + "per_trade_risk_pct_override": 0.015, + "stop_atr_multiplier_override": 2.5, + "use_reaction_day_low_stop_override": false, + "veto_parse_confidence_min_override": 0.35, + "veto_oneoff_penalty_override": 0.7, + "allow_unknown_direction_override": true, + "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", + "bounce-engine" + ], + "notes": "C o r r e c t e d - s n a p s h o t c o n t r o l f o r v 6 c o r e s t r u c t u r e w i t h o u t s i z i n g o r h o l d i n g - p e r i o d a d d - o n s . Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Lowers per-trade risk for next_open_long_other_material_unknown_orderly to 0.007 and raises engine budget to 0.05. Fine risk sweep from corrected v6.63. Fine risk sweep from corrected v6.91." +} \ No newline at end of file diff --git a/configs/experiments/return_max_long_v6new.263.json b/configs/experiments/return_max_long_v6new.263.json new file mode 100644 index 0000000..95c0be8 --- /dev/null +++ b/configs/experiments/return_max_long_v6new.263.json @@ -0,0 +1,105 @@ +{ + "experiment_name": "return_max_long_v6new.263", + "dataset_snapshot_id": "midlarge-liquid-long-v1_bucketfix_full_audit_tier3", + "description": "PURE bounce scoring (oversold_bounce model) \u2014 test only", + "base_config": "configs/backtest/return_max_long_v1.json", + "overrides": { + "signal": { + "scoring_model": "oversold_bounce", + "score_threshold": 0.0, + "max_candidates_per_day": 18, + "a_tier_score_threshold": 0.58 + }, + "risk": { + "per_trade_risk_pct": 0.069, + "per_trade_risk_pct_a_tier": 0.0759, + "max_daily_new_risk_pct": 0.76, + "max_positions": 24, + "max_positions_per_sector": 5, + "max_position_value_pct": 1.5, + "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, + "stop_atr_multiplier": 1.45, + "veto_bearish_direction": false + }, + "execution": { + "a_tier_target_1_r": 3.5, + "a_tier_target_1_fraction": 0.0, + "non_a_tier_target_1_r": 2.25, + "non_a_tier_target_1_fraction": 0.2, + "trailing_warmup_days": 6, + "max_holding_days": 12, + "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": "bounce_only", + "event_types": [ + "earnings_release", + "guidance_update" + ], + "timing_class": "any", + "direction": "long_only", + "entry_timing_policy": "next_open", + "max_holding_days": 7, + "engine_risk_budget_pct": 1.0, + "reaction_day_return_min": -0.2, + "reaction_day_return_max": -0.03, + "min_market_cap_proxy": 10000000000.0, + "volume_ratio_min": 1.0, + "score_threshold_override": 0.1, + "per_trade_risk_pct_override": 0.02, + "stop_atr_multiplier_override": 2.5, + "target_1_r_override": 2.0, + "trailing_warmup_days_override": 3, + "veto_parse_confidence_min_override": 0.3, + "veto_oneoff_penalty_override": 0.7, + "allow_unknown_direction_override": true, + "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", + "bounce-test" + ], + "notes": "C o r r e c t e d - s n a p s h o t c o n t r o l f o r v 6 c o r e s t r u c t u r e w i t h o u t s i z i n g o r h o l d i n g - p e r i o d a d d - o n s . Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Lowers per-trade risk for next_open_long_other_material_unknown_orderly to 0.007 and raises engine budget to 0.05. Fine risk sweep from corrected v6.63. Fine risk sweep from corrected v6.91." +} \ No newline at end of file diff --git a/configs/experiments/return_max_long_v6new.264.json b/configs/experiments/return_max_long_v6new.264.json new file mode 100644 index 0000000..fd8953a --- /dev/null +++ b/configs/experiments/return_max_long_v6new.264.json @@ -0,0 +1,130 @@ +{ + "experiment_name": "return_max_long_v6new.264", + "dataset_snapshot_id": "midlarge-liquid-long-v1_bucketfix_full_audit_tier3", + "description": "v255 + bounce engines (sameday+nextopen) + oversold_bounce scoring", + "base_config": "configs/backtest/return_max_long_v1.json", + "overrides": { + "signal": { + "scoring_model": "oversold_bounce", + "score_threshold": 0.0, + "max_candidates_per_day": 18, + "a_tier_score_threshold": 0.58 + }, + "risk": { + "per_trade_risk_pct": 0.069, + "per_trade_risk_pct_a_tier": 0.0759, + "max_daily_new_risk_pct": 0.76, + "max_positions": 24, + "max_positions_per_sector": 5, + "max_position_value_pct": 1.5, + "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, + "stop_atr_multiplier": 1.45, + "veto_bearish_direction": false + }, + "execution": { + "a_tier_target_1_r": 3.5, + "a_tier_target_1_fraction": 0.0, + "non_a_tier_target_1_r": 2.25, + "non_a_tier_target_1_fraction": 0.2, + "trailing_warmup_days": 6, + "max_holding_days": 12, + "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": "bounce_reaction_close", + "event_types": [ + "earnings_release", + "guidance_update" + ], + "timing_class": "same_day", + "direction": "long_only", + "entry_timing_policy": "reaction_close", + "max_holding_days": 7, + "engine_risk_budget_pct": 0.1, + "reaction_day_return_min": -0.2, + "reaction_day_return_max": -0.03, + "min_market_cap_proxy": 10000000000.0, + "volume_ratio_min": 1.0, + "score_threshold_override": 0.0, + "per_trade_risk_pct_override": 0.015, + "stop_atr_multiplier_override": 2.5, + "target_1_r_override": 2.0, + "trailing_warmup_days_override": 3, + "allow_unknown_direction_override": true, + "enabled": true + }, + { + "engine_id": "bounce_next_open", + "event_types": [ + "earnings_release", + "guidance_update" + ], + "timing_class": "after_close", + "direction": "long_only", + "entry_timing_policy": "next_open", + "max_holding_days": 7, + "engine_risk_budget_pct": 0.1, + "reaction_day_return_min": -0.2, + "reaction_day_return_max": -0.03, + "min_market_cap_proxy": 10000000000.0, + "volume_ratio_min": 1.0, + "score_threshold_override": 0.0, + "per_trade_risk_pct_override": 0.015, + "stop_atr_multiplier_override": 2.5, + "target_1_r_override": 2.0, + "trailing_warmup_days_override": 3, + "allow_unknown_direction_override": true, + "enabled": true, + "filing_time_buckets": [ + "post_market" + ], + "next_open_gap_cap_pct": 0.05 + } + ], + "splits": [ + { + "kind": "named_snapshot", + "params": { + "name": "train" + } + }, + { + "kind": "named_snapshot", + "params": { + "name": "valid" + } + }, + { + "kind": "named_snapshot", + "params": { + "name": "test" + } + } + ], + "tags": [ + "return-max", + "v6new", + "bounce-v2" + ], + "notes": "C o r r e c t e d - s n a p s h o t c o n t r o l f o r v 6 c o r e s t r u c t u r e w i t h o u t s i z i n g o r h o l d i n g - p e r i o d a d d - o n s . Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Adds narrow post-market bullish/raised large-cap one-off sibling before main recovery engine based on corrected-snapshot reject audit. Lowers per-trade risk for next_open_long_other_material_unknown_orderly to 0.007 and raises engine budget to 0.05. Fine risk sweep from corrected v6.63. Fine risk sweep from corrected v6.91." +} \ No newline at end of file diff --git a/libs/backtest/scoring.py b/libs/backtest/scoring.py index 1e6a2b1..b87d865 100644 --- a/libs/backtest/scoring.py +++ b/libs/backtest/scoring.py @@ -1609,6 +1609,47 @@ def _text_sentiment_score(row: dict[str, Any]) -> float: return 0.2 + + +def compute_oversold_bounce_score(row: dict[str, Any]) -> float: + """Score for oversold bounce after negative earnings reaction. + + Designed for contrarian mean-reversion trades where: + - Large-cap stock drops on mixed/negative event + - High volume confirms institutional selling (not just noise) + - Market cap provides floor for recovery + + No direction or reaction-sign gates — the whole point is negative reaction. + """ + event_type = str(row.get("event_type", "")).lower() + if event_type not in {"earnings_release", "guidance_update", "other_material_event"}: + return 0.0 + + reaction = _safe_float(row.get("reaction_day_return")) + if reaction is None or reaction > -0.03: # must be negative + return 0.0 + if reaction < -0.25: # too extreme, might be real bad news + return 0.0 + + parse_conf = _safe_float(row.get("parse_confidence_overall")) + if parse_conf is not None and parse_conf < 0.30: + return 0.0 + + # Score components for bounce quality + # 1. Reaction magnitude (40%) — bigger drop = more bounce potential + reaction_score = min(1.0, abs(reaction) / 0.15) + + # 2. Volume (30%) — high volume = institutional selling = stronger signal + vol = _safe_float(row.get("volume_ratio_20d")) + vol_score = min(1.0, (vol or 1.0) / 4.0) if vol else 0.3 + + # 3. Close location (30%) — higher close = buying into close = bounce starting + cl = _safe_float(row.get("close_location")) + cl_score = _normalize_linear(cl, 0.1, 0.6) if cl is not None else 0.3 + + raw = reaction_score * 0.40 + vol_score * 0.30 + cl_score * 0.30 + return _clamp(raw * 0.8) # scale down to avoid competing with main strategy + def compute_return_max_long_score_v11_surprise(row: dict[str, Any]) -> float: """Legacy experimental variant: V5 + earnings surprise bonus.