qbuntuqbuntu
rejectedno_edge· equity· anomaly· calendar· seasonal

Calendar Effects (JP Growth Stocks)

slug: calendar-effects-jp-growth

Calendar Effects (JP Growth Stocks) backtest. Median Sharpe across 192 parameter sets is -0.60. p-value is 0.23. Max DD is -39.0%. Period: 2022-01-18 to 2026-09-16. Best Sharpe +4.64 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). Primary reason: no_edge. It is not regime, frequency, or cost, and the median does not clear the bar.

Performance summary

Sharpe (median)
-0.60
Max DD
-39.0%
Win rate
—
Alpha (ann.)
—
p-value
0.23
backtest period: 2022-01-18 → 2026-09-16
Sharpe across 192 grid runs:median -0.60best 4.64 (not representative)worst -3.33p25–p75 -1.30–0.47

Hypothesis

Tests well-known calendar anomalies: Halloween effect (LONG Nov-Apr), January effect, Turn-of-Month (LONG last/first 3 days), and Day-of-Week effects in TSE Growth Market.

Why it didn't work

Across 192 grid combinations, median Sharpe=-0.60, best=4.64. Primary failure mode: no_edge.

Facts (5)

Best grid Sharpe ratio is 4.64 (p=0.077).
period 2022-01-18–2026-09-16; cost=5bps
sharpe_ratio4.64
Median Sharpe across 192 grid runs is -0.60.
Full grid of 192 parameter combinations.
sharpe_ratio-0.60
Median Sharpe in DOWN regime is -3.16 across 192 runs.
Regime=DOWN, N225 SMA20/SMA60 classification.
sharpe_ratio-3.16
Median Sharpe in FLAT regime is -0.51 across 192 runs.
Regime=FLAT, N225 SMA20/SMA60 classification.
sharpe_ratio-0.51
Median Sharpe in UP regime is -0.71 across 192 runs.
Regime=UP, N225 SMA20/SMA60 classification.
sharpe_ratio-0.71

Runs (30)

runparamssharpeUPFLATDOWN
effect=halloween, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0000
effect: "halloween"
cost_bps: 5
n_stocks: 5
-0.08+0.50-0.12-1.38
effect=halloween, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0001
effect: "halloween"
cost_bps: 5
n_stocks: 5
-0.47-1.51-0.12-1.38
effect=halloween, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=False
r-calendar-effects-jp-growth-0002
effect: "halloween"
cost_bps: 10
n_stocks: 5
-0.61-0.09-0.65-1.81
effect=halloween, holding_days=1, n_stocks=5, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0003
effect: "halloween"
cost_bps: 10
n_stocks: 5
-0.99-2.13-0.65-1.81
effect=halloween, holding_days=1, n_stocks=20, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0011
effect: "halloween"
cost_bps: 10
n_stocks: 20
-1.61-3.24-1.11-2.87
effect=halloween, holding_days=1, n_stocks=50, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0012
effect: "halloween"
cost_bps: 5
n_stocks: 50
-0.67-0.44-0.59-1.78
effect=halloween, holding_days=5, n_stocks=10, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0020
effect: "halloween"
cost_bps: 5
n_stocks: 10
-1.27-3.09-0.46-2.95
effect=halloween, holding_days=5, n_stocks=50, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0028
effect: "halloween"
cost_bps: 5
n_stocks: 50
-1.40-2.52-0.60-4.91
effect=halloween, holding_days=20, n_stocks=5, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0032
effect: "halloween"
cost_bps: 5
n_stocks: 5
-0.75-1.35-0.61-1.37
effect=halloween, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0037
effect: "halloween"
cost_bps: 5
n_stocks: 10
-0.71-2.80-0.55-0.93
effect=halloween, holding_days=20, n_stocks=50, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0045
effect: "halloween"
cost_bps: 5
n_stocks: 50
-0.41-1.04-0.32-0.44
effect=january, holding_days=1, n_stocks=10, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0053
effect: "january"
cost_bps: 5
n_stocks: 10
+0.85-1.05+2.97—
effect=january, holding_days=1, n_stocks=50, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0061
effect: "january"
cost_bps: 5
n_stocks: 50
+0.50-0.66+1.63—
effect=january, holding_days=5, n_stocks=10, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0069
effect: "january"
cost_bps: 5
n_stocks: 10
-0.02+2.07-2.53—
effect=january, holding_days=5, n_stocks=50, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0077
effect: "january"
cost_bps: 5
n_stocks: 50
+0.43+1.36-0.18—
effect=january, holding_days=20, n_stocks=10, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0085
effect: "january"
cost_bps: 5
n_stocks: 10
+3.72+8.27+9.41—
effect=january, holding_days=20, n_stocks=20, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0088
effect: "january"
cost_bps: 5
n_stocks: 20
+4.64+71.57+2.06—
effect=january, holding_days=20, n_stocks=50, cost_bps=10, regime_gate=False
r-calendar-effects-jp-growth-0094
effect: "january"
cost_bps: 10
n_stocks: 50
+3.05+4.40+1.86—
effect=turn_of_month, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0096
effect: "turn_of_month"
cost_bps: 5
n_stocks: 5
-0.21+1.40-0.46-2.92
effect=turn_of_month, holding_days=1, n_stocks=10, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0103
effect: "turn_of_month"
cost_bps: 10
n_stocks: 10
-1.93-2.09-1.55-4.38
effect=turn_of_month, holding_days=1, n_stocks=50, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0111
effect: "turn_of_month"
cost_bps: 10
n_stocks: 50
-2.11-3.31-1.43-5.96
effect=turn_of_month, holding_days=5, n_stocks=10, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0119
effect: "turn_of_month"
cost_bps: 10
n_stocks: 10
-1.79-0.66-1.43-10.95
effect=turn_of_month, holding_days=5, n_stocks=50, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0127
effect: "turn_of_month"
cost_bps: 10
n_stocks: 50
-1.51-0.31-1.36-5.71
effect=turn_of_month, holding_days=20, n_stocks=10, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0135
effect: "turn_of_month"
cost_bps: 10
n_stocks: 10
+0.52-0.47+0.91-5.12
effect=turn_of_month, holding_days=20, n_stocks=50, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0143
effect: "turn_of_month"
cost_bps: 10
n_stocks: 50
+0.03-0.73+0.27-0.84
effect=day_of_week, holding_days=1, n_stocks=5, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0144
effect: "day_of_week"
cost_bps: 5
n_stocks: 5
-1.80-2.52-1.48-1.82
effect=day_of_week, holding_days=1, n_stocks=20, cost_bps=5, regime_gate=False
r-calendar-effects-jp-growth-0152
effect: "day_of_week"
cost_bps: 5
n_stocks: 20
-2.40-2.70-2.05-4.05
effect=day_of_week, holding_days=1, n_stocks=20, cost_bps=10, regime_gate=True
r-calendar-effects-jp-growth-0155
effect: "day_of_week"
cost_bps: 10
n_stocks: 20
-3.33-5.80-2.70-4.58
effect=day_of_week, holding_days=5, n_stocks=5, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0161
effect: "day_of_week"
cost_bps: 5
n_stocks: 5
-1.82-1.20-1.64—
effect=day_of_week, holding_days=5, n_stocks=20, cost_bps=5, regime_gate=True
r-calendar-effects-jp-growth-0169
effect: "day_of_week"
cost_bps: 5
n_stocks: 20
-1.28-0.81-1.20—

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-09-24T21:54:27

Related strategies