qbuntuqbuntu

Cross-Sectional Momentum (JP Growth Stocks)

slug: momentum-cross-sectional-jp-growth
performance summary
Sharpe (median)
-0.46
Max DD
-29.5%
Win rate
Alpha (ann.)
p-value
0.33
backtest period: 2022-05-022026-06-01
Sharpe across 960 grid runs:median -0.46best 0.91 (not representative)worst -1.77p25–p75 -0.76-0.14

Hypothesis

Jegadeesh & Titman (1993): stocks with high past returns continue to outperform over intermediate horizons. LONG winners, SHORT losers. Tests cross-sectional momentum in TSE Growth Market.

Why it didn't work

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

Facts (7)

Average monthly return correlation with other strategies in DOWN regime: 0.11
Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
correlation0.11
Average monthly return correlation with other strategies (full period): 0.02
Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
correlation0.02
Best grid Sharpe ratio is 0.91 (p=0.1).
period 2022-05-02–2026-06-01; cost=5bps
sharpe_ratio0.91
cite ↗ /cite/momentum-cross-sectional-jp-growth-fact-best-sharpevia r-momentum-cross-sectional-jp-growth-0789
Median Sharpe across 960 grid runs is -0.46.
Full grid of 960 parameter combinations.
sharpe_ratio-0.46
Median Sharpe in DOWN regime is -1.71 across 960 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-1.71
Median Sharpe in FLAT regime is -0.42 across 960 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.42
Median Sharpe in UP regime is -0.27 across 960 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.27

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-growth-0000
cost_bps: 5
n_stocks: 5
skip_days: 0
-1.12-0.21-1.66-3.71
formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-growth-0001
cost_bps: 5
n_stocks: 5
skip_days: 0
-1.27-0.65-1.66-3.71
formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-growth-0002
cost_bps: 10
n_stocks: 5
skip_days: 0
-1.24-0.30-1.80-4.04
formation_days=60, holding_days=1, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-growth-0003
cost_bps: 10
n_stocks: 5
skip_days: 0
-1.37-0.69-1.80-4.04
formation_days=60, holding_days=1, n_stocks=5, skip_days=21, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-growth-0008
cost_bps: 5
n_stocks: 5
skip_days: 21
-0.64-0.87-0.78+1.53
formation_days=60, holding_days=1, n_stocks=50, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-growth-0036
cost_bps: 5
n_stocks: 50
skip_days: 0
-1.25-1.44-1.03-5.13
formation_days=60, holding_days=5, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-growth-0050
cost_bps: 10
n_stocks: 5
skip_days: 0
-1.06-1.75-0.79-2.38
formation_days=60, holding_days=5, n_stocks=50, skip_days=21, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-growth-0095
cost_bps: 10
n_stocks: 50
skip_days: 21
-0.51+0.21-1.04+0.18
formation_days=60, holding_days=10, n_stocks=50, skip_days=21, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-growth-0140
cost_bps: 5
n_stocks: 50
skip_days: 21
+0.16+0.27+0.12-0.29
formation_days=60, holding_days=20, n_stocks=50, skip_days=5, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-growth-0185
cost_bps: 5
n_stocks: 50
skip_days: 5
+0.20+0.24+0.29-0.67
formation_days=60, holding_days=60, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-growth-0192
cost_bps: 5
n_stocks: 5
skip_days: 0
-0.04-0.27+0.05-1.35
formation_days=60, holding_days=60, n_stocks=50, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-growth-0231
cost_bps: 10
n_stocks: 50
skip_days: 0
+0.06-0.41+0.37-2.13
formation_days=120, holding_days=1, n_stocks=50, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-growth-0276
cost_bps: 5
n_stocks: 50
skip_days: 0
-0.88-0.89-0.71-7.42
formation_days=120, holding_days=5, n_stocks=20, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-growth-0321
cost_bps: 5
n_stocks: 20
skip_days: 21
-0.06+0.22-0.15-0.52
formation_days=120, holding_days=10, n_stocks=20, skip_days=5, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-growth-0366
cost_bps: 10
n_stocks: 20
skip_days: 5
-0.27-0.45-0.08-2.53
formation_days=120, holding_days=20, n_stocks=20, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-growth-0411
cost_bps: 10
n_stocks: 20
skip_days: 0
-0.48-0.30-0.43-1.92
formation_days=120, holding_days=60, n_stocks=20, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-growth-0456
cost_bps: 5
n_stocks: 20
skip_days: 0
-0.44-0.26-0.35-2.96
formation_days=180, holding_days=1, n_stocks=10, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-growth-0501
cost_bps: 5
n_stocks: 10
skip_days: 21
-0.27-0.46-0.03-2.16
formation_days=180, holding_days=5, n_stocks=10, skip_days=5, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-growth-0546
cost_bps: 10
n_stocks: 10
skip_days: 5
-0.57-0.17-0.56-1.78
formation_days=180, holding_days=10, n_stocks=10, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-growth-0591
cost_bps: 10
n_stocks: 10
skip_days: 0
-0.44-0.03-0.36-1.78
formation_days=180, holding_days=20, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-growth-0626
cost_bps: 10
n_stocks: 5
skip_days: 0
-1.77-1.23-1.66-8.09
formation_days=180, holding_days=20, n_stocks=10, skip_days=0, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-growth-0637
cost_bps: 5
n_stocks: 10
skip_days: 0
-0.71-1.22-0.27-3.24
formation_days=180, holding_days=60, n_stocks=5, skip_days=21, cost_bps=10, regime_gate=False
r-momentum-cross-sectional-jp-growth-0682
cost_bps: 10
n_stocks: 5
skip_days: 21
-0.67-1.16-0.36-1.92
formation_days=250, holding_days=1, n_stocks=5, skip_days=0, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-growth-0720
cost_bps: 5
n_stocks: 5
skip_days: 0
-0.15+1.38-1.06-1.55
formation_days=250, holding_days=1, n_stocks=5, skip_days=21, cost_bps=5, regime_gate=False
r-momentum-cross-sectional-jp-growth-0728
cost_bps: 5
n_stocks: 5
skip_days: 21
+0.09+1.02-1.05+2.22
formation_days=250, holding_days=5, n_stocks=5, skip_days=5, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-growth-0773
cost_bps: 5
n_stocks: 5
skip_days: 5
+0.75+2.24+0.06-0.89
formation_days=250, holding_days=5, n_stocks=10, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-growth-0789
cost_bps: 5
n_stocks: 10
skip_days: 21
+0.91+3.05-0.03-0.96
formation_days=250, holding_days=10, n_stocks=5, skip_days=0, cost_bps=10, regime_gate=True
r-momentum-cross-sectional-jp-growth-0819
cost_bps: 10
n_stocks: 5
skip_days: 0
-0.68+1.50-1.50-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-growth-0864
cost_bps: 5
n_stocks: 5
skip_days: 0
-1.05+0.32-1.70-2.00
formation_days=250, holding_days=20, n_stocks=50, skip_days=21, cost_bps=5, regime_gate=True
r-momentum-cross-sectional-jp-growth-0909
cost_bps: 5
n_stocks: 50
skip_days: 21
-0.39-0.35-0.04-2.51

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-07-27T03:36:58

Related strategies