"description":"Step 54: Keep the step52 short-core structure, but let the same-day long overlay run with a wider target, partial exit, wider trailing stop, and a 12-day hold.",
"description":"Step 55: Step54 plus a larger same-day long overlay budget, increasing long participation while keeping the short-core sleeves intact.",
"description":"Step 56: Step55 plus interleaved engine selection so the strengthened same-day long overlay gets consistent portfolio slots instead of competing purely on raw PEAD score.",
"description":"Step 59: Remove after-close short from the active book and keep only the same-day short core plus same-day long trend sleeve under four daily slots.",
"description":"Step 60: Same-day only book with interleaved sleeve selection so the long trend overlay always gets candidate representation alongside the short core.",
"description":"Step 61: Same-day only book with five daily slots, testing whether the short core plus long trend overlay can lift train return when after-close short is removed.",
"description":"Step 62: Keep the max4 mixed-sleeve portfolio, but require after-close short setups to have at least a 10% negative gap so weak downside follow-through does not crowd higher-conviction sleeves.",
"description":"Step 63: Same as step62, but require an even deeper 12% negative gap for after-close short entries to concentrate the sleeve into only the strongest downside reactions.",
"description":"Step 66: Step62 plus a minimum after-close downside reaction of 12%, keeping only deeper negative gap and reaction combinations in the filtered short sleeve.",
"description":"Step 67: Step62 plus a stricter 14% downside reaction requirement for after-close shorts, testing whether only the sharpest downside follow-through setups should remain.",
Hypothesis: A stricter 14% downside reaction requirement may further improve the filtered after-close short sleeve by keeping only the sharpest downside continuation setups.
Verdict: **NEUTRAL** (SQS 38.2)
Reasoning: This pushed train to +5.32% and lifted valid slightly, but test slipped back to +0.95%. It is a stronger train-focused branch, not a clear overall winner versus step66.
Next: Favor step66 for balance; step67 is only useful if we optimize explicitly for train-heavy return.
Hypothesis: The same-day long overlay may work better when restricted to larger reaction-day gap moves.
Verdict: **NEUTRAL** (SQS 49.8)
Reasoning: A 10% gap filter made train and valid much stronger but gave back some test performance, so this is a balanced alternative rather than a clear new leader.
Next: If optimizing for robustness across splits, keep exploring overlay quality gates around this variant.
Hypothesis: Adding a 12% downside reaction requirement on top of the 10% after-close gap filter may remove the weakest residual after-close shorts without sacrificing the recent OOS edge.
Verdict: **BETTER** (SQS 50.9)
Reasoning: This matched step62 on valid/test while lifting train from +5.01% to +5.09%. It is a cleaner version of the filtered short-sleeve branch with no observable downside so far.
Next: Use step66 as the balanced return-first branch; only test further changes if they can raise test above +1.0% without giving back the train lift.
Hypothesis: Extreme one-day crash continuations are too stretched for the same-day short sleeve and should be excluded.
Verdict: **BETTER** (SQS 44.4)
Reasoning: Capping same-day shorts at -45% reaction preserved train and valid while modestly improving test return, PF, drawdown, and Sharpe versus step45.
Next: Combine the crash cap with a quality filter on the same-day long overlay.
Hypothesis: A stricter after-close gap gate plus interleaving may produce the strongest hybrid of train lift and balanced sleeve participation.
Verdict: **WORSE** (SQS 38.3)
Reasoning: Train ticked up slightly, but valid deteriorated meaningfully and test did not improve. Interleaving is not helping this filtered branch.
Next: Stay with the non-interleaved filtered short sleeve; the next branch should tune the filtered after-close short only if we need more test return.
Hypothesis: The same-day long overlay may matter, but the after-close short sleeve may be removable.
Verdict: **WORSE** (SQS 36.2)
Reasoning: Dropping the after-close short sleeve reduced both valid and test performance, so step45 still benefits from carrying all three active sleeves.
Next: Refine sleeve quality rather than deleting sleeves wholesale.
Hypothesis: Interleaving the filtered mixed-sleeve portfolio might recover some of the earlier test strength without sacrificing the new train lift from the after-close gap gate.
Verdict: **WORSE** (SQS 50.6)
Reasoning: Test held steady, but valid return and drawdown got materially worse while train did not improve. The gap filter works better with raw global-score ranking than with interleaving.
Next: Keep global-score selection and treat step62/63 as the active return-first branch.
Hypothesis: A stricter 12% negative gap gate on after-close shorts may further improve the mixed-sleeve portfolio by concentrating the short sleeve into only the sharpest downside reactions.
Verdict: **BETTER** (SQS 38.2)
Reasoning: The 12% gate slightly improved train and valid versus step62 while keeping test near 0.95% with lower drawdown than the old mixed-sleeve base. This is the strongest return-first variant so far.
Next: Combine the after-close gap gate with interleaved max4 sleeve selection to test whether test return can recover toward the 1.0%+ level.
{"entry_id":"IMP-0031","timestamp":"2026-03-17T07:11:20.119143+00:00","experiment_name":"pead_midcap_step37_balanced_sleeves_aclong_vol3","hypothesis":"Require stronger volume confirmation for after-close long signals only, while leaving the rest of the step31 sleeve mix unchanged.","config_delta":{"base_experiment":"pead_midcap_step31_balanced_sleeves_nofrac_acshort12","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071110746395_1ae4b33a","trade_count":63,"profit_factor":1.377310183342628,"total_return_pct":1.1862161229211343,"win_rate":0.5396825396825397,"max_drawdown_pct":0.8243191281564817,"sharpe_ratio":2.4626680484273273,"monthly_win_rate":1.0,"equity_curve_r_squared":0.6885324256339993},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071110780542_1ae4b33a","trade_count":57,"profit_factor":1.375336580561267,"total_return_pct":1.1216330418461293,"win_rate":0.5087719298245614,"max_drawdown_pct":0.8896384382974281,"sharpe_ratio":1.7701058914354275,"monthly_win_rate":0.75,"equity_curve_r_squared":0.3302488231788083}},"sqs_score":73.6,"sqs_breakdown":{"profitability":53.6,"risk":100.0,"consistency":81.6,"robustness":72.5},"verdict":"worse","verdict_reasoning":"Engine-specific volume gating on after-close longs did not help. Test fell to SQS 73.6 and valid to 67.6, both below the step31 base. The extra volume filter removed too much breadth without improving robustness.","next_direction":"Do not tighten after-close long volume gates further. Keep after-close long breadth and search elsewhere if more robustness is needed.","tags":["pead","midcap","step37","balanced","sleeves","aclong","vol3"]}
{"entry_id":"IMP-0032","timestamp":"2026-03-17T07:11:26.965107+00:00","experiment_name":"pead_midcap_step38_balanced_sleeves_aclong_vol4","hypothesis":"Push the after-close long sleeve to an even stricter volume gate so only the highest-conviction overnight reactions remain.","config_delta":{"base_experiment":"pead_midcap_step37_balanced_sleeves_aclong_vol3","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071110780988_d9020d34","trade_count":61,"profit_factor":1.1204890397898135,"total_return_pct":0.388000418802214,"win_rate":0.5081967213114754,"max_drawdown_pct":0.9399793760032171,"sharpe_ratio":0.8136845994700913,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.043822307069783864},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071110695904_d9020d34","trade_count":53,"profit_factor":1.2930052787721988,"total_return_pct":0.8333477612284769,"win_rate":0.5283018867924528,"max_drawdown_pct":0.8783421675410786,"sharpe_ratio":1.4376847128011023,"monthly_win_rate":0.75,"equity_curve_r_squared":0.19294412573010883}},"sqs_score":54.2,"sqs_breakdown":{"profitability":37.6,"risk":80.2,"consistency":72.2,"robustness":31.1},"verdict":"worse","verdict_reasoning":"The stricter after-close long filter clearly broke the portfolio. Test dropped to SQS 54.2 and valid to 63.2, confirming that this sleeve cannot be improved by simply tightening volume thresholds.","next_direction":"Abandon the after-close long volume-threshold path. If that sleeve is revisited, it needs a different filter than raw PEAD volume.","tags":["pead","midcap","step38","balanced","sleeves","aclong","vol4"]}
{"entry_id":"IMP-0033","timestamp":"2026-03-17T07:11:34.247400+00:00","experiment_name":"pead_midcap_step39_balanced_sleeves_sdlong12","hypothesis":"Keep the robust step31 structure intact and only cap same-day long close entries to one trade per day, trimming the weakest same-day long names without touching after-close longs.","config_delta":{"base_experiment":"pead_midcap_step31_balanced_sleeves_nofrac_acshort12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071045883427_aa091287","trade_count":53,"profit_factor":1.3838842470402677,"total_return_pct":1.0111821812581183,"win_rate":0.5094339622641509,"max_drawdown_pct":0.8840772162266693,"sharpe_ratio":1.7379492731088386,"monthly_win_rate":0.75,"equity_curve_r_squared":0.2907004952665152},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071045888044_aa091287","trade_count":62,"profit_factor":1.5016295541562696,"total_return_pct":1.5150882212722936,"win_rate":0.5483870967741935,"max_drawdown_pct":0.5454456407735768,"sharpe_ratio":3.3681033592846275,"monthly_win_rate":1.0,"equity_curve_r_squared":0.8586769561427715}},"sqs_score":77.9,"sqs_breakdown":{"profitability":61.1,"risk":100.0,"consistency":83.1,"robustness":78.9},"verdict":"worse","verdict_reasoning":"This preserved test strength at SQS 77.9 and +1.52%, but valid fell to SQS 66.8 and +1.01% versus step31 valid SQS 68.2 and +1.12%. Reducing same-day long breadth did not produce a robust improvement.","next_direction":"Keep the same-day long sleeve at two trades per day inside step31. The current robust champion remains unchanged.","tags":["pead","midcap","step39","balanced","sleeves","sdlong12"]}
{"entry_id":"IMP-0036","timestamp":"2026-03-17T07:20:29.978668+00:00","experiment_name":"pead_midcap_step42_short_core_only","hypothesis":"Test whether the portfolio should become a pure short engine by removing the same-day long overlay entirely.","config_delta":{"base_experiment":"pead_midcap_step40_short_core_sdlong12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756406525_914047c4","trade_count":31,"profit_factor":2.549217811707667,"total_return_pct":1.193718767675222,"win_rate":0.5806451612903226,"max_drawdown_pct":0.5448919617489582,"sharpe_ratio":2.752802585098115,"monthly_win_rate":0.75,"equity_curve_r_squared":0.41739788897817576},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756496030_914047c4","trade_count":46,"profit_factor":1.4446704886262167,"total_return_pct":0.7775531748585345,"win_rate":0.6304347826086957,"max_drawdown_pct":1.2423515817014616,"sharpe_ratio":1.1740322533878838,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.1540289094091857}},"sqs_score":66.3,"sqs_breakdown":{"profitability":55.3,"risk":84.9,"consistency":92.6,"robustness":29.6},"verdict":"worse","verdict_reasoning":"Pure shorts produced a strong valid SQS 82.3 but test collapsed to 66.3 with only +0.78% return. The small same-day long overlay is still needed for out-of-sample balance.","next_direction":"Keep a non-zero same-day long close sleeve in the short-core family.","tags":["pead","midcap","step42","short","core","only"]}
{"entry_id":"IMP-0034","timestamp":"2026-03-17T07:20:29.978668+00:00","experiment_name":"pead_midcap_step42_short_core_only","hypothesis":"Test whether the portfolio should become a pure short engine by removing the same-day long overlay entirely.","config_delta":{"base_experiment":"pead_midcap_step40_short_core_sdlong12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756406525_914047c4","trade_count":31,"profit_factor":2.549217811707667,"total_return_pct":1.193718767675222,"win_rate":0.5806451612903226,"max_drawdown_pct":0.5448919617489582,"sharpe_ratio":2.752802585098115,"monthly_win_rate":0.75,"equity_curve_r_squared":0.41739788897817576},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756496030_914047c4","trade_count":46,"profit_factor":1.4446704886262167,"total_return_pct":0.7775531748585345,"win_rate":0.6304347826086957,"max_drawdown_pct":1.2423515817014616,"sharpe_ratio":1.1740322533878838,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.1540289094091857}},"sqs_score":66.3,"sqs_breakdown":{"profitability":55.3,"risk":84.9,"consistency":92.6,"robustness":29.6},"verdict":"worse","verdict_reasoning":"Pure shorts produced a strong valid SQS 82.3 but test collapsed to 66.3 with only +0.78% return. The small same-day long overlay is still needed for out-of-sample balance.","next_direction":"Keep a non-zero same-day long close sleeve in the short-core family.","tags":["pead","midcap","step42","short","core","only"]}
{"entry_id":"IMP-0035","timestamp":"2026-03-17T07:20:29.978594+00:00","experiment_name":"pead_midcap_step41_short_core_sdlong12_acshort50","hypothesis":"Lean harder into the after-close short sleeve inside the new short-core portfolio.","config_delta":{"base_experiment":"pead_midcap_step40_short_core_sdlong12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756232509_4c9fd4ce","trade_count":40,"profit_factor":1.483920817012022,"total_return_pct":0.8662763872782817,"win_rate":0.55,"max_drawdown_pct":0.6476993822793542,"sharpe_ratio":1.8482432920991685,"monthly_win_rate":0.75,"equity_curve_r_squared":0.19435203451054603},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756491852_4c9fd4ce","trade_count":59,"profit_factor":1.5287187084320328,"total_return_pct":1.231827071365813,"win_rate":0.559322033898305,"max_drawdown_pct":1.2759660172387226,"sharpe_ratio":1.6310365384096348,"monthly_win_rate":1.0,"equity_curve_r_squared":0.4227182249282274}},"sqs_score":72.6,"sqs_breakdown":{"profitability":61.4,"risk":92.3,"consistency":84.9,"robustness":53.6},"verdict":"worse","verdict_reasoning":"Increasing after-close short capacity weakened the portfolio: test dropped from SQS 82.1 to 72.6 and valid stayed flat at 68.4. The short core benefits from the bucket, but not at this larger size.","next_direction":"Keep the after-close short sleeve at 25% inside the short-core family.","tags":["pead","midcap","step41","short","core","sdlong12","acshort50"]}
{"entry_id":"IMP-0037","timestamp":"2026-03-17T07:20:29.978670+00:00","experiment_name":"pead_midcap_step43_short_core_sdlong25","hypothesis":"Restore a larger same-day long close sleeve after removing after-close longs, to see if breadth improves the short-core portfolio.","config_delta":{"base_experiment":"pead_midcap_step40_short_core_sdlong12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071957079395_9046f612","trade_count":45,"profit_factor":1.4604102163883825,"total_return_pct":0.9859009158709378,"win_rate":0.5555555555555556,"max_drawdown_pct":0.6469365320312458,"sharpe_ratio":1.9269062309154923,"monthly_win_rate":0.75,"equity_curve_r_squared":0.2568675902061873},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071957079892_9046f612","trade_count":58,"profit_factor":1.6628306811204845,"total_return_pct":1.4636686220428092,"win_rate":0.5689655172413793,"max_drawdown_pct":1.2630043081731899,"sharpe_ratio":2.0112049109753753,"monthly_win_rate":1.0,"equity_curve_r_squared":0.57291038217223}},"sqs_score":78.9,"sqs_breakdown":{"profitability":69.0,"risk":98.5,"consistency":86.5,"robustness":62.5},"verdict":"worse","verdict_reasoning":"Restoring more same-day long breadth weakened both splits versus step40: valid moved from SQS 68.4 to 69.7 but test fell from 82.1 to 78.9 and profitability dropped. The smaller 12.5% sleeve remains the better balance.","next_direction":"Keep the same-day long overlay small inside step40.","tags":["pead","midcap","step43","short","core","sdlong25"]}
{"entry_id":"IMP-0034","timestamp":"2026-03-17T07:20:29.978842+00:00","experiment_name":"pead_midcap_step40_short_core_sdlong12","hypothesis":"Drop the unstable after-close long sleeve and reallocate the portfolio to same-day shorts, after-close shorts, and a small same-day close-entry long overlay.","config_delta":{"base_experiment":"pead_midcap_step31_balanced_sleeves_nofrac_acshort12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756453145_9eb08c8d","trade_count":40,"profit_factor":1.483920817012022,"total_return_pct":0.8662763872782817,"win_rate":0.55,"max_drawdown_pct":0.6476993822793542,"sharpe_ratio":1.8482432920991685,"monthly_win_rate":0.75,"equity_curve_r_squared":0.19435203451054603},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756505329_9eb08c8d","trade_count":55,"profit_factor":1.7695290624299977,"total_return_pct":1.52020169384827,"win_rate":0.5818181818181818,"max_drawdown_pct":1.128135882565315,"sharpe_ratio":2.2087400904317267,"monthly_win_rate":1.0,"equity_curve_r_squared":0.632820774620957},"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071814970965_9eb08c8d","trade_count":306,"profit_factor":1.2169887676968005,"total_return_pct":3.708684730821959,"win_rate":0.4869281045751634,"max_drawdown_pct":2.5507043144769854,"sharpe_ratio":0.5720232080317771,"monthly_win_rate":0.625,"equity_curve_r_squared":0.39497202444939644}},"sqs_score":82.1,"sqs_breakdown":{"profitability":74.6,"risk":99.3,"consistency":88.6,"robustness":64.6},"verdict":"better","verdict_reasoning":"New robust leader. Train improved from SQS 55.5 to 63.1 and return +2.45% to +3.71%. Valid edged up from SQS 68.2 to 68.4 with lower drawdown, and test improved from SQS 77.9 to 82.1 with PF 1.77. Removing after-close longs fixed the biggest unstable sleeve without giving up the same-day long upside.","next_direction":"Use step40 as the new base. Only explore local refinements around the short-core structure if needed.","tags":["pead","midcap","step40","short","core","sdlong12"]}
{"entry_id":"IMP-0036","timestamp":"2026-03-17T07:20:29.978670+00:00","experiment_name":"pead_midcap_step43_short_core_sdlong25","hypothesis":"Restore a larger same-day long close sleeve after removing after-close longs, to see if breadth improves the short-core portfolio.","config_delta":{"base_experiment":"pead_midcap_step40_short_core_sdlong12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071957079395_9046f612","trade_count":45,"profit_factor":1.4604102163883825,"total_return_pct":0.9859009158709378,"win_rate":0.5555555555555556,"max_drawdown_pct":0.6469365320312458,"sharpe_ratio":1.9269062309154923,"monthly_win_rate":0.75,"equity_curve_r_squared":0.2568675902061873},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071957079892_9046f612","trade_count":58,"profit_factor":1.6628306811204845,"total_return_pct":1.4636686220428092,"win_rate":0.5689655172413793,"max_drawdown_pct":1.2630043081731899,"sharpe_ratio":2.0112049109753753,"monthly_win_rate":1.0,"equity_curve_r_squared":0.57291038217223}},"sqs_score":78.9,"sqs_breakdown":{"profitability":69.0,"risk":98.5,"consistency":86.5,"robustness":62.5},"verdict":"worse","verdict_reasoning":"Restoring more same-day long breadth weakened both splits versus step40: valid moved from SQS 68.4 to 69.7 but test fell from 82.1 to 78.9 and profitability dropped. The smaller 12.5% sleeve remains the better balance.","next_direction":"Keep the same-day long overlay small inside step40.","tags":["pead","midcap","step43","short","core","sdlong25"]}
{"entry_id":"IMP-0037","timestamp":"2026-03-17T07:20:29.978842+00:00","experiment_name":"pead_midcap_step40_short_core_sdlong12","hypothesis":"Drop the unstable after-close long sleeve and reallocate the portfolio to same-day shorts, after-close shorts, and a small same-day close-entry long overlay.","config_delta":{"base_experiment":"pead_midcap_step31_balanced_sleeves_nofrac_acshort12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756453145_9eb08c8d","trade_count":40,"profit_factor":1.483920817012022,"total_return_pct":0.8662763872782817,"win_rate":0.55,"max_drawdown_pct":0.6476993822793542,"sharpe_ratio":1.8482432920991685,"monthly_win_rate":0.75,"equity_curve_r_squared":0.19435203451054603},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071756505329_9eb08c8d","trade_count":55,"profit_factor":1.7695290624299977,"total_return_pct":1.52020169384827,"win_rate":0.5818181818181818,"max_drawdown_pct":1.128135882565315,"sharpe_ratio":2.2087400904317267,"monthly_win_rate":1.0,"equity_curve_r_squared":0.632820774620957},"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317071814970965_9eb08c8d","trade_count":306,"profit_factor":1.2169887676968005,"total_return_pct":3.708684730821959,"win_rate":0.4869281045751634,"max_drawdown_pct":2.5507043144769854,"sharpe_ratio":0.5720232080317771,"monthly_win_rate":0.625,"equity_curve_r_squared":0.39497202444939644}},"sqs_score":82.1,"sqs_breakdown":{"profitability":74.6,"risk":99.3,"consistency":88.6,"robustness":64.6},"verdict":"better","verdict_reasoning":"New robust leader. Train improved from SQS 55.5 to 63.1 and return +2.45% to +3.71%. Valid edged up from SQS 68.2 to 68.4 with lower drawdown, and test improved from SQS 77.9 to 82.1 with PF 1.77. Removing after-close longs fixed the biggest unstable sleeve without giving up the same-day long upside.","next_direction":"Use step40 as the new base. Only explore local refinements around the short-core structure if needed.","tags":["pead","midcap","step40","short","core","sdlong12"]}
{"entry_id":"IMP-0038","timestamp":"2026-03-17T07:54:25.486815+00:00","experiment_name":"pead_midcap_step44_short_core_macro50","hypothesis":"Scaling entries down in weak macro regimes will keep the short-core structure while cutting drawdowns.","config_delta":{"base_experiment":"pead_midcap_step40_short_core_sdlong12","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317081817694940_42f8ea0e","trade_count":40,"profit_factor":1.7786229517773076,"total_return_pct":1.0842382260887244,"win_rate":0.55,"max_drawdown_pct":0.4065245518278289,"sharpe_ratio":2.4891782517624543,"monthly_win_rate":0.75,"equity_curve_r_squared":0.34564834918762316,"avg_gross_exposure_pct":4.823763728554508,"avg_net_exposure_pct":-1.952624774981557,"days_in_market_pct":73.68421052631578},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317081807057141_42f8ea0e","trade_count":58,"profit_factor":2.0052763103391356,"total_return_pct":1.2986802302195721,"win_rate":0.5689655172413793,"max_drawdown_pct":0.7045335236824514,"sharpe_ratio":2.6217356101467053,"monthly_win_rate":1.0,"equity_curve_r_squared":0.7991432493330419,"avg_gross_exposure_pct":4.453478837236966,"avg_net_exposure_pct":-1.5519032472252936,"days_in_market_pct":72.3404255319149},"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317073555963588_9c3139ba","trade_count":307,"profit_factor":1.2319887960741855,"total_return_pct":3.4232792009141852,"win_rate":0.4820846905537459,"max_drawdown_pct":1.97377752972113,"sharpe_ratio":0.6203457661608955,"monthly_win_rate":0.625,"equity_curve_r_squared":0.4148680874417292}},"sqs_score":87.9,"sqs_breakdown":{"profitability":85.2,"risk":100.0,"consistency":86.5,"robustness":76.6},"verdict":"better","verdict_reasoning":"Half-size macro scaling materially improved valid and test risk-adjusted performance versus step40, confirming that SPY-below-SMA exposure was a real drag.","next_direction":"Try a full macro block to see whether removing weak-regime entries entirely is even cleaner.","tags":["pead","midcap","step44","short","core","macro50"],"sqs_v2_score":86.9,"sqs_v2_breakdown":{"profitability":85.2,"risk":100.0,"consistency":86.5,"robustness":76.6,"capital_efficiency":70.8}}
{"entry_id":"IMP-0039","timestamp":"2026-03-17T07:54:25.866482+00:00","experiment_name":"pead_midcap_step45_short_core_macro_block","hypothesis":"If weak-regime entries are mostly noise, hard-blocking them should outperform simple size scaling.","config_delta":{"base_experiment":"pead_midcap_step44_short_core_macro50","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317073536967478_c3a3615c","trade_count":28,"profit_factor":2.3084684930008983,"total_return_pct":1.30245295115927,"win_rate":0.6785714285714286,"max_drawdown_pct":0.37472483014430374,"sharpe_ratio":3.0487382658615467,"monthly_win_rate":0.75,"equity_curve_r_squared":0.48762905493056535},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317073537015511_c3a3615c","trade_count":23,"profit_factor":3.7827916861128097,"total_return_pct":1.2021184808416436,"win_rate":0.6956521739130435,"max_drawdown_pct":0.2608177180219861,"sharpe_ratio":3.3795660622862123,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.9110928059216074},"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317073556022527_c3a3615c","trade_count":220,"profit_factor":1.2595187982631553,"total_return_pct":3.200633818982489,"win_rate":0.5045454545454545,"max_drawdown_pct":1.389607178327899,"sharpe_ratio":0.6336391727317187,"monthly_win_rate":0.6551724137931034,"equity_curve_r_squared":0.39958317262208615}},"sqs_score":86.7,"sqs_breakdown":{"profitability":84.8,"risk":100.0,"consistency":95.8,"robustness":57.2},"verdict":"better","verdict_reasoning":"The hard macro block improved valid and test again, with sharper PF and much lower drawdown than the 50% scaler version.","next_direction":"Stress the sleeve mix around the new macro-blocked core.","tags":["pead","midcap","step45","short","core","macro","block"]}
{"entry_id":"IMP-0040","timestamp":"2026-03-17T07:54:26.245073+00:00","experiment_name":"pead_midcap_step46_short_core_macro_block_acshort12","hypothesis":"The after-close short sleeve may be oversized after the macro block and could improve if reduced.","config_delta":{"base_experiment":"pead_midcap_step45_short_core_macro_block","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317073936915792_e3adb886","trade_count":26,"profit_factor":2.4445635979938296,"total_return_pct":1.339314216731771,"win_rate":0.6923076923076923,"max_drawdown_pct":0.37458871743417604,"sharpe_ratio":3.1583041871985076,"monthly_win_rate":0.75,"equity_curve_r_squared":0.48286315791941375},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317073939814431_e3adb886","trade_count":21,"profit_factor":4.522043594902001,"total_return_pct":1.2518263219734362,"win_rate":0.7142857142857143,"max_drawdown_pct":0.2783619920052574,"sharpe_ratio":3.6389410132883055,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.9244229299732519}},"sqs_score":86.6,"sqs_breakdown":{"profitability":85.0,"risk":100.0,"consistency":95.8,"robustness":56.1},"verdict":"worse","verdict_reasoning":"Shrinking the after-close short sleeve slightly degraded both valid and test, so the step45 25% sleeve was not the problem.","next_direction":"Test whether the same-day long sleeve or the short-only core is the real source of edge.","tags":["pead","midcap","step46","short","core","macro","block","acshort12"]}
@ -45,3 +45,17 @@
{"entry_id":"IMP-0045","timestamp":"2026-03-17T07:54:28.043618+00:00","experiment_name":"pead_midcap_step51_short_core_macro_block_crashcap","hypothesis":"Extreme one-day crash continuations are too stretched for the same-day short sleeve and should be excluded.","config_delta":{"base_experiment":"pead_midcap_step45_short_core_macro_block","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317081833666987_5039805d","trade_count":28,"profit_factor":2.3084684930008983,"total_return_pct":1.30245295115927,"win_rate":0.6785714285714286,"max_drawdown_pct":0.37472483014430374,"sharpe_ratio":3.0487382658615467,"monthly_win_rate":0.75,"equity_curve_r_squared":0.48762905493056535,"avg_gross_exposure_pct":4.09489843643577,"avg_net_exposure_pct":-1.9273432556417505,"days_in_market_pct":57.89473684210527},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317081834927778_5039805d","trade_count":22,"profit_factor":4.190184861108528,"total_return_pct":1.2441182731003355,"win_rate":0.7272727272727273,"max_drawdown_pct":0.22380328257556925,"sharpe_ratio":3.5956143566120704,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.918016321908289,"avg_gross_exposure_pct":2.2928950819181733,"avg_net_exposure_pct":-0.8189811228558067,"days_in_market_pct":42.5531914893617},"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317074932001383_1585063f","trade_count":220,"profit_factor":1.2595187982631553,"total_return_pct":3.200633818982489,"win_rate":0.5045454545454545,"max_drawdown_pct":1.389607178327899,"sharpe_ratio":0.6336391727317187,"monthly_win_rate":0.6551724137931034,"equity_curve_r_squared":0.39958317262208615}},"sqs_score":86.7,"sqs_breakdown":{"profitability":85.0,"risk":100.0,"consistency":95.8,"robustness":56.7},"verdict":"better","verdict_reasoning":"Capping same-day shorts at -45% reaction preserved train and valid while modestly improving test return, PF, drawdown, and Sharpe versus step45.","next_direction":"Combine the crash cap with a quality filter on the same-day long overlay.","tags":["pead","midcap","step51","short","core","macro","block","crashcap"],"sqs_v2_score":89.6,"sqs_v2_breakdown":{"profitability":85.0,"risk":100.0,"consistency":95.8,"robustness":56.7,"capital_efficiency":100.0}}
{"entry_id":"IMP-0046","timestamp":"2026-03-17T07:54:28.401055+00:00","experiment_name":"pead_midcap_step52_short_core_macro_block_crashcap_gap10","hypothesis":"The same-day long overlay may work better when restricted to larger reaction-day gap moves.","config_delta":{"base_experiment":"pead_midcap_step51_short_core_macro_block_crashcap","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317081834927839_7592b1dc","trade_count":25,"profit_factor":5.660464878695176,"total_return_pct":1.818984312375629,"win_rate":0.72,"max_drawdown_pct":0.21695852738272095,"sharpe_ratio":4.755652871139783,"monthly_win_rate":1.0,"equity_curve_r_squared":0.6608034205824956,"avg_gross_exposure_pct":3.5838805580978437,"avg_net_exposure_pct":-2.593156236925373,"days_in_market_pct":56.14035087719298},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317081833658080_7592b1dc","trade_count":22,"profit_factor":3.351800408128271,"total_return_pct":1.0111883417758072,"win_rate":0.7727272727272727,"max_drawdown_pct":0.24257912061402945,"sharpe_ratio":3.031867507475822,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8468990955221466,"avg_gross_exposure_pct":2.858350680305373,"avg_net_exposure_pct":-2.222595187645864,"days_in_market_pct":53.191489361702125},"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317075225071209_7592b1dc","trade_count":201,"profit_factor":1.3153549627707726,"total_return_pct":3.2988485556152156,"win_rate":0.4975124378109453,"max_drawdown_pct":1.5599163185209133,"sharpe_ratio":0.683194016870928,"monthly_win_rate":0.6923076923076923,"equity_curve_r_squared":0.7186047701175057}},"sqs_score":86.3,"sqs_breakdown":{"profitability":84.0,"risk":100.0,"consistency":95.8,"robustness":56.7},"verdict":"neutral","verdict_reasoning":"A 10% gap filter made train and valid much stronger but gave back some test performance, so this is a balanced alternative rather than a clear new leader.","next_direction":"If optimizing for robustness across splits, keep exploring overlay quality gates around this variant.","tags":["pead","midcap","step52","short","core","macro","block","crashcap","gap10"],"sqs_v2_score":87.2,"sqs_v2_breakdown":{"profitability":84.0,"risk":100.0,"consistency":95.8,"robustness":56.7,"capital_efficiency":79.5}}
{"entry_id":"IMP-0047","timestamp":"2026-03-17T07:54:28.762757+00:00","experiment_name":"pead_midcap_step53_short_core_macro_block_crashcap_gap14","hypothesis":"A stricter same-day long gap filter might further concentrate the overlay into only the strongest continuation setups.","config_delta":{"base_experiment":"pead_midcap_step52_short_core_macro_block_crashcap_gap10","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317075123208169_66d09993","trade_count":25,"profit_factor":8.207760543782888,"total_return_pct":2.0180349316014032,"win_rate":0.76,"max_drawdown_pct":0.2179161262122437,"sharpe_ratio":5.288977955005757,"monthly_win_rate":1.0,"equity_curve_r_squared":0.6385560108285373},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317075123225576_66d09993","trade_count":19,"profit_factor":4.599773676047558,"total_return_pct":1.1191525844285641,"win_rate":0.8421052631578947,"max_drawdown_pct":0.21947031826165894,"sharpe_ratio":3.463700507402551,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8852420626052896}},"sqs_score":43.1,"sqs_breakdown":{"profitability":84.5,"risk":100.0,"consistency":95.8,"robustness":55.0},"verdict":"worse","verdict_reasoning":"The stricter gap filter over-concentrated the overlay, dropped total trade count below a healthy level, and cratered test SQS.","next_direction":"Use moderate overlay filters only; the strict version is too sparse.","tags":["pead","midcap","step53","short","core","macro","block","crashcap","gap14"]}
{"entry_id":"IMP-0048","timestamp":"2026-03-17T10:10:07.544224+00:00","experiment_name":"pead_midcap_step56_short_core_macro_block_crashcap_gap10_interleave_longtrend25","hypothesis":"Interleaving sleeves instead of raw global-score sorting should help the long trend overlay get allocated earlier and improve realized returns.","config_delta":{"base_experiment":"pead_midcap_step55_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100427495678_c4cb6228","trade_count":191,"profit_factor":1.31467289884978,"total_return_pct":3.000532477442888,"win_rate":0.5078534031413613,"max_drawdown_pct":1.1246540668445304,"sharpe_ratio":0.682160145042935,"monthly_win_rate":0.6538461538461539,"equity_curve_r_squared":0.7049623155490459,"avg_gross_exposure_pct":2.1440841165534352,"avg_net_exposure_pct":-0.741975012003786,"days_in_market_pct":28.169014084507044},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100431529104_c4cb6228","trade_count":28,"profit_factor":4.8198685654623254,"total_return_pct":1.9154249967419892,"win_rate":0.6785714285714286,"max_drawdown_pct":0.6079718599673478,"sharpe_ratio":3.973180662878923,"monthly_win_rate":1.0,"equity_curve_r_squared":0.5809751515505278,"avg_gross_exposure_pct":4.161026862046388,"avg_net_exposure_pct":-2.684188461871084,"days_in_market_pct":56.14035087719298},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100434744381_c4cb6228","trade_count":20,"profit_factor":4.034651941086868,"total_return_pct":1.0723281131463445,"win_rate":0.8,"max_drawdown_pct":0.24183984749880666,"sharpe_ratio":3.399127342667149,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8859682722741977,"avg_gross_exposure_pct":2.4654753372509486,"avg_net_exposure_pct":-1.477511185545206,"days_in_market_pct":51.06382978723404}},"sqs_score":51.3,"sqs_breakdown":{"valid_quality":82.6,"test_quality":79.4,"floor_quality":79.4,"gap_quality":100.0},"sqs_v2_score":88.3,"sqs_v2_breakdown":{"profitability":84.3,"risk":100.0,"consistency":95.8,"robustness":55.6,"capital_efficiency":90.9},"promotion_score":89.1,"promotion_breakdown":{"valid_quality":89.8,"test_quality":88.3,"floor_quality":88.3},"unified_score":51.3,"unified_breakdown":{"valid_quality":82.6,"test_quality":79.4,"floor_quality":79.4,"gap_quality":100.0},"verdict":"neutral","verdict_reasoning":"Interleaving lifted test PF and return slightly, but train remained below step52 and valid drawdown worsened, so the gain was too narrow.","next_direction":"Keep the stronger same-day long sleeve, but try opening one more candidate slot per day.","tags":["pead","midcap","step56","short","core","macro","block","crashcap","gap10","interleave","longtrend25"]}
{"entry_id":"IMP-0049","timestamp":"2026-03-17T10:10:07.544223+00:00","experiment_name":"pead_midcap_step55_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25","hypothesis":"If the same-day long trend sleeve is real alpha, raising its budget from 12.5% to 25% should lift valid/test returns while keeping drawdown contained.","config_delta":{"base_experiment":"pead_midcap_step52_short_core_macro_block_crashcap_gap10","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100414827938_b2c1159a","trade_count":208,"profit_factor":1.3026092902212059,"total_return_pct":3.197582862252573,"win_rate":0.5048076923076923,"max_drawdown_pct":1.3030593106539847,"sharpe_ratio":0.6650887543632845,"monthly_win_rate":0.6538461538461539,"equity_curve_r_squared":0.6942797350314213,"avg_gross_exposure_pct":2.2965079311515697,"avg_net_exposure_pct":-1.068925327205924,"days_in_market_pct":28.38569880823402},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100418563512_b2c1159a","trade_count":28,"profit_factor":4.621364494548783,"total_return_pct":1.9321698387879296,"win_rate":0.7142857142857143,"max_drawdown_pct":0.29678396454155964,"sharpe_ratio":4.486982260533271,"monthly_win_rate":1.0,"equity_curve_r_squared":0.6351890668895267,"avg_gross_exposure_pct":3.8320562275604266,"avg_net_exposure_pct":-2.3571340234511924,"days_in_market_pct":56.14035087719298},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100421770808_b2c1159a","trade_count":23,"profit_factor":3.4044506466943907,"total_return_pct":1.0338260227821447,"win_rate":0.782608695652174,"max_drawdown_pct":0.24257912061402945,"sharpe_ratio":3.1121570919759436,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8494393946803189,"avg_gross_exposure_pct":3.034569947217148,"avg_net_exposure_pct":-2.0461795297656566,"days_in_market_pct":53.191489361702125}},"sqs_score":49.8,"sqs_breakdown":{"valid_quality":83.6,"test_quality":76.1,"floor_quality":76.1,"gap_quality":91.7},"sqs_v2_score":87.1,"sqs_v2_breakdown":{"profitability":84.1,"risk":100.0,"consistency":95.8,"robustness":57.2,"capital_efficiency":77.7},"promotion_score":89.1,"promotion_breakdown":{"valid_quality":90.7,"test_quality":87.1,"floor_quality":87.1},"unified_score":49.8,"unified_breakdown":{"valid_quality":83.6,"test_quality":76.1,"floor_quality":76.1,"gap_quality":91.7},"verdict":"neutral","verdict_reasoning":"This was the best balanced trend-hold variant: valid and test returns edged above step52, but train return stayed below baseline, so it did not clear a full all-split improvement bar.","next_direction":"Test whether selection crowding is the bottleneck by interleaving sleeves or allowing one extra daily slot.","tags":["pead","midcap","step55","short","core","macro","block","crashcap","gap10","longtrend12","sdlong25"]}
{"entry_id":"IMP-0050","timestamp":"2026-03-17T10:10:07.544222+00:00","experiment_name":"pead_midcap_step54_short_core_macro_block_crashcap_gap10_longtrend12","hypothesis":"Same-day long close-entry sleeve with 12-day trend hold should improve valid/test without materially hurting the short-core base.","config_delta":{"base_experiment":"pead_midcap_step52_short_core_macro_block_crashcap_gap10","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100332469191_e1ab5792","trade_count":201,"profit_factor":1.27971446872751,"total_return_pct":2.88150490621911,"win_rate":0.5024875621890548,"max_drawdown_pct":1.4049225155953227,"sharpe_ratio":0.6136649773412598,"monthly_win_rate":0.6923076923076923,"equity_curve_r_squared":0.7371903755424146,"avg_gross_exposure_pct":2.1995436175888323,"avg_net_exposure_pct":-1.2043129551276188,"days_in_market_pct":27.627302275189596},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100351662584_e1ab5792","trade_count":26,"profit_factor":6.099913503899416,"total_return_pct":1.9918550334882748,"win_rate":0.7307692307692307,"max_drawdown_pct":0.21797225956805316,"sharpe_ratio":4.666899835993297,"monthly_win_rate":1.0,"equity_curve_r_squared":0.6469910274326361,"avg_gross_exposure_pct":3.637408212559115,"avg_net_exposure_pct":-2.5520608569407015,"days_in_market_pct":56.14035087719298},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100408811304_e1ab5792","trade_count":22,"profit_factor":2.991176064691692,"total_return_pct":0.856133035813924,"win_rate":0.7727272727272727,"max_drawdown_pct":0.3359030771970047,"sharpe_ratio":2.4909364067019513,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8042967657946622,"avg_gross_exposure_pct":2.921981872114122,"avg_net_exposure_pct":-2.1517863691688386,"days_in_market_pct":53.191489361702125}},"sqs_score":46.5,"sqs_breakdown":{"valid_quality":83.6,"test_quality":70.9,"floor_quality":70.9,"gap_quality":74.3},"sqs_v2_score":86.1,"sqs_v2_breakdown":{"profitability":83.4,"risk":100.0,"consistency":95.8,"robustness":56.7,"capital_efficiency":71.0},"promotion_score":88.6,"promotion_breakdown":{"valid_quality":90.7,"test_quality":86.1,"floor_quality":86.1},"unified_score":46.5,"unified_breakdown":{"valid_quality":83.6,"test_quality":70.9,"floor_quality":70.9,"gap_quality":74.3},"verdict":"neutral","verdict_reasoning":"Long trend sleeve improved valid return and PF, but train and test returns fell versus step52. Improvement was not broad enough across all three splits.","next_direction":"Increase same-day long sleeve budget and test whether the trend hold needs more capital to matter.","tags":["pead","midcap","step54","short","core","macro","block","crashcap","gap10","longtrend12"]}
{"entry_id":"IMP-0051","timestamp":"2026-03-17T10:13:47.820620+00:00","experiment_name":"pead_midcap_step58_short_core_macro_block_crashcap_gap7_longtrend12_sdlong25","hypothesis":"Loosening the same-day long gap filter from 10% to 7% may broaden the trend-hold sleeve enough to lift absolute return across splits.","config_delta":{"base_experiment":"pead_midcap_step55_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100701045116_89da3e85","trade_count":217,"profit_factor":1.1836228679446417,"total_return_pct":2.1640217345169948,"win_rate":0.511520737327189,"max_drawdown_pct":1.3943515116639358,"sharpe_ratio":0.41689043269693754,"monthly_win_rate":0.6071428571428571,"equity_curve_r_squared":0.24452603324168182,"avg_gross_exposure_pct":2.48302270403254,"avg_net_exposure_pct":-0.9240632756453898,"days_in_market_pct":29.577464788732392},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100705201243_89da3e85","trade_count":29,"profit_factor":2.885213921540522,"total_return_pct":1.6066212170483485,"win_rate":0.6896551724137931,"max_drawdown_pct":0.4958133428812383,"sharpe_ratio":3.6006506236711573,"monthly_win_rate":1.0,"equity_curve_r_squared":0.6323181349051988,"avg_gross_exposure_pct":4.030999519248784,"avg_net_exposure_pct":-1.9829383669087164,"days_in_market_pct":56.14035087719298},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100708488141_89da3e85","trade_count":23,"profit_factor":2.7627983723004212,"total_return_pct":0.9267893134084734,"win_rate":0.7391304347826086,"max_drawdown_pct":0.24257912061402945,"sharpe_ratio":2.781969702284716,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8290340590935003,"avg_gross_exposure_pct":3.172184023694837,"avg_net_exposure_pct":-1.2529216711302178,"days_in_market_pct":53.191489361702125}},"sqs_score":46.6,"sqs_breakdown":{"valid_quality":81.6,"test_quality":71.0,"floor_quality":71.0,"gap_quality":81.3},"sqs_v2_score":86.3,"sqs_v2_breakdown":{"profitability":83.7,"risk":100.0,"consistency":95.8,"robustness":57.2,"capital_efficiency":70.9},"promotion_score":87.7,"promotion_breakdown":{"valid_quality":88.8,"test_quality":86.3,"floor_quality":86.3},"unified_score":46.6,"unified_breakdown":{"valid_quality":81.6,"test_quality":71.0,"floor_quality":71.0,"gap_quality":81.3},"verdict":"worse","verdict_reasoning":"Broadening the long sleeve diluted quality. Train, valid, and test all weakened versus the 10% gap version, so the extra breadth was not productive.","next_direction":"Stay with the tighter 10% gap gate and test whether after-close short should be removed from the max4 portfolio.","tags":["pead","midcap","step58","short","core","macro","block","crashcap","gap7","longtrend12","sdlong25"]}
{"entry_id":"IMP-0052","timestamp":"2026-03-17T10:13:47.821673+00:00","experiment_name":"pead_midcap_step57_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4","hypothesis":"Adding a fourth daily slot should let the positive same-day long trend sleeve coexist with the short-core sleeves and lift total return, especially in train.","config_delta":{"base_experiment":"pead_midcap_step55_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100647683228_d591afad","trade_count":214,"profit_factor":1.3583319773998321,"total_return_pct":3.8172175024118773,"win_rate":0.5186915887850467,"max_drawdown_pct":1.3295910930658135,"sharpe_ratio":0.7580236981795051,"monthly_win_rate":0.6538461538461539,"equity_curve_r_squared":0.685718632923443,"avg_gross_exposure_pct":2.3612289576418535,"avg_net_exposure_pct":-1.001836917901861,"days_in_market_pct":28.38569880823402},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100651417016_d591afad","trade_count":29,"profit_factor":4.4424890742925465,"total_return_pct":1.9106867186089511,"win_rate":0.6896551724137931,"max_drawdown_pct":0.3179173247540872,"sharpe_ratio":4.511177385736093,"monthly_win_rate":1.0,"equity_curve_r_squared":0.625777909809139,"avg_gross_exposure_pct":3.944739633758862,"avg_net_exposure_pct":-2.4700155661285508,"days_in_market_pct":56.14035087719298},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317100654743633_d591afad","trade_count":24,"profit_factor":2.664801821772631,"total_return_pct":0.91437274196824,"win_rate":0.75,"max_drawdown_pct":0.24257912061402945,"sharpe_ratio":2.893891891447354,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8412595666380652,"avg_gross_exposure_pct":3.169455379761105,"avg_net_exposure_pct":-2.1804906875349683,"days_in_market_pct":53.191489361702125}},"sqs_score":46.5,"sqs_breakdown":{"valid_quality":83.5,"test_quality":70.9,"floor_quality":70.9,"gap_quality":74.7},"sqs_v2_score":86.3,"sqs_v2_breakdown":{"profitability":83.7,"risk":100.0,"consistency":95.8,"robustness":57.8,"capital_efficiency":70.4},"promotion_score":88.6,"promotion_breakdown":{"valid_quality":90.4,"test_quality":86.3,"floor_quality":86.3},"unified_score":46.5,"unified_breakdown":{"valid_quality":83.5,"test_quality":70.9,"floor_quality":70.9,"gap_quality":74.7},"verdict":"neutral","verdict_reasoning":"This was the first long-trend variant to beat step52 on train return, but valid and test softened versus the best balanced variants, so it improved absolute return without clearing a robust all-split bar.","next_direction":"Keep max4, then remove or sharply reduce after-close short to see whether it is diluting the higher-conviction sleeves.","tags":["pead","midcap","step57","short","core","macro","block","crashcap","gap10","longtrend12","sdlong25","max4"]}
{"entry_id":"IMP-0053","timestamp":"2026-03-17T10:18:37.790830+00:00","experiment_name":"pead_midcap_step59_same_day_only_max4_longtrend25","hypothesis":"If after-close short is diluting the portfolio, a same-day-only book should lift train return while keeping the positive long trend overlay intact.","config_delta":{"base_experiment":"pead_midcap_step57_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101616130067_4ce1573f","trade_count":124,"profit_factor":1.6549151417942642,"total_return_pct":3.4598346586282274,"win_rate":0.5403225806451613,"max_drawdown_pct":1.3037083252920614,"sharpe_ratio":0.8632124891148151,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.6337366863338719,"avg_gross_exposure_pct":1.4618927749473103,"avg_net_exposure_pct":0.040921478947221035,"days_in_market_pct":19.176598049837487},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101626096198_4ce1573f","trade_count":22,"profit_factor":6.627861685804674,"total_return_pct":1.9039976324784367,"win_rate":0.7272727272727273,"max_drawdown_pct":0.44666468803527526,"sharpe_ratio":4.451621602089021,"monthly_win_rate":1.0,"equity_curve_r_squared":0.5794666301732988,"avg_gross_exposure_pct":3.8681902002325703,"avg_net_exposure_pct":-2.3913045273063496,"days_in_market_pct":42.10526315789473},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101634807938_4ce1573f","trade_count":13,"profit_factor":2.6072978977047137,"total_return_pct":0.5860747837766976,"win_rate":0.6923076923076923,"max_drawdown_pct":0.31275465094584215,"sharpe_ratio":2.308425640364089,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.6952685722248394,"avg_gross_exposure_pct":1.4491267702359076,"avg_net_exposure_pct":-0.4649535073354661,"days_in_market_pct":31.914893617021278}},"sqs_score":33.2,"sqs_breakdown":{"valid_quality":81.1,"test_quality":49.7,"floor_quality":49.7,"gap_quality":12.0},"sqs_v2_score":42.7,"sqs_v2_breakdown":{"profitability":82.3,"risk":100.0,"consistency":95.8,"robustness":45.1,"capital_efficiency":78.5},"promotion_score":68.6,"promotion_breakdown":{"valid_quality":89.8,"test_quality":42.7,"floor_quality":42.7},"unified_score":33.2,"unified_breakdown":{"valid_quality":81.1,"test_quality":49.7,"floor_quality":49.7,"gap_quality":12.0},"verdict":"worse","verdict_reasoning":"Removing after-close short improved train and valid quality, but test return collapsed from +0.91% to +0.59%. The sleeve is still needed for recent OOS behavior.","next_direction":"Keep after-close short active, but filter it harder so only the deeper negative gaps remain.","tags":["pead","midcap","step59","same","day","only","max4","longtrend25"]}
{"entry_id":"IMP-0054","timestamp":"2026-03-17T10:18:38.178487+00:00","experiment_name":"pead_midcap_step60_same_day_only_interleave_max4_longtrend25","hypothesis":"Interleaving the same-day-only sleeves may preserve the train lift while forcing better balance between short core and long trend entries.","config_delta":{"base_experiment":"pead_midcap_step59_same_day_only_max4_longtrend25","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101616097173_ce78581d","trade_count":124,"profit_factor":1.7147359082965992,"total_return_pct":3.794868328446057,"win_rate":0.5403225806451613,"max_drawdown_pct":1.3030513376085362,"sharpe_ratio":0.9460927004826782,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.645777565512627,"avg_gross_exposure_pct":1.498662692128791,"avg_net_exposure_pct":0.0720408710547762,"days_in_market_pct":19.284940411700973},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101626066831_ce78581d","trade_count":22,"profit_factor":6.627861685804674,"total_return_pct":1.9039976324784367,"win_rate":0.7272727272727273,"max_drawdown_pct":0.44666468803527526,"sharpe_ratio":4.451621602089021,"monthly_win_rate":1.0,"equity_curve_r_squared":0.5794666301732988,"avg_gross_exposure_pct":3.8681902002325703,"avg_net_exposure_pct":-2.3913045273063496,"days_in_market_pct":42.10526315789473},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101634790427_ce78581d","trade_count":13,"profit_factor":2.6072978977047137,"total_return_pct":0.5860747837766976,"win_rate":0.6923076923076923,"max_drawdown_pct":0.31275465094584215,"sharpe_ratio":2.308425640364089,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.6952685722248394,"avg_gross_exposure_pct":1.4491267702359076,"avg_net_exposure_pct":-0.4649535073354661,"days_in_market_pct":31.914893617021278}},"sqs_score":33.2,"sqs_breakdown":{"valid_quality":81.1,"test_quality":49.7,"floor_quality":49.7,"gap_quality":12.0},"sqs_v2_score":42.7,"sqs_v2_breakdown":{"profitability":82.3,"risk":100.0,"consistency":95.8,"robustness":45.1,"capital_efficiency":78.5},"promotion_score":68.6,"promotion_breakdown":{"valid_quality":89.8,"test_quality":42.7,"floor_quality":42.7},"unified_score":33.2,"unified_breakdown":{"valid_quality":81.1,"test_quality":49.7,"floor_quality":49.7,"gap_quality":12.0},"verdict":"neutral","verdict_reasoning":"Interleaving improved train return to the highest seen in this branch, but valid stayed flat and test remained stuck at +0.59%, so it is a useful clue rather than a promotion candidate.","next_direction":"Apply a stricter filter to after-close short instead of removing it entirely.","tags":["pead","midcap","step60","same","day","only","interleave","max4","longtrend25"]}
{"entry_id":"IMP-0055","timestamp":"2026-03-17T10:18:38.591808+00:00","experiment_name":"pead_midcap_step61_same_day_only_max5_longtrend25","hypothesis":"A fifth daily slot may restore some lost test opportunity while keeping the same-day-only train lift.","config_delta":{"base_experiment":"pead_midcap_step59_same_day_only_max4_longtrend25","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101616141383_4177a33d","trade_count":125,"profit_factor":1.6152818286538184,"total_return_pct":3.3281551222560664,"win_rate":0.528,"max_drawdown_pct":1.304467392506448,"sharpe_ratio":0.8410110414784137,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.6390485285220323,"avg_gross_exposure_pct":1.4445779873336309,"avg_net_exposure_pct":-0.001513116209876324,"days_in_market_pct":19.068255687974},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101626106651_4177a33d","trade_count":22,"profit_factor":6.627861685804674,"total_return_pct":1.9039976324784367,"win_rate":0.7272727272727273,"max_drawdown_pct":0.44666468803527526,"sharpe_ratio":4.451621602089021,"monthly_win_rate":1.0,"equity_curve_r_squared":0.5794666301732988,"avg_gross_exposure_pct":3.8681902002325703,"avg_net_exposure_pct":-2.3913045273063496,"days_in_market_pct":42.10526315789473},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101634804824_4177a33d","trade_count":13,"profit_factor":2.6072978977047137,"total_return_pct":0.5860747837766976,"win_rate":0.6923076923076923,"max_drawdown_pct":0.31275465094584215,"sharpe_ratio":2.308425640364089,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.6952685722248394,"avg_gross_exposure_pct":1.4491267702359076,"avg_net_exposure_pct":-0.4649535073354661,"days_in_market_pct":31.914893617021278}},"sqs_score":33.2,"sqs_breakdown":{"valid_quality":81.1,"test_quality":49.7,"floor_quality":49.7,"gap_quality":12.0},"sqs_v2_score":42.7,"sqs_v2_breakdown":{"profitability":82.3,"risk":100.0,"consistency":95.8,"robustness":45.1,"capital_efficiency":78.5},"promotion_score":68.6,"promotion_breakdown":{"valid_quality":89.8,"test_quality":42.7,"floor_quality":42.7},"unified_score":33.2,"unified_breakdown":{"valid_quality":81.1,"test_quality":49.7,"floor_quality":49.7,"gap_quality":12.0},"verdict":"worse","verdict_reasoning":"The extra slot did not recover test. It raised trade count slightly but underperformed the interleaved same-day-only variant and still lagged the mixed-sleeve portfolio.","next_direction":"Return to the mixed-sleeve structure and tighten after-close short with a negative gap filter.","tags":["pead","midcap","step61","same","day","only","max5","longtrend25"]}
{"entry_id":"IMP-0056","timestamp":"2026-03-17T10:20:47.944163+00:00","experiment_name":"pead_midcap_step62_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10","hypothesis":"Weak after-close shorts are diluting the max4 mixed-sleeve portfolio; requiring at least a 10% negative gap should keep the sleeve productive while freeing slots for stronger same-day setups.","config_delta":{"base_experiment":"pead_midcap_step57_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101945843553_a9942261","trade_count":190,"profit_factor":1.5870238518554496,"total_return_pct":5.006752568666314,"win_rate":0.5473684210526316,"max_drawdown_pct":1.2008626598937386,"sharpe_ratio":1.1008608430630382,"monthly_win_rate":0.64,"equity_curve_r_squared":0.7668760857061504,"avg_gross_exposure_pct":2.1363506899122533,"avg_net_exposure_pct":-0.7060295226606695,"days_in_market_pct":25.785482123510295},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101951495313_a9942261","trade_count":26,"profit_factor":4.640144626555104,"total_return_pct":1.7785589226570302,"win_rate":0.6923076923076923,"max_drawdown_pct":0.394474954823559,"sharpe_ratio":4.453025001679815,"monthly_win_rate":1.0,"equity_curve_r_squared":0.5596638198344033,"avg_gross_exposure_pct":3.5028084000751822,"avg_net_exposure_pct":-2.028975630946834,"days_in_market_pct":49.122807017543856},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101956624074_a9942261","trade_count":20,"profit_factor":3.693559917731055,"total_return_pct":0.9821623910714115,"win_rate":0.8,"max_drawdown_pct":0.23230116536263104,"sharpe_ratio":3.3957804338520745,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.9033229833419024,"avg_gross_exposure_pct":2.4512706589430846,"avg_net_exposure_pct":-1.4631851279456756,"days_in_market_pct":48.93617021276596}},"sqs_score":50.9,"sqs_breakdown":{"valid_quality":81.7,"test_quality":79.2,"floor_quality":79.2,"gap_quality":100.0},"sqs_v2_score":87.7,"sqs_v2_breakdown":{"profitability":83.9,"risk":100.0,"consistency":95.8,"robustness":55.6,"capital_efficiency":86.1},"promotion_score":88.9,"promotion_breakdown":{"valid_quality":89.9,"test_quality":87.7,"floor_quality":87.7},"unified_score":50.9,"unified_breakdown":{"valid_quality":81.7,"test_quality":79.2,"floor_quality":79.2,"gap_quality":100.0},"verdict":"better","verdict_reasoning":"This filter was a clear improvement over step57: train return jumped from +3.82% to +5.01%, test improved from +0.91% to +0.98%, and drawdown fell. Valid softened slightly but remained strong.","next_direction":"Try the same negative-gap filter with interleaved sleeve selection to see if test can move back above 1.0% without giving up the train lift.","tags":["pead","midcap","step62","short","core","macro","block","crashcap","gap10","longtrend12","sdlong25","max4","acsgap10"]}
{"entry_id":"IMP-0057","timestamp":"2026-03-17T10:20:48.356015+00:00","experiment_name":"pead_midcap_step63_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap12","hypothesis":"A stricter 12% negative gap gate on after-close shorts may further improve the mixed-sleeve portfolio by concentrating the short sleeve into only the sharpest downside reactions.","config_delta":{"base_experiment":"pead_midcap_step62_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101945804213_83edae67","trade_count":182,"profit_factor":1.6277512600955655,"total_return_pct":5.049056193144744,"win_rate":0.5494505494505495,"max_drawdown_pct":1.2723459513687636,"sharpe_ratio":1.1295117660384937,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.7296785391968574,"avg_gross_exposure_pct":2.075630672791522,"avg_net_exposure_pct":-0.6452651158022451,"days_in_market_pct":25.243770314192847},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101951483361_83edae67","trade_count":24,"profit_factor":5.270593419113103,"total_return_pct":1.7898083823081543,"win_rate":0.7083333333333334,"max_drawdown_pct":0.31708063303845857,"sharpe_ratio":4.878106921358311,"monthly_win_rate":1.0,"equity_curve_r_squared":0.637601759273469,"avg_gross_exposure_pct":3.0974719922506315,"avg_net_exposure_pct":-1.626276620699805,"days_in_market_pct":45.614035087719294},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317101956614713_83edae67","trade_count":19,"profit_factor":3.6038727896341176,"total_return_pct":0.9494594526291912,"win_rate":0.7894736842105263,"max_drawdown_pct":0.23230116536263104,"sharpe_ratio":3.2438715317612528,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8958519994688269,"avg_gross_exposure_pct":1.9049388001836767,"avg_net_exposure_pct":-0.9171395725318859,"days_in_market_pct":38.297872340425535}},"sqs_score":38.2,"sqs_breakdown":{"valid_quality":82.3,"test_quality":57.7,"floor_quality":57.7,"gap_quality":34.7},"sqs_v2_score":44.4,"sqs_v2_breakdown":{"profitability":83.8,"risk":100.0,"consistency":95.8,"robustness":55.0,"capital_efficiency":98.1},"promotion_score":69.6,"promotion_breakdown":{"valid_quality":90.3,"test_quality":44.4,"floor_quality":44.4},"unified_score":38.2,"unified_breakdown":{"valid_quality":82.3,"test_quality":57.7,"floor_quality":57.7,"gap_quality":34.7},"verdict":"better","verdict_reasoning":"The 12% gate slightly improved train and valid versus step62 while keeping test near 0.95% with lower drawdown than the old mixed-sleeve base. This is the strongest return-first variant so far.","next_direction":"Combine the after-close gap gate with interleaved max4 sleeve selection to test whether test return can recover toward the 1.0%+ level.","tags":["pead","midcap","step63","short","core","macro","block","crashcap","gap10","longtrend12","sdlong25","max4","acsgap12"]}
{"entry_id":"IMP-0058","timestamp":"2026-03-17T10:22:41.050471+00:00","experiment_name":"pead_midcap_step64_short_core_macro_block_crashcap_gap10_interleave_max4_acsgap10","hypothesis":"Interleaving the filtered mixed-sleeve portfolio might recover some of the earlier test strength without sacrificing the new train lift from the after-close gap gate.","config_delta":{"base_experiment":"pead_midcap_step62_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102155738633_2e938802","trade_count":191,"profit_factor":1.5695913044241423,"total_return_pct":5.006400905086412,"win_rate":0.5392670157068062,"max_drawdown_pct":1.5104386424090617,"sharpe_ratio":1.1022536648052863,"monthly_win_rate":0.64,"equity_curve_r_squared":0.7673617882130458,"avg_gross_exposure_pct":2.194526583220677,"avg_net_exposure_pct":-0.6654873263018454,"days_in_market_pct":26.00216684723727},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102201332816_2e938802","trade_count":26,"profit_factor":4.330878953751208,"total_return_pct":1.675907371790352,"win_rate":0.6538461538461539,"max_drawdown_pct":0.608675665764912,"sharpe_ratio":3.7033259316462277,"monthly_win_rate":1.0,"equity_curve_r_squared":0.527209136324793,"avg_gross_exposure_pct":3.7950928397401578,"avg_net_exposure_pct":-2.3215832255311892,"days_in_market_pct":49.122807017543856},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102206621120_2e938802","trade_count":20,"profit_factor":3.693559917731055,"total_return_pct":0.9821623910714115,"win_rate":0.8,"max_drawdown_pct":0.23230116536263104,"sharpe_ratio":3.3957804338520745,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.9033229833419024,"avg_gross_exposure_pct":2.4512706589430846,"avg_net_exposure_pct":-1.4631851279456756,"days_in_market_pct":48.93617021276596}},"sqs_score":50.6,"sqs_breakdown":{"valid_quality":80.6,"test_quality":79.2,"floor_quality":79.2,"gap_quality":100.0},"sqs_v2_score":87.7,"sqs_v2_breakdown":{"profitability":83.9,"risk":100.0,"consistency":95.8,"robustness":55.6,"capital_efficiency":86.1},"promotion_score":88.2,"promotion_breakdown":{"valid_quality":88.7,"test_quality":87.7,"floor_quality":87.7},"unified_score":50.6,"unified_breakdown":{"valid_quality":80.6,"test_quality":79.2,"floor_quality":79.2,"gap_quality":100.0},"verdict":"worse","verdict_reasoning":"Test held steady, but valid return and drawdown got materially worse while train did not improve. The gap filter works better with raw global-score ranking than with interleaving.","next_direction":"Keep global-score selection and treat step62/63 as the active return-first branch.","tags":["pead","midcap","step64","short","core","macro","block","crashcap","gap10","interleave","max4","acsgap10"]}
{"entry_id":"IMP-0059","timestamp":"2026-03-17T10:22:41.560235+00:00","experiment_name":"pead_midcap_step65_short_core_macro_block_crashcap_gap10_interleave_max4_acsgap12","hypothesis":"A stricter after-close gap gate plus interleaving may produce the strongest hybrid of train lift and balanced sleeve participation.","config_delta":{"base_experiment":"pead_midcap_step63_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap12","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102155749766_057bd373","trade_count":182,"profit_factor":1.6174212176205378,"total_return_pct":5.077465154216028,"win_rate":0.5439560439560439,"max_drawdown_pct":1.5094301004863888,"sharpe_ratio":1.1510607734250322,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.7322022304994754,"avg_gross_exposure_pct":2.127978254795758,"avg_net_exposure_pct":-0.5837963895741501,"days_in_market_pct":25.46045503791983},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102201332544_057bd373","trade_count":24,"profit_factor":4.557936520788986,"total_return_pct":1.5351686099939834,"win_rate":0.6666666666666666,"max_drawdown_pct":0.5303323192221483,"sharpe_ratio":3.9755987852769445,"monthly_win_rate":1.0,"equity_curve_r_squared":0.6279656300903311,"avg_gross_exposure_pct":3.4173394039982,"avg_net_exposure_pct":-1.9446456373142142,"days_in_market_pct":47.368421052631575},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102206620963_057bd373","trade_count":19,"profit_factor":3.6038727896341176,"total_return_pct":0.9494594526291912,"win_rate":0.7894736842105263,"max_drawdown_pct":0.23230116536263104,"sharpe_ratio":3.2438715317612528,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8958519994688269,"avg_gross_exposure_pct":1.9049388001836767,"avg_net_exposure_pct":-0.9171395725318859,"days_in_market_pct":38.297872340425535}},"sqs_score":38.3,"sqs_breakdown":{"valid_quality":81.1,"test_quality":57.7,"floor_quality":57.7,"gap_quality":38.7},"sqs_v2_score":44.4,"sqs_v2_breakdown":{"profitability":83.8,"risk":100.0,"consistency":95.8,"robustness":55.0,"capital_efficiency":98.1},"promotion_score":69.0,"promotion_breakdown":{"valid_quality":89.1,"test_quality":44.4,"floor_quality":44.4},"unified_score":38.3,"unified_breakdown":{"valid_quality":81.1,"test_quality":57.7,"floor_quality":57.7,"gap_quality":38.7},"verdict":"worse","verdict_reasoning":"Train ticked up slightly, but valid deteriorated meaningfully and test did not improve. Interleaving is not helping this filtered branch.","next_direction":"Stay with the non-interleaved filtered short sleeve; the next branch should tune the filtered after-close short only if we need more test return.","tags":["pead","midcap","step65","short","core","macro","block","crashcap","gap10","interleave","max4","acsgap12"]}
{"entry_id":"IMP-0060","timestamp":"2026-03-17T10:26:25.356022+00:00","experiment_name":"pead_midcap_step66_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react12","hypothesis":"Adding a 12% downside reaction requirement on top of the 10% after-close gap filter may remove the weakest residual after-close shorts without sacrificing the recent OOS edge.","config_delta":{"base_experiment":"pead_midcap_step62_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102528258441_f85583ef","trade_count":187,"profit_factor":1.6195866594933024,"total_return_pct":5.086267802803064,"win_rate":0.5508021390374331,"max_drawdown_pct":1.2717965470897303,"sharpe_ratio":1.1327429527860058,"monthly_win_rate":0.64,"equity_curve_r_squared":0.7645174872600673,"avg_gross_exposure_pct":2.1004912456069564,"avg_net_exposure_pct":-0.671173830932749,"days_in_market_pct":25.46045503791983},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102534670418_f85583ef","trade_count":26,"profit_factor":4.640144626555104,"total_return_pct":1.7785589226570302,"win_rate":0.6923076923076923,"max_drawdown_pct":0.394474954823559,"sharpe_ratio":4.453025001679815,"monthly_win_rate":1.0,"equity_curve_r_squared":0.5596638198344033,"avg_gross_exposure_pct":3.5028084000751822,"avg_net_exposure_pct":-2.028975630946834,"days_in_market_pct":49.122807017543856},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102539620352_f85583ef","trade_count":20,"profit_factor":3.693559917731055,"total_return_pct":0.9821623910714115,"win_rate":0.8,"max_drawdown_pct":0.23230116536263104,"sharpe_ratio":3.3957804338520745,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.9033229833419024,"avg_gross_exposure_pct":2.4512706589430846,"avg_net_exposure_pct":-1.4631851279456756,"days_in_market_pct":48.93617021276596}},"sqs_score":50.9,"sqs_breakdown":{"valid_quality":81.7,"test_quality":79.2,"floor_quality":79.2,"gap_quality":100.0},"sqs_v2_score":87.7,"sqs_v2_breakdown":{"profitability":83.9,"risk":100.0,"consistency":95.8,"robustness":55.6,"capital_efficiency":86.1},"promotion_score":88.9,"promotion_breakdown":{"valid_quality":89.9,"test_quality":87.7,"floor_quality":87.7},"unified_score":50.9,"unified_breakdown":{"valid_quality":81.7,"test_quality":79.2,"floor_quality":79.2,"gap_quality":100.0},"verdict":"better","verdict_reasoning":"This matched step62 on valid/test while lifting train from +5.01% to +5.09%. It is a cleaner version of the filtered short-sleeve branch with no observable downside so far.","next_direction":"Use step66 as the balanced return-first branch; only test further changes if they can raise test above +1.0% without giving back the train lift.","tags":["pead","midcap","step66","short","core","macro","block","crashcap","gap10","longtrend12","sdlong25","max4","acsgap10","react12"]}
{"entry_id":"IMP-0061","timestamp":"2026-03-17T10:26:25.840092+00:00","experiment_name":"pead_midcap_step67_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react14","hypothesis":"A stricter 14% downside reaction requirement may further improve the filtered after-close short sleeve by keeping only the sharpest downside continuation setups.","config_delta":{"base_experiment":"pead_midcap_step66_short_core_macro_block_crashcap_gap10_longtrend12_sdlong25_max4_acsgap10_react12","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102528258779_fbf8df06","trade_count":176,"profit_factor":1.72971812082782,"total_return_pct":5.315512807515508,"win_rate":0.5625,"max_drawdown_pct":1.1823507388022194,"sharpe_ratio":1.1862508329604826,"monthly_win_rate":0.625,"equity_curve_r_squared":0.7409760880151399,"avg_gross_exposure_pct":1.9641530768509556,"avg_net_exposure_pct":-0.5086575725921745,"days_in_market_pct":24.918743228602384},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102534670454_fbf8df06","trade_count":25,"profit_factor":5.331499198553463,"total_return_pct":1.8247351197415846,"win_rate":0.72,"max_drawdown_pct":0.480176430930607,"sharpe_ratio":4.44451943654,"monthly_win_rate":1.0,"equity_curve_r_squared":0.5922580595870112,"avg_gross_exposure_pct":3.1678311806010018,"avg_net_exposure_pct":-1.6948561495104018,"days_in_market_pct":47.368421052631575},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317102539620462_fbf8df06","trade_count":19,"profit_factor":3.6038727896341176,"total_return_pct":0.9494594526291912,"win_rate":0.7894736842105263,"max_drawdown_pct":0.23230116536263104,"sharpe_ratio":3.2438715317612528,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8958519994688269,"avg_gross_exposure_pct":1.9049388001836767,"avg_net_exposure_pct":-0.9171395725318859,"days_in_market_pct":38.297872340425535}},"sqs_score":38.2,"sqs_breakdown":{"valid_quality":82.1,"test_quality":57.7,"floor_quality":57.7,"gap_quality":35.3},"sqs_v2_score":44.4,"sqs_v2_breakdown":{"profitability":83.8,"risk":100.0,"consistency":95.8,"robustness":55.0,"capital_efficiency":98.1},"promotion_score":69.5,"promotion_breakdown":{"valid_quality":90.1,"test_quality":44.4,"floor_quality":44.4},"unified_score":38.2,"unified_breakdown":{"valid_quality":82.1,"test_quality":57.7,"floor_quality":57.7,"gap_quality":35.3},"verdict":"neutral","verdict_reasoning":"This pushed train to +5.32% and lifted valid slightly, but test slipped back to +0.95%. It is a stronger train-focused branch, not a clear overall winner versus step66.","next_direction":"Favor step66 for balance; step67 is only useful if we optimize explicitly for train-heavy return.","tags":["pead","midcap","step67","short","core","macro","block","crashcap","gap10","longtrend12","sdlong25","max4","acsgap10","react14"]}