You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
48 lines
76 KiB
JSON
48 lines
76 KiB
JSON
{"entry_id":"IMP-0001","timestamp":"2026-03-16T22:52:29.147972+00:00","experiment_name":"pead_midcap_step1_fixedr","hypothesis":"Step 1: fixed_r target 2.0 R:R","config_delta":{"base_experiment":"pead_midcap_step1_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191835_e0902214","trade_count":528,"profit_factor":0.9200217466205215,"total_return_pct":-3.124588680970817,"win_rate":0.4090909090909091,"max_drawdown_pct":7.849601936494004,"sharpe_ratio":-0.33161166573941914,"monthly_win_rate":0.38461538461538464,"equity_curve_r_squared":0.049564252587599174},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191841_e0902214","trade_count":69,"profit_factor":1.7731598619764342,"total_return_pct":2.779776127733232,"win_rate":0.4927536231884058,"max_drawdown_pct":1.5546437384924012,"sharpe_ratio":3.3855945499328657,"monthly_win_rate":0.5,"equity_curve_r_squared":0.46467275010982595},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191847_e0902214","trade_count":95,"profit_factor":0.9135744830352539,"total_return_pct":-0.4557621829436975,"win_rate":0.47368421052631576,"max_drawdown_pct":1.4922738831283402,"sharpe_ratio":-0.690798512095932,"monthly_win_rate":0.3333333333333333,"equity_curve_r_squared":0.53626294582183}},"sqs_score":39.7,"sqs_breakdown":{"profitability":23.9,"risk":52.4,"consistency":24.8,"robustness":80.7},"verdict":"neutral","verdict_reasoning":"Baseline for midcap step series","next_direction":"Step 2: disable trailing stop","tags":["pead","midcap","step1","fixedr"]}
|
|
{"entry_id":"IMP-0002","timestamp":"2026-03-16T22:52:29.505541+00:00","experiment_name":"pead_midcap_step2_notrail","hypothesis":"Step 2: Disable trailing stop for midcap volatility","config_delta":{"base_experiment":"pead_midcap_step1_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191857_52e64963","trade_count":456,"profit_factor":0.8306562780589708,"total_return_pct":-7.062952270161506,"win_rate":0.6578947368421053,"max_drawdown_pct":11.950419851957642,"sharpe_ratio":-0.696356079596736,"monthly_win_rate":0.525,"equity_curve_r_squared":0.07229984947776134},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191904_52e64963","trade_count":62,"profit_factor":1.073493344735863,"total_return_pct":0.3745287237202429,"win_rate":0.7258064516129032,"max_drawdown_pct":1.7163906170323242,"sharpe_ratio":0.39419762465723635,"monthly_win_rate":0.25,"equity_curve_r_squared":0.32372614376351805},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191911_52e64963","trade_count":54,"profit_factor":0.9313134618740863,"total_return_pct":-0.26847486723051406,"win_rate":0.6666666666666666,"max_drawdown_pct":1.7431414336132605,"sharpe_ratio":-0.366331653948068,"monthly_win_rate":0.3333333333333333,"equity_curve_r_squared":0.27335022008413906}},"sqs_score":41.4,"sqs_breakdown":{"profitability":25.5,"risk":56.4,"consistency":54.2,"robustness":41.5},"verdict":"worse","verdict_reasoning":"Train PF dropped to 0.73, worst overall","next_direction":"Step 3: raise reaction threshold","tags":["pead","midcap","step2","notrail"]}
|
|
{"entry_id":"IMP-0003","timestamp":"2026-03-16T22:52:29.857239+00:00","experiment_name":"pead_midcap_step3_10pct","hypothesis":"Step 3: Raise reaction threshold 7%->10% for stronger signals","config_delta":{"base_experiment":"pead_midcap_step1_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191921_2dd6b0b3","trade_count":554,"profit_factor":0.8983598002644894,"total_return_pct":-3.280603570163337,"win_rate":0.5,"max_drawdown_pct":6.615859124596835,"sharpe_ratio":-0.410178158923494,"monthly_win_rate":0.42857142857142855,"equity_curve_r_squared":0.3246242852362157},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191928_2dd6b0b3","trade_count":78,"profit_factor":1.664496799271172,"total_return_pct":1.9591117241190805,"win_rate":0.6025641025641025,"max_drawdown_pct":0.6538050285655718,"sharpe_ratio":2.907578829549799,"monthly_win_rate":0.75,"equity_curve_r_squared":0.6968678861478663},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191935_2dd6b0b3","trade_count":98,"profit_factor":1.0020701077990406,"total_return_pct":0.013499456389559782,"win_rate":0.5,"max_drawdown_pct":1.4225278540108528,"sharpe_ratio":0.03939447191001189,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.0029903324045531966}},"sqs_score":49.8,"sqs_breakdown":{"profitability":30.2,"risk":65.0,"consistency":70.8,"robustness":49.1},"verdict":"better","verdict_reasoning":"Only experiment reaching test breakeven (PF=1.00, Ret=+0.01%)","next_direction":"Step 4: try long-only","tags":["pead","midcap","step3","10pct"]}
|
|
{"entry_id":"IMP-0004","timestamp":"2026-03-16T22:52:30.203924+00:00","experiment_name":"pead_midcap_step4_longonly","hypothesis":"Step 4: Long-only, disable short side","config_delta":{"base_experiment":"pead_midcap_step1_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191945_bb0ddfa0","trade_count":486,"profit_factor":0.924546532180125,"total_return_pct":-2.2530301807158395,"win_rate":0.5432098765432098,"max_drawdown_pct":6.787125867039724,"sharpe_ratio":-0.20236278759112156,"monthly_win_rate":0.46153846153846156,"equity_curve_r_squared":0.1343287887075526},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191952_bb0ddfa0","trade_count":76,"profit_factor":1.430929775113959,"total_return_pct":1.4935870708133152,"win_rate":0.6052631578947368,"max_drawdown_pct":1.597646524797458,"sharpe_ratio":1.6551004874178592,"monthly_win_rate":0.5,"equity_curve_r_squared":0.6129327020059054},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316191959_bb0ddfa0","trade_count":78,"profit_factor":0.8355717037294544,"total_return_pct":-0.8088267292581296,"win_rate":0.44871794871794873,"max_drawdown_pct":1.4401741814514755,"sharpe_ratio":-1.1731301213701413,"monthly_win_rate":0.3333333333333333,"equity_curve_r_squared":0.3740006709035379}},"sqs_score":32.6,"sqs_breakdown":{"profitability":18.5,"risk":47.6,"consistency":20.6,"robustness":61.2},"verdict":"worse","verdict_reasoning":"Test PF 0.94, return -0.81%. Long-only worse than long+short","next_direction":"Step 5: limit candidates per day","tags":["pead","midcap","step4","longonly"]}
|
|
{"entry_id":"IMP-0005","timestamp":"2026-03-16T22:52:30.561839+00:00","experiment_name":"pead_midcap_step5_maxcand3","hypothesis":"Step 5: Max 3 candidates per day, top signals only","config_delta":{"base_experiment":"pead_midcap_step1_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316192009_4f4f05bf","trade_count":667,"profit_factor":0.8936008117413707,"total_return_pct":-4.084212058311663,"win_rate":0.512743628185907,"max_drawdown_pct":6.529337814573298,"sharpe_ratio":-0.46728383699893133,"monthly_win_rate":0.358974358974359,"equity_curve_r_squared":0.5365488680633558},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316192017_4f4f05bf","trade_count":89,"profit_factor":2.081614051785466,"total_return_pct":3.3263332066270377,"win_rate":0.651685393258427,"max_drawdown_pct":1.1046989753464673,"sharpe_ratio":3.9774346553681674,"monthly_win_rate":0.75,"equity_curve_r_squared":0.5734715756129087},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316192023_4f4f05bf","trade_count":96,"profit_factor":0.9504596545547419,"total_return_pct":-0.2388243054896011,"win_rate":0.5416666666666666,"max_drawdown_pct":1.4011627353834164,"sharpe_ratio":-0.4009079471879985,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.5009577858012723}},"sqs_score":52.5,"sqs_breakdown":{"profitability":26.6,"risk":57.8,"consistency":77.8,"robustness":79.1},"verdict":"neutral","verdict_reasoning":"Best valid (+3.33%) but test still negative (-0.24%)","next_direction":"Step 6: extended hold","tags":["pead","midcap","step5","maxcand3"]}
|
|
{"entry_id":"IMP-0006","timestamp":"2026-03-16T22:52:30.916045+00:00","experiment_name":"pead_midcap_step6_drift","hypothesis":"Step 6: Extended hold 25 days for PEAD drift","config_delta":{"base_experiment":"pead_midcap_step1_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316192033_be4b4568","trade_count":586,"profit_factor":0.9126734877022061,"total_return_pct":-3.711358688232649,"win_rate":0.4129692832764505,"max_drawdown_pct":6.665875438412343,"sharpe_ratio":-0.39694526230308885,"monthly_win_rate":0.38461538461538464,"equity_curve_r_squared":0.33883652745194087},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316192040_be4b4568","trade_count":75,"profit_factor":1.704720436988778,"total_return_pct":2.6652714937057898,"win_rate":0.5066666666666667,"max_drawdown_pct":1.0499246227859185,"sharpe_ratio":3.7096311156929622,"monthly_win_rate":0.5,"equity_curve_r_squared":0.5754494959825112},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316192047_be4b4568","trade_count":100,"profit_factor":0.8557264506988863,"total_return_pct":-0.8788682238009642,"win_rate":0.43,"max_drawdown_pct":1.7395188967538284,"sharpe_ratio":-1.5533516509762217,"monthly_win_rate":0.3333333333333333,"equity_curve_r_squared":0.7311683777861855}},"sqs_score":37.0,"sqs_breakdown":{"profitability":19.3,"risk":45.9,"consistency":17.5,"robustness":95.7},"verdict":"worse","verdict_reasoning":"Worst test return (-0.88%), longer hold hurts","next_direction":"Combo: step3 + step5","tags":["pead","midcap","step6","drift"]}
|
|
{"entry_id":"IMP-0007","timestamp":"2026-03-16T22:52:31.270613+00:00","experiment_name":"pead_midcap_combo_10pct_maxcand3","hypothesis":"Combo: 10% threshold + max 3 candidates","config_delta":{"base_experiment":"pead_midcap_step1_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316195857_708d9090","trade_count":533,"profit_factor":0.9034427861136265,"total_return_pct":-2.91390932899194,"win_rate":0.49906191369606,"max_drawdown_pct":5.821672597926446,"sharpe_ratio":-0.3760744161321293,"monthly_win_rate":0.45714285714285713,"equity_curve_r_squared":0.3049801722988121},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316200003_708d9090","trade_count":72,"profit_factor":1.9089335238197231,"total_return_pct":2.2525004674136144,"win_rate":0.625,"max_drawdown_pct":0.6530874475348815,"sharpe_ratio":2.9527896546854935,"monthly_win_rate":0.75,"equity_curve_r_squared":0.6965943198525836},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316200115_708d9090","trade_count":79,"profit_factor":0.9701095917976659,"total_return_pct":-0.11821922524747788,"win_rate":0.5063291139240507,"max_drawdown_pct":0.9293000795486674,"sharpe_ratio":-0.18779926674176511,"monthly_win_rate":0.3333333333333333,"equity_curve_r_squared":0.03631581199315345}},"sqs_score":39.2,"sqs_breakdown":{"profitability":28.0,"risk":63.5,"consistency":30.2,"robustness":40.6},"verdict":"better","verdict_reasoning":"Smallest test loss (-0.12%), lowest DD (0.93%). Best combined filter","next_direction":"Next: explore stop/target tuning or new scoring features","tags":["pead","midcap","combo","10pct","maxcand3"]}
|
|
{"entry_id":"IMP-0008","timestamp":"2026-03-16T23:01:54.422047+00:00","experiment_name":"pead_midcap_step7_fixedr","hypothesis":"Combo base (10% + maxcand3) + fixed_r target 2.0. Fix inverted R:R","config_delta":{"base_experiment":"pead_midcap_combo_10pct_maxcand3","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316225931_249ee693","trade_count":425,"profit_factor":0.9087588895218256,"total_return_pct":-2.684538647143214,"win_rate":0.4023529411764706,"max_drawdown_pct":5.9541536964340045,"sharpe_ratio":-0.31665196683581115,"monthly_win_rate":0.45714285714285713,"equity_curve_r_squared":0.0655821811757635},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230020_249ee693","trade_count":53,"profit_factor":2.0006534393926754,"total_return_pct":2.3868649231372836,"win_rate":0.5283018867924528,"max_drawdown_pct":0.6860864501039302,"sharpe_ratio":3.087810484110416,"monthly_win_rate":0.75,"equity_curve_r_squared":0.6619146653298694},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230108_249ee693","trade_count":71,"profit_factor":0.9376665114180485,"total_return_pct":-0.24986939032697408,"win_rate":0.4507042253521127,"max_drawdown_pct":0.9924460035465441,"sharpe_ratio":-0.39554365980509315,"monthly_win_rate":0.0,"equity_curve_r_squared":0.16973213763570125}},"sqs_score":35.4,"sqs_breakdown":{"profitability":25.9,"risk":60.1,"consistency":16.8,"robustness":44.5},"verdict":"neutral","verdict_reasoning":"Test PF improved but return still negative (-0.25%). Stop exit rate should drop with proper R:R","next_direction":"Step 8: add NFT exit; Step 9: tighter stop","tags":["pead","midcap","step7","fixedr"]}
|
|
{"entry_id":"IMP-0009","timestamp":"2026-03-16T23:01:54.804591+00:00","experiment_name":"pead_midcap_step8_nft","hypothesis":"Step 7 + no_follow_through_exit. Cut dead trades at D+1 close","config_delta":{"base_experiment":"pead_midcap_step7_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316225932_3e736f0d","trade_count":454,"profit_factor":0.8441650849745413,"total_return_pct":-5.223338416972663,"win_rate":0.3766519823788546,"max_drawdown_pct":7.842211530994003,"sharpe_ratio":-0.6465192822980859,"monthly_win_rate":0.4,"equity_curve_r_squared":0.36446813528716165},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230020_3e736f0d","trade_count":57,"profit_factor":1.5546541014245128,"total_return_pct":1.8349072453313857,"win_rate":0.45614035087719296,"max_drawdown_pct":0.9575880067210154,"sharpe_ratio":2.3501871656264828,"monthly_win_rate":0.5,"equity_curve_r_squared":0.4737973824333247},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230108_3e736f0d","trade_count":71,"profit_factor":0.6522816324098041,"total_return_pct":-1.8153531028857979,"win_rate":0.4084507042253521,"max_drawdown_pct":2.1930148870201824,"sharpe_ratio":-2.981974625656072,"monthly_win_rate":0.3333333333333333,"equity_curve_r_squared":0.8832469667893551}},"sqs_score":31.3,"sqs_breakdown":{"profitability":12.7,"risk":43.4,"consistency":13.9,"robustness":83.9},"verdict":"worse","verdict_reasoning":"NFT exit hurts: test return -1.82% vs step7 -0.25%. Cutting too many trades that would have recovered","next_direction":"NFT too aggressive for PEAD drift strategy. Try tighter stop instead","tags":["pead","midcap","step8","nft"]}
|
|
{"entry_id":"IMP-0010","timestamp":"2026-03-16T23:01:55.163461+00:00","experiment_name":"pead_midcap_step9_stop2","hypothesis":"Step 7 + tighter stop 2.0 ATR. Reduce avg loss per trade","config_delta":{"base_experiment":"pead_midcap_step7_fixedr","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316225939_36ab78b3","trade_count":432,"profit_factor":0.8175378156440357,"total_return_pct":-8.776000630653071,"win_rate":0.4074074074074074,"max_drawdown_pct":12.886676673013914,"sharpe_ratio":-0.7360418140485263,"monthly_win_rate":0.42857142857142855,"equity_curve_r_squared":0.4421218813805471},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230020_36ab78b3","trade_count":53,"profit_factor":1.8143851030277298,"total_return_pct":3.223451666916022,"win_rate":0.5283018867924528,"max_drawdown_pct":1.2331625402933826,"sharpe_ratio":2.813496185483277,"monthly_win_rate":0.75,"equity_curve_r_squared":0.5891081686619382},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230108_36ab78b3","trade_count":71,"profit_factor":0.7658210615369154,"total_return_pct":-1.7396298311107383,"win_rate":0.4507042253521127,"max_drawdown_pct":2.4893517163865826,"sharpe_ratio":-1.8398745071636018,"monthly_win_rate":0.0,"equity_curve_r_squared":0.7504756156161969}},"sqs_score":31.1,"sqs_breakdown":{"profitability":13.0,"risk":41.7,"consistency":16.8,"robustness":80.8},"verdict":"worse","verdict_reasoning":"Tighter stop hurts: test return -1.74% vs step7 -0.25%. More stops hit in volatile midcaps","next_direction":"Stop tuning counterproductive. Focus on signal quality or scoring improvements","tags":["pead","midcap","step9","stop2"]}
|
|
{"entry_id":"IMP-0011","timestamp":"2026-03-16T23:04:14.616459+00:00","experiment_name":"pead_midcap_step10_short","hypothesis":"Combo base + shorter hold (7 days). Reduce unnecessary exposure","config_delta":{"base_experiment":"pead_midcap_combo_10pct_maxcand3","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230308_b26b6872","trade_count":535,"profit_factor":0.9383880570062944,"total_return_pct":-1.8280832909611637,"win_rate":0.508411214953271,"max_drawdown_pct":5.0343002325613835,"sharpe_ratio":-0.23100167769304789,"monthly_win_rate":0.4857142857142857,"equity_curve_r_squared":0.12398583357859513},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230314_b26b6872","trade_count":70,"profit_factor":1.6081573944406065,"total_return_pct":1.5626791854819602,"win_rate":0.5857142857142857,"max_drawdown_pct":0.6539417061012387,"sharpe_ratio":2.2442047142281463,"monthly_win_rate":0.75,"equity_curve_r_squared":0.6019214395233538},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230319_b26b6872","trade_count":79,"profit_factor":0.9958404155353467,"total_return_pct":-0.013683964940166334,"win_rate":0.5189873417721519,"max_drawdown_pct":0.9293000795486674,"sharpe_ratio":-0.007699537912677983,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.01071589487383525}},"sqs_score":49.2,"sqs_breakdown":{"profitability":29.7,"risk":66.5,"consistency":74.0,"robustness":39.0},"verdict":"better","verdict_reasoning":"Test near breakeven (-0.01%), SQS 49.2 (up from 39.2). Consistency 74.0 dramatically improved","next_direction":"Try combo with score threshold and short hold","tags":["pead","midcap","step10","short"]}
|
|
{"entry_id":"IMP-0012","timestamp":"2026-03-16T23:04:14.974407+00:00","experiment_name":"pead_midcap_step11_score60","hypothesis":"Combo base + higher score threshold 0.50->0.60. Filter weak signals","config_delta":{"base_experiment":"pead_midcap_combo_10pct_maxcand3","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230327_b5298036","trade_count":529,"profit_factor":0.9051644971123368,"total_return_pct":-2.850449875516715,"win_rate":0.499054820415879,"max_drawdown_pct":5.806253410597396,"sharpe_ratio":-0.3721590200001434,"monthly_win_rate":0.45714285714285713,"equity_curve_r_squared":0.28879703955671965},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230333_b5298036","trade_count":72,"profit_factor":1.9089335238197231,"total_return_pct":2.2525004674136144,"win_rate":0.625,"max_drawdown_pct":0.6530874475348815,"sharpe_ratio":2.9527896546854935,"monthly_win_rate":0.75,"equity_curve_r_squared":0.6965943198525836},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230338_b5298036","trade_count":77,"profit_factor":1.0190825170597053,"total_return_pct":0.07685407145853969,"win_rate":0.5194805194805194,"max_drawdown_pct":0.8954589900133336,"sharpe_ratio":0.15103876740694316,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.001051223399886146}},"sqs_score":50.2,"sqs_breakdown":{"profitability":31.3,"risk":69.2,"consistency":74.1,"robustness":37.3},"verdict":"better","verdict_reasoning":"Test turns positive! +0.08%, PF>1.0, SQS 50.2. Score filter is effective","next_direction":"Combine score 0.60 + short hold for best result","tags":["pead","midcap","step11","score60"]}
|
|
{"entry_id":"IMP-0013","timestamp":"2026-03-16T23:04:15.346697+00:00","experiment_name":"pead_midcap_step12_vol2x","hypothesis":"Combo base + volume threshold 2.0x (from 1.5x). Stronger conviction","config_delta":{"base_experiment":"pead_midcap_combo_10pct_maxcand3","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230347_534e7000","trade_count":525,"profit_factor":0.8908517859321168,"total_return_pct":-3.263530815059654,"win_rate":0.49714285714285716,"max_drawdown_pct":6.158693883828255,"sharpe_ratio":-0.4271081260405149,"monthly_win_rate":0.45714285714285713,"equity_curve_r_squared":0.3844589392112171},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230353_534e7000","trade_count":72,"profit_factor":1.9089335238197231,"total_return_pct":2.2525004674136144,"win_rate":0.625,"max_drawdown_pct":0.6530874475348815,"sharpe_ratio":2.9527896546854935,"monthly_win_rate":0.75,"equity_curve_r_squared":0.6965943198525836},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230358_534e7000","trade_count":77,"profit_factor":1.018057074188992,"total_return_pct":0.07292559720991995,"win_rate":0.5194805194805194,"max_drawdown_pct":0.8904960176547445,"sharpe_ratio":0.1450757451336352,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.006128571981766798}},"sqs_score":50.2,"sqs_breakdown":{"profitability":31.2,"risk":69.1,"consistency":74.1,"robustness":37.6},"verdict":"better","verdict_reasoning":"Test +0.07%, similar to score60. Volume 2x also effective quality filter. Nearly identical result to step11","next_direction":"Combine score 0.60 + short hold + vol 2x","tags":["pead","midcap","step12","vol2x"]}
|
|
{"entry_id":"IMP-0014","timestamp":"2026-03-16T23:05:05.412943+00:00","experiment_name":"pead_midcap_step13_best","hypothesis":"Best combo: 10% reaction + maxcand3 + score 0.60 + 7-day hold + vol 2.0x","config_delta":{"base_experiment":"pead_midcap_combo_10pct_maxcand3","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230443_15fa3807","trade_count":523,"profit_factor":0.9277895576563163,"total_return_pct":-2.1147577797892154,"win_rate":0.5066921606118547,"max_drawdown_pct":5.363056148167064,"sharpe_ratio":-0.27517043819279563,"monthly_win_rate":0.4857142857142857,"equity_curve_r_squared":0.19731788832163766},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230448_15fa3807","trade_count":70,"profit_factor":1.6081573944406065,"total_return_pct":1.5626791854819602,"win_rate":0.5857142857142857,"max_drawdown_pct":0.6539417061012387,"sharpe_ratio":2.2442047142281463,"monthly_win_rate":0.75,"equity_curve_r_squared":0.6019214395233538},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260316230454_15fa3807","trade_count":75,"profit_factor":1.1182776518630022,"total_return_pct":0.4293895929202554,"win_rate":0.5466666666666666,"max_drawdown_pct":0.8801478276052886,"sharpe_ratio":0.7812081874914202,"monthly_win_rate":1.0,"equity_curve_r_squared":0.08086932876015243}},"sqs_score":57.7,"sqs_breakdown":{"profitability":37.6,"risk":79.7,"consistency":82.8,"robustness":41.2},"verdict":"better","verdict_reasoning":"NEW BEST! Test +0.43%, SQS 57.7. First clearly positive OOS result. Consistency 82.8 (best ever)","next_direction":"Explore fine-tuning: score 0.65, or combine with original step3 7pct threshold for more trades","tags":["pead","midcap","step13","best"]}
|
|
{"entry_id":"IMP-0015","timestamp":"2026-03-17T02:16:29.511903+00:00","experiment_name":"pead_midcap_step14_score65","hypothesis":"Higher score threshold 0.65 filters for stronger PEAD signals, improving WR and PF","config_delta":{"base_experiment":"pead_midcap_step13_best","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317020837_45dfcf5d","trade_count":513,"profit_factor":0.9330034935848248,"total_return_pct":-1.9162420951407404,"win_rate":0.5087719298245614,"max_drawdown_pct":4.806826210534917,"sharpe_ratio":-0.2519747350079355,"monthly_win_rate":0.45714285714285713,"equity_curve_r_squared":0.1816099118661623},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021038_45dfcf5d","trade_count":66,"profit_factor":1.3965047202887975,"total_return_pct":1.0156494476850202,"win_rate":0.5606060606060606,"max_drawdown_pct":0.6560660596828557,"sharpe_ratio":1.5832382440205535,"monthly_win_rate":0.75,"equity_curve_r_squared":0.5472739451051728},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021240_45dfcf5d","trade_count":72,"profit_factor":1.2192504658724292,"total_return_pct":0.7284410148207681,"win_rate":0.5694444444444444,"max_drawdown_pct":0.8797326864948225,"sharpe_ratio":1.3410575857129192,"monthly_win_rate":1.0,"equity_curve_r_squared":0.20418254692529553}},"sqs_score":64.2,"sqs_breakdown":{"profitability":43.9,"risk":89.0,"consistency":86.6,"robustness":47.2},"verdict":"better","verdict_reasoning":"Test SQS 64.2 > 57.7 (step13). Return +0.73% > +0.43%. Score filter continues to be the most effective lever. Trade count 72 still sufficient.","next_direction":"Use as new base for Phase B exit optimization","tags":["pead","midcap","step14","score65"]}
|
|
{"entry_id":"IMP-0016","timestamp":"2026-03-17T02:16:34.131542+00:00","experiment_name":"pead_midcap_step15_react7","hypothesis":"Lower reaction threshold 0.07 widens funnel for more trades and statistical significance","config_delta":{"base_experiment":"pead_midcap_step13_best","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021302_84f50bec","trade_count":628,"profit_factor":0.8880804531017018,"total_return_pct":-4.025803281272252,"win_rate":0.5127388535031847,"max_drawdown_pct":5.920220358574264,"sharpe_ratio":-0.4789738641324651,"monthly_win_rate":0.4473684210526316,"equity_curve_r_squared":0.5590772121494917},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021308_84f50bec","trade_count":84,"profit_factor":1.8949702222034897,"total_return_pct":2.6109835614154147,"win_rate":0.6190476190476191,"max_drawdown_pct":0.9498747174984115,"sharpe_ratio":3.486940708619626,"monthly_win_rate":0.75,"equity_curve_r_squared":0.5520524518827523},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021314_84f50bec","trade_count":91,"profit_factor":0.9429428813222424,"total_return_pct":-0.2583590451609634,"win_rate":0.5494505494505495,"max_drawdown_pct":1.5948632659956048,"sharpe_ratio":-0.4757579191663637,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.5116157273037042}},"sqs_score":51.7,"sqs_breakdown":{"profitability":26.1,"risk":55.4,"consistency":79.1,"robustness":77.0},"verdict":"worse","verdict_reasoning":"Test SQS 51.7 < 57.7. Return -0.26% negative. More trades (91) but quality dropped. Wider funnel added noise.","next_direction":"Lowering reaction threshold not effective without compensating quality filter","tags":["pead","midcap","step15","react7"]}
|
|
{"entry_id":"IMP-0017","timestamp":"2026-03-17T02:16:52.056303+00:00","experiment_name":"pead_midcap_step16_react7_score65","hypothesis":"Combine wider funnel (react 0.07) with stricter quality gate (score 0.65) for best of both","config_delta":{"base_experiment":"pead_midcap_step13_best","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021323_5ffc5d22","trade_count":613,"profit_factor":0.8978576295267423,"total_return_pct":-3.5846850918965063,"win_rate":0.5138662316476346,"max_drawdown_pct":5.32752847925319,"sharpe_ratio":-0.429214740253919,"monthly_win_rate":0.4473684210526316,"equity_curve_r_squared":0.6021795418809431},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021329_5ffc5d22","trade_count":83,"profit_factor":2.0144135190573675,"total_return_pct":2.7839796082119577,"win_rate":0.6265060240963856,"max_drawdown_pct":0.7815696983079155,"sharpe_ratio":3.7031973701157277,"monthly_win_rate":0.75,"equity_curve_r_squared":0.6307575259856522},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021335_5ffc5d22","trade_count":89,"profit_factor":0.9701741019713591,"total_return_pct":-0.12615119218212204,"win_rate":0.5617977528089888,"max_drawdown_pct":1.5543376309462142,"sharpe_ratio":-0.2273584908824299,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.4506121283479019}},"sqs_score":53.2,"sqs_breakdown":{"profitability":28.0,"risk":59.8,"consistency":81.1,"robustness":72.1},"verdict":"worse","verdict_reasoning":"Test SQS 53.2 < 57.7. Return -0.13% negative. Valid SQS 92.7 was excellent but didn't transfer to OOS. Overfitting risk.","next_direction":"Combination of wider funnel + higher score did not help OOS","tags":["pead","midcap","step16","react7","score65"]}
|
|
{"entry_id":"IMP-0018","timestamp":"2026-03-17T02:16:52.415056+00:00","experiment_name":"pead_midcap_step17_target2","hypothesis":"Wider target (ATR 2.0) improves R:R ratio from 3:1.5 to 3:2 with step14 stronger signals","config_delta":{"base_experiment":"pead_midcap_step14_score65","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021423_323a5b5e","trade_count":470,"profit_factor":0.9520470746330688,"total_return_pct":-1.3594521214714332,"win_rate":0.4702127659574468,"max_drawdown_pct":4.642828380427953,"sharpe_ratio":-0.17199413327760185,"monthly_win_rate":0.4857142857142857,"equity_curve_r_squared":0.0555160147865378},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021429_323a5b5e","trade_count":59,"profit_factor":1.3782504917267295,"total_return_pct":0.9689947279659247,"win_rate":0.5084745762711864,"max_drawdown_pct":0.7074931393576637,"sharpe_ratio":1.4547676904551556,"monthly_win_rate":0.75,"equity_curve_r_squared":0.5050319501387333},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021434_323a5b5e","trade_count":66,"profit_factor":1.1771413380479396,"total_return_pct":0.5891346601967962,"win_rate":0.5303030303030303,"max_drawdown_pct":0.8393581435568818,"sharpe_ratio":1.0752287681773998,"monthly_win_rate":1.0,"equity_curve_r_squared":0.11485286243962597}},"sqs_score":59.4,"sqs_breakdown":{"profitability":41.2,"risk":84.6,"consistency":80.1,"robustness":38.3},"verdict":"worse","verdict_reasoning":"Test SQS 59.4 < 64.2. Return +0.59% < +0.73%. Wider target reduced trade count (66 vs 72) without improving win rate. R:R improvement not impactful.","next_direction":"Target tuning not effective for PEAD","tags":["pead","midcap","step17","target2"]}
|
|
{"entry_id":"IMP-0019","timestamp":"2026-03-17T02:17:01.474375+00:00","experiment_name":"pead_midcap_step18_nofrac","hypothesis":"Full exit at target (fraction 1.0) prevents trailing stop from eating profits on partial positions","config_delta":{"base_experiment":"pead_midcap_step14_score65","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021443_be3d5bde","trade_count":437,"profit_factor":0.9549362257822231,"total_return_pct":-1.303548314107451,"win_rate":0.42105263157894735,"max_drawdown_pct":4.52621951607018,"sharpe_ratio":-0.16411744461886982,"monthly_win_rate":0.5142857142857142,"equity_curve_r_squared":0.048794422109098394},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021450_be3d5bde","trade_count":55,"profit_factor":1.4603949049610698,"total_return_pct":1.180333505141476,"win_rate":0.4727272727272727,"max_drawdown_pct":0.624348249096465,"sharpe_ratio":1.8572252886649268,"monthly_win_rate":0.75,"equity_curve_r_squared":0.602794881326535},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021455_be3d5bde","trade_count":64,"profit_factor":1.233557927923508,"total_return_pct":0.7760032481101371,"win_rate":0.515625,"max_drawdown_pct":0.8900540815144506,"sharpe_ratio":1.4353513823455328,"monthly_win_rate":1.0,"equity_curve_r_squared":0.2803203771052179}},"sqs_score":63.2,"sqs_breakdown":{"profitability":44.8,"risk":90.6,"consistency":77.6,"robustness":47.5},"verdict":"neutral","verdict_reasoning":"Test SQS 63.2 vs 64.2. Return +0.78% slightly better than +0.73%. Within noise. Fewer trades (64 vs 72). Marginal effect.","next_direction":"Nofrac marginal positive on return but not SQS","tags":["pead","midcap","step18","nofrac"]}
|
|
{"entry_id":"IMP-0020","timestamp":"2026-03-17T02:17:01.827556+00:00","experiment_name":"pead_midcap_step19_hold5","hypothesis":"Shorter 5d hold reduces exposure since avg hold is 3.28d. Less time for reversals.","config_delta":{"base_experiment":"pead_midcap_step14_score65","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021504_27a63cc2","trade_count":513,"profit_factor":0.9321637680892956,"total_return_pct":-1.9498490194724147,"win_rate":0.49902534113060426,"max_drawdown_pct":5.109402635025258,"sharpe_ratio":-0.2558888083394153,"monthly_win_rate":0.4857142857142857,"equity_curve_r_squared":0.2741765876459641},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021510_27a63cc2","trade_count":68,"profit_factor":1.5486357888297084,"total_return_pct":1.4116877933366923,"win_rate":0.5735294117647058,"max_drawdown_pct":0.6559648601902311,"sharpe_ratio":2.211147627502439,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.6062916819268495},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021516_27a63cc2","trade_count":72,"profit_factor":1.2003700113675047,"total_return_pct":0.6659802746770583,"win_rate":0.5694444444444444,"max_drawdown_pct":0.8797326864948225,"sharpe_ratio":1.2282104833801621,"monthly_win_rate":1.0,"equity_curve_r_squared":0.16598640737563777}},"sqs_score":62.9,"sqs_breakdown":{"profitability":42.7,"risk":87.1,"consistency":86.6,"robustness":44.8},"verdict":"neutral","verdict_reasoning":"Test SQS 62.9 vs 64.2. Return +0.67% vs +0.73%. Valid SQS 77.4 was strong. Similar trade count (72). Marginal effect.","next_direction":"Hold5d marginal positive on valid but neutral on test","tags":["pead","midcap","step19","hold5"]}
|
|
{"entry_id":"IMP-0021","timestamp":"2026-03-17T02:17:02.185037+00:00","experiment_name":"pead_midcap_step20_best3","hypothesis":"Combine all marginally positive changes: score 0.65 + nofrac 1.0 + hold 5d","config_delta":{"base_experiment":"pead_midcap_step14_score65","changes":{}},"results":{"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021559_27d04e9f","trade_count":441,"profit_factor":0.967683028533835,"total_return_pct":-0.9321417326055089,"win_rate":0.41950113378684806,"max_drawdown_pct":4.355001847653457,"sharpe_ratio":-0.11372635609251765,"monthly_win_rate":0.5142857142857142,"equity_curve_r_squared":0.038072957614376554},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021605_27d04e9f","trade_count":56,"profit_factor":1.6107426395301327,"total_return_pct":1.5733831641505238,"win_rate":0.48214285714285715,"max_drawdown_pct":0.628137470729625,"sharpe_ratio":2.475989818011853,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.6343682913335291},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317021610_27d04e9f","trade_count":64,"profit_factor":1.2154843477872561,"total_return_pct":0.7161940318976412,"win_rate":0.515625,"max_drawdown_pct":0.8900540815144506,"sharpe_ratio":1.3247288791439433,"monthly_win_rate":1.0,"equity_curve_r_squared":0.24515410354772538}},"sqs_score":62.0,"sqs_breakdown":{"profitability":43.6,"risk":88.7,"consistency":77.6,"robustness":45.3},"verdict":"neutral","verdict_reasoning":"Test SQS 62.0 < 64.2. Return +0.72% similar to +0.73%. Combo did not beat step14 alone. Over-optimization reduces robustness.","next_direction":"Step14 (score 0.65) remains the best. Simple is better.","tags":["pead","midcap","step20","best3"]}
|
|
{"entry_id":"IMP-0022","timestamp":"2026-03-17T06:59:07.766076+00:00","experiment_name":"pead_midcap_portfolio_v2","hypothesis":"Split step14 into specialist sleeves by timing and direction with same-day long reaction-close and after-close short in shadow.","config_delta":{"base_experiment":"pead_midcap_step14_score65","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317064012_7e0c28d8","trade_count":70,"profit_factor":1.0823586029850167,"total_return_pct":0.28994018403757943,"win_rate":0.5142857142857142,"max_drawdown_pct":1.7544248374390794,"sharpe_ratio":0.4840289893207606,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.06048799253372119}},"sqs_score":52.0,"sqs_breakdown":{"profitability":35.3,"risk":70.5,"consistency":73.2,"robustness":37.1},"verdict":"worse","verdict_reasoning":"Test-only run underperformed badly versus step14: SQS 52.0 vs 64.2 and return +0.29% vs +0.73%. The split introduced too much portfolio distortion.","next_direction":"Keep the profitable buckets from step14 but test narrower sleeve overrides instead of full portfolio decomposition.","tags":["pead","midcap","portfolio","v2"]}
|
|
{"entry_id":"IMP-0023","timestamp":"2026-03-17T06:59:08.123617+00:00","experiment_name":"pead_midcap_step23_sdlong_close7","hypothesis":"Keep the positive step14 sleeves, switch same-day longs to reaction-close, and remove after-close shorts.","config_delta":{"base_experiment":"pead_midcap_step14_score65","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317065129_8b4cc460","trade_count":69,"profit_factor":1.1334708809037874,"total_return_pct":0.4719010862756259,"win_rate":0.5362318840579711,"max_drawdown_pct":1.419114371849651,"sharpe_ratio":0.7440066482222032,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.02271091721470062}},"sqs_score":55.1,"sqs_breakdown":{"profitability":38.6,"risk":76.7,"consistency":76.9,"robustness":34.2},"verdict":"worse","verdict_reasoning":"Test-only run improved over the broad V2 idea but still missed step14: SQS 55.1 and return +0.47%. Same-day long close-entry alone was not enough.","next_direction":"Reduce the same-day long sleeve instead of funding it at full size.","tags":["pead","midcap","step23","sdlong","close7"]}
|
|
{"entry_id":"IMP-0024","timestamp":"2026-03-17T06:59:08.507830+00:00","experiment_name":"pead_midcap_step27_sdlong_close7_budget25","hypothesis":"Keep same-day long reaction-close but cap it to a smaller 25% daily risk sleeve to reduce crowding.","config_delta":{"base_experiment":"pead_midcap_step23_sdlong_close7","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317065422_ab277961","trade_count":68,"profit_factor":1.1707262231202136,"total_return_pct":0.5844127796271495,"win_rate":0.5441176470588235,"max_drawdown_pct":1.306567610162907,"sharpe_ratio":0.9376525375900492,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.10433971673279621}},"sqs_score":57.9,"sqs_breakdown":{"profitability":40.9,"risk":80.6,"consistency":78.2,"robustness":38.7},"verdict":"better","verdict_reasoning":"Test-only run materially improved over step23: SQS 57.9 vs 55.1 and return +0.58% vs +0.47%, confirming the crowding hypothesis.","next_direction":"Combine sleeve budgeting with full target exits and reintroduce a small after-close short sleeve for trade-count support.","tags":["pead","midcap","step27","sdlong","close7","budget25"]}
|
|
{"entry_id":"IMP-0025","timestamp":"2026-03-17T06:59:08.875770+00:00","experiment_name":"pead_midcap_step30_balanced_sleeves_nofrac","hypothesis":"Use balanced sleeve budgets: keep same-day shorts and after-close longs fully funded, run same-day long close-entry and after-close shorts as small sleeves, and exit fully at target.","config_delta":{"base_experiment":"pead_midcap_step14_score65","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317065531_18195bf4","trade_count":67,"profit_factor":1.4091528424597795,"total_return_pct":1.3757295850866649,"win_rate":0.5373134328358209,"max_drawdown_pct":0.8128025480297582,"sharpe_ratio":2.8484960542107354,"monthly_win_rate":1.0,"equity_curve_r_squared":0.7324107850180904}},"sqs_score":75.2,"sqs_breakdown":{"profitability":56.0,"risk":100.0,"consistency":81.2,"robustness":77.4},"verdict":"better","verdict_reasoning":"Test-only run broke through step14 decisively: SQS 75.2 vs 64.2 and return +1.38% vs +0.73%. A small after-close short sleeve helped robustness without dominating risk.","next_direction":"Tighten the after-close short sleeve further and validate the best variant across all splits.","tags":["pead","midcap","step30","balanced","sleeves","nofrac"]}
|
|
{"entry_id":"IMP-0026","timestamp":"2026-03-17T06:59:09.255218+00:00","experiment_name":"pead_midcap_step31_balanced_sleeves_nofrac_acshort12","hypothesis":"Shrink the after-close short sleeve again while keeping the rest of the balanced step30 structure intact.","config_delta":{"base_experiment":"pead_midcap_step30_balanced_sleeves_nofrac","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317065814_ca861015","trade_count":64,"profit_factor":1.4929664814770336,"total_return_pct":1.5563811867822805,"win_rate":0.546875,"max_drawdown_pct":0.6813257982524192,"sharpe_ratio":3.235108878683093,"monthly_win_rate":1.0,"equity_curve_r_squared":0.8144638886979153},"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317065750_ca861015","trade_count":426,"profit_factor":1.0908713237524914,"total_return_pct":2.45066812206927,"win_rate":0.45539906103286387,"max_drawdown_pct":2.6845497224397294,"sharpe_ratio":0.3357364835430949,"monthly_win_rate":0.5142857142857142,"equity_curve_r_squared":0.6011932815228401},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317065810_ca861015","trade_count":58,"profit_factor":1.37572962559925,"total_return_pct":1.122807593766629,"win_rate":0.5172413793103449,"max_drawdown_pct":0.8884863869932943,"sharpe_ratio":1.8162493466149443,"monthly_win_rate":0.75,"equity_curve_r_squared":0.3292893146712864}},"sqs_score":77.9,"sqs_breakdown":{"profitability":60.9,"risk":100.0,"consistency":82.8,"robustness":80.0},"verdict":"better","verdict_reasoning":"New best. Train/valid/test all held up, with test SQS 77.9, return +1.56%, PF 1.66, Sharpe 2.39, and max drawdown 0.32%. This beat both step30 and step14 by a wide margin.","next_direction":"Use step31 as the new base and only explore very local refinements around sleeve weights or execution if further gains are needed.","tags":["pead","midcap","step31","balanced","sleeves","nofrac","acshort12"]}
|
|
{"entry_id":"IMP-0027","timestamp":"2026-03-17T06:59:09.622681+00:00","experiment_name":"pead_midcap_step33_balanced_sleeves_nofrac_acshort6","hypothesis":"Cut the after-close short sleeve even further to see if the balanced portfolio still benefits from the bucket at very low size.","config_delta":{"base_experiment":"pead_midcap_step31_balanced_sleeves_nofrac_acshort12","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317065700_765096af","trade_count":48,"profit_factor":1.4726487821009215,"total_return_pct":1.2304910166146,"win_rate":0.5208333333333334,"max_drawdown_pct":0.7081594843000599,"sharpe_ratio":2.3026797742321596,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.7956775968800425}},"sqs_score":73.9,"sqs_breakdown":{"profitability":58.6,"risk":100.0,"consistency":74.3,"robustness":70.8},"verdict":"worse","verdict_reasoning":"Test-only run stayed strong but slipped versus step31: SQS 73.9 vs 77.9 and return +1.23% vs +1.56%. The smaller sleeve gave up too much trade-count support.","next_direction":"Keep the 12.5% after-close short sleeve from step31.","tags":["pead","midcap","step33","balanced","sleeves","nofrac","acshort6"]}
|
|
{"entry_id":"IMP-0028","timestamp":"2026-03-17T07:05:41.969503+00:00","experiment_name":"pead_midcap_step34_balanced_sleeves_nofrac_aclong25","hypothesis":"Cap the after-close long sleeve to two trades per day so only the best-ranked overnight continuation names survive.","config_delta":{"base_experiment":"pead_midcap_step31_balanced_sleeves_nofrac_acshort12","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317070326_6bef3bf5","trade_count":62,"profit_factor":1.6229787581193362,"total_return_pct":1.809973740790665,"win_rate":0.5645161290322581,"max_drawdown_pct":0.5514994557958487,"sharpe_ratio":3.784062042365747,"monthly_win_rate":1.0,"equity_curve_r_squared":0.8527995261422007},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317070447_6bef3bf5","trade_count":57,"profit_factor":1.2977962107392036,"total_return_pct":0.888003662238436,"win_rate":0.5087719298245614,"max_drawdown_pct":0.884279658549619,"sharpe_ratio":1.43172550959332,"monthly_win_rate":0.75,"equity_curve_r_squared":0.26161939040716076}},"sqs_score":81.3,"sqs_breakdown":{"profitability":68.4,"risk":100.0,"consistency":85.8,"robustness":78.9},"verdict":"worse","verdict_reasoning":"Test improved to SQS 81.3 and +1.81% return, but valid slipped to SQS 63.7 and +0.89% versus step31 valid SQS 68.2 and +1.12%. The top-two cap on after-close longs was not robust across splits.","next_direction":"Keep step31 as the robust base. If after-close long needs filtering, prefer a quality gate rather than a blunt daily-cap reduction.","tags":["pead","midcap","step34","balanced","sleeves","nofrac","aclong25"]}
|
|
{"entry_id":"IMP-0029","timestamp":"2026-03-17T07:05:47.363036+00:00","experiment_name":"pead_midcap_step35_balanced_sleeves_nofrac_aclong12","hypothesis":"Cap the after-close long sleeve to one trade per day so the portfolio fully leans into the strongest overnight continuation name only.","config_delta":{"base_experiment":"pead_midcap_step31_balanced_sleeves_nofrac_acshort12","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317081806944455_48768969","trade_count":56,"profit_factor":2.009368125746884,"total_return_pct":2.181331690538893,"win_rate":0.6071428571428571,"max_drawdown_pct":0.4424438123900949,"sharpe_ratio":4.216651506745797,"monthly_win_rate":1.0,"equity_curve_r_squared":0.8888944531705611,"avg_gross_exposure_pct":6.227596335660352,"avg_net_exposure_pct":1.1262657538133194,"days_in_market_pct":76.59574468085107},"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317081817695254_48768969","trade_count":53,"profit_factor":1.2430238868359724,"total_return_pct":0.7082451550234983,"win_rate":0.5094339622641509,"max_drawdown_pct":0.8845604127450726,"sharpe_ratio":1.1796633240683954,"monthly_win_rate":0.75,"equity_curve_r_squared":0.14646025414461133,"avg_gross_exposure_pct":7.5108896612986165,"avg_net_exposure_pct":1.5673421201773916,"days_in_market_pct":77.19298245614034},"train":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317070358_01aa6342","trade_count":393,"profit_factor":1.1135008933147288,"total_return_pct":2.755962139586409,"win_rate":0.46055979643765904,"max_drawdown_pct":2.418955602136075,"sharpe_ratio":0.38778263039611355,"monthly_win_rate":0.4857142857142857,"equity_curve_r_squared":0.6345243468091162}},"sqs_score":90.4,"sqs_breakdown":{"profitability":88.7,"risk":100.0,"consistency":92.9,"robustness":75.6},"verdict":"worse","verdict_reasoning":"This became a new test-only high water mark at SQS 90.4 and +2.18%, but valid deteriorated to SQS 59.8 and +0.71%, materially below step31. The tighter top-one cap overfit to the test window.","next_direction":"Avoid promoting step35. Explore engine-specific quality filters for after-close longs instead of hard caps that reshuffle trade selection too aggressively.","tags":["pead","midcap","step35","balanced","sleeves","nofrac","aclong12"],"sqs_v2_score":90.1,"sqs_v2_breakdown":{"profitability":88.7,"risk":100.0,"consistency":92.9,"robustness":75.6,"capital_efficiency":79.0}}
|
|
{"entry_id":"IMP-0030","timestamp":"2026-03-17T07:05:52.980782+00:00","experiment_name":"pead_midcap_step36_balanced_sleeves_nofrac_aclong12_sdlong12","hypothesis":"Keep only one same-day long close trade per day alongside the top-one after-close long sleeve, concentrating the portfolio into the single best long continuation setups.","config_delta":{"base_experiment":"pead_midcap_step35_balanced_sleeves_nofrac_aclong12","changes":{}},"results":{"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317070326_18804e7c","trade_count":54,"profit_factor":2.061648751658133,"total_return_pct":2.1478646359501146,"win_rate":0.6111111111111112,"max_drawdown_pct":0.3579823467213594,"sharpe_ratio":4.4957307480895325,"monthly_win_rate":1.0,"equity_curve_r_squared":0.9122676472502861}},"sqs_score":90.3,"sqs_breakdown":{"profitability":88.6,"risk":100.0,"consistency":93.5,"robustness":74.4},"verdict":"worse","verdict_reasoning":"Test stayed extremely strong at SQS 90.3 and +2.15%, but it did not exceed step35 on test and reduced trade support further. Without valid/train confirmation, it is not a better promotion candidate than step31.","next_direction":"Keep the same-day long sleeve at two trades per day if using this family, and focus next on smarter after-close long quality filtering.","tags":["pead","midcap","step36","balanced","sleeves","nofrac","aclong12","sdlong12"]}
|
|
{"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-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-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"]}
|
|
{"entry_id":"IMP-0041","timestamp":"2026-03-17T07:54:26.612610+00:00","experiment_name":"pead_midcap_step47_short_core_macro_block_sdlong25","hypothesis":"A larger same-day reaction-close long overlay might scale once the macro block removes bad regimes.","config_delta":{"base_experiment":"pead_midcap_step45_short_core_macro_block","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317073936910739_a38d69e4","trade_count":31,"profit_factor":1.7661839600751525,"total_return_pct":1.03177071332802,"win_rate":0.6451612903225806,"max_drawdown_pct":0.42599257212123065,"sharpe_ratio":2.218739891960781,"monthly_win_rate":0.75,"equity_curve_r_squared":0.4214549671036421},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317073939814560_a38d69e4","trade_count":25,"profit_factor":3.429404855633068,"total_return_pct":1.2833562667310616,"win_rate":0.68,"max_drawdown_pct":0.2608177180219861,"sharpe_ratio":3.32348066596022,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.889835319415119}},"sqs_score":87.0,"sqs_breakdown":{"profitability":85.1,"risk":100.0,"consistency":95.8,"robustness":58.3},"verdict":"worse","verdict_reasoning":"Increasing the same-day long sleeve hurt valid materially and did not produce a cleaner overall profile than step45.","next_direction":"Try sleeve removal experiments instead of scaling overlays up.","tags":["pead","midcap","step47","short","core","macro","block","sdlong25"]}
|
|
{"entry_id":"IMP-0042","timestamp":"2026-03-17T07:54:26.967747+00:00","experiment_name":"pead_midcap_step48_short_core_macro_block_nolong","hypothesis":"The macro-blocked short core may be strong enough without the same-day long overlay.","config_delta":{"base_experiment":"pead_midcap_step45_short_core_macro_block","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317074234188388_d9b28f40","trade_count":20,"profit_factor":5.726207009868067,"total_return_pct":1.2584927752282966,"win_rate":0.7,"max_drawdown_pct":0.29982153086364316,"sharpe_ratio":3.3529664036078217,"monthly_win_rate":1.0,"equity_curve_r_squared":0.4654938970631658},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317074234267904_d9b28f40","trade_count":20,"profit_factor":3.402559985815088,"total_return_pct":0.8451446297187069,"win_rate":0.8,"max_drawdown_pct":0.4239007555767844,"sharpe_ratio":2.4413021645869604,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.7861833255279326}},"sqs_score":85.7,"sqs_breakdown":{"profitability":83.4,"risk":100.0,"consistency":95.8,"robustness":54.7},"verdict":"worse","verdict_reasoning":"Removing the long sleeve weakened both valid and test relative to step45, so the small same-day long overlay still adds useful diversification.","next_direction":"Test whether the same-day short sleeve can stand alone or whether the after-close short sleeve is also required.","tags":["pead","midcap","step48","short","core","macro","block","nolong"]}
|
|
{"entry_id":"IMP-0043","timestamp":"2026-03-17T07:54:27.322093+00:00","experiment_name":"pead_midcap_step49_same_day_short_macro_block","hypothesis":"The pure same-day short engine might dominate the portfolio and make other sleeves unnecessary.","config_delta":{"base_experiment":"pead_midcap_step45_short_core_macro_block","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317074233919071_b5cae2ca","trade_count":12,"profit_factor":25.094599474518425,"total_return_pct":1.1648266582814248,"win_rate":0.75,"max_drawdown_pct":0.33436592553948014,"sharpe_ratio":3.227317987298049,"monthly_win_rate":1.0,"equity_curve_r_squared":0.3679821567954865},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317074234357252_b5cae2ca","trade_count":10,"profit_factor":2.4025420210691006,"total_return_pct":0.40093684044296973,"win_rate":0.7,"max_drawdown_pct":0.3693400619520335,"sharpe_ratio":1.5580313035787354,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.3032092765977471}},"sqs_score":38.9,"sqs_breakdown":{"profitability":81.6,"risk":92.6,"consistency":95.8,"robustness":19.0},"verdict":"worse","verdict_reasoning":"The single-sleeve version collapsed SQS because trade count and robustness fell too far, even though the kept trades were profitable.","next_direction":"Keep the supporting sleeves and test smaller structural adjustments instead.","tags":["pead","midcap","step49","same","day","short","macro","block"]}
|
|
{"entry_id":"IMP-0044","timestamp":"2026-03-17T07:54:27.691772+00:00","experiment_name":"pead_midcap_step50_same_day_short_long_macro_block","hypothesis":"The same-day long overlay may matter, but the after-close short sleeve may be removable.","config_delta":{"base_experiment":"pead_midcap_step45_short_core_macro_block","changes":{}},"results":{"valid":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317074234172662_a01fa9b8","trade_count":20,"profit_factor":2.2051399980357798,"total_return_pct":0.9530265960178512,"win_rate":0.65,"max_drawdown_pct":0.3444323377542605,"sharpe_ratio":2.687864694846263,"monthly_win_rate":0.75,"equity_curve_r_squared":0.41775889730721794},"test":{"run_id":"bt_baseline_swing_v1_midcap-filte_20260317074234263930_a01fa9b8","trade_count":15,"profit_factor":3.2060142950020296,"total_return_pct":0.805535692316771,"win_rate":0.6,"max_drawdown_pct":0.42315703199236054,"sharpe_ratio":2.6871013818111624,"monthly_win_rate":0.6666666666666666,"equity_curve_r_squared":0.8242465440616173}},"sqs_score":41.9,"sqs_breakdown":{"profitability":83.2,"risk":100.0,"consistency":87.5,"robustness":52.8},"verdict":"worse","verdict_reasoning":"Dropping the after-close short sleeve reduced both valid and test performance, so step45 still benefits from carrying all three active sleeves.","next_direction":"Refine sleeve quality rather than deleting sleeves wholesale.","tags":["pead","midcap","step50","same","day","short","long","macro","block"]}
|
|
{"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"]}
|