• #要件定義
  • #決算分析
  • #ウォーターフォール
  • #財務分析
アクティブ

決算書分析ウォーターフォール機能 要件定義

進捗状況(2026-01-05確認): 部分実装(Jリーグ向けのみ)

  • ✅ PLウォーターフォール(Jリーグ向け)実装済み
  • ✅ CFウォーターフォール(Jリーグ向け)実装済み
  • ✅ 純資産増減ウォーターフォール実装済み
  • earnings-analysis/ 汎用コンポーネント群は未作成
  • ❌ 手動入力→チャート生成フロー未実装
  • ❌ プレスリリースからのコメント自動抽出未実装

概要

決算書(PL・SS・CF)から増減データを抽出し、ウォーターフォールチャートで可視化する。プレスリリース等から増減要因のコメントを自動で紐付け、SNS向けにリリースできる分析コンテンツを生成する。

関連ドキュメント: SEC EDGAR API 財務データ取得ガイド - 米国上場企業の財務データをAPIで取得する方法

対象財務諸表

1. PL(損益計算書)増減分析

  • 目的: 前期比での売上・利益の増減要因を可視化
  • 主要項目:
    • 売上高
    • 売上原価
    • 販管費
    • 営業利益
    • 営業外損益
    • 特別損益
    • 当期純利益 alt text

2. SS(株主資本等変動計算書)増減分析

  • 目的: 純資産の変動要因を可視化
  • 主要項目:
    • 期首残高
    • 当期純利益
    • 配当金
    • 自己株式取得/処分
    • その他包括利益
    • 期末残高 alt text

3. CF(キャッシュフロー計算書)増減分析

  • 目的: 現金の増減要因を可視化
  • 主要項目:
    • 期首現金残高
    • 営業CF
    • 投資CF
    • 財務CF
    • 期末現金残高
  • alt text

4. 営業利益増減ウォーターフォール

  • 目的: 前期比での営業利益の増減要因を項目別に可視化
  • 主要項目:
    • 前期営業利益
    • 売上高増減
    • 売上原価増減
    • 販管費増減
    • 当期営業利益 alt text

増減分析の2つのアプローチ

数値例: NVIDIA Q2→Q3 FY2026(単位: 百万ドル)

項目Q2 (Jul 27)Q3 (Oct 26)差異
Revenue46,74357,006+10,263
Cost of revenue12,89015,157+2,267
Gross profit33,85341,849+7,996
R&D4,2914,705+414
SG&A1,1221,134+12
Operating income28,44036,010+7,570
Other income, net2,7661,926-840
Income tax4,7846,026+1,242
Net income26,42231,910+5,488
パターン1: 金額差異ベース(シンプル)

各項目の増減金額をそのまま表示する方法。

Q2 Net income        26,422
  ├─ 売上増減        +10,263
  ├─ 原価増減         -2,267
  ├─ R&D増減           -414
  ├─ SG&A増減           -12
  ├─ その他収益増減     -840
  ├─ 税金増減         -1,242
Q3 Net income        31,910

検算: 26,422 + 10,263 - 2,267 - 414 - 12 - 840 - 1,242 = 31,910 ✓
パターン2: 売上高寄与×粗利率寄与の分解(Variance Analysis)

「売上高寄与」と「粗利率寄与」に粗利益の増減を分解する方法。

用語の検討:

表記パターン売上側率側採用
要因売上高要因粗利率要因
寄与売上高寄与粗利率寄与
効果売上高効果粗利率効果
影響売上高影響粗利率影響

→ 「寄与」は利益への貢献度を示す表現として適切なため採用。

Q2 粗利率 = 33,853 / 46,743 = 72.42%
Q3 粗利率 = 41,849 / 57,006 = 73.41%
粗利率改善 = +0.99pt

分解計算:

効果計算式金額
数量効果(Volume)売上増加 × Q2粗利率 = 10,263 × 72.42%+7,432
利益率効果(Rate)Q3売上 × 粗利率改善 = 57,006 × 0.99%+564
合計+7,996
Q2 Net income        26,422
  ├─ 売上高寄与       +7,432
  ├─ 粗利率寄与         +564
  ├─ R&D増減           -414
  ├─ SG&A増減           -12
  ├─ その他収益増減     -840
  ├─ 税金増減         -1,242
Q3 Net income        31,910

検算: 26,422 + 7,432 + 564 - 414 - 12 - 840 - 1,242 = 31,910 ✓

税金の分解について:

税金も理論上は「利益増加寄与」と「税率寄与」に分解可能:

  • 利益増加寄与 = 税引前利益増加 × Q2実効税率 = 6,730 × 15.33% = 1,032(83%)
  • 税率寄与 = Q3税引前利益 × 税率変動 = 37,936 × 0.55% = 209(17%)

→ ただし実効税率は通常安定しているため、分解せず「税金増減」として一括表示。大きく変動した場合のみ注記で対応。

2パターンの使い分け
パターン表示内容ユースケース
金額差異売上+10,263、原価-2,267項目別の増減を直感的に見せたい
数量×率数量効果+7,432、率効果+564成長要因(売上増 vs 効率改善)を分けて評価したい

「売上が伸びたから利益が増えたのか、利益率が改善したから増えたのか」をパターン2は明確に分離できる。

機能要件

データ取得

  • 決算短信PDFからの数値抽出
  • 有価証券報告書からの数値抽出
  • 手動入力インターフェース

ウォーターフォールチャート生成

  • 増加項目(緑)・減少項目(赤)・合計(青)の色分け
  • インタラクティブなツールチップ
  • レスポンシブ対応
  • PNG/SVGエクスポート機能

コメント自動抽出

  • プレスリリースPDFからの要因抽出
  • 決算説明会資料からの要因抽出
  • AI要約による増減コメント生成

SNS向け出力

  • OGP画像自動生成
  • Twitter/X向け画像サイズ対応
  • 要約テキスト自動生成

技術検討事項

データ取得方針(仮説)

推奨アプローチ: IR PDF → Markdown → Gemini → JSON

IRサイト → PDF → ローカルパーサー → Markdown → Gemini API → JSON

理由:

  1. EDGAR APIは二度手間になる可能性
    • 企業ごとにメトリック名が異なる(SEC EDGAR APIガイド参照)
    • 結局IR文書から増減コメントを取得する必要がある
    • 同じソースから数値もコメントも取得する方が効率的
  2. Geminiのドキュメント→JSON変換が優秀
    • PDFをMarkdownに変換後、Geminiで任意のJSON形式にパース
    • 構造化データ抽出の精度が高い
  3. 柔軟なJSONフォーマット
    • オブジェクトではなく配列で設計
    • 期間によって内訳項目が変わっても対応可能
    • 例: [{label: "Revenue", value: 57006}, {label: "Cost of revenue", value: 15157}, ...]

処理フロー:

  1. IRサイトからPDFをダウンロード(決算短信、10-Q等)
  2. ローカルでPDF → Markdown変換
  3. Gemini APIでMarkdown → JSON変換(数値抽出)
  4. 同時に増減コメントも抽出
  5. JSONをアプリケーションで利用

メリット:

  • 一つのソース(IR文書)から数値とコメントを同時取得
  • 企業固有のフォーマットに柔軟に対応
  • 一度フォーマットが決まれば同一企業は毎期同じ処理で対応可能

PDFパース

  • pdf.js or pdf-parse
  • OCR対応(スキャンPDF向け)

データ構造

interface FinancialChange {
  label: string;          // 項目名
  value: number;          // 金額
  isIncrease: boolean;    // 増加/減少
  isTotal: boolean;       // 合計項目かどうか
  comment?: string;       // 増減コメント
  source?: string;        // 出典(プレスリリースURL等)
}

チャートライブラリ

  • 既存: Chart.js(プロジェクトで使用中)
  • 検討: Apache ECharts, Plotly.js

開発フェーズ

Phase 1: MVP

  • 手動入力でのウォーターフォールチャート生成
  • PLの増減分析のみ

Phase 2: 自動化

  • PDFからの数値抽出
  • SS・CFへの拡張

Phase 3: コメント連携

  • プレスリリースからのコメント抽出
  • AI要約機能

Phase 4: SNS最適化

  • OGP画像生成
  • シェア機能

既存コンポーネント(再利用・参考)

参考ページ

Jリーグ用コンポーネント(ベース)

コンポーネント用途新規作成時の参考度
JLeaguePLWaterfallChart.vuePLウォーターフォール★★★ メイン
JLeagueVarianceWaterfallChart.vue営業利益増減分析★★★ メイン
JLeagueNetAssetsWaterfallChart.vue純資産増減ウォーターフォール★★★ メイン
JLeaguePLWaterfallSection.vuePLセクションラッパー★★
JLeagueChartsPanel.vueチャートパネル統合★★
JLeagueDataTable.vueデータテーブル

汎用コンポーネント

コンポーネント用途
PLWaterfallChart.vue汎用PLウォーターフォール
CFWaterfallChart.vueCFウォーターフォール
BalanceSheetComparison.vue比例縮尺BS比較
BalanceSheetBox.vueBSボックス表示

コンポーネント作成計画

新規作成コンポーネント

  1. EarningsAnalysisPanel.vue - 決算分析統合パネル
    • PLウォーターフォール
    • 営業利益増減分析
    • 純資産増減ウォーターフォール
    • 比例縮尺BS
    • をタブ/セクションで切り替え
  2. EarningsPLWaterfall.vue - 汎用PL増減ウォーターフォール
    • JLeaguePLWaterfallChart.vue をベースに汎用化
    • 企業決算向けにカスタマイズ
  3. EarningsVarianceChart.vue - 営業利益増減分析
    • JLeagueVarianceWaterfallChart.vue をベースに汎用化
  4. EarningsNetAssetsWaterfall.vue - 純資産増減ウォーターフォール
    • JLeagueNetAssetsWaterfallChart.vue をベースに汎用化
  5. EarningsBSComparison.vue - 比例縮尺BS比較
    • BalanceSheetComparison.vue をベースに
  6. EarningsCommentOverlay.vue - 増減コメント表示
    • プレスリリースからの要因コメントを表示

ディレクトリ構成

apps/web/app/components/
├── earnings-analysis/           # 新規作成
│   ├── EarningsAnalysisPanel.vue
│   ├── EarningsPLWaterfall.vue
│   ├── EarningsVarianceChart.vue
│   ├── EarningsNetAssetsWaterfall.vue
│   ├── EarningsBSComparison.vue
│   └── EarningsCommentOverlay.vue
├── jleague/                     # 既存(参考)
└── financial-quiz/              # 既存(参考)

EPS/純利益の3軸比較分析

課題認識

決算発表直後、EPSや売上のガイダンス比較・コンセンサス比較がTwitterなどで速報されることがある。これ自体は価値があるが、以下の問題がある:

  1. 数字だけで内容がわからない EPS差異の「なぜ」が見えない。決算書を読んでいない人には、予想と実績のギャップがどこで生まれたのか理解できない。
  2. 日本語コンテンツがない CFO CommentaryやQ&Aセッションの内容は英語のまま放置されている。
  3. 手作業が多い 追っている銘柄が増えると、毎四半期の分析が追いつかない。

解決策:3軸比較ウォーターフォール

増減分析には以下の3つの軸が必要である。それぞれ原因が異なるため、全てを比較しないと正確な分析ができない。

比較軸略称何がわかるか
前年同期比YoY成長トレンド、季節性を排除した実力値
前四半期比QoQ直近のモメンタム、短期変化
アナリストコンセンサス比vs Consensus市場期待との乖離、サプライズ要因

ウォーターフォール表示イメージ

[YoY比較]
FY25 Q3 EPS  →  売上増寄与  →  粗利率改善  →  R&D増  →  ...  →  FY26 Q3 EPS

[QoQ比較]
FY26 Q2 EPS  →  売上増寄与  →  粗利率改善  →  R&D増  →  ...  →  FY26 Q3 EPS

[vs Consensus]
Consensus EPS  →  売上Beat寄与  →  粗利率Beat  →  OpEx Miss  →  ...  →  Actual EPS

データソースと日本語化

必要なドキュメント(NVIDIAの例)

ドキュメント用途取得方法
10-Q(四半期報告書)財務数値の詳細SEC EDGAR API
CFO Commentary増減要因の説明IR Webサイト PDF
Earnings Call TranscriptQ&Aセッションの詳細IR Webサイト or Seeking Alpha
Analyst Estimatesコンセンサス数値Koyfin / Yahoo Finance

日本語化フロー

英語PDF/Transcript
    ↓
Claude/Gemini でMarkdown化 + 構造化
    ↓
重要箇所の日本語要約
    ↓
ウォーターフォールチャート + コメント

自動化パイプライン構想

Phase 1: 手動(現状)

  1. 決算発表後、10-QとCFO Commentaryをダウンロード
  2. Claude Codeで数値抽出 + 増減分析
  3. Vueページを手動更新

Phase 2: 半自動化

  1. 決算カレンダーから対象銘柄・発表日を取得
  2. 発表後、IRサイトから自動でPDFダウンロード
  3. Gemini APIでJSON変換(数値 + コメント)
  4. 差分検出して通知

Phase 3: 完全自動化

  1. トリガー: 決算発表をRSSまたはSEC Filing検知
  2. 自動パイプライン実行
  3. 生成されたコンテンツをレビュー後に公開

データ取得URL設計

IRサイトの構造は企業ごとに決まっているため、URLパターンを定義しておく。

interface CompanyIRConfig {
  ticker: string;
  name: string;
  fiscalYearEnd: string; // e.g., "January" for NVIDIA
  sources: {
    tenQ: string;      // SEC EDGAR URL pattern
    cfoCommentary: string; // IR site URL pattern
    earnings: string;  // Earnings call page
  };
}

// 例: NVIDIA
const NVDA_CONFIG: CompanyIRConfig = {
  ticker: "NVDA",
  name: "NVIDIA",
  fiscalYearEnd: "January",
  sources: {
    tenQ: "https://www.sec.gov/cgi-bin/browse-edgar?action=getcompany&CIK=0001045810&type=10-Q",
    cfoCommentary: "https://investor.nvidia.com/financial-info/quarterly-results/default.aspx",
    earnings: "https://investor.nvidia.com/events/default.aspx"
  }
};

主要銘柄の対応優先度

優先度銘柄理由
NVDAメインウォッチ、データセンター市場の指標
AMDGPU競合、比較分析に必要
MUHBMサプライチェーン
AVGOネットワーキング、カスタムASIC
MSFT/GOOGL/AMZNハイパースケーラー、CapEx動向

既存コンポーネントの拡張

JLeagueVarianceWaterfallChart.vue をベースに以下の拡張が必要:

  1. 3軸切り替えタブ: YoY / QoQ / vs Consensus
  2. 数値×率の分解表示: 売上高寄与 / 粗利率寄与
  3. コメントオーバーレイ: CFO Commentaryからの引用表示
  4. 多言語対応: 日本語/英語切り替え

議論メモ

2026-01-05

  • EPS/純利益の3軸比較分析を追加: YoY、QoQ、アナリストコンセンサス比較の3軸で増減分析
  • 自動化パイプライン構想: 決算発表検知→PDF取得→JSON変換→コンテンツ生成の自動化フロー
  • 日本語化の必要性: CFO Commentary、Q&Aセッションの日本語コンテンツが不足している課題
  • 主要銘柄の優先度設定: NVDA、AMD、MU、AVGOを優先対応

2025-12-28

  • Jリーグ浦和ページで使用中のコンポーネントをベースに汎用化する方針
  • 4つのチャートタイプ: PLウォーターフォール、営業利益増減、純資産増減、比例縮尺BS
  • プレスリリースからのコメント自動抽出はPhase 3で対応
  • SEC EDGAR API調査完了: 米国上場企業の財務データ取得方法を検証
    • NVIDIA, Apple, Microsoft, Tesla, Amazonの5社でメトリック共通性を検証
    • 71%の主要メトリックが全社共通で使用されている
    • PL・BS・CF項目は10-Qと完全一致することを確認
    • SS(株主資本等変動計算書)の列内訳はEDGARでは取得不可(総額のみ)
    • 詳細: SEC EDGAR API 財務データ取得ガイド