qbuntuqbuntu

Pairs Trading / Statistical Arbitrage (JP Growth Stocks)

slug: pair-trading-jp-growth

Pairs Trading / Statistical Arbitrage (JP Growth Stocks) backtest. Median Sharpe across 288 parameter sets is +1.84. p-value is 0. Max DD is -2.4%. Period: 2022-02-25 to 2026-09-02. Best Sharpe +3.65 is not the representative figure.

Verdict: promising. Median Sharpe is above 0.5 and the median p-value is under 0.05. Not the best run.

Performance summary

Sharpe (median)
+1.84
Max DD
-2.4%
Win rate
—
Alpha (ann.)
—
p-value
0.00
backtest period: 2022-02-25 → 2026-09-02
Sharpe across 288 grid runs:median 1.84best 3.65 (not representative)worst 0.51p25–p75 0.98–2.93

Hypothesis

Engle-Granger cointegration: identify stock pairs with mean-reverting spreads via ADF test. When normalized spread z-score exceeds entry threshold, trade the spread (LONG underperformer, SHORT outperformer). Close when z-score reverts to exit threshold.

Facts (5)

Best grid Sharpe ratio is 3.65 (p=4.7e-16).
period 2022-02-25–2026-09-02; cost=5bps
sharpe_ratio3.65
Median Sharpe across 288 grid runs is 1.84.
Full grid of 288 parameter combinations.
sharpe_ratio1.84
Median Sharpe in DOWN regime is 1.75 across 288 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio1.75
Median Sharpe in FLAT regime is 2.51 across 288 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio2.51
Median Sharpe in UP regime is 2.77 across 288 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio2.77

Runs (30)

runparamssharpeUPFLATDOWN
entry_zscore=1.5, exit_zscore=0, lookback=60, max_pairs=5, cost_bps=5
r-pair-trading-jp-growth-0000
cost_bps: 5
lookback: 60
max_pairs: 5
+0.83+2.55+0.93+1.78
entry_zscore=1.5, exit_zscore=0, lookback=60, max_pairs=5, cost_bps=10
r-pair-trading-jp-growth-0001
cost_bps: 10
lookback: 60
max_pairs: 5
+0.83+2.46+0.93+1.74
entry_zscore=1.5, exit_zscore=0, lookback=60, max_pairs=10, cost_bps=5
r-pair-trading-jp-growth-0002
cost_bps: 5
lookback: 60
max_pairs: 10
+0.83+1.39+0.80+1.48
entry_zscore=1.5, exit_zscore=0, lookback=60, max_pairs=20, cost_bps=5
r-pair-trading-jp-growth-0004
cost_bps: 5
lookback: 60
max_pairs: 20
+1.16+1.79+1.07+2.03
entry_zscore=1.5, exit_zscore=0, lookback=250, max_pairs=5, cost_bps=5
r-pair-trading-jp-growth-0012
cost_bps: 5
lookback: 250
max_pairs: 5
+1.62+6.66+1.64+2.27
entry_zscore=1.5, exit_zscore=0, lookback=250, max_pairs=20, cost_bps=5
r-pair-trading-jp-growth-0016
cost_bps: 5
lookback: 250
max_pairs: 20
+1.79+2.82+1.97+1.64
entry_zscore=1.5, exit_zscore=0.25, lookback=120, max_pairs=20, cost_bps=5
r-pair-trading-jp-growth-0028
cost_bps: 5
lookback: 120
max_pairs: 20
+3.15+3.26+3.21+2.26
entry_zscore=1.5, exit_zscore=0.5, lookback=60, max_pairs=20, cost_bps=5
r-pair-trading-jp-growth-0040
cost_bps: 5
lookback: 60
max_pairs: 20
+1.08+2.03+1.01+2.21
entry_zscore=1.5, exit_zscore=0.5, lookback=250, max_pairs=20, cost_bps=5
r-pair-trading-jp-growth-0052
cost_bps: 5
lookback: 250
max_pairs: 20
+1.95+1.67+3.13+6.58
entry_zscore=1.5, exit_zscore=1, lookback=60, max_pairs=5, cost_bps=5
r-pair-trading-jp-growth-0054
cost_bps: 5
lookback: 60
max_pairs: 5
+0.87+1.51+0.95-0.48
entry_zscore=1.5, exit_zscore=1, lookback=120, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0065
cost_bps: 10
lookback: 120
max_pairs: 20
+3.02+3.14+3.12+2.03
entry_zscore=2, exit_zscore=0, lookback=60, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0077
cost_bps: 10
lookback: 60
max_pairs: 20
+1.14+1.76+1.06+1.99
entry_zscore=2, exit_zscore=0, lookback=250, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0089
cost_bps: 10
lookback: 250
max_pairs: 20
+1.79+2.80+1.96+1.63
entry_zscore=2, exit_zscore=0.25, lookback=120, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0101
cost_bps: 10
lookback: 120
max_pairs: 20
+3.12+3.24+3.18+2.23
entry_zscore=2, exit_zscore=0.5, lookback=60, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0113
cost_bps: 10
lookback: 60
max_pairs: 20
+1.06+1.99+0.99+2.15
entry_zscore=2, exit_zscore=0.5, lookback=250, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0125
cost_bps: 10
lookback: 250
max_pairs: 20
+1.94+1.66+3.11+6.50
entry_zscore=2, exit_zscore=1, lookback=120, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0137
cost_bps: 10
lookback: 120
max_pairs: 20
+3.02+3.14+3.12+2.03
entry_zscore=2.5, exit_zscore=0, lookback=60, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0149
cost_bps: 10
lookback: 60
max_pairs: 20
+1.11+1.74+1.04+1.53
entry_zscore=2.5, exit_zscore=0, lookback=250, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0161
cost_bps: 10
lookback: 250
max_pairs: 20
+1.82+3.08+1.86+1.75
entry_zscore=2.5, exit_zscore=0.25, lookback=120, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0173
cost_bps: 10
lookback: 120
max_pairs: 20
+3.01+3.18+3.03+2.22
entry_zscore=2.5, exit_zscore=0.5, lookback=60, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0185
cost_bps: 10
lookback: 60
max_pairs: 20
+1.06+2.03+0.98+2.07
entry_zscore=2.5, exit_zscore=0.5, lookback=250, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0197
cost_bps: 10
lookback: 250
max_pairs: 20
+1.90+1.65+3.09+5.49
entry_zscore=2.5, exit_zscore=1, lookback=120, max_pairs=20, cost_bps=10
r-pair-trading-jp-growth-0209
cost_bps: 10
lookback: 120
max_pairs: 20
+3.04+3.23+3.10+2.07
entry_zscore=3, exit_zscore=0, lookback=60, max_pairs=5, cost_bps=5
r-pair-trading-jp-growth-0216
cost_bps: 5
lookback: 60
max_pairs: 5
+0.79+2.44+0.91+0.92
entry_zscore=3, exit_zscore=0, lookback=120, max_pairs=5, cost_bps=5
r-pair-trading-jp-growth-0222
cost_bps: 5
lookback: 120
max_pairs: 5
+2.97+3.34+2.70+4.94
entry_zscore=3, exit_zscore=0.25, lookback=60, max_pairs=5, cost_bps=5
r-pair-trading-jp-growth-0234
cost_bps: 5
lookback: 60
max_pairs: 5
+0.75+1.81+0.77-0.79
entry_zscore=3, exit_zscore=0.25, lookback=250, max_pairs=5, cost_bps=5
r-pair-trading-jp-growth-0246
cost_bps: 5
lookback: 250
max_pairs: 5
+3.39+3.51+3.28+5.26
entry_zscore=3, exit_zscore=0.5, lookback=120, max_pairs=5, cost_bps=5
r-pair-trading-jp-growth-0258
cost_bps: 5
lookback: 120
max_pairs: 5
+3.04+3.33+3.06+1.99
entry_zscore=3, exit_zscore=0.5, lookback=250, max_pairs=10, cost_bps=5
r-pair-trading-jp-growth-0266
cost_bps: 5
lookback: 250
max_pairs: 10
+3.65+5.12+3.35+4.76
entry_zscore=3, exit_zscore=1, lookback=60, max_pairs=5, cost_bps=10
r-pair-trading-jp-growth-0271
cost_bps: 10
lookback: 60
max_pairs: 5
+0.51+1.05+0.72-1.29

Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY
source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-09-24T02:22:18

Related strategies