先月、日本製鉄(5401)の決算で含み損になりました。。。子供の世話してたら気づいたら-8%で、こういう経験があってこの記事を書こうと思いました。「決算前後の値動きって、ちゃんと数字で見たことなかったな」と反省して、Pythonで定量化してみたのでまとめます。
なぜ僕が決算ギャンブルを定量化したいか
僕は普段、製造メーカー(トヨタ、日立、三菱重工、日本製鉄など)を中心に投資しています。決算前に「期待込みで仕込んでおこう」というやり方をしてきたんですが、これがほぼ毎回ギャンブルになっていて、勝ったり負けたり、感情が振り回されてばかり。。。
そこで、「決算前後で実際にどのくらいの値動きがあるのか」「ホールド戦略の期待値はプラスなのか」を、ちゃんと過去データで検証してみることにしました。
調べたい3つの数字
- 決算翌日のギャップ率(翌日始値 ÷ 前日終値 − 1)
- 決算後5日間の累積リターン
- 勝率(ギャップアップした回数 ÷ 全決算回数)
このうち「勝率」が50%を大きく下回るなら、決算ホールドは期待値的に微妙、ということになります。
実装:決算日リストとリターンを集計するPython
本来は決算日を有報・適時開示APIから取りたいところですが、今回はざっくり「四半期決算の典型的な月(5月・8月・11月・2月)の特定日」を手動で渡して検証します。
import yfinance as yf
import pandas as pd
ticker = "5401.T" # 日本製鉄
earnings_dates = [
"2024-05-09", "2024-08-07", "2024-11-06", "2025-02-06",
"2025-05-08", "2025-08-06", "2025-11-05", "2026-02-05",
]
df = yf.download(ticker, start="2024-01-01", end="2026-05-01", progress=False)
results = []
for d in earnings_dates:
d = pd.Timestamp(d)
if d not in df.index:
continue
prev_close = df.loc[:d, "Close"].iloc[-2]
next_open = df.loc[d:, "Open"].iloc[1] if len(df.loc[d:]) > 1 else None
if next_open is None:
continue
gap = next_open / prev_close - 1
# 5日後の累積リターン
future = df.loc[d:].iloc[1:6]["Close"]
ret5d = future.iloc[-1] / next_open - 1 if len(future) == 5 else None
results.append({"date": d, "gap": gap, "ret5d": ret5d})
res = pd.DataFrame(results)
print(res)
print(f"ギャップ平均: {res['gap'].mean():.2%}")
print(f"勝率(ギャップ>0): {(res['gap'] > 0).mean():.1%}")
print(f"5日リターン平均: {res['ret5d'].mean():.2%}")
結果:日本製鉄の場合
過去8四半期分を集計したところ、僕の環境ではざっくり次のような結果になりました(手動で日付を入れているので参考値です)。
- 翌日ギャップ平均:−0.8%
- 勝率(ギャップ>0):37%
- 5日後リターン平均:−1.5%
つまり、「決算をまたいでホールド」という僕のやり方は、過去データを見る限りジリ貧の期待値だったということです。。。痛いところを数字で突かれた感じです。
気づき:イベント前後はノーポジか、ヘッジが正解
もちろんサンプル数が少ないので統計的に確実なことは言えませんが、少なくとも「ノーリスクで決算ホールド」は危険でした。今後は決算1営業日前にポジションを軽くするか、プットでヘッジするか、いずれかを取り入れていこうと思います。
まとめ:感情ではなく数字で判断したい
−8%食らったときの動揺は、数字で見たらある意味「想定の範囲内」でした。事前に期待値を知っておけば、ポジションサイズも変えられるし、何より精神的にラクです。
次は、トヨタや日立など複数銘柄で同じ集計をして、銘柄別の「決算ホールド期待値」をランキング化してみたいと思います。同じように決算で振り回されている方は、自分の保有銘柄でぜひ一度、数字を見てみてください。
関連サービス
この記事で紹介した手法を実際に試す際におすすめのサービスです。

