{"schema_version":"v1","slug":"momentum-cross-sectional-us-sp500","name":"Cross-Sectional Momentum (US S&P 500)","name_i18n":{},"verdict":"marginal","asset_class":"equity","categories":["cross-sectional","factor","momentum"],"hypothesis":"Jegadeesh & Titman (1993): stocks with high past returns continue to outperform over intermediate horizons. LONG winners, SHORT losers. Applied to S&P 500 constituents.","rejection_reason":{"primary":"no_edge","secondary":[],"narrative":"Across 960 grid combinations, median Sharpe=0.65, best=2.08. Primary failure mode: no_edge."},"target_universe":{"description":"S&P 500 constituents, ~503 stocks","symbols":[]},"performance_summary":{"sharpe_median":0.6465,"max_drawdown_pct":-15,"win_rate":null,"alpha_annualized_pct":null,"p_value":0.18,"backtest_period":{"start":"2022-04-01","end":"2026-09-01"}},"grid_summary":{"sharpe":{"p25":0.26,"p75":0.93,"best":2.08,"worst":-0.77,"median":0.65},"n_combinations":960},"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-09-24T02:22:14","git_sha_z":"1455e77","git_sha_genkidama":"17a7674","python_version":"3.12.10","numpy_version":"2.4.2","pandas_version":"3.0.0","tier":"shallow"},"runs":[{"run_id":"r-momentum-cross-sectional-us-sp500-0000","name":"formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"skip_days":0,"regime_gate":false,"holding_days":1,"formation_days":60},"performance":{"sharpe":0.56,"max_drawdown_pct":-13.6,"alpha_annualized_pct":4.6,"p_value":0.24,"regime_breakdown":{"UP":1.695502,"DOWN":0.287364,"FLAT":-0.339842}},"executed_at":"2026-09-23T15:44:57","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0001","name":"formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":5,"skip_days":0,"regime_gate":true,"holding_days":1,"formation_days":60},"performance":{"sharpe":0.2,"max_drawdown_pct":-13.6,"alpha_annualized_pct":1.5,"p_value":0.68,"regime_breakdown":{"UP":0.810938,"DOWN":0.287364,"FLAT":-0.339842}},"executed_at":"2026-09-23T15:44:57","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0002","name":"formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":5,"skip_days":0,"regime_gate":false,"holding_days":1,"formation_days":60},"performance":{"sharpe":0.41,"max_drawdown_pct":-14.1,"alpha_annualized_pct":3.4,"p_value":0.38,"regime_breakdown":{"UP":1.507101,"DOWN":0.170039,"FLAT":-0.473378}},"executed_at":"2026-09-23T15:44:57","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0003","name":"formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":5,"skip_days":0,"regime_gate":true,"holding_days":1,"formation_days":60},"performance":{"sharpe":0.08,"max_drawdown_pct":-14.1,"alpha_annualized_pct":0.6,"p_value":0.87,"regime_breakdown":{"UP":0.704235,"DOWN":0.170039,"FLAT":-0.473378}},"executed_at":"2026-09-23T15:44:57","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0008","name":"formation_days=60, holding_days=1, n_stocks=5, skip_days=21, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"skip_days":21,"regime_gate":false,"holding_days":1,"formation_days":60},"performance":{"sharpe":-0.44,"max_drawdown_pct":-20.8,"alpha_annualized_pct":-3.7,"p_value":0.35,"regime_breakdown":{"UP":0.650587,"DOWN":-0.890418,"FLAT":-1.197288}},"executed_at":"2026-09-23T15:44:59","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0036","name":"formation_days=60, holding_days=1, n_stocks=50, skip_days=0, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":50,"skip_days":0,"regime_gate":false,"holding_days":1,"formation_days":60},"performance":{"sharpe":0.09,"max_drawdown_pct":-4.6,"alpha_annualized_pct":0.4,"p_value":0.85,"regime_breakdown":{"UP":1.156603,"DOWN":-0.264845,"FLAT":-0.719014}},"executed_at":"2026-09-23T15:45:06","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0050","name":"formation_days=60, holding_days=5, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":5,"skip_days":0,"regime_gate":false,"holding_days":5,"formation_days":60},"performance":{"sharpe":0.46,"max_drawdown_pct":-15.3,"alpha_annualized_pct":8.2,"p_value":0.32,"regime_breakdown":{"UP":0.561815,"DOWN":1.390955,"FLAT":0.062408}},"executed_at":"2026-09-23T15:45:10","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0095","name":"formation_days=60, holding_days=5, n_stocks=50, skip_days=21, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":50,"skip_days":21,"regime_gate":true,"holding_days":5,"formation_days":60},"performance":{"sharpe":-0.05,"max_drawdown_pct":-10.8,"alpha_annualized_pct":-0.3,"p_value":0.92,"regime_breakdown":{"UP":0.840766,"DOWN":0.956695,"FLAT":-1.448103}},"executed_at":"2026-09-23T15:45:22","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0140","name":"formation_days=60, holding_days=10, n_stocks=50, skip_days=21, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":50,"skip_days":21,"regime_gate":false,"holding_days":10,"formation_days":60},"performance":{"sharpe":-0.58,"max_drawdown_pct":-21.9,"alpha_annualized_pct":-4.4,"p_value":0.22,"regime_breakdown":{"UP":-0.203334,"DOWN":-0.055948,"FLAT":-1.0916}},"executed_at":"2026-09-23T15:45:34","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0185","name":"formation_days=60, holding_days=20, n_stocks=50, skip_days=5, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":50,"skip_days":5,"regime_gate":true,"holding_days":20,"formation_days":60},"performance":{"sharpe":0.2,"max_drawdown_pct":-20.9,"alpha_annualized_pct":2.5,"p_value":0.68,"regime_breakdown":{"UP":1.536822,"DOWN":-0.478148,"FLAT":-0.665}},"executed_at":"2026-09-23T15:45:46","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0192","name":"formation_days=60, holding_days=60, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"skip_days":0,"regime_gate":false,"holding_days":60,"formation_days":60},"performance":{"sharpe":0.58,"max_drawdown_pct":-60.6,"alpha_annualized_pct":63,"p_value":0.046,"regime_breakdown":{"UP":0.922936,"DOWN":-0.570974,"FLAT":0.411434}},"executed_at":"2026-09-23T15:45:48","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0231","name":"formation_days=60, holding_days=60, n_stocks=50, skip_days=0, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":50,"skip_days":0,"regime_gate":true,"holding_days":60,"formation_days":60},"performance":{"sharpe":0.49,"max_drawdown_pct":-32.7,"alpha_annualized_pct":18.3,"p_value":0.087,"regime_breakdown":{"UP":1.17989,"DOWN":-0.625995,"FLAT":0.239221}},"executed_at":"2026-09-23T15:45:59","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0276","name":"formation_days=120, holding_days=1, n_stocks=50, skip_days=0, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":50,"skip_days":0,"regime_gate":false,"holding_days":1,"formation_days":120},"performance":{"sharpe":-0.05,"max_drawdown_pct":-3.8,"alpha_annualized_pct":-0.2,"p_value":0.91,"regime_breakdown":{"UP":0.892699,"DOWN":-0.60685,"FLAT":-0.871772}},"executed_at":"2026-09-23T15:46:10","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0286","name":"formation_days=120, holding_days=1, n_stocks=50, skip_days=21, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":50,"skip_days":21,"regime_gate":false,"holding_days":1,"formation_days":120},"performance":{"sharpe":-0.77,"max_drawdown_pct":-11.9,"alpha_annualized_pct":-3.1,"p_value":0.12,"regime_breakdown":{"UP":-0.184412,"DOWN":-1.521524,"FLAT":-1.451984}},"executed_at":"2026-09-23T15:46:13","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0322","name":"formation_days=120, holding_days=5, n_stocks=20, skip_days=21, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":20,"skip_days":21,"regime_gate":false,"holding_days":5,"formation_days":120},"performance":{"sharpe":0.32,"max_drawdown_pct":-14.2,"alpha_annualized_pct":3.3,"p_value":0.51,"regime_breakdown":{"UP":0.088658,"DOWN":2.477911,"FLAT":-0.342909}},"executed_at":"2026-09-23T15:46:23","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0367","name":"formation_days=120, holding_days=10, n_stocks=20, skip_days=5, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":20,"skip_days":5,"regime_gate":true,"holding_days":10,"formation_days":120},"performance":{"sharpe":0.46,"max_drawdown_pct":-9.5,"alpha_annualized_pct":5.3,"p_value":0.34,"regime_breakdown":{"UP":1.468059,"DOWN":1.460403,"FLAT":-0.472678}},"executed_at":"2026-09-23T15:46:34","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0412","name":"formation_days=120, holding_days=20, n_stocks=20, skip_days=5, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":20,"skip_days":5,"regime_gate":false,"holding_days":20,"formation_days":120},"performance":{"sharpe":0.69,"max_drawdown_pct":-17.1,"alpha_annualized_pct":12.9,"p_value":0.16,"regime_breakdown":{"UP":1.315946,"DOWN":1.471961,"FLAT":-0.186425}},"executed_at":"2026-09-23T15:46:46","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0457","name":"formation_days=120, holding_days=60, n_stocks=20, skip_days=0, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":20,"skip_days":0,"regime_gate":true,"holding_days":60,"formation_days":120},"performance":{"sharpe":1.18,"max_drawdown_pct":-15.3,"alpha_annualized_pct":65,"p_value":0.00019,"regime_breakdown":{"UP":1.407255,"DOWN":0.509009,"FLAT":1.085487}},"executed_at":"2026-09-23T15:46:58","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0502","name":"formation_days=180, holding_days=1, n_stocks=10, skip_days=21, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":10,"skip_days":21,"regime_gate":false,"holding_days":1,"formation_days":180},"performance":{"sharpe":0.05,"max_drawdown_pct":-10.4,"alpha_annualized_pct":0.3,"p_value":0.92,"regime_breakdown":{"UP":0.451864,"DOWN":-0.219293,"FLAT":-0.676253}},"executed_at":"2026-09-23T15:47:10","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0547","name":"formation_days=180, holding_days=5, n_stocks=10, skip_days=5, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":10,"skip_days":5,"regime_gate":true,"holding_days":5,"formation_days":180},"performance":{"sharpe":1.11,"max_drawdown_pct":-10.4,"alpha_annualized_pct":15.9,"p_value":0.03,"regime_breakdown":{"UP":1.171459,"DOWN":2.433056,"FLAT":0.465331}},"executed_at":"2026-09-23T15:47:22","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0592","name":"formation_days=180, holding_days=10, n_stocks=10, skip_days=5, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":10,"skip_days":5,"regime_gate":false,"holding_days":10,"formation_days":180},"performance":{"sharpe":0.97,"max_drawdown_pct":-21.1,"alpha_annualized_pct":15.9,"p_value":0.056,"regime_breakdown":{"UP":1.143373,"DOWN":2.02819,"FLAT":0.318104}},"executed_at":"2026-09-23T15:47:33","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0637","name":"formation_days=180, holding_days=20, n_stocks=10, skip_days=0, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":10,"skip_days":0,"regime_gate":true,"holding_days":20,"formation_days":180},"performance":{"sharpe":0.93,"max_drawdown_pct":-34,"alpha_annualized_pct":27.4,"p_value":0.069,"regime_breakdown":{"UP":2.039416,"DOWN":1.364059,"FLAT":-0.41279}},"executed_at":"2026-09-23T15:47:45","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0682","name":"formation_days=180, holding_days=60, n_stocks=5, skip_days=21, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":5,"skip_days":21,"regime_gate":false,"holding_days":60,"formation_days":180},"performance":{"sharpe":0.79,"max_drawdown_pct":-81.6,"alpha_annualized_pct":106.8,"p_value":0.013,"regime_breakdown":{"UP":0.82433,"DOWN":1.243026,"FLAT":0.468012}},"executed_at":"2026-09-23T15:47:57","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0720","name":"formation_days=250, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"skip_days":0,"regime_gate":false,"holding_days":1,"formation_days":250},"performance":{"sharpe":0.68,"max_drawdown_pct":-7.5,"alpha_annualized_pct":5.6,"p_value":0.19,"regime_breakdown":{"UP":1.511504,"DOWN":-0.143454,"FLAT":-0.478559}},"executed_at":"2026-09-23T15:48:07","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0728","name":"formation_days=250, holding_days=1, n_stocks=5, skip_days=21, cost_bps=5, regime_gate=False","params":{"cost_bps":5,"n_stocks":5,"skip_days":21,"regime_gate":false,"holding_days":1,"formation_days":250},"performance":{"sharpe":0.57,"max_drawdown_pct":-8.6,"alpha_annualized_pct":4.4,"p_value":0.27,"regime_breakdown":{"UP":1.620761,"DOWN":0.198239,"FLAT":-1.138032}},"executed_at":"2026-09-23T15:48:09","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0773","name":"formation_days=250, holding_days=5, n_stocks=5, skip_days=5, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":5,"skip_days":5,"regime_gate":true,"holding_days":5,"formation_days":250},"performance":{"sharpe":1.59,"max_drawdown_pct":-8,"alpha_annualized_pct":23.4,"p_value":0.0035,"regime_breakdown":{"UP":1.552347,"DOWN":2.153276,"FLAT":1.47727}},"executed_at":"2026-09-23T15:48:21","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0818","name":"formation_days=250, holding_days=10, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False","params":{"cost_bps":10,"n_stocks":5,"skip_days":0,"regime_gate":false,"holding_days":10,"formation_days":250},"performance":{"sharpe":1.01,"max_drawdown_pct":-20.6,"alpha_annualized_pct":19.6,"p_value":0.055,"regime_breakdown":{"UP":1.102674,"DOWN":1.321008,"FLAT":0.664659}},"executed_at":"2026-09-23T15:48:32","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0863","name":"formation_days=250, holding_days=10, n_stocks=50, skip_days=21, cost_bps=10, regime_gate=True","params":{"cost_bps":10,"n_stocks":50,"skip_days":21,"regime_gate":true,"holding_days":10,"formation_days":250},"performance":{"sharpe":1.02,"max_drawdown_pct":-6.5,"alpha_annualized_pct":8.2,"p_value":0.055,"regime_breakdown":{"UP":1.476201,"DOWN":1.6723,"FLAT":0.360818}},"executed_at":"2026-09-23T15:48:44","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0869","name":"formation_days=250, holding_days=20, n_stocks=5, skip_days=5, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":5,"skip_days":5,"regime_gate":true,"holding_days":20,"formation_days":250},"performance":{"sharpe":2.08,"max_drawdown_pct":-10.9,"alpha_annualized_pct":58.5,"p_value":0.00025,"regime_breakdown":{"UP":2.369789,"DOWN":1.650312,"FLAT":1.727966}},"executed_at":"2026-09-23T15:48:45","notes":null},{"run_id":"r-momentum-cross-sectional-us-sp500-0909","name":"formation_days=250, holding_days=20, n_stocks=50, skip_days=21, cost_bps=5, regime_gate=True","params":{"cost_bps":5,"n_stocks":50,"skip_days":21,"regime_gate":true,"holding_days":20,"formation_days":250},"performance":{"sharpe":1.2,"max_drawdown_pct":-11.5,"alpha_annualized_pct":14.2,"p_value":0.026,"regime_breakdown":{"UP":1.67831,"DOWN":1.248736,"FLAT":0.38711}},"executed_at":"2026-09-23T15:48:55","notes":null}],"facts":[{"fact_id":"momentum-cross-sectional-us-sp500-fact-best-sharpe","strategy_slug":"momentum-cross-sectional-us-sp500","claim":"Best grid Sharpe ratio is 2.08 (p=0.00025).","value":2.08,"value_text":null,"unit":"sharpe_ratio","context":"period 2022-04-01–2026-09-01; cost=5bps","supports_verdict":"marginal","source_run_id":"r-momentum-cross-sectional-us-sp500-0869","search_tsv":"'-01':12,15 '-04':11 '-09':14 '0.00025':8 '2.08':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-cross-sectional-us-sp500-fact-best-sharpe"},{"fact_id":"momentum-cross-sectional-us-sp500-fact-median-sharpe","strategy_slug":"momentum-cross-sectional-us-sp500","claim":"Median Sharpe across 960 grid runs is 0.65.","value":0.65,"value_text":null,"unit":"sharpe_ratio","context":"Full grid of 960 parameter combinations.","supports_verdict":"marginal","source_run_id":null,"search_tsv":"'0.65':8 '960':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-cross-sectional-us-sp500-fact-median-sharpe"},{"fact_id":"momentum-cross-sectional-us-sp500-fact-regime-down","strategy_slug":"momentum-cross-sectional-us-sp500","claim":"Median Sharpe in DOWN regime is 1.06 across 960 runs.","value":1.06,"value_text":null,"unit":"sharpe_ratio","context":"Regime=DOWN, N225 SMA20/SMA60 classification.","supports_verdict":"marginal","source_run_id":null,"search_tsv":"'1.06':7 '960':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-cross-sectional-us-sp500-fact-regime-down"},{"fact_id":"momentum-cross-sectional-us-sp500-fact-regime-flat","strategy_slug":"momentum-cross-sectional-us-sp500","claim":"Median Sharpe in FLAT regime is -0.01 across 960 runs.","value":-0.01,"value_text":null,"unit":"sharpe_ratio","context":"Regime=FLAT, N225 SMA20/SMA60 classification.","supports_verdict":"marginal","source_run_id":null,"search_tsv":"'-0.01':7 '960':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-cross-sectional-us-sp500-fact-regime-flat"},{"fact_id":"momentum-cross-sectional-us-sp500-fact-regime-up","strategy_slug":"momentum-cross-sectional-us-sp500","claim":"Median Sharpe in UP regime is 1.05 across 960 runs.","value":1.05,"value_text":null,"unit":"sharpe_ratio","context":"Regime=UP, N225 SMA20/SMA60 classification.","supports_verdict":"marginal","source_run_id":null,"search_tsv":"'1.05':7 '960':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-cross-sectional-us-sp500-fact-regime-up"}],"related_strategies":[{"related_slug":"momentum-cross-sectional-jp-all","relation":"same_strategy"},{"related_slug":"momentum-cross-sectional-jp-growth","relation":"same_strategy"}],"tags":["momentum","cross-sectional","factor","us-market","sp500","grid-search"],"_links":{"self":"https://qbuntu.ai/v1/strategies/momentum-cross-sectional-us-sp500","html":"https://qbuntu.ai/strategies/momentum-cross-sectional-us-sp500","markdown":"https://qbuntu.ai/ai/strategies/momentum-cross-sectional-us-sp500.md"}}