mcpField
F
financial-data-collector

financial-data-collector

github.com/daymadeデータ・データベース1.5k888 回インストール今日更新
リポジトリ

financial-data-collector について

米国上場企業の財務データを収集・検証し、後続の財務スキル向けに標準化した JSON ファイルを作成するスキルです。データソースの明記と、欠損値や会計上の扱いの明確化を重視します。

主な機能

  1. 01市場・過去の財務データ収集
  2. 02完全性と整合性の検証
  3. 03欠損値を既定値で補完しない
  4. 04CapEx と FCF の扱いを記録
  5. 05スキーマ準拠の JSON 出力

活用シーン

  1. 01企業の財務分析用データの準備
  2. 02後続処理の前に収集データを確認
  3. 03DCF 関連スキルへの入力データ提供

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/daymade/claude-code-skills --skill financial-data-collector

インストール後、Claude Code で/financial-data-collectorを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

.gitignore
references/
output-schema.md
yfinance-pitfalls.md
scripts/
collect_data.py
validate_data.py

詳細

財務データコレクター

無料のデータソースを使用して、米国の上場企業の実際の財務データを収集・検証します。 ほかの財務スキルですぐに利用できる、標準化された JSON ファイルを出力します。

重要な制約

フォールバック値は禁止です。 フィールドを取得できない場合は、null に設定し、_source: "missing" を指定してください。 デフォルト値(例:beta or 1.0)で代用しないでください。欠損データの扱いは、後続のスキルが判断します。

データソースの明記は必須です。 すべてのデータセクションに _source フィールドを含めてください。

設備投資額(CapEx)の符号規則: yfinance は CapEx を負の値(現金流出)として返します。元の符号を維持してください。出力メタデータにこの規則を記載してください。符号を反転させないでください。

yfinance の FCF ≠ 投資銀行の FCF。 yfinance の FCF = 営業キャッシュフロー + CapEx(SBC の控除なし)です。後続の DCF スキルが FCF を過大評価しないよう、この点を出力メタデータで明示してください。

ワークフロー

ステップ 1:データを収集する

収集スクリプトを実行します。

python scripts/collect_data.py TICKER [--years 5] [--output path/to/output.json]

スクリプトは次の優先順位でデータを収集します。

  1. yfinance — 市場データ、過去の財務データ、ベータ、アナリスト予測
  2. yfinance ^TNX — リスクフリーレートの代替指標としての10年物米国債利回り
  3. ユーザーによる補完 — yfinance が NaN を返す年が対象です(ユーザーに報告し、推測しないでください)
ステップ 2:データを検証する
python scripts/validate_data.py path/to/output.json

確認項目:フィールドの完全性、フィールド間の整合性(時価総額 = 株価 × 株式数)、値の妥当性(WACC 5~20%、ベータ 0.3~3.0)、符号規則。

ステップ 3:JSON を納品する

単一ファイル:{TICKER}_financial_data.json。スキーマは references/output-schema.md を参照してください。

作成してはいけないファイル: README、CSV、要約レポート、その他の補助ファイル。

出力スキーマ(概要)

{
  "ticker": "META",
  "company_name": "Meta Platforms, Inc.",
  "data_date": "2026-03-02",
  "currency": "USD",
  "unit": "millions_usd",
  "data_sources": { "market_data": "...", "2022_to_2024": "..." },
  "market_data": { "current_price": 648.18, "shares_outstanding_millions": 2187, "market_cap_millions": 1639607, "beta_5y_monthly": 1.284 },
  "income_statement": { "2024": { "revenue": 164501, "ebit": 69380, "tax_expense": ..., "net_income": ..., "_source": "yfinance" } },
  "cash_flow": { "2024": { "operating_cash_flow": ..., "capex": -37256, "depreciation_amortization": 15498, "free_cash_flow": ..., "change_in_nwc": ..., "_source": "yfinance" } },
  "balance_sheet": { "2024": { "total_debt": 30768, "cash_and_equivalents": 77815, "net_debt": -47047, "current_assets": ..., "current_liabilities": ..., "_source": "yfinance" } },
  "wacc_inputs": { "risk_free_rate": 0.0396, "beta": 1.284, "credit_rating": null, "_source": "yfinance + ^TNX" },
  "analyst_estimates": { "revenue_next_fy": 251113, "revenue_fy_after": 295558, "eps_next_fy": 29.59, "_source": "yfinance" },
  "metadata": { "_capex_convention": "negative = cash outflow", "_fcf_note": "yfinance FCF = OperatingCF + CapEx. Does NOT deduct SBC." }
}

全フィールドの定義を含む完全なスキーマ:references/output-schema.md

<correct_patterns>

データがない年の処理
if pd.isna(revenue):
    result[year] = {"revenue": None, "_source": "yfinance returned NaN — supplement from 10-K"}
# Report missing years to the user. Do NOT skip or fill with estimates.
CapEx の符号を維持する
capex = cash_flow.loc["Capital Expenditure", year_col]  # -37256.0
result["capex"] = float(capex)  # Preserve negative
Datetime 列のインデックス付け
year_col = [c for c in financials.columns if c.year == target_year][0]
revenue = financials.loc["Total Revenue", year_col]
フィールド名のガード
if "Total Revenue" in financials.index:
    revenue = financials.loc["Total Revenue", year_col]
elif "Revenue" in financials.index:
    revenue = financials.loc["Revenue", year_col]
else:
    revenue = None

</correct_patterns>

<common_mistakes>

間違い 1:欠損データにデフォルト値を使用する
# ❌ WRONG
beta = info.get("beta", 1.0)
growth = data.get("growth") or 0.02

# ✅ RIGHT
beta = info.get("beta")  # May be None — that's OK
間違い 2:すべての年にデータがあると想定する
# ❌ WRONG — 2020-2021 may be NaN
revenue = float(financials.loc["Total Revenue", year_col])

# ✅ RIGHT
value = financials.loc["Total Revenue", year_col]
revenue = float(value) if pd.notna(value) else None
間違い 3:DCF モデルで yfinance の FCF をそのまま使用する

yfinance の FCF では SBC が控除されません。META のような巨大企業の場合、SBC は年間 200~300 億ドルに達することがあり、yfinance の FCF は投資銀行の FCF より約 30%高くなります。必ずこの点を出力で明示してください。

間違い 4:CapEx の符号を反転させる
# ❌ WRONG — double-negation risk downstream
capex = abs(cash_flow.loc["Capital Expenditure", year_col])

# ✅ RIGHT — preserve original, document convention
capex = float(cash_flow.loc["Capital Expenditure", year_col])  # -37256.0

</common_mistakes>

yfinance で既知の落とし穴

フィールドのマッピングと回避策の詳細については、references/yfinance-pitfalls.md を参照してください。

コメント