{"schema_version":"v1","slug":"vpt-divergence-us-sp500","name":"VPT Divergence (US S&P 500)","name_i18n":{},"verdict":"rejected","asset_class":"equity","categories":["divergence","technical","volume"],"hypothesis":"Volume-Price-Trend (VPT) accumulates volume signed by returns; a divergence between the VPT path and the price path is read as hidden accumulation/distribution. Ranking on VPT-price divergence tests whether price subsequently closes the gap.","rejection_reason":{"primary":"no_edge","secondary":[],"narrative":"Across 144 grid combinations, median Sharpe=-0.07, best=0.94. Primary failure mode: no_edge."},"target_universe":{"description":"S&P 500 constituents, ~503 stocks","symbols":[]},"performance_summary":{"sharpe_median":-0.0694,"max_drawdown_pct":-7.4,"win_rate":null,"alpha_annualized_pct":null,"p_value":0.6,"backtest_period":{"start":"2022-03-01","end":"2026-06-01"}},"grid_summary":{"sharpe":{"p25":-0.31,"p75":0.16,"best":0.94,"worst":-0.8,"median":-0.07},"n_combinations":144},"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","transaction_cost_bps":5},"provenance":{"data_source":"kabu STATION REST API + J-Quants daily bars","source_project":"qbuntu-analysis","computed_asof":"2026-08-02T16:26:14","git_sha_z":"2f23bb7","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-vpt-divergence-us-sp500-0000","name":"vpt_lookback=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":1,"vpt_lookback":20},"performance":{"sharpe":0.87,"max_drawdown_pct":-4.2,"alpha_annualized_pct":3.5,"p_value":0.073,"regime_breakdown":{"UP":0.642266,"DOWN":0.595449,"FLAT":1.420544}},"executed_at":"2026-08-02T01:03:57","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0001","name":"vpt_lookback=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=5","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":5,"vpt_lookback":20},"performance":{"sharpe":0.41,"max_drawdown_pct":-7.1,"alpha_annualized_pct":2.6,"p_value":0.39,"regime_breakdown":{"UP":-0.144026,"DOWN":0.331097,"FLAT":1.488714}},"executed_at":"2026-08-02T01:03:57","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0002","name":"vpt_lookback=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=20","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":20,"vpt_lookback":20},"performance":{"sharpe":0,"max_drawdown_pct":-19.1,"alpha_annualized_pct":0,"p_value":0.99,"regime_breakdown":{"UP":-1.189962,"DOWN":-0.672605,"FLAT":2.007494}},"executed_at":"2026-08-02T01:03:57","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0003","name":"vpt_lookback=20, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=1","params":{"cost_bps":5,"n_stocks":5,"regime_gate":true,"holding_days":1,"vpt_lookback":20},"performance":{"sharpe":0.94,"max_drawdown_pct":-6,"alpha_annualized_pct":3.1,"p_value":0.052,"regime_breakdown":{"UP":0.743299,"DOWN":0.595449,"FLAT":1.420544}},"executed_at":"2026-08-02T01:03:57","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0006","name":"vpt_lookback=20, n_stocks=5, cost_bps=10, regime_gate=False, holding_days=1","params":{"cost_bps":10,"n_stocks":5,"regime_gate":false,"holding_days":1,"vpt_lookback":20},"performance":{"sharpe":0.57,"max_drawdown_pct":-5.6,"alpha_annualized_pct":2.3,"p_value":0.24,"regime_breakdown":{"UP":0.35417,"DOWN":0.335577,"FLAT":1.080163}},"executed_at":"2026-08-02T01:03:58","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0009","name":"vpt_lookback=20, n_stocks=5, cost_bps=10, regime_gate=True, holding_days=1","params":{"cost_bps":10,"n_stocks":5,"regime_gate":true,"holding_days":1,"vpt_lookback":20},"performance":{"sharpe":0.67,"max_drawdown_pct":-7,"alpha_annualized_pct":2.2,"p_value":0.16,"regime_breakdown":{"UP":0.513072,"DOWN":0.335577,"FLAT":1.080163}},"executed_at":"2026-08-02T01:03:58","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0014","name":"vpt_lookback=20, n_stocks=10, cost_bps=5, regime_gate=False, holding_days=20","params":{"cost_bps":5,"n_stocks":10,"regime_gate":false,"holding_days":20,"vpt_lookback":20},"performance":{"sharpe":0.24,"max_drawdown_pct":-15.6,"alpha_annualized_pct":1.9,"p_value":0.61,"regime_breakdown":{"UP":-0.441029,"DOWN":-0.339001,"FLAT":2.045227}},"executed_at":"2026-08-02T01:03:59","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0019","name":"vpt_lookback=20, n_stocks=10, cost_bps=10, regime_gate=False, holding_days=5","params":{"cost_bps":10,"n_stocks":10,"regime_gate":false,"holding_days":5,"vpt_lookback":20},"performance":{"sharpe":-0.01,"max_drawdown_pct":-9.2,"alpha_annualized_pct":-0.1,"p_value":0.98,"regime_breakdown":{"UP":-0.38466,"DOWN":0.118748,"FLAT":0.52126}},"executed_at":"2026-08-02T01:03:59","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0024","name":"vpt_lookback=20, n_stocks=20, cost_bps=5, regime_gate=False, holding_days=1","params":{"cost_bps":5,"n_stocks":20,"regime_gate":false,"holding_days":1,"vpt_lookback":20},"performance":{"sharpe":0.53,"max_drawdown_pct":-2.4,"alpha_annualized_pct":1.2,"p_value":0.27,"regime_breakdown":{"UP":0.305971,"DOWN":1.290285,"FLAT":0.335867}},"executed_at":"2026-08-02T01:04:00","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0029","name":"vpt_lookback=20, n_stocks=20, cost_bps=5, regime_gate=True, holding_days=20","params":{"cost_bps":5,"n_stocks":20,"regime_gate":true,"holding_days":20,"vpt_lookback":20},"performance":{"sharpe":0.49,"max_drawdown_pct":-5.1,"alpha_annualized_pct":2.9,"p_value":0.31,"regime_breakdown":{"UP":0.60289,"DOWN":-0.191555,"FLAT":0.892829}},"executed_at":"2026-08-02T01:04:00","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0034","name":"vpt_lookback=20, n_stocks=20, cost_bps=10, regime_gate=True, holding_days=5","params":{"cost_bps":10,"n_stocks":20,"regime_gate":true,"holding_days":5,"vpt_lookback":20},"performance":{"sharpe":-0.22,"max_drawdown_pct":-6.6,"alpha_annualized_pct":-0.8,"p_value":0.64,"regime_breakdown":{"UP":-0.346243,"DOWN":-0.123288,"FLAT":-0.157965}},"executed_at":"2026-08-02T01:04:01","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0036","name":"vpt_lookback=20, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=1","params":{"cost_bps":5,"n_stocks":50,"regime_gate":false,"holding_days":1,"vpt_lookback":20},"performance":{"sharpe":-0.07,"max_drawdown_pct":-3.4,"alpha_annualized_pct":-0.1,"p_value":0.88,"regime_breakdown":{"UP":-0.183884,"DOWN":0.134006,"FLAT":-0.028459}},"executed_at":"2026-08-02T01:04:01","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0040","name":"vpt_lookback=20, n_stocks=50, cost_bps=5, regime_gate=True, holding_days=5","params":{"cost_bps":5,"n_stocks":50,"regime_gate":true,"holding_days":5,"vpt_lookback":20},"performance":{"sharpe":0.15,"max_drawdown_pct":-4,"alpha_annualized_pct":0.5,"p_value":0.75,"regime_breakdown":{"UP":0.430636,"DOWN":-0.444166,"FLAT":0.103209}},"executed_at":"2026-08-02T01:04:02","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0045","name":"vpt_lookback=20, n_stocks=50, cost_bps=10, regime_gate=True, holding_days=1","params":{"cost_bps":10,"n_stocks":50,"regime_gate":true,"holding_days":1,"vpt_lookback":20},"performance":{"sharpe":-0.46,"max_drawdown_pct":-6,"alpha_annualized_pct":-0.9,"p_value":0.33,"regime_breakdown":{"UP":-0.387658,"DOWN":-0.486952,"FLAT":-0.523222}},"executed_at":"2026-08-02T01:04:02","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0050","name":"vpt_lookback=40, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=20","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":20,"vpt_lookback":40},"performance":{"sharpe":-0.1,"max_drawdown_pct":-19.1,"alpha_annualized_pct":-1.1,"p_value":0.83,"regime_breakdown":{"UP":-0.039616,"DOWN":-1.161103,"FLAT":0.457994}},"executed_at":"2026-08-02T01:04:03","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0055","name":"vpt_lookback=40, n_stocks=5, cost_bps=10, regime_gate=False, holding_days=5","params":{"cost_bps":10,"n_stocks":5,"regime_gate":false,"holding_days":5,"vpt_lookback":40},"performance":{"sharpe":-0.53,"max_drawdown_pct":-13,"alpha_annualized_pct":-2.9,"p_value":0.27,"regime_breakdown":{"UP":-0.608779,"DOWN":-1.714176,"FLAT":0.334997}},"executed_at":"2026-08-02T01:04:04","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0060","name":"vpt_lookback=40, n_stocks=10, cost_bps=5, regime_gate=False, holding_days=1","params":{"cost_bps":5,"n_stocks":10,"regime_gate":false,"holding_days":1,"vpt_lookback":40},"performance":{"sharpe":-0.01,"max_drawdown_pct":-4,"alpha_annualized_pct":0,"p_value":0.98,"regime_breakdown":{"UP":0.127077,"DOWN":-0.786535,"FLAT":0.167429}},"executed_at":"2026-08-02T01:04:04","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0065","name":"vpt_lookback=40, n_stocks=10, cost_bps=5, regime_gate=True, holding_days=20","params":{"cost_bps":5,"n_stocks":10,"regime_gate":true,"holding_days":20,"vpt_lookback":40},"performance":{"sharpe":0.33,"max_drawdown_pct":-13.3,"alpha_annualized_pct":2.7,"p_value":0.5,"regime_breakdown":{"UP":0.600237,"DOWN":-0.728726,"FLAT":0.442659}},"executed_at":"2026-08-02T01:04:05","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0070","name":"vpt_lookback=40, n_stocks=10, cost_bps=10, regime_gate=True, holding_days=5","params":{"cost_bps":10,"n_stocks":10,"regime_gate":true,"holding_days":5,"vpt_lookback":40},"performance":{"sharpe":-0.22,"max_drawdown_pct":-9.9,"alpha_annualized_pct":-0.9,"p_value":0.65,"regime_breakdown":{"UP":-0.383103,"DOWN":-0.956776,"FLAT":0.539174}},"executed_at":"2026-08-02T01:04:05","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0075","name":"vpt_lookback=40, n_stocks=20, cost_bps=5, regime_gate=True, holding_days=1","params":{"cost_bps":5,"n_stocks":20,"regime_gate":true,"holding_days":1,"vpt_lookback":40},"performance":{"sharpe":0.05,"max_drawdown_pct":-4,"alpha_annualized_pct":0.1,"p_value":0.91,"regime_breakdown":{"UP":0.248214,"DOWN":-0.24987,"FLAT":-0.027742}},"executed_at":"2026-08-02T01:04:06","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0080","name":"vpt_lookback=40, n_stocks=20, cost_bps=10, regime_gate=False, holding_days=20","params":{"cost_bps":10,"n_stocks":20,"regime_gate":false,"holding_days":20,"vpt_lookback":40},"performance":{"sharpe":-0.36,"max_drawdown_pct":-16.5,"alpha_annualized_pct":-2.4,"p_value":0.47,"regime_breakdown":{"UP":-0.215163,"DOWN":-0.48745,"FLAT":-0.430471}},"executed_at":"2026-08-02T01:04:06","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0085","name":"vpt_lookback=40, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=5","params":{"cost_bps":5,"n_stocks":50,"regime_gate":false,"holding_days":5,"vpt_lookback":40},"performance":{"sharpe":-0.06,"max_drawdown_pct":-6.4,"alpha_annualized_pct":-0.2,"p_value":0.9,"regime_breakdown":{"UP":-0.189969,"DOWN":-0.256414,"FLAT":0.247627}},"executed_at":"2026-08-02T01:04:07","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0090","name":"vpt_lookback=40, n_stocks=50, cost_bps=10, regime_gate=False, holding_days=1","params":{"cost_bps":10,"n_stocks":50,"regime_gate":false,"holding_days":1,"vpt_lookback":40},"performance":{"sharpe":-0.77,"max_drawdown_pct":-6.8,"alpha_annualized_pct":-1.4,"p_value":0.11,"regime_breakdown":{"UP":-0.503251,"DOWN":-0.242222,"FLAT":-1.298576}},"executed_at":"2026-08-02T01:04:08","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0095","name":"vpt_lookback=40, n_stocks=50, cost_bps=10, regime_gate=True, holding_days=20","params":{"cost_bps":10,"n_stocks":50,"regime_gate":true,"holding_days":20,"vpt_lookback":40},"performance":{"sharpe":0.26,"max_drawdown_pct":-11.5,"alpha_annualized_pct":1.5,"p_value":0.6,"regime_breakdown":{"UP":1.009472,"DOWN":-0.697803,"FLAT":-0.527006}},"executed_at":"2026-08-02T01:04:08","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0096","name":"vpt_lookback=60, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1","params":{"cost_bps":5,"n_stocks":5,"regime_gate":false,"holding_days":1,"vpt_lookback":60},"performance":{"sharpe":0.26,"max_drawdown_pct":-4.1,"alpha_annualized_pct":0.9,"p_value":0.59,"regime_breakdown":{"UP":0.444858,"DOWN":0.371871,"FLAT":-0.129947}},"executed_at":"2026-08-02T01:04:08","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0101","name":"vpt_lookback=60, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=20","params":{"cost_bps":5,"n_stocks":5,"regime_gate":true,"holding_days":20,"vpt_lookback":60},"performance":{"sharpe":-0.32,"max_drawdown_pct":-34,"alpha_annualized_pct":-5.2,"p_value":0.51,"regime_breakdown":{"UP":1.122601,"DOWN":-0.614581,"FLAT":-1.285139}},"executed_at":"2026-08-02T01:04:09","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0106","name":"vpt_lookback=60, n_stocks=5, cost_bps=10, regime_gate=True, holding_days=5","params":{"cost_bps":10,"n_stocks":5,"regime_gate":true,"holding_days":5,"vpt_lookback":60},"performance":{"sharpe":0.11,"max_drawdown_pct":-9.7,"alpha_annualized_pct":0.7,"p_value":0.82,"regime_breakdown":{"UP":0.694997,"DOWN":0.21328,"FLAT":-0.659897}},"executed_at":"2026-08-02T01:04:10","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0111","name":"vpt_lookback=60, n_stocks=10, cost_bps=5, regime_gate=True, holding_days=1","params":{"cost_bps":5,"n_stocks":10,"regime_gate":true,"holding_days":1,"vpt_lookback":60},"performance":{"sharpe":-0.08,"max_drawdown_pct":-7.1,"alpha_annualized_pct":-0.2,"p_value":0.86,"regime_breakdown":{"UP":0.002622,"DOWN":-0.582505,"FLAT":0.021001}},"executed_at":"2026-08-02T01:04:10","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0116","name":"vpt_lookback=60, n_stocks=10, cost_bps=10, regime_gate=False, holding_days=20","params":{"cost_bps":10,"n_stocks":10,"regime_gate":false,"holding_days":20,"vpt_lookback":60},"performance":{"sharpe":-0.69,"max_drawdown_pct":-30.3,"alpha_annualized_pct":-7.2,"p_value":0.16,"regime_breakdown":{"UP":-0.28918,"DOWN":-2.426316,"FLAT":-0.744169}},"executed_at":"2026-08-02T01:04:11","notes":null},{"run_id":"r-vpt-divergence-us-sp500-0126","name":"vpt_lookback=60, n_stocks=20, cost_bps=10, regime_gate=False, holding_days=1","params":{"cost_bps":10,"n_stocks":20,"regime_gate":false,"holding_days":1,"vpt_lookback":60},"performance":{"sharpe":-0.8,"max_drawdown_pct":-6.6,"alpha_annualized_pct":-1.5,"p_value":0.1,"regime_breakdown":{"UP":-0.312787,"DOWN":-1.451013,"FLAT":-1.172707}},"executed_at":"2026-08-02T01:04:12","notes":null}],"facts":[{"fact_id":"vpt-divergence-us-sp500-fact-best-sharpe","strategy_slug":"vpt-divergence-us-sp500","claim":"Best grid Sharpe ratio is 0.94 (p=0.052).","value":0.94,"value_text":null,"unit":"sharpe_ratio","context":"period 2022-03-01–2026-06-01; cost=5bps","supports_verdict":"rejected","source_run_id":"r-vpt-divergence-us-sp500-0003","search_tsv":"'-01':12,15 '-03':11 '-06':14 '0.052':8 '0.94':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/vpt-divergence-us-sp500-fact-best-sharpe"},{"fact_id":"vpt-divergence-us-sp500-fact-median-sharpe","strategy_slug":"vpt-divergence-us-sp500","claim":"Median Sharpe across 144 grid runs is -0.07.","value":-0.07,"value_text":null,"unit":"sharpe_ratio","context":"Full grid of 144 parameter combinations.","supports_verdict":"rejected","source_run_id":null,"search_tsv":"'-0.07':8 '144':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/vpt-divergence-us-sp500-fact-median-sharpe"},{"fact_id":"vpt-divergence-us-sp500-fact-regime-down","strategy_slug":"vpt-divergence-us-sp500","claim":"Median Sharpe in DOWN regime is -0.50 across 144 runs.","value":-0.5,"value_text":null,"unit":"sharpe_ratio","context":"Regime=DOWN, N225 SMA20/SMA60 classification.","supports_verdict":"rejected","source_run_id":null,"search_tsv":"'-0.50':7 '144':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/vpt-divergence-us-sp500-fact-regime-down"},{"fact_id":"vpt-divergence-us-sp500-fact-regime-flat","strategy_slug":"vpt-divergence-us-sp500","claim":"Median Sharpe in FLAT regime is -0.10 across 144 runs.","value":-0.1,"value_text":null,"unit":"sharpe_ratio","context":"Regime=FLAT, N225 SMA20/SMA60 classification.","supports_verdict":"rejected","source_run_id":null,"search_tsv":"'-0.10':7 '144':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/vpt-divergence-us-sp500-fact-regime-flat"},{"fact_id":"vpt-divergence-us-sp500-fact-regime-up","strategy_slug":"vpt-divergence-us-sp500","claim":"Median Sharpe in UP regime is 0.07 across 144 runs.","value":0.07,"value_text":null,"unit":"sharpe_ratio","context":"Regime=UP, N225 SMA20/SMA60 classification.","supports_verdict":"rejected","source_run_id":null,"search_tsv":"'0.07':7 '144':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/vpt-divergence-us-sp500-fact-regime-up"}],"related_strategies":[{"related_slug":"vpt-divergence-jp-all","relation":"same_strategy"},{"related_slug":"vpt-divergence-jp-growth","relation":"same_strategy"}],"tags":["volume","vpt","divergence","technical","sp500","grid-search"],"_links":{"self":"https://qbuntu.ai/v1/strategies/vpt-divergence-us-sp500","html":"https://qbuntu.ai/strategies/vpt-divergence-us-sp500","markdown":"https://qbuntu.ai/ai/strategies/vpt-divergence-us-sp500.md"}}