qbuntuqbuntu

クロスセクショナル・モメンタム(東証全銘柄)のバックテスト

Cross-Sectional Momentum (JP All Stocks)

slug: momentum-cross-sectional-jp-all

東証全銘柄(約3,747銘柄)でクロスセクショナル・モメンタムをバックテストした。960通りの中央値 Sharpe は -0.11。p-value は 0.62。Max DD は -25.5%。期間は 2022-05-02〜2026-09-01。最良 Sharpe +0.78 は代表値ではない。

判定は rejected。中央値は promising(Sharpe > 0.5 かつ p-value < 0.05)にも marginal(Sharpe > 0.05 かつ最良 p-value < 0.10)にも届いていない。主因は no_edge。レジーム・取引回数・コストには分類されず、中央値が採用ラインに届いていない。

何を検証したか

クロスセクショナル・モメンタムは、直近のリターンが高かった銘柄を買い、低かった銘柄を売る方法です。日本ではこの横断の効きが弱いことが長く指摘されていて、このページはその主張をパラメータ全体の中央値で見ています。グリッドの端に Sharpe がプラスの組み合わせが残っても、それはこの戦略の成績ではありません。

成績の中央値

Sharpe(中央値)
-0.11
Max DD
-25.5%
勝率
—
Alpha(年率)
—
p-value
0.62
期間: 2022-05-02 → 2026-09-01
960通りの Sharpe:中央値 -0.11最良 0.78 (代表値ではない)最悪 -1.13p25–p75 -0.31–0.10

仮説

原文は英語。

Jegadeesh & Titman (1993): stocks with high past returns continue to outperform. Testing cross-sectional momentum on the full Japanese stock universe.

採用しなかった理由

Across 960 grid combinations, median Sharpe=-0.11, best=0.78. Primary failure mode: no_edge.

検証ファクト (5)

Best grid Sharpe ratio is 0.78 (p=0.14).
period 2022-05-02–2026-09-01; cost=5bps
sharpe_ratio0.78
cite ↗ /cite/momentum-cross-sectional-jp-all-fact-best-sharpevia r-momentum-cross-sectional-jp-all-0797
Median Sharpe across 960 grid runs is -0.11.
Full grid of 960 parameter combinations.
sharpe_ratio-0.11
Median Sharpe in DOWN regime is 0.52 across 960 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.52
Median Sharpe in FLAT regime is 0.17 across 960 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.17
Median Sharpe in UP regime is -0.45 across 960 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.45

検証ラン (30)

runparamssharpeUPFLATDOWN
formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0000
cost_bps: 5
n_stocks: 5
skip_days: 0
-0.57-0.44-0.52-0.86
formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0001
cost_bps: 5
n_stocks: 5
skip_days: 0
-0.44-0.07-0.52-0.86
formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0002
cost_bps: 10
n_stocks: 5
skip_days: 0
-0.66-0.55-0.62-0.93
formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0003
cost_bps: 10
n_stocks: 5
skip_days: 0
-0.51-0.13-0.62-0.93
formation_days=60, holding_days=1, n_stocks=5, skip_days=21, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0008
cost_bps: 5
n_stocks: 5
skip_days: 21
-0.43-0.28-0.59-0.35
formation_days=60, holding_days=1, n_stocks=50, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0036
cost_bps: 5
n_stocks: 50
skip_days: 0
-0.61-0.18-0.59-2.58
formation_days=60, holding_days=5, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0050
cost_bps: 10
n_stocks: 5
skip_days: 0
-0.19-1.09+0.65-1.17
formation_days=60, holding_days=5, n_stocks=50, skip_days=21, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0095
cost_bps: 10
n_stocks: 50
skip_days: 21
-0.32-0.01-0.13-1.85
formation_days=60, holding_days=10, n_stocks=50, skip_days=21, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0140
cost_bps: 5
n_stocks: 50
skip_days: 21
+0.29-0.09+0.80-0.10
formation_days=60, holding_days=20, n_stocks=50, skip_days=5, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0185
cost_bps: 5
n_stocks: 50
skip_days: 5
+0.25+0.13+0.92-1.67
formation_days=60, holding_days=60, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0192
cost_bps: 5
n_stocks: 5
skip_days: 0
-0.39-0.47-0.57+0.56
formation_days=60, holding_days=60, n_stocks=50, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0231
cost_bps: 10
n_stocks: 50
skip_days: 0
+0.32+0.04+0.70-0.42
formation_days=120, holding_days=1, n_stocks=20, skip_days=5, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0270
cost_bps: 10
n_stocks: 20
skip_days: 5
-1.13-1.00-1.98+1.07
formation_days=120, holding_days=1, n_stocks=50, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0277
cost_bps: 5
n_stocks: 50
skip_days: 0
-0.47-0.23-1.00-0.18
formation_days=120, holding_days=5, n_stocks=20, skip_days=21, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0322
cost_bps: 10
n_stocks: 20
skip_days: 21
+0.24-0.21+0.40+1.48
formation_days=120, holding_days=10, n_stocks=20, skip_days=5, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0367
cost_bps: 10
n_stocks: 20
skip_days: 5
+0.03-0.51+0.30+1.83
formation_days=120, holding_days=20, n_stocks=20, skip_days=5, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0412
cost_bps: 5
n_stocks: 20
skip_days: 5
-0.38-0.47-0.25-0.55
formation_days=120, holding_days=60, n_stocks=20, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0457
cost_bps: 5
n_stocks: 20
skip_days: 0
-0.25-0.55+0.06-0.55
formation_days=180, holding_days=1, n_stocks=10, skip_days=21, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0502
cost_bps: 10
n_stocks: 10
skip_days: 21
-0.14-0.08-1.27+3.66
formation_days=180, holding_days=5, n_stocks=10, skip_days=5, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0547
cost_bps: 10
n_stocks: 10
skip_days: 5
+0.23+0.26-0.39+2.23
formation_days=180, holding_days=10, n_stocks=10, skip_days=5, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0592
cost_bps: 5
n_stocks: 10
skip_days: 5
0.00-0.94+0.27+3.02
formation_days=180, holding_days=20, n_stocks=10, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0637
cost_bps: 5
n_stocks: 10
skip_days: 0
+0.03-0.35+0.54-0.15
formation_days=180, holding_days=60, n_stocks=5, skip_days=21, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0682
cost_bps: 10
n_stocks: 5
skip_days: 21
+0.04-1.39+0.49+1.45
formation_days=250, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0720
cost_bps: 5
n_stocks: 5
skip_days: 0
-0.15+0.13-1.00+1.12
formation_days=250, holding_days=1, n_stocks=5, skip_days=21, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0728
cost_bps: 5
n_stocks: 5
skip_days: 21
-0.08-0.46-0.97+4.92
formation_days=250, holding_days=5, n_stocks=5, skip_days=5, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0773
cost_bps: 5
n_stocks: 5
skip_days: 5
+0.21-0.25+0.32+2.21
formation_days=250, holding_days=5, n_stocks=20, skip_days=5, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0797
cost_bps: 5
n_stocks: 20
skip_days: 5
+0.78+0.36+0.65+2.89
formation_days=250, holding_days=10, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0819
cost_bps: 10
n_stocks: 5
skip_days: 0
-0.20-0.71+0.18+1.01
formation_days=250, holding_days=20, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0864
cost_bps: 5
n_stocks: 5
skip_days: 0
-0.24-0.82+0.48-0.75
formation_days=250, holding_days=20, n_stocks=50, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0909
cost_bps: 5
n_stocks: 50
skip_days: 21
+0.21+0.18+0.31+0.01

対象ユニバース

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

関連する戦略

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

関連する戦略