qbuntuqbuntu
rejectedno_edge· equity· anomaly· calendar· seasonal

カレンダー効果(東証グロース)のバックテスト

Calendar Effects (JP Growth Stocks)

slug: calendar-effects-jp-growth

東証グロース(約495銘柄)でカレンダー効果をバックテストした。192通りの中央値 Sharpe は -0.60。p-value は 0.23。Max DD は -39.0%。期間は 2022-01-18〜2026-09-16。最良 Sharpe +4.64 は代表値ではない。

判定は rejected。中央値は promising(Sharpe > 0.5 かつ p-value < 0.05)にも marginal(Sharpe > 0.05 かつ最良 p-value < 0.10)にも届いていない。主因は no_edge。レジーム・取引回数・コストには分類されず、中央値が採用ラインに届いていない。

成績の中央値

Sharpe(中央値)
-0.60
Max DD
-39.0%
勝率
—
Alpha(年率)
—
p-value
0.23
期間: 2022-01-18 → 2026-09-16
192通りの Sharpe:中央値 -0.60最良 4.64 (代表値ではない)最悪 -3.33p25–p75 -1.30–0.47

仮説

原文は英語。

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.

採用しなかった理由

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

検証ファクト (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

検証ラン (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—

対象ユニバース

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

関連する戦略