qbuntuqbuntu

Sector Rotation / Sector Momentum (JP All Stocks)

slug: sector-rotation-jp-all
performance summary
Sharpe (median)
+0.08
Max DD
-16.7%
Win rate
Alpha (ann.)
p-value
0.57
backtest period: 2022-03-012026-05-01
Sharpe across 384 grid runs:median 0.08best 0.94 (not representative)worst -0.94p25–p75 -0.200.30

Hypothesis

Cross-sectional sector momentum: group stocks by TSE ticker-code sector. Testing on the full Japanese stock universe.

Why it didn't work

Across 384 grid combinations, median Sharpe=0.08, best=0.94. Primary failure mode: no_edge.

Facts (5)

Best grid Sharpe ratio is 0.94 (p=0.06).
period 2022-03-01–2026-05-01; cost=5bps
sharpe_ratio0.94
Median Sharpe across 384 grid runs is 0.08.
Full grid of 384 parameter combinations.
sharpe_ratio0.08
Median Sharpe in DOWN regime is 0.07 across 384 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.07
Median Sharpe in FLAT regime is 0.01 across 384 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.01
Median Sharpe in UP regime is 0.17 across 384 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.17

Runs (30)

runparamssharpeUPFLATDOWN
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0000
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
-0.37-0.38-0.34-0.50
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=True
r-sector-rotation-jp-all-0001
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
-0.21+0.27-0.34-0.50
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=10, regime_gate=False
r-sector-rotation-jp-all-0002
cost_bps: 10
n_sectors: 2
weighting: "equal_sector"
-0.51-0.53-0.48-0.65
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=10, regime_gate=True
r-sector-rotation-jp-all-0003
cost_bps: 10
n_sectors: 2
weighting: "equal_sector"
-0.33+0.20-0.48-0.65
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_stock, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0004
cost_bps: 5
n_sectors: 2
weighting: "equal_stock"
-0.24-0.31-0.19-0.36
formation_days=20, holding_days=5, n_sectors=2, weighting=cap_weight, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0008
cost_bps: 5
n_sectors: 2
weighting: "cap_weight"
-0.19-0.64-0.06+0.14
formation_days=20, holding_days=5, n_sectors=3, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0012
cost_bps: 5
n_sectors: 3
weighting: "equal_sector"
-0.43-0.28-0.45-0.60
formation_days=20, holding_days=10, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0048
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
-0.13-0.37+0.03-0.55
formation_days=20, holding_days=10, n_sectors=3, weighting=equal_stock, cost_bps=10, regime_gate=False
r-sector-rotation-jp-all-0066
cost_bps: 10
n_sectors: 3
weighting: "equal_stock"
-0.18+0.21-0.17-1.21
formation_days=20, holding_days=10, n_sectors=3, weighting=cap_weight, cost_bps=10, regime_gate=False
r-sector-rotation-jp-all-0070
cost_bps: 10
n_sectors: 3
weighting: "cap_weight"
-0.94-0.87-0.86-2.02
formation_days=20, holding_days=20, n_sectors=3, weighting=equal_sector, cost_bps=5, regime_gate=True
r-sector-rotation-jp-all-0109
cost_bps: 5
n_sectors: 3
weighting: "equal_sector"
-0.44+0.38-0.69-1.93
formation_days=20, holding_days=60, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0144
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
+0.13-0.29+0.23+5.15
formation_days=20, holding_days=60, n_sectors=2, weighting=cap_weight, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0152
cost_bps: 5
n_sectors: 2
weighting: "cap_weight"
+0.08-0.51+0.30+4.66
formation_days=60, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=10, regime_gate=False
r-sector-rotation-jp-all-0194
cost_bps: 10
n_sectors: 2
weighting: "equal_sector"
+0.22-0.23+0.66-0.89
formation_days=60, holding_days=5, n_sectors=3, weighting=cap_weight, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0212
cost_bps: 5
n_sectors: 3
weighting: "cap_weight"
+0.78+2.13+0.35+0.00
formation_days=60, holding_days=10, n_sectors=3, weighting=equal_sector, cost_bps=10, regime_gate=False
r-sector-rotation-jp-all-0254
cost_bps: 10
n_sectors: 3
weighting: "equal_sector"
+0.33+0.96+0.02+45.52
formation_days=60, holding_days=20, n_sectors=2, weighting=cap_weight, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0296
cost_bps: 5
n_sectors: 2
weighting: "cap_weight"
+0.94+1.89+0.61-0.22
formation_days=60, holding_days=20, n_sectors=2, weighting=cap_weight, cost_bps=5, regime_gate=True
r-sector-rotation-jp-all-0297
cost_bps: 5
n_sectors: 2
weighting: "cap_weight"
+0.76+1.26+0.61-0.22
formation_days=60, holding_days=60, n_sectors=2, weighting=equal_sector, cost_bps=10, regime_gate=True
r-sector-rotation-jp-all-0339
cost_bps: 10
n_sectors: 2
weighting: "equal_sector"
+0.36+0.57+0.23+0.61
formation_days=60, holding_days=60, n_sectors=3, weighting=cap_weight, cost_bps=5, regime_gate=True
r-sector-rotation-jp-all-0357
cost_bps: 5
n_sectors: 3
weighting: "cap_weight"
-0.05+0.39-0.21-0.51
formation_days=120, holding_days=5, n_sectors=3, weighting=equal_sector, cost_bps=10, regime_gate=True
r-sector-rotation-jp-all-0399
cost_bps: 10
n_sectors: 3
weighting: "equal_sector"
+0.07+0.54-0.20+0.32
formation_days=120, holding_days=10, n_sectors=2, weighting=cap_weight, cost_bps=5, regime_gate=True
r-sector-rotation-jp-all-0441
cost_bps: 5
n_sectors: 2
weighting: "cap_weight"
-0.20-0.47-0.17+6.14
formation_days=120, holding_days=20, n_sectors=2, weighting=equal_sector, cost_bps=10, regime_gate=True
r-sector-rotation-jp-all-0483
cost_bps: 10
n_sectors: 2
weighting: "equal_sector"
+0.55+0.43+0.47+2.72
formation_days=120, holding_days=20, n_sectors=3, weighting=cap_weight, cost_bps=5, regime_gate=True
r-sector-rotation-jp-all-0501
cost_bps: 5
n_sectors: 3
weighting: "cap_weight"
-0.30+0.03-0.34-2.02
formation_days=120, holding_days=60, n_sectors=3, weighting=equal_sector, cost_bps=10, regime_gate=True
r-sector-rotation-jp-all-0543
cost_bps: 10
n_sectors: 3
weighting: "equal_sector"
+0.14-0.07+0.26+0.14
formation_days=250, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0576
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
-0.46-1.08-0.01-1.27
formation_days=250, holding_days=5, n_sectors=2, weighting=cap_weight, cost_bps=10, regime_gate=False
r-sector-rotation-jp-all-0586
cost_bps: 10
n_sectors: 2
weighting: "cap_weight"
-0.46-2.12+0.44-1.01
formation_days=250, holding_days=10, n_sectors=2, weighting=equal_stock, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0628
cost_bps: 5
n_sectors: 2
weighting: "equal_stock"
-0.48-1.68+0.07-0.13
formation_days=250, holding_days=10, n_sectors=3, weighting=cap_weight, cost_bps=10, regime_gate=False
r-sector-rotation-jp-all-0646
cost_bps: 10
n_sectors: 3
weighting: "cap_weight"
-0.56-1.17-0.53+1.16
formation_days=250, holding_days=20, n_sectors=3, weighting=equal_stock, cost_bps=5, regime_gate=False
r-sector-rotation-jp-all-0688
cost_bps: 5
n_sectors: 3
weighting: "equal_stock"
-0.07-0.28-0.10+0.51

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-29T01:08:34

Related strategies