qbuntuqbuntu
rejectedregime_dependent· equity· cross-sectional· factor· mean-reversion

Mean Reversion (JP All Stocks)

slug: mean-reversion-jp-all

Mean Reversion (JP All Stocks) backtest. Median Sharpe across 1,024 parameter sets is +0.01. p-value is 0.46. Max DD is -17.4%. Period: 2022-02-01 to 2026-09-01. Best Sharpe +1.26 is not the representative figure.

Verdict: rejected. The median reaches neither promising (Sharpe > 0.5 and p-value < 0.05) nor marginal (Sharpe > 0.05 and best p-value < 0.10). Results split across up, flat, and down markets, so the median is not stable.

Performance summary

Sharpe (median)
+0.01
Max DD
-17.4%
Win rate
—
Alpha (ann.)
—
p-value
0.46
backtest period: 2022-02-01 → 2026-09-01
Sharpe across 1024 grid runs:median 0.01best 1.26 (not representative)worst -1.20p25–p75 -0.31–0.38

Hypothesis

Stocks deviating from fair value revert to the mean. Testing 4 mean-reversion indicators on the full Japanese stock universe.

Why it didn't work

Across 1024 grid combinations, median Sharpe=0.01, best=1.26. Primary failure mode: regime_dependent.

Facts (5)

Best grid Sharpe ratio is 1.26 (p=0.0086).
period 2022-02-01–2026-09-01; cost=5bps
sharpe_ratio1.26
Median Sharpe across 1024 grid runs is 0.01.
Full grid of 1024 parameter combinations.
sharpe_ratio0.01
Median Sharpe in DOWN regime is 0.74 across 1024 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.74
Median Sharpe in FLAT regime is -0.26 across 1024 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.26
Median Sharpe in UP regime is -0.00 across 1024 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0

Runs (30)

runparamssharpeUPFLATDOWN
indicator=zscore, lookback=10, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0000
cost_bps: 5
lookback: 10
n_stocks: 5
-0.20-0.74-0.32+1.04
indicator=zscore, lookback=10, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-mean-reversion-jp-all-0001
cost_bps: 5
lookback: 10
n_stocks: 5
+0.22+0.21-0.32+1.04
indicator=zscore, lookback=10, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-mean-reversion-jp-all-0002
cost_bps: 10
lookback: 10
n_stocks: 5
-0.35-0.88-0.53+0.92
indicator=zscore, lookback=10, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-mean-reversion-jp-all-0003
cost_bps: 10
lookback: 10
n_stocks: 5
+0.06+0.04-0.53+0.92
indicator=zscore, lookback=10, holding_days=1, n_stocks=50, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0012
cost_bps: 5
lookback: 10
n_stocks: 50
-0.21-0.57-0.01+0.06
indicator=zscore, lookback=10, holding_days=20, n_stocks=5, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0048
cost_bps: 5
lookback: 10
n_stocks: 5
-0.29-0.33-0.20-0.88
indicator=zscore, lookback=10, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=True
r-mean-reversion-jp-all-0053
cost_bps: 5
lookback: 10
n_stocks: 10
-0.17+1.20-0.45-1.82
indicator=zscore, lookback=20, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=False
r-mean-reversion-jp-all-0094
cost_bps: 10
lookback: 20
n_stocks: 50
-1.20-1.20-1.51-0.30
indicator=zscore, lookback=20, holding_days=10, n_stocks=10, cost_bps=10, regime_gate=False
r-mean-reversion-jp-all-0102
cost_bps: 10
lookback: 20
n_stocks: 10
-0.01+0.16-0.28+0.36
indicator=zscore, lookback=40, holding_days=5, n_stocks=10, cost_bps=10, regime_gate=False
r-mean-reversion-jp-all-0150
cost_bps: 10
lookback: 40
n_stocks: 10
+0.20+0.71-0.34+0.94
indicator=zscore, lookback=60, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0192
cost_bps: 5
lookback: 60
n_stocks: 5
+0.40+0.98-0.03+1.39
indicator=zscore, lookback=60, holding_days=1, n_stocks=10, cost_bps=10, regime_gate=True
r-mean-reversion-jp-all-0199
cost_bps: 10
lookback: 60
n_stocks: 10
-0.15-1.35-0.07+1.55
indicator=zscore, lookback=60, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=True
r-mean-reversion-jp-all-0247
cost_bps: 10
lookback: 60
n_stocks: 10
+0.37-0.30+0.84-0.28
indicator=rsi, lookback=10, holding_days=10, n_stocks=10, cost_bps=10, regime_gate=True
r-mean-reversion-jp-all-0295
cost_bps: 10
lookback: 10
n_stocks: 10
0.00-0.40-0.02+1.03
indicator=rsi, lookback=20, holding_days=5, n_stocks=10, cost_bps=10, regime_gate=True
r-mean-reversion-jp-all-0343
cost_bps: 10
lookback: 20
n_stocks: 10
0.00-0.09-0.34+1.02
indicator=rsi, lookback=40, holding_days=1, n_stocks=10, cost_bps=10, regime_gate=True
r-mean-reversion-jp-all-0391
cost_bps: 10
lookback: 40
n_stocks: 10
+0.18+0.05-0.24+1.31
indicator=rsi, lookback=40, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=True
r-mean-reversion-jp-all-0439
cost_bps: 10
lookback: 40
n_stocks: 10
+0.32-0.25-0.19+3.62
indicator=rsi, lookback=60, holding_days=10, n_stocks=10, cost_bps=10, regime_gate=True
r-mean-reversion-jp-all-0487
cost_bps: 10
lookback: 60
n_stocks: 10
+0.64+0.50+0.61+1.16
indicator=bollinger_pct, lookback=10, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0512
cost_bps: 5
lookback: 10
n_stocks: 5
-0.20-0.74-0.32+1.04
indicator=bollinger_pct, lookback=10, holding_days=5, n_stocks=20, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0536
cost_bps: 5
lookback: 10
n_stocks: 20
-0.33-0.49-0.66+0.95
indicator=bollinger_pct, lookback=20, holding_days=1, n_stocks=20, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0584
cost_bps: 5
lookback: 20
n_stocks: 20
+0.19+0.60-0.14+0.17
indicator=bollinger_pct, lookback=20, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0632
cost_bps: 5
lookback: 20
n_stocks: 20
+0.12+0.49+0.04-1.85
indicator=bollinger_pct, lookback=40, holding_days=10, n_stocks=20, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0680
cost_bps: 5
lookback: 40
n_stocks: 20
+0.17-0.07-0.12+1.58
indicator=bollinger_pct, lookback=60, holding_days=5, n_stocks=20, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0728
cost_bps: 5
lookback: 60
n_stocks: 20
-0.01+0.02+0.02-0.13
indicator=mrs, lookback=10, holding_days=1, n_stocks=20, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0776
cost_bps: 5
lookback: 10
n_stocks: 20
-0.19-0.26-0.59+1.73
indicator=mrs, lookback=10, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0824
cost_bps: 5
lookback: 10
n_stocks: 20
-0.43-0.80-0.55+2.90
indicator=mrs, lookback=20, holding_days=10, n_stocks=20, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0872
cost_bps: 5
lookback: 20
n_stocks: 20
+0.63-0.63+1.79+1.96
indicator=mrs, lookback=20, holding_days=20, n_stocks=5, cost_bps=5, regime_gate=False
r-mean-reversion-jp-all-0880
cost_bps: 5
lookback: 20
n_stocks: 5
+1.26+1.37+1.07+1.73
indicator=mrs, lookback=40, holding_days=5, n_stocks=20, cost_bps=5, regime_gate=True
r-mean-reversion-jp-all-0921
cost_bps: 5
lookback: 40
n_stocks: 20
-0.11+0.64-1.23+1.75
indicator=mrs, lookback=60, holding_days=1, n_stocks=20, cost_bps=5, regime_gate=True
r-mean-reversion-jp-all-0969
cost_bps: 5
lookback: 60
n_stocks: 20
+0.22+0.83-0.26-0.16

Target universe

Tokyo Stock Exchange all listed (Prime/Standard/Growth), ~3747 stocks

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-26T05:46:56

Related strategies