qbuntuqbuntu

Sector Rotation / Sector Momentum (JP Growth Stocks)

slug: sector-rotation-jp-growth
performance summary
Sharpe (median)
-0.38
Max DD
-19.2%
Win rate
Alpha (ann.)
p-value
0.36
backtest period: 2022-03-012026-06-01
Sharpe across 576 grid runs:median -0.38best 0.97 (not representative)worst -1.68p25–p75 -0.66-0.10

Hypothesis

Cross-sectional sector momentum: group stocks by TSE ticker-code sector, compute sector-level momentum, LONG top sectors, SHORT bottom sectors. Tests equal-sector, equal-stock, and cap-weighted approaches.

Why it didn't work

Across 576 grid combinations, median Sharpe=-0.38, best=0.97. Primary failure mode: no_edge.

Facts (7)

Average monthly return correlation with other strategies in DOWN regime: -0.04
Pairwise Pearson correlation of monthly returns across 42 strategies, filtered to DOWN regime months (N=3, N225 < SMA20 < SMA60)
correlation-0.04
Average monthly return correlation with other strategies (full period): 0.09
Pairwise Pearson correlation of monthly returns across 42 strategies, full backtest period
correlation0.09
Best grid Sharpe ratio is 0.97 (p=0.053).
period 2022-03-01–2026-06-01; cost=5bps
sharpe_ratio0.97
Median Sharpe across 576 grid runs is -0.38.
Full grid of 576 parameter combinations.
sharpe_ratio-0.38
Median Sharpe in DOWN regime is -2.32 across 576 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-2.32
Median Sharpe in FLAT regime is -0.31 across 576 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.31
Median Sharpe in UP regime is -0.23 across 576 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.23

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-growth-0000
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
-0.80-0.12-1.09-1.34
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0001
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
-0.78+0.33-1.09-1.34
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=10, regime_gate=False
r-sector-rotation-jp-growth-0002
cost_bps: 10
n_sectors: 2
weighting: "equal_sector"
-0.96-0.24-1.25-1.54
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=10, regime_gate=True
r-sector-rotation-jp-growth-0003
cost_bps: 10
n_sectors: 2
weighting: "equal_sector"
-0.93+0.24-1.25-1.54
formation_days=20, holding_days=5, n_sectors=2, weighting=equal_stock, cost_bps=5, regime_gate=False
r-sector-rotation-jp-growth-0004
cost_bps: 5
n_sectors: 2
weighting: "equal_stock"
-1.10-0.58-1.18-1.85
formation_days=20, holding_days=5, n_sectors=2, weighting=cap_weight, cost_bps=5, regime_gate=False
r-sector-rotation-jp-growth-0008
cost_bps: 5
n_sectors: 2
weighting: "cap_weight"
-1.11-0.63-1.35-0.21
formation_days=20, holding_days=5, n_sectors=4, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-growth-0024
cost_bps: 5
n_sectors: 4
weighting: "equal_sector"
-0.59+0.01-0.95+3.22
formation_days=20, holding_days=5, n_sectors=4, weighting=cap_weight, cost_bps=10, regime_gate=False
r-sector-rotation-jp-growth-0034
cost_bps: 10
n_sectors: 4
weighting: "cap_weight"
-1.68-1.17-1.77-2.18
formation_days=20, holding_days=5, n_sectors=4, weighting=cap_weight, cost_bps=10, regime_gate=True
r-sector-rotation-jp-growth-0035
cost_bps: 10
n_sectors: 4
weighting: "cap_weight"
-1.16-0.03-1.77-2.18
formation_days=20, holding_days=10, n_sectors=4, weighting=equal_sector, cost_bps=10, regime_gate=True
r-sector-rotation-jp-growth-0075
cost_bps: 10
n_sectors: 4
weighting: "equal_sector"
-0.14+0.55-0.62+0.55
formation_days=20, holding_days=20, n_sectors=3, weighting=equal_stock, cost_bps=10, regime_gate=True
r-sector-rotation-jp-growth-0115
cost_bps: 10
n_sectors: 3
weighting: "equal_stock"
-0.42-0.12-0.67+0.68
formation_days=20, holding_days=60, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-growth-0144
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
-0.18+0.15-0.31+0.01
formation_days=20, holding_days=60, n_sectors=3, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-growth-0156
cost_bps: 5
n_sectors: 3
weighting: "equal_sector"
-0.09+0.31-0.24+0.04
formation_days=60, holding_days=5, n_sectors=2, weighting=equal_stock, cost_bps=5, regime_gate=False
r-sector-rotation-jp-growth-0196
cost_bps: 5
n_sectors: 2
weighting: "equal_stock"
-1.00-1.38-0.58-6.12
formation_days=60, holding_days=5, n_sectors=4, weighting=cap_weight, cost_bps=5, regime_gate=False
r-sector-rotation-jp-growth-0224
cost_bps: 5
n_sectors: 4
weighting: "cap_weight"
-0.25-0.38-0.19-0.49
formation_days=60, holding_days=10, n_sectors=2, weighting=cap_weight, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0249
cost_bps: 5
n_sectors: 2
weighting: "cap_weight"
+0.97+0.52+1.27+0.03
formation_days=60, holding_days=10, n_sectors=4, weighting=equal_sector, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0265
cost_bps: 5
n_sectors: 4
weighting: "equal_sector"
+0.05+0.35+0.00-2.52
formation_days=60, holding_days=20, n_sectors=3, weighting=equal_stock, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0305
cost_bps: 5
n_sectors: 3
weighting: "equal_stock"
-0.09+0.03-0.06-2.34
formation_days=60, holding_days=60, n_sectors=2, weighting=cap_weight, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0345
cost_bps: 5
n_sectors: 2
weighting: "cap_weight"
+0.34-0.60+0.76+0.86
formation_days=120, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0385
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
-0.65-0.18-0.55-2.95
formation_days=120, holding_days=5, n_sectors=4, weighting=equal_stock, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0413
cost_bps: 5
n_sectors: 4
weighting: "equal_stock"
-0.48+0.13-1.04-0.20
formation_days=120, holding_days=10, n_sectors=3, weighting=cap_weight, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0453
cost_bps: 5
n_sectors: 3
weighting: "cap_weight"
+0.03+0.45-0.05-3.07
formation_days=120, holding_days=20, n_sectors=3, weighting=equal_sector, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0493
cost_bps: 5
n_sectors: 3
weighting: "equal_sector"
-0.75-0.48-0.78-1.56
formation_days=120, holding_days=60, n_sectors=2, weighting=equal_stock, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0533
cost_bps: 5
n_sectors: 2
weighting: "equal_stock"
+0.05-0.73+0.37-1.35
formation_days=120, holding_days=60, n_sectors=4, weighting=cap_weight, cost_bps=5, regime_gate=True
r-sector-rotation-jp-growth-0561
cost_bps: 5
n_sectors: 4
weighting: "cap_weight"
-0.71-1.62-0.41-2.59
formation_days=250, holding_days=5, n_sectors=2, weighting=equal_sector, cost_bps=5, regime_gate=False
r-sector-rotation-jp-growth-0576
cost_bps: 5
n_sectors: 2
weighting: "equal_sector"
+0.63+1.07+1.00-2.20
formation_days=250, holding_days=5, n_sectors=4, weighting=equal_sector, cost_bps=10, regime_gate=False
r-sector-rotation-jp-growth-0602
cost_bps: 10
n_sectors: 4
weighting: "equal_sector"
-0.80-0.97-0.42-1.97
formation_days=250, holding_days=10, n_sectors=3, weighting=equal_stock, cost_bps=10, regime_gate=False
r-sector-rotation-jp-growth-0642
cost_bps: 10
n_sectors: 3
weighting: "equal_stock"
-0.60-1.05-0.23-2.62
formation_days=250, holding_days=20, n_sectors=2, weighting=cap_weight, cost_bps=10, regime_gate=False
r-sector-rotation-jp-growth-0682
cost_bps: 10
n_sectors: 2
weighting: "cap_weight"
-0.24-0.04+0.11-7.63
formation_days=250, holding_days=60, n_sectors=2, weighting=equal_sector, cost_bps=10, regime_gate=False
r-sector-rotation-jp-growth-0722
cost_bps: 10
n_sectors: 2
weighting: "equal_sector"
-0.09+0.01+0.37-6.98

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

Related strategies