earnings-recap について
yfinanceを使って決算結果、予想との差、株価反応、最近の財務推移を分析する、金融リサーチ担当者や投資家向けのスキルです。実績と予想の比較を軸に、投資推奨を含めず事実を整理します。
主な機能
- 01実績EPSと予想の比較
- 02EPSサプライズの規模
- 03決算前後の株価反応
- 04最近の売上高・利益率の推移
- 05アナリスト評価と財務情報
活用シーン
- 01企業の最新決算の振り返り
- 02当四半期と過去の業績の比較
- 03決算発表後の市場反応の評価
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ himself65/ finance-skills --skill earnings-recapインストール後、Claude Code で/earnings-recapを入力して読み込まれたか確認します。
同梱ファイルREADME.mdreferences/api_reference.md
詳細
決算振り返りスキル
ホストが以下のシェルプローブをまだ実行していない場合(たとえば、Codex の場合)、セットアップ方法を選ぶ前に、シェルツールを使って ! ラッパー内のコマンドを実行してください。実際の出力を使用してください。シェルにアクセスできない場合は、その制限を報告してください。
yfinance 経由で Yahoo Finance のデータを使用して、決算発表後の分析を生成します。実績と予想の数値、サプライズの規模、株価の反応、財務状況を取り上げ、何が起きたのかを包括的に説明します。
重要:データは調査および教育目的に限られます。金融に関する助言ではありません。yfinance は Yahoo, Inc. と提携していません。
ステップ 1:yfinance が利用可能であることを確認する
現在の環境の状態:
!`python3 -c "exec('try:\n import yfinance\n print(\'yfinance \' + yfinance.__version__ + \' installed\')\nexcept Exception:\n print(\'YFINANCE_NOT_INSTALLED\')')"`
YFINANCE_NOT_INSTALLED の場合は、インストールしてください。
import subprocess, sys
subprocess.check_call([sys.executable, "-m", "pip", "install", "-q", "yfinance"])
すでにインストールされている場合は、次のステップに進んでください。
ステップ 2:ティッカーを特定してデータを収集する
ユーザーのリクエストからティッカーを抽出します。関連する決算発表後のデータをすべて、1 つのスクリプトで取得してください。
import yfinance as yf
import pandas as pd
ticker = yf.Ticker("AAPL") # replace with actual ticker
# --- Earnings results ---
earnings_dates = ticker.get_earnings_dates(limit=12) # report timestamps, newest first
earnings_hist = ticker.earnings_history # last 4 quarters, indexed by fiscal quarter-end, oldest first
# --- Financial statements (about five quarters, newest first) ---
quarterly_income = ticker.quarterly_income_stmt
quarterly_cashflow = ticker.quarterly_cashflow
quarterly_balance = ticker.quarterly_balance_sheet
# --- Context ---
info = ticker.info
news = ticker.news
recommendations = ticker.recommendations
抽出するデータ
| データソース | 主なフィールド | 目的 |
|---|---|---|
get_earnings_dates() | Earnings Date、EPS Estimate、Reported EPS、Surprise(%) | 対象の決算発表、その時期、予想超過または未達の確認 |
earnings_history | epsEstimate、epsActual、epsDifference、surprisePercent | 会計四半期ごとの直近 4 四半期の実績 |
quarterly_income_stmt | TotalRevenue、GrossProfit、OperatingIncome、NetIncome、BasicEPS | 実際の財務数値 |
history() | 各決算発表前後の日次終値 | 株価の反応 |
info | currentPrice、marketCap、forwardPE | 現在の状況 |
news | 最近の見出し | 決算関連のニュース |
ステップ 3:決算発表を特定して反応を測定する
earnings_history は発表日ではなく会計四半期末をインデックスにしているため、決算発表の時期は get_earnings_dates() から取得してください。直近の発表は、Reported EPS が記載された最新の行です。そのタイムスタンプ(米国東部時間)で反応を測る時間帯を決めます。16:00 以降なら会社は取引終了後に発表しており、それより前なら寄り付き前、または場合によっては取引時間中の発表です。ユーザーが特定の四半期について尋ねている場合は、該当する行を使用してください。
def earnings_reaction(ticker, report_ts):
"""% move from the last close before the report to the first close after it."""
daily = ticker.history(start=(report_ts - pd.Timedelta(days=10)).date(),
end=(report_ts + pd.Timedelta(days=10)).date())
closes = daily["Close"]
days = closes.index.date
d = report_ts.date()
if report_ts.hour >= 16: # reported after the close: report-day close -> next close
pre, post = closes[days <= d], closes[days > d]
else: # before the open or intraday: prior close -> report-day close
pre, post = closes[days < d], closes[days >= d]
if pre.empty or post.empty:
return None # the reaction session hasn't closed yet
return (post.iloc[0] / pre.iloc[-1] - 1) * 100
reported = earnings_dates[earnings_dates["Reported EPS"].notna()]
latest_ts = reported.index[0]
reaction_pct = earnings_reaction(ticker, latest_ts)
# Typical earnings-day move over the prior four reports
prior_moves = [earnings_reaction(ticker, ts) for ts in reported.index[1:5]]
avg_abs_move = pd.Series([abs(m) for m in prior_moves if m is not None]).mean()
reaction_pct が None の場合、決算発表は直近の取引終了後です。通常取引時間中の反応はまだ出ていないことを伝えてください(ユーザーが希望する場合は、日中の history(..., prepost=True) 呼び出しで時間外の値動きを確認できます)。
ステップ 4:決算を振り返る
結果から始めて、以下の項目を取り上げてください。
- 決算結果の要点 — EPS の実績と予想、サプライズ率、売上高と前年同期比の成長率、株価の反応。
- 予想と実績の比較 — 該当四半期の EPS 予想、実績、サプライズ額(ドルおよびパーセント)。
- 四半期ごとの傾向 — 直近の四半期の売上高、粗利益率、営業利益率、EPS。利益率は財務諸表から算出してください(粗利益 ÷ 売上高、営業利益 ÷ 売上高)。yfinance が返すのは通常約 5 四半期分なので、前年同期比の成長率を示せるのは最新四半期のみです(列 0 と列 4 の比較)。それ以外は比較を作り上げず、前四半期比の変化を示してください。
- 株価の反応 — 反応があった取引時間中の値動き、直近 4 回の決算発表における平均絶対値ベースの値動きとの比較、その後株価が値動きを維持したか、値を戻したか、さらに上昇・下落したか。
- 変化した点 — 前四半期比での利益率の方向性、売上高成長の軌道に変化があったか、今回のサプライズが同社の通常の傾向と比べてどうか、入手可能な場合は現在のアナリストの見方。
ステップ 5:ユーザーに回答する
まず、対象の四半期、発表日、予想を上回ったか下回ったか、売上高の伸び、発表後の反応を見出しで伝え、その後に裏付けとなる表を示します。重要な点を述べます。今回の結果が意味のある上振れだったのか、それとも低いハードルをクリアしたにすぎないのか、また、傾向が改善しているのか悪化しているのかを示してください。事実に基づいて記述し、投資判断の推奨は含めないでください。
該当する注意事項も含めてください。Yahoo Finance のデータには、決算説明会での情報(業績見通し、セグメント別の詳細など)がすべて反映されるわけではありません。売上高は売上高コンセンサスとの比較ではなく、財務諸表に基づく前年同期比で比較します。株価の反応には、その日の市場全体の動きが影響している可能性があります。また、これは財務上の助言ではありません。
参考ファイル
references/api_reference.md— 決算履歴および財務諸表メソッドに関する yfinance API の詳細なリファレンス
財務データの正確なメソッドシグネチャを確認するときや、エッジケースに対応するときは、リファレンスファイルを参照してください。