qbuntuqbuntu
rejectedregime_dependent· equity· factor· fundamental· growth

Sales Growth Rank (JP All Stocks)

slug: sales-growth-rank-jp-all

Sales Growth Rank (JP All Stocks) backtest. Median Sharpe across 48 parameter sets is -0.23. p-value is 0.46. Max DD is -8.1%. Period: 2025-01-06 to 2026-09-01. Best Sharpe +1.00 is not the representative figure.

Verdict: rejected. The median reaches neither promising (Sharpe > 0.5 and p-value < 0.05) nor marginal (Sharpe > 0.05 and best p-value < 0.10). Results split across up, flat, and down markets, so the median is not stable.

Performance summary

Sharpe (median)
-0.23
Max DD
-8.1%
Win rate
—
Alpha (ann.)
—
p-value
0.46
backtest period: 2025-01-06 → 2026-09-01
Sharpe across 48 grid runs:median -0.23best 1.00 (not representative)worst -1.28p25–p75 -0.59–0.56

Hypothesis

Top-line growth is the simplest growth signal retail screens sort on; ranking on year-over-year sales growth tests whether revenue growth alone predicts returns, or is already priced in (the classic growth-factor disappointment).

Why it didn't work

Across 48 grid combinations, median Sharpe=-0.23, best=1.00. Primary failure mode: regime_dependent.

Facts (5)

Best grid Sharpe ratio is 1.00 (p=0.22).
period 2025-01-06–2026-09-01; cost=5bps
sharpe_ratio1
Median Sharpe across 48 grid runs is -0.23.
Full grid of 48 parameter combinations.
sharpe_ratio-0.23
Median Sharpe in DOWN regime is 1.06 across 48 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio1.06
Median Sharpe in FLAT regime is -0.49 across 48 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.49
Median Sharpe in UP regime is 0.07 across 48 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio0.07

Runs (30)

runparamssharpeUPFLATDOWN
n_stocks=5, cost_bps=5, regime_gate=False, holding_days=1
r-sales-growth-rank-jp-all-0000
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.84+2.52-0.09+2.07
n_stocks=5, cost_bps=5, regime_gate=False, holding_days=5
r-sales-growth-rank-jp-all-0001
cost_bps: 5
n_stocks: 5
regime_gate: false
+0.09+0.35-0.71+2.49
n_stocks=5, cost_bps=5, regime_gate=False, holding_days=20
r-sales-growth-rank-jp-all-0002
cost_bps: 5
n_stocks: 5
regime_gate: false
-0.80-0.51-1.73+2.54
n_stocks=5, cost_bps=5, regime_gate=True, holding_days=1
r-sales-growth-rank-jp-all-0003
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.19+0.11-0.09+2.07
n_stocks=5, cost_bps=5, regime_gate=True, holding_days=5
r-sales-growth-rank-jp-all-0004
cost_bps: 5
n_stocks: 5
regime_gate: true
+0.61+2.93-0.71+2.49
n_stocks=5, cost_bps=5, regime_gate=True, holding_days=20
r-sales-growth-rank-jp-all-0005
cost_bps: 5
n_stocks: 5
regime_gate: true
-0.90-0.78-1.73+2.54
n_stocks=5, cost_bps=10, regime_gate=False, holding_days=1
r-sales-growth-rank-jp-all-0006
cost_bps: 10
n_stocks: 5
regime_gate: false
+0.59+2.12-0.26+1.64
n_stocks=5, cost_bps=10, regime_gate=False, holding_days=5
r-sales-growth-rank-jp-all-0007
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.01+0.20-0.78+2.36
n_stocks=5, cost_bps=10, regime_gate=False, holding_days=20
r-sales-growth-rank-jp-all-0008
cost_bps: 10
n_stocks: 5
regime_gate: false
-0.85-0.58-1.78+2.44
n_stocks=5, cost_bps=10, regime_gate=True, holding_days=1
r-sales-growth-rank-jp-all-0009
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.04+0.03-0.26+1.64
n_stocks=5, cost_bps=10, regime_gate=True, holding_days=5
r-sales-growth-rank-jp-all-0010
cost_bps: 10
n_stocks: 5
regime_gate: true
+0.53+2.83-0.78+2.36
n_stocks=5, cost_bps=10, regime_gate=True, holding_days=20
r-sales-growth-rank-jp-all-0011
cost_bps: 10
n_stocks: 5
regime_gate: true
-0.94-0.81-1.78+2.44
n_stocks=10, cost_bps=5, regime_gate=False, holding_days=1
r-sales-growth-rank-jp-all-0012
cost_bps: 5
n_stocks: 10
regime_gate: false
-0.18-0.44+0.19-0.37
n_stocks=10, cost_bps=5, regime_gate=False, holding_days=5
r-sales-growth-rank-jp-all-0013
cost_bps: 5
n_stocks: 10
regime_gate: false
+0.57+1.40-0.10+0.95
n_stocks=10, cost_bps=5, regime_gate=False, holding_days=20
r-sales-growth-rank-jp-all-0014
cost_bps: 5
n_stocks: 10
regime_gate: false
-0.36+0.61-1.85+2.70
n_stocks=10, cost_bps=5, regime_gate=True, holding_days=1
r-sales-growth-rank-jp-all-0015
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.25-0.41+0.19-0.37
n_stocks=10, cost_bps=5, regime_gate=True, holding_days=5
r-sales-growth-rank-jp-all-0016
cost_bps: 5
n_stocks: 10
regime_gate: true
+0.80+1.93-0.10+0.95
n_stocks=10, cost_bps=5, regime_gate=True, holding_days=20
r-sales-growth-rank-jp-all-0017
cost_bps: 5
n_stocks: 10
regime_gate: true
-0.79-0.68-1.85+2.70
n_stocks=10, cost_bps=10, regime_gate=False, holding_days=1
r-sales-growth-rank-jp-all-0018
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.46-0.96-0.12-0.51
n_stocks=10, cost_bps=10, regime_gate=False, holding_days=5
r-sales-growth-rank-jp-all-0019
cost_bps: 10
n_stocks: 10
regime_gate: false
+0.44+1.21-0.21+0.83
n_stocks=10, cost_bps=10, regime_gate=False, holding_days=20
r-sales-growth-rank-jp-all-0020
cost_bps: 10
n_stocks: 10
regime_gate: false
-0.45+0.48-1.92+2.59
n_stocks=10, cost_bps=10, regime_gate=True, holding_days=1
r-sales-growth-rank-jp-all-0021
cost_bps: 10
n_stocks: 10
regime_gate: true
-0.42-0.49-0.12-0.51
n_stocks=10, cost_bps=10, regime_gate=True, holding_days=5
r-sales-growth-rank-jp-all-0022
cost_bps: 10
n_stocks: 10
regime_gate: true
+0.70+1.85-0.21+0.83
n_stocks=10, cost_bps=10, regime_gate=True, holding_days=20
r-sales-growth-rank-jp-all-0023
cost_bps: 10
n_stocks: 10
regime_gate: true
-0.85-0.72-1.92+2.59
n_stocks=20, cost_bps=5, regime_gate=False, holding_days=1
r-sales-growth-rank-jp-all-0024
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.14-0.70+1.18-0.53
n_stocks=20, cost_bps=5, regime_gate=False, holding_days=5
r-sales-growth-rank-jp-all-0025
cost_bps: 5
n_stocks: 20
regime_gate: false
+0.73+3.09+1.11-0.51
n_stocks=20, cost_bps=5, regime_gate=False, holding_days=20
r-sales-growth-rank-jp-all-0026
cost_bps: 5
n_stocks: 20
regime_gate: false
-0.21+0.35-1.13+2.50
n_stocks=50, cost_bps=5, regime_gate=False, holding_days=1
r-sales-growth-rank-jp-all-0036
cost_bps: 5
n_stocks: 50
regime_gate: false
-0.79-0.88-1.06-0.52
n_stocks=50, cost_bps=5, regime_gate=True, holding_days=5
r-sales-growth-rank-jp-all-0040
cost_bps: 5
n_stocks: 50
regime_gate: true
+1.00+1.84+0.09+0.12
n_stocks=50, cost_bps=10, regime_gate=False, holding_days=1
r-sales-growth-rank-jp-all-0042
cost_bps: 10
n_stocks: 50
regime_gate: false
-1.28-1.59-1.58-0.78

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-26T06:05:07

Related strategies