qbuntuqbuntu
rejectedregime_dependent· equity· fundamental· momentum· value

Earnings Yield x Momentum (JP Growth Stocks)

slug: earnings-yield-momentum-jp-growth
performance summary
Sharpe (median)
-0.15
Max DD
-8.5%
Win rate
Alpha (ann.)
p-value
0.64
backtest period: 2024-01-042026-06-01
Sharpe across 144 grid runs:median -0.15best 0.99 (not representative)worst -1.16p25–p75 -0.370.15

Hypothesis

Value and momentum are individually noisy but historically complementary; requiring both a high earnings yield and positive price momentum tests whether the intersection avoids value traps better than either signal alone.

Why it didn't work

Across 144 grid combinations, median Sharpe=-0.15, best=0.99. Primary failure mode: regime_dependent.

Facts (5)

Best grid Sharpe ratio is 0.99 (p=0.13).
period 2024-01-04–2026-06-01; cost=5bps
sharpe_ratio0.99
cite ↗ /cite/earnings-yield-momentum-jp-growth-fact-best-sharpevia r-earnings-yield-momentum-jp-growth-0100
Median Sharpe across 144 grid runs is -0.15.
Full grid of 144 parameter combinations.
sharpe_ratio-0.15
Median Sharpe in DOWN regime is -1.32 across 144 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-1.32
Median Sharpe in FLAT regime is 0.34 across 144 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.34
Median Sharpe in UP regime is -0.36 across 144 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.36

Runs (30)

runparamssharpeUPFLATDOWN
momentum_days=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1
r-earnings-yield-momentum-jp-growth-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.24-0.07-0.45+0.39
momentum_days=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=5
r-earnings-yield-momentum-jp-growth-0001
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.18-0.66-0.20+1.63
momentum_days=20, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=20
r-earnings-yield-momentum-jp-growth-0002
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.18+0.28+0.15-0.10
momentum_days=20, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=1
r-earnings-yield-momentum-jp-growth-0003
cost_bps: 5
n_stocks: 5
regime_gate: true
-0.58-1.19-0.45+0.39
momentum_days=20, n_stocks=5, cost_bps=10, regime_gate=False, holding_days=1
r-earnings-yield-momentum-jp-growth-0006
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.42-0.29-0.60+0.23
momentum_days=20, n_stocks=5, cost_bps=10, regime_gate=True, holding_days=5
r-earnings-yield-momentum-jp-growth-0010
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.40-1.30-0.30+1.49
momentum_days=20, n_stocks=10, cost_bps=5, regime_gate=True, holding_days=5
r-earnings-yield-momentum-jp-growth-0016
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.07-0.09+0.07-1.37
momentum_days=20, n_stocks=10, cost_bps=10, regime_gate=True, holding_days=5
r-earnings-yield-momentum-jp-growth-0022
cost_bps: 10
n_stocks: 10
regime_gate: true
-0.22-0.18-0.10-1.71
momentum_days=20, n_stocks=20, cost_bps=5, regime_gate=True, holding_days=5
r-earnings-yield-momentum-jp-growth-0028
cost_bps: 5
n_stocks: 20
regime_gate: true
+0.59+0.01+0.91+0.45
momentum_days=20, n_stocks=20, cost_bps=10, regime_gate=True, holding_days=5
r-earnings-yield-momentum-jp-growth-0034
cost_bps: 10
n_stocks: 20
regime_gate: true
+0.42-0.11+0.73+0.15
momentum_days=20, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=1
r-earnings-yield-momentum-jp-growth-0036
cost_bps: 5
n_stocks: 50
regime_gate: false
+0.11-0.72+0.71+0.80
momentum_days=20, n_stocks=50, cost_bps=5, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0041
cost_bps: 5
n_stocks: 50
regime_gate: true
-0.12-0.51+0.27+0.28
momentum_days=20, n_stocks=50, cost_bps=10, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0047
cost_bps: 10
n_stocks: 50
regime_gate: true
-0.27-0.58+0.04-0.06
momentum_days=60, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0053
cost_bps: 5
n_stocks: 5
regime_gate: true
-0.51+0.43-0.39-13.45
momentum_days=60, n_stocks=5, cost_bps=10, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0059
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.57+0.39-0.46-13.67
momentum_days=60, n_stocks=10, cost_bps=5, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0065
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.13-0.23+0.42-6.46
momentum_days=60, n_stocks=10, cost_bps=10, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0071
cost_bps: 10
n_stocks: 10
regime_gate: true
-0.20-0.27+0.35-6.65
momentum_days=60, n_stocks=20, cost_bps=5, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0077
cost_bps: 5
n_stocks: 20
regime_gate: true
+0.02+0.31+0.08-3.20
momentum_days=60, n_stocks=20, cost_bps=10, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0083
cost_bps: 10
n_stocks: 20
regime_gate: true
-0.07+0.26-0.06-3.45
momentum_days=60, n_stocks=50, cost_bps=5, regime_gate=True, holding_days=20
r-earnings-yield-momentum-jp-growth-0089
cost_bps: 5
n_stocks: 50
regime_gate: true
+0.06-0.16+0.15+3.20
momentum_days=60, n_stocks=50, cost_bps=10, regime_gate=False, holding_days=5
r-earnings-yield-momentum-jp-growth-0091
cost_bps: 10
n_stocks: 50
regime_gate: false
-1.16-6.18+0.42-2.31
momentum_days=120, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1
r-earnings-yield-momentum-jp-growth-0096
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.20-0.28+1.03-2.10
momentum_days=120, n_stocks=5, cost_bps=5, regime_gate=False, holding_days=5
r-earnings-yield-momentum-jp-growth-0097
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.64-0.36+1.70-0.06
momentum_days=120, n_stocks=5, cost_bps=5, regime_gate=True, holding_days=5
r-earnings-yield-momentum-jp-growth-0100
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.99+0.21+1.70-0.06
momentum_days=120, n_stocks=5, cost_bps=10, regime_gate=False, holding_days=20
r-earnings-yield-momentum-jp-growth-0104
cost_bps: 10
n_stocks: 5
regime_gate: false
+0.27-0.06+0.72-1.06
momentum_days=120, n_stocks=10, cost_bps=5, regime_gate=False, holding_days=20
r-earnings-yield-momentum-jp-growth-0110
cost_bps: 5
n_stocks: 10
regime_gate: false
-0.34+0.08-0.51-1.91
momentum_days=120, n_stocks=10, cost_bps=10, regime_gate=False, holding_days=20
r-earnings-yield-momentum-jp-growth-0116
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.42-0.00-0.58-2.18
momentum_days=120, n_stocks=20, cost_bps=5, regime_gate=False, holding_days=20
r-earnings-yield-momentum-jp-growth-0122
cost_bps: 5
n_stocks: 20
regime_gate: false
+0.22+0.91+0.15-10.91
momentum_days=120, n_stocks=20, cost_bps=10, regime_gate=False, holding_days=20
r-earnings-yield-momentum-jp-growth-0128
cost_bps: 10
n_stocks: 20
regime_gate: false
+0.10+0.77+0.04-11.78
momentum_days=120, n_stocks=50, cost_bps=5, regime_gate=False, holding_days=20
r-earnings-yield-momentum-jp-growth-0134
cost_bps: 5
n_stocks: 50
regime_gate: false
+0.04+1.06-0.02-6.81

Target universe

Tokyo Stock Exchange Growth Market, ~495 stocks, tv >= 30M JPY; fundamentals from J-Quants financial statements (coverage from 2023-12)

Related strategies

source: qbuntu-analysis · kabu STATION REST API + J-Quants daily bars
computed asof: 2026-08-03T01:03:13

Related strategies