{"schema_version":"v1","slug":"momentum-volume-us-sp500","name":"Momentum × Volume Interaction (US S&P 500)","name_i18n":{},"verdict":"marginal","asset_class":"equity","categories":["factor","interaction","momentum","volume"],"hypothesis":"Lee & Swaminathan (2000): volume confirms momentum quality. Applied to S&P 500 constituents.","rejection_reason":{"primary":"regime_dependent","secondary":[],"narrative":"Across 320 grid combinations, median Sharpe=0.05, best=1.34. Primary failure mode: regime_dependent."},"target_universe":{"description":"S&P 500 constituents, ~503 stocks","symbols":[]},"performance_summary":{"sharpe_median":0.0545,"max_drawdown_pct":-14,"win_rate":null,"alpha_annualized_pct":null,"p_value":0.59,"backtest_period":{"start":"2022-05-02","end":"2026-06-01"}},"grid_summary":{"sharpe":{"p25":-0.17,"p75":0.32,"best":1.34,"worst":-0.84,"median":0.05},"n_combinations":320},"methodology":{"notes":"{\"walk_forward_definition\": {\"type\": \"single_pass\", \"description\": \"Full period backtest without walk-forward split\", \"verdict_basis\": \"full_period\"}}","signal":null,"benchmark":null,"rebalance":null,"slippage_model":"open-on-open + variable bps fixed","position_sizing":"equal_weight","regime_definition":"GSPC SMA20/SMA60 three-class: UP (close>SMA20 AND SMA20>SMA60), DOWN (close<SMA20 AND SMA20<SMA60), FLAT (else)","transaction_cost_bps":5},"provenance":{"data_source":"kabu STATION REST API + J-Quants daily bars","source_project":"qbuntu-analysis","computed_asof":"2026-07-30T01:20:50","git_sha_z":"18193e9","git_sha_genkidama":"711b855","python_version":"3.10.11","numpy_version":"2.2.6","pandas_version":"2.3.3","tier":"shallow"},"runs":[{"run_id":"r-momentum-volume-us-sp500-0000","name":"formation_days=20, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":1,"formation_days":20},"performance":{"sharpe":0.9,"max_drawdown_pct":-3.7,"alpha_annualized_pct":4.4,"p_value":0.069,"regime_breakdown":{"UP":2.175844,"DOWN":0.443352,"FLAT":0.034501}},"executed_at":"2026-07-30T01:01:56","notes":null},{"run_id":"r-momentum-volume-us-sp500-0001","name":"formation_days=20, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":5,"regime_gate":true,"holding_days":1,"formation_days":20},"performance":{"sharpe":0.54,"max_drawdown_pct":-3.8,"alpha_annualized_pct":2.6,"p_value":0.27,"regime_breakdown":{"UP":1.159268,"DOWN":0.443352,"FLAT":0.034501}},"executed_at":"2026-07-30T01:01:56","notes":null},{"run_id":"r-momentum-volume-us-sp500-0002","name":"formation_days=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":5,"regime_gate":false,"holding_days":1,"formation_days":20},"performance":{"sharpe":0.65,"max_drawdown_pct":-3.8,"alpha_annualized_pct":3.2,"p_value":0.19,"regime_breakdown":{"UP":1.821992,"DOWN":0.250343,"FLAT":-0.164461}},"executed_at":"2026-07-30T01:01:56","notes":null},{"run_id":"r-momentum-volume-us-sp500-0003","name":"formation_days=20, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":5,"regime_gate":true,"holding_days":1,"formation_days":20},"performance":{"sharpe":0.35,"max_drawdown_pct":-4.1,"alpha_annualized_pct":1.7,"p_value":0.47,"regime_breakdown":{"UP":0.98352,"DOWN":0.250343,"FLAT":-0.164461}},"executed_at":"2026-07-30T01:01:56","notes":null},{"run_id":"r-momentum-volume-us-sp500-0012","name":"formation_days=20, holding_days=1, n_stocks=50, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":50,"regime_gate":false,"holding_days":1,"formation_days":20},"performance":{"sharpe":0.19,"max_drawdown_pct":-2.2,"alpha_annualized_pct":0.4,"p_value":0.69,"regime_breakdown":{"UP":0.471129,"DOWN":0.312262,"FLAT":-0.071093}},"executed_at":"2026-07-30T01:01:56","notes":null},{"run_id":"r-momentum-volume-us-sp500-0016","name":"formation_days=20, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":5,"formation_days":20},"performance":{"sharpe":1.34,"max_drawdown_pct":-6.6,"alpha_annualized_pct":11.6,"p_value":0.0079,"regime_breakdown":{"UP":2.39512,"DOWN":1.964251,"FLAT":-0.268833}},"executed_at":"2026-07-30T01:01:56","notes":null},{"run_id":"r-momentum-volume-us-sp500-0019","name":"formation_days=20, holding_days=5, n_stocks=5, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":5,"regime_gate":true,"holding_days":5,"formation_days":20},"performance":{"sharpe":1.17,"max_drawdown_pct":-7.8,"alpha_annualized_pct":9.4,"p_value":0.02,"regime_breakdown":{"UP":2.452696,"DOWN":1.861891,"FLAT":-0.413302}},"executed_at":"2026-07-30T01:01:57","notes":null},{"run_id":"r-momentum-volume-us-sp500-0033","name":"formation_days=20, holding_days=10, n_stocks=5, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":5,"regime_gate":true,"holding_days":10,"formation_days":20},"performance":{"sharpe":1.07,"max_drawdown_pct":-16.1,"alpha_annualized_pct":13.6,"p_value":0.034,"regime_breakdown":{"UP":2.262156,"DOWN":0.870113,"FLAT":-0.054779}},"executed_at":"2026-07-30T01:01:57","notes":null},{"run_id":"r-momentum-volume-us-sp500-0047","name":"formation_days=20, holding_days=10, n_stocks=50, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":50,"regime_gate":true,"holding_days":10,"formation_days":20},"performance":{"sharpe":-0.04,"max_drawdown_pct":-11.2,"alpha_annualized_pct":-0.3,"p_value":0.93,"regime_breakdown":{"UP":0.854613,"DOWN":-0.180272,"FLAT":-1.150559}},"executed_at":"2026-07-30T01:01:58","notes":null},{"run_id":"r-momentum-volume-us-sp500-0061","name":"formation_days=20, holding_days=20, n_stocks=50, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":50,"regime_gate":true,"holding_days":20,"formation_days":20},"performance":{"sharpe":0.31,"max_drawdown_pct":-19.5,"alpha_annualized_pct":3.3,"p_value":0.53,"regime_breakdown":{"UP":1.254141,"DOWN":0.085262,"FLAT":-0.599511}},"executed_at":"2026-07-30T01:01:59","notes":null},{"run_id":"r-momentum-volume-us-sp500-0064","name":"formation_days=20, holding_days=60, n_stocks=5, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":60,"formation_days":20},"performance":{"sharpe":0.05,"max_drawdown_pct":-50.3,"alpha_annualized_pct":3.2,"p_value":0.85,"regime_breakdown":{"UP":0.528044,"DOWN":-1.006254,"FLAT":-0.112592}},"executed_at":"2026-07-30T01:01:59","notes":null},{"run_id":"r-momentum-volume-us-sp500-0076","name":"formation_days=20, holding_days=60, n_stocks=50, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":50,"regime_gate":false,"holding_days":60,"formation_days":20},"performance":{"sharpe":-0.03,"max_drawdown_pct":-26.4,"alpha_annualized_pct":-0.7,"p_value":0.92,"regime_breakdown":{"UP":0.658549,"DOWN":-1.622451,"FLAT":-0.387699}},"executed_at":"2026-07-30T01:02:00","notes":null},{"run_id":"r-momentum-volume-us-sp500-0090","name":"formation_days=60, holding_days=1, n_stocks=20, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":20,"regime_gate":false,"holding_days":1,"formation_days":60},"performance":{"sharpe":-0.13,"max_drawdown_pct":-4.6,"alpha_annualized_pct":-0.5,"p_value":0.8,"regime_breakdown":{"UP":0.535015,"DOWN":-0.573626,"FLAT":-0.675055}},"executed_at":"2026-07-30T01:02:00","notes":null},{"run_id":"r-momentum-volume-us-sp500-0104","name":"formation_days=60, holding_days=5, n_stocks=20, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":20,"regime_gate":false,"holding_days":5,"formation_days":60},"performance":{"sharpe":0.08,"max_drawdown_pct":-11.7,"alpha_annualized_pct":0.6,"p_value":0.87,"regime_breakdown":{"UP":0.059535,"DOWN":1.078161,"FLAT":-0.434587}},"executed_at":"2026-07-30T01:02:01","notes":null},{"run_id":"r-momentum-volume-us-sp500-0118","name":"formation_days=60, holding_days=10, n_stocks=10, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":10,"regime_gate":false,"holding_days":10,"formation_days":60},"performance":{"sharpe":-0.32,"max_drawdown_pct":-25.6,"alpha_annualized_pct":-3.4,"p_value":0.52,"regime_breakdown":{"UP":0.783762,"DOWN":-0.025435,"FLAT":-1.349962}},"executed_at":"2026-07-30T01:02:02","notes":null},{"run_id":"r-momentum-volume-us-sp500-0132","name":"formation_days=60, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":10,"regime_gate":false,"holding_days":20,"formation_days":60},"performance":{"sharpe":-0.1,"max_drawdown_pct":-39.6,"alpha_annualized_pct":-2.1,"p_value":0.84,"regime_breakdown":{"UP":0.669986,"DOWN":-0.364123,"FLAT":-0.585554}},"executed_at":"2026-07-30T01:02:03","notes":null},{"run_id":"r-momentum-volume-us-sp500-0146","name":"formation_days=60, holding_days=60, n_stocks=5, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":5,"regime_gate":false,"holding_days":60,"formation_days":60},"performance":{"sharpe":-0.13,"max_drawdown_pct":-68.5,"alpha_annualized_pct":-9.1,"p_value":0.66,"regime_breakdown":{"UP":0.456561,"DOWN":-3.623428,"FLAT":-0.278295}},"executed_at":"2026-07-30T01:02:03","notes":null},{"run_id":"r-momentum-volume-us-sp500-0160","name":"formation_days=120, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":1,"formation_days":120},"performance":{"sharpe":-0.21,"max_drawdown_pct":-8.9,"alpha_annualized_pct":-1.5,"p_value":0.68,"regime_breakdown":{"UP":0.356738,"DOWN":-1.554407,"FLAT":-0.160079}},"executed_at":"2026-07-30T01:02:04","notes":null},{"run_id":"r-momentum-volume-us-sp500-0171","name":"formation_days=120, holding_days=1, n_stocks=20, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":20,"regime_gate":true,"holding_days":1,"formation_days":120},"performance":{"sharpe":-0.84,"max_drawdown_pct":-8.6,"alpha_annualized_pct":-2.7,"p_value":0.096,"regime_breakdown":{"UP":-0.698018,"DOWN":-0.735242,"FLAT":-1.0863}},"executed_at":"2026-07-30T01:02:05","notes":null},{"run_id":"r-momentum-volume-us-sp500-0175","name":"formation_days=120, holding_days=1, n_stocks=50, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":50,"regime_gate":true,"holding_days":1,"formation_days":120},"performance":{"sharpe":-0.8,"max_drawdown_pct":-6.5,"alpha_annualized_pct":-1.8,"p_value":0.11,"regime_breakdown":{"UP":0.000424,"DOWN":-1.137238,"FLAT":-1.596001}},"executed_at":"2026-07-30T01:02:05","notes":null},{"run_id":"r-momentum-volume-us-sp500-0189","name":"formation_days=120, holding_days=5, n_stocks=50, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":50,"regime_gate":true,"holding_days":5,"formation_days":120},"performance":{"sharpe":0.28,"max_drawdown_pct":-5.9,"alpha_annualized_pct":1.4,"p_value":0.57,"regime_breakdown":{"UP":1.090062,"DOWN":1.090221,"FLAT":-0.628445}},"executed_at":"2026-07-30T01:02:06","notes":null},{"run_id":"r-momentum-volume-us-sp500-0203","name":"formation_days=120, holding_days=10, n_stocks=20, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":20,"regime_gate":true,"holding_days":10,"formation_days":120},"performance":{"sharpe":-0.45,"max_drawdown_pct":-15.8,"alpha_annualized_pct":-4,"p_value":0.37,"regime_breakdown":{"UP":0.420949,"DOWN":-1.262442,"FLAT":-0.950317}},"executed_at":"2026-07-30T01:02:06","notes":null},{"run_id":"r-momentum-volume-us-sp500-0217","name":"formation_days=120, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":20,"regime_gate":true,"holding_days":20,"formation_days":120},"performance":{"sharpe":0.1,"max_drawdown_pct":-22.6,"alpha_annualized_pct":1.3,"p_value":0.85,"regime_breakdown":{"UP":0.803076,"DOWN":-0.936176,"FLAT":0.03391}},"executed_at":"2026-07-30T01:02:07","notes":null},{"run_id":"r-momentum-volume-us-sp500-0231","name":"formation_days=120, holding_days=60, n_stocks=10, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":10,"regime_gate":true,"holding_days":60,"formation_days":120},"performance":{"sharpe":0.57,"max_drawdown_pct":-33.5,"alpha_annualized_pct":24.7,"p_value":0.064,"regime_breakdown":{"UP":0.930966,"DOWN":0.106443,"FLAT":0.189652}},"executed_at":"2026-07-30T01:02:08","notes":null},{"run_id":"r-momentum-volume-us-sp500-0240","name":"formation_days=250, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":1,"formation_days":250},"performance":{"sharpe":0.15,"max_drawdown_pct":-11,"alpha_annualized_pct":1,"p_value":0.78,"regime_breakdown":{"UP":0.550116,"DOWN":-1.491972,"FLAT":-0.052827}},"executed_at":"2026-07-30T01:02:08","notes":null},{"run_id":"r-momentum-volume-us-sp500-0246","name":"formation_days=250, holding_days=1, n_stocks=10, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":10,"regime_gate":false,"holding_days":1,"formation_days":250},"performance":{"sharpe":-0.1,"max_drawdown_pct":-10,"alpha_annualized_pct":-0.4,"p_value":0.86,"regime_breakdown":{"UP":0.09392,"DOWN":-1.123335,"FLAT":-0.067782}},"executed_at":"2026-07-30T01:02:09","notes":null},{"run_id":"r-momentum-volume-us-sp500-0260","name":"formation_days=250, holding_days=5, n_stocks=10, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":10,"regime_gate":false,"holding_days":5,"formation_days":250},"performance":{"sharpe":0.39,"max_drawdown_pct":-13.4,"alpha_annualized_pct":3.9,"p_value":0.47,"regime_breakdown":{"UP":0.218632,"DOWN":1.801358,"FLAT":0.257151}},"executed_at":"2026-07-30T01:02:09","notes":null},{"run_id":"r-momentum-volume-us-sp500-0274","name":"formation_days=250, holding_days=10, n_stocks=5, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":5,"regime_gate":false,"holding_days":10,"formation_days":250},"performance":{"sharpe":-0.59,"max_drawdown_pct":-29.3,"alpha_annualized_pct":-9.3,"p_value":0.28,"regime_breakdown":{"UP":-0.394233,"DOWN":0.506285,"FLAT":-1.457995}},"executed_at":"2026-07-30T01:02:10","notes":null},{"run_id":"r-momentum-volume-us-sp500-0288","name":"formation_days=250, holding_days=20, n_stocks=5, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":20,"formation_days":250},"performance":{"sharpe":-0.41,"max_drawdown_pct":-32.3,"alpha_annualized_pct":-13.5,"p_value":0.45,"regime_breakdown":{"UP":-0.102928,"DOWN":1.058411,"FLAT":-0.984357}},"executed_at":"2026-07-30T01:02:11","notes":null},{"run_id":"r-momentum-volume-us-sp500-0302","name":"formation_days=250, holding_days=20, n_stocks=50, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":50,"regime_gate":false,"holding_days":20,"formation_days":250},"performance":{"sharpe":0.06,"max_drawdown_pct":-10.6,"alpha_annualized_pct":0.7,"p_value":0.91,"regime_breakdown":{"UP":0.247972,"DOWN":0.811421,"FLAT":-0.352052}},"executed_at":"2026-07-30T01:02:12","notes":null}],"facts":[{"fact_id":"momentum-volume-us-sp500-fact-best-sharpe","strategy_slug":"momentum-volume-us-sp500","claim":"Best grid Sharpe ratio is 1.34 (p=0.0079).","value":1.34,"value_text":null,"unit":"sharpe_ratio","context":"period 2022-05-02–2026-06-01; cost=5bps","supports_verdict":"marginal","source_run_id":"r-momentum-volume-us-sp500-0016","search_tsv":"'-01':15 '-02':12 '-05':11 '-06':14 '0.0079':8 '1.34':6 '2022':10 '2026':13 '5bps':17 'best':1 'cost':16 'grid':2 'p':7 'period':9 'ratio':4 'sharp':3","cite_url":"https://qbuntu.ai/cite/momentum-volume-us-sp500-fact-best-sharpe"},{"fact_id":"momentum-volume-us-sp500-fact-median-sharpe","strategy_slug":"momentum-volume-us-sp500","claim":"Median Sharpe across 320 grid runs is 0.05.","value":0.05,"value_text":null,"unit":"sharpe_ratio","context":"Full grid of 320 parameter combinations.","supports_verdict":"marginal","source_run_id":null,"search_tsv":"'0.05':8 '320':4,12 'across':3 'combin':14 'full':9 'grid':5,10 'median':1 'paramet':13 'run':6 'sharp':2","cite_url":"https://qbuntu.ai/cite/momentum-volume-us-sp500-fact-median-sharpe"},{"fact_id":"momentum-volume-us-sp500-fact-regime-down","strategy_slug":"momentum-volume-us-sp500","claim":"Median Sharpe in DOWN regime is -0.03 across 320 runs.","value":-0.03,"value_text":null,"unit":"sharpe_ratio","context":"Regime=DOWN, N225 SMA20/SMA60 classification.","supports_verdict":"marginal","source_run_id":null,"search_tsv":"'-0.03':7 '320':9 'across':8 'classif':15 'median':1 'n225':13 'regim':5,11 'run':10 'sharp':2 'sma20/sma60':14","cite_url":"https://qbuntu.ai/cite/momentum-volume-us-sp500-fact-regime-down"},{"fact_id":"momentum-volume-us-sp500-fact-regime-flat","strategy_slug":"momentum-volume-us-sp500","claim":"Median Sharpe in FLAT regime is -0.46 across 320 runs.","value":-0.46,"value_text":null,"unit":"sharpe_ratio","context":"Regime=FLAT, N225 SMA20/SMA60 classification.","supports_verdict":"marginal","source_run_id":null,"search_tsv":"'-0.46':7 '320':9 'across':8 'classif':15 'flat':4,12 'median':1 'n225':13 'regim':5,11 'run':10 'sharp':2 'sma20/sma60':14","cite_url":"https://qbuntu.ai/cite/momentum-volume-us-sp500-fact-regime-flat"},{"fact_id":"momentum-volume-us-sp500-fact-regime-up","strategy_slug":"momentum-volume-us-sp500","claim":"Median Sharpe in UP regime is 0.79 across 320 runs.","value":0.79,"value_text":null,"unit":"sharpe_ratio","context":"Regime=UP, N225 SMA20/SMA60 classification.","supports_verdict":"marginal","source_run_id":null,"search_tsv":"'0.79':7 '320':9 'across':8 'classif':15 'median':1 'n225':13 'regim':5,11 'run':10 'sharp':2 'sma20/sma60':14","cite_url":"https://qbuntu.ai/cite/momentum-volume-us-sp500-fact-regime-up"}],"related_strategies":[{"related_slug":"momentum-volume-jp-all","relation":"same_strategy"},{"related_slug":"momentum-volume-jp-growth","relation":"same_strategy"}],"tags":["momentum","volume","interaction","factor","us-market","sp500","grid-search"],"_links":{"self":"https://qbuntu.ai/v1/strategies/momentum-volume-us-sp500","html":"https://qbuntu.ai/strategies/momentum-volume-us-sp500","markdown":"https://qbuntu.ai/ai/strategies/momentum-volume-us-sp500.md"}}