qbuntuqbuntu
marginalno_edge· equity· factor· fundamental· value

Earnings Yield (JP All Stocks)

slug: earnings-yield-jp-all

Earnings Yield (JP All Stocks) backtest. Median Sharpe across 48 parameter sets is +0.20. p-value is 0.45. Max DD is -8.9%. Period: 2024-01-04 to 2026-09-01. Best Sharpe +1.62 is not the representative figure.

Verdict: marginal. Some parameter set has a p-value under 0.10, but the median itself misses promising (Sharpe > 0.5 and p-value < 0.05). Primary reason: no_edge. It is not regime, frequency, or cost, and the median does not clear the bar.

Performance summary

Sharpe (median)
+0.20
Max DD
-8.9%
Win rate
—
Alpha (ann.)
—
p-value
0.45
backtest period: 2024-01-04 → 2026-09-01
Sharpe across 48 grid runs:median 0.20best 1.62 (not representative)worst -1.11p25–p75 -0.25–0.54

Hypothesis

The oldest value signal: high earnings yield (E/P) portfolios outperform low ones (Basu 1977). Ranking on trailing E/P from J-Quants statements tests whether plain value pays in this universe after costs.

Why it didn't work

Across 48 grid combinations, median Sharpe=0.20, best=1.62. Primary failure mode: no_edge.

Facts (5)

Best grid Sharpe ratio is 1.62 (p=0.015).
period 2024-01-04–2026-09-01; cost=5bps
sharpe_ratio1.62
Median Sharpe across 48 grid runs is 0.20.
Full grid of 48 parameter combinations.
sharpe_ratio0.20
Median Sharpe in DOWN regime is 0.65 across 48 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio0.65
Median Sharpe in FLAT regime is 0.07 across 48 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio0.07
Median Sharpe in UP regime is -0.14 across 48 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.14

Runs (30)

runparamssharpeUPFLATDOWN
n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1
r-earnings-yield-jp-all-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.88-1.61-0.69+0.14
n_stocks=5, cost_bps=5, regime_gate=False, holding_days=5
r-earnings-yield-jp-all-0001
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.28-0.85+0.17-0.29
n_stocks=5, cost_bps=5, regime_gate=False, holding_days=20
r-earnings-yield-jp-all-0002
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.43+0.81+0.03+0.40
n_stocks=5, cost_bps=5, regime_gate=True, holding_days=1
r-earnings-yield-jp-all-0003
cost_bps: 5
n_stocks: 5
regime_gate: true
-0.72-1.12-0.69+0.14
n_stocks=5, cost_bps=5, regime_gate=True, holding_days=5
r-earnings-yield-jp-all-0004
cost_bps: 5
n_stocks: 5
regime_gate: true
-0.20-0.64+0.17-0.29
n_stocks=5, cost_bps=5, regime_gate=True, holding_days=20
r-earnings-yield-jp-all-0005
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.60+1.29+0.03+0.40
n_stocks=5, cost_bps=10, regime_gate=False, holding_days=1
r-earnings-yield-jp-all-0006
cost_bps: 10
n_stocks: 5
regime_gate: false
-1.11-1.87-0.90-0.07
n_stocks=5, cost_bps=10, regime_gate=False, holding_days=5
r-earnings-yield-jp-all-0007
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.45-1.03+0.02-0.46
n_stocks=5, cost_bps=10, regime_gate=False, holding_days=20
r-earnings-yield-jp-all-0008
cost_bps: 10
n_stocks: 5
regime_gate: false
+0.36+0.75-0.04+0.31
n_stocks=5, cost_bps=10, regime_gate=True, holding_days=1
r-earnings-yield-jp-all-0009
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.91-1.25-0.90-0.07
n_stocks=5, cost_bps=10, regime_gate=True, holding_days=5
r-earnings-yield-jp-all-0010
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.34-0.73+0.02-0.46
n_stocks=5, cost_bps=10, regime_gate=True, holding_days=20
r-earnings-yield-jp-all-0011
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.54+1.26-0.04+0.31
n_stocks=10, cost_bps=5, regime_gate=False, holding_days=1
r-earnings-yield-jp-all-0012
cost_bps: 5
n_stocks: 10
regime_gate: false
+0.05-1.45+0.60+1.50
n_stocks=10, cost_bps=5, regime_gate=False, holding_days=5
r-earnings-yield-jp-all-0013
cost_bps: 5
n_stocks: 10
regime_gate: false
+0.08-1.01+0.08+5.28
n_stocks=10, cost_bps=5, regime_gate=False, holding_days=20
r-earnings-yield-jp-all-0014
cost_bps: 5
n_stocks: 10
regime_gate: false
+0.62+1.31-0.00+1.98
n_stocks=10, cost_bps=5, regime_gate=True, holding_days=1
r-earnings-yield-jp-all-0015
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.31-0.76+0.60+1.50
n_stocks=10, cost_bps=5, regime_gate=True, holding_days=5
r-earnings-yield-jp-all-0016
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.54+0.87+0.08+5.28
n_stocks=10, cost_bps=5, regime_gate=True, holding_days=20
r-earnings-yield-jp-all-0017
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.55+1.20-0.00+1.98
n_stocks=10, cost_bps=10, regime_gate=False, holding_days=1
r-earnings-yield-jp-all-0018
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.24-1.77+0.32+1.22
n_stocks=10, cost_bps=10, regime_gate=False, holding_days=5
r-earnings-yield-jp-all-0019
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.10-1.27-0.05+4.77
n_stocks=10, cost_bps=10, regime_gate=False, holding_days=20
r-earnings-yield-jp-all-0020
cost_bps: 10
n_stocks: 10
regime_gate: false
+0.54+1.22-0.07+1.86
n_stocks=10, cost_bps=10, regime_gate=True, holding_days=1
r-earnings-yield-jp-all-0021
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.07-0.93+0.32+1.22
n_stocks=10, cost_bps=10, regime_gate=True, holding_days=5
r-earnings-yield-jp-all-0022
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.39+0.71-0.05+4.77
n_stocks=10, cost_bps=10, regime_gate=True, holding_days=20
r-earnings-yield-jp-all-0023
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.48+1.15-0.07+1.86
n_stocks=20, cost_bps=5, regime_gate=False, holding_days=1
r-earnings-yield-jp-all-0024
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.05-1.38+0.24+2.69
n_stocks=20, cost_bps=5, regime_gate=False, holding_days=5
r-earnings-yield-jp-all-0025
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.15-1.46+0.10+2.12
n_stocks=20, cost_bps=5, regime_gate=False, holding_days=20
r-earnings-yield-jp-all-0026
cost_bps: 5
n_stocks: 20
regime_gate: false
+1.20+2.79+0.56+0.71
n_stocks=20, cost_bps=5, regime_gate=True, holding_days=1
r-earnings-yield-jp-all-0027
cost_bps: 5
n_stocks: 20
regime_gate: true
+0.18-0.63+0.24+2.69
n_stocks=50, cost_bps=5, regime_gate=False, holding_days=1
r-earnings-yield-jp-all-0036
cost_bps: 5
n_stocks: 50
regime_gate: false
-0.31-0.96+0.05+0.02
n_stocks=50, cost_bps=5, regime_gate=False, holding_days=20
r-earnings-yield-jp-all-0038
cost_bps: 5
n_stocks: 50
regime_gate: false
+1.62+4.52+0.94+0.46

Target universe

Tokyo Stock Exchange all listed (Prime/Standard/Growth), ~3747 stocks; 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-09-26T05:46:58

Related strategies