qbuntuqbuntu

Cross-Sectional Momentum (JP All Stocks)

slug: momentum-cross-sectional-jp-all
performance summary
Sharpe (median)
-0.33
Max DD
-23.2%
Win rate
Alpha (ann.)
p-value
0.44
backtest period: 2022-05-022026-02-02
Sharpe across 480 grid runs:median -0.33best 0.60 (not representative)worst -1.65p25–p75 -0.67-0.04

Hypothesis

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

Why it didn't work

Across 480 grid combinations, median Sharpe=-0.33, best=0.60. Primary failure mode: no_edge.

Facts (7)

Average monthly return correlation with other strategies in DOWN regime: 0.19
Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
correlation0.19
Average monthly return correlation with other strategies (full period): 0.04
Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
correlation0.04
Best grid Sharpe ratio is 0.60 (p=0.27).
period 2022-05-02–2026-02-02; cost=5bps
sharpe_ratio0.60
cite ↗ /cite/momentum-cross-sectional-jp-all-fact-best-sharpevia r-momentum-cross-sectional-jp-all-0585
Median Sharpe across 480 grid runs is -0.33.
Full grid of 480 parameter combinations.
sharpe_ratio-0.33
Median Sharpe in DOWN regime is 0.02 across 480 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.02
Median Sharpe in FLAT regime is -0.45 across 480 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.45
Median Sharpe in UP regime is -0.15 across 480 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.15

Runs (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.13+0.99-0.27-2.34
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.33-0.26-0.27-2.34
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.39+0.63-0.50-2.88
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.56-0.41-0.50-2.88
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.55-0.55-0.56-0.87
formation_days=60, holding_days=1, n_stocks=10, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0012
cost_bps: 5
n_stocks: 10
skip_days: 0
+0.29+1.72-0.10+4.22
formation_days=60, holding_days=5, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0051
cost_bps: 10
n_stocks: 5
skip_days: 0
-0.08+0.27-0.09-1.32
formation_days=60, holding_days=10, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0097
cost_bps: 5
n_stocks: 5
skip_days: 0
+0.06+0.34-0.20+2.14
formation_days=60, holding_days=10, n_stocks=10, skip_days=21, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0119
cost_bps: 10
n_stocks: 10
skip_days: 21
+0.26+0.87-0.05+2.07
formation_days=60, holding_days=20, n_stocks=10, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0165
cost_bps: 5
n_stocks: 10
skip_days: 21
+0.34+0.32+0.22+37.27
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.31+0.01-0.49+0.23
formation_days=60, holding_days=60, n_stocks=10, skip_days=21, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0212
cost_bps: 5
n_stocks: 10
skip_days: 21
-0.51-0.43-0.33-2.23
formation_days=120, holding_days=1, n_stocks=10, skip_days=5, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0258
cost_bps: 10
n_stocks: 10
skip_days: 5
-0.99-0.37-1.16-0.98
formation_days=120, holding_days=1, n_stocks=10, skip_days=21, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0262
cost_bps: 10
n_stocks: 10
skip_days: 21
-1.65-1.87-1.80+0.95
formation_days=120, holding_days=5, n_stocks=10, skip_days=5, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0305
cost_bps: 5
n_stocks: 10
skip_days: 5
+0.13+1.09-0.14-2.24
formation_days=120, holding_days=10, n_stocks=10, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0351
cost_bps: 10
n_stocks: 10
skip_days: 0
+0.06+0.53-0.31+2.96
formation_days=120, holding_days=20, n_stocks=10, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0397
cost_bps: 5
n_stocks: 10
skip_days: 0
-0.49+0.31-1.28+9.91
formation_days=120, holding_days=60, n_stocks=5, skip_days=21, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0443
cost_bps: 10
n_stocks: 5
skip_days: 21
-0.46-0.76-0.22-1.29
formation_days=180, holding_days=1, n_stocks=5, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0489
cost_bps: 5
n_stocks: 5
skip_days: 21
-0.57+0.66-1.24+0.84
formation_days=180, holding_days=5, n_stocks=5, skip_days=5, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0535
cost_bps: 10
n_stocks: 5
skip_days: 5
-0.06+0.50-0.14-1.60
formation_days=180, holding_days=10, n_stocks=5, skip_days=5, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0581
cost_bps: 5
n_stocks: 5
skip_days: 5
+0.26+0.30+0.22+0.35
formation_days=180, holding_days=10, n_stocks=5, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0585
cost_bps: 5
n_stocks: 5
skip_days: 21
+0.60+0.29+0.50+2.45
formation_days=180, holding_days=20, n_stocks=5, skip_days=5, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-all-0628
cost_bps: 5
n_stocks: 5
skip_days: 5
-0.21-0.75-0.13+0.51
formation_days=180, holding_days=60, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-all-0674
cost_bps: 10
n_stocks: 5
skip_days: 0
-0.16-1.31+0.03+0.42
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.92-0.47-1.23-0.25
formation_days=250, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0721
cost_bps: 5
n_stocks: 5
skip_days: 0
-0.62+0.56-1.23-0.25
formation_days=250, holding_days=1, n_stocks=10, skip_days=21, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0743
cost_bps: 10
n_stocks: 10
skip_days: 21
-0.93-0.33-1.28+0.25
formation_days=250, holding_days=5, n_stocks=10, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0789
cost_bps: 5
n_stocks: 10
skip_days: 21
-0.25+0.22-0.39-1.37
formation_days=250, holding_days=10, n_stocks=10, skip_days=5, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-all-0835
cost_bps: 10
n_stocks: 10
skip_days: 5
+0.27+0.49+0.21+0.03
formation_days=250, holding_days=20, n_stocks=10, skip_days=5, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-all-0881
cost_bps: 5
n_stocks: 10
skip_days: 5
-0.24+0.50-0.77+1.45

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-07-27T03:37:03

Related strategies