Pairs Trading / Statistical Arbitrage (JP Growth Stocks)のバックテスト
slug: pair-trading-jp-growth
Pairs Trading / Statistical Arbitrage (JP Growth Stocks)をバックテストした。288通りの中央値 Sharpe は +1.84。p-value は 0。Max DD は -2.4%。期間は 2022-02-25〜2026-09-02。最良 Sharpe +3.65 は代表値ではない。
判定は promising。中央値の Sharpe が 0.5 を超え、その中央値の p-value が 0.05 未満。ベストランではない。
成績の中央値
Sharpe(中央値)
+1.84
Max DD
-2.4%
勝率
—
Alpha(年率)
—
p-value
0.00
期間: 2022-02-25 → 2026-09-02
288通りの Sharpe:中央値 1.84最良 3.65 (代表値ではない)最悪 0.51p25–p75 0.98–2.93
仮説
原文は英語。
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.
検証ファクト (5)
Best grid Sharpe ratio is 3.65 (p=4.7e-16).
period 2022-02-25–2026-09-02; cost=5bps
cite ↗ /cite/pair-trading-jp-growth-fact-best-sharpevia r-pair-trading-jp-growth-0266
Median Sharpe across 288 grid runs is 1.84.
Full grid of 288 parameter combinations.
Median Sharpe in DOWN regime is 1.75 across 288 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
Median Sharpe in FLAT regime is 2.51 across 288 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
Median Sharpe in UP regime is 2.77 across 288 runs.
Regime=UP, N225 SMA20/SMA60 classification.
検証ラン (30)
| run | params | sharpe | UP | FLAT | DOWN |
|---|---|---|---|---|---|
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 |
対象ユニバース
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