未分類
財務データ生成スクリプトの企業数差異分析
概要
3つのデータ生成スクリプトで出力される企業数に差異があることが判明した。本ドキュメントでは、差異の原因を分析し対処方法を記載する。
現状の企業数
| スクリプト | 出力ファイル | サイズ | 企業数 |
|---|---|---|---|
generate-eac-light-data.mjs | eac-light-data.ts | 3.09MB | 154社 |
generate-scatter-data.mjs | scatter-data.ts | 81.1KB | 152社 |
generate-financial-data.mjs | financial-data.ts | 3.32MB | 152社 |
※ companiesテーブル全体は156社
データソースの関係
companies テーブル (156社)
│
├─→ eac_annual テーブル (154社) ─→ eac-light-data.ts
│ │
│ └─→ + 2026-2029 Estimate条件 (152社) ─→ scatter-data.ts
│
└─→ v_annual_data ビュー (152社) ─→ financial-data.ts
差異の原因(7社)
一覧表
| 企業 | eac-light | scatter | financial | 欠損理由 |
|---|---|---|---|---|
| BRKSN | × | × | × | 全データ未取得 |
| WOLF | × | × | ✓ | EACデータなし |
| AZN | ✓ | ✓ | × | 財務諸表なし |
| MPWR | ✓ | ✓ | × | 財務諸表なし |
| QRVO | ✓ | ✓ | × | 財務諸表なし |
| HUT | ✓ | × | ✓ | 2026-2029のEPS/PER予測なし |
| MARA | ✓ | × | ✓ | 2026-2029のEPS/PERが全てnull |
詳細分析
BRKSN(Berkshire Grey)
companiesテーブルには存在eac_annualテーブルにデータなしv_annual_dataビューにデータなし- 原因: Koyfinからのデータ取得が未完了
WOLF(Wolfspeed)
companiesテーブルには存在eac_annualテーブルにデータなしv_annual_dataビューにはデータあり- 原因: EACデータのみ未取得
AZN, MPWR, QRVO
companiesテーブルには存在eac_annualテーブルにはデータありv_annual_dataビューにデータなし- 原因: 財務諸表データが未取得
HUT, MARA(ビットコインマイニング企業)
- 全テーブルにデータ存在
- ただし2026-2029年のEPS成長率・PERがnullまたは欠損
- 原因: アナリストによる長期予測が存在しない(ビットコイン関連企業の特性)
MARA 2026 EPS-Adjusted_YoY-%-Chg → null
MARA 2026 Price-/-Earnings-(Adjusted) → null
MARA 2027 EPS-Adjusted_YoY-%-Chg → null
MARA 2027 Price-/-Earnings-(Adjusted) → null
MARA 2028 EPS-Adjusted_YoY-%-Chg → null
MARA 2028 Price-/-Earnings-(Adjusted) → null
対処方法
方法A:データ追加取得(推奨)
Koyfinから不足データを追加取得し、全スクリプトで同一企業を出力できるようにする。
優先度高
- AZN, MPWR, QRVO: 財務諸表データを取得
- WOLF: EACデータを取得
優先度中
- BRKSN: 財務諸表 + EACデータを取得
対応不要
- HUT, MARA: ビットコイン関連企業のため長期予測が存在しない可能性が高い。scatter-dataからの除外は仕様として許容。
実施手順
# 1. Koyfinで対象企業のデータをエクスポート
# 2. SQLiteにインポート
# 3. スクリプトを再実行
cd apps/web
node scripts/generate-eac-light-data.mjs
node scripts/generate-scatter-data.mjs
node scripts/generate-financial-data.mjs
方法B:欠損許容(現状維持)
各ページで使用するデータが異なるため、現状のまま欠損を許容する。
| ページ | 使用データ | 企業数 |
|---|---|---|
actual-consensus.vue | eac-light-data.ts | 154社 |
eps-per-scatter.vue | scatter-data.ts | 152社 |
proportional-animation-qqq.vue | financial-data.ts | 152社 |
メリット:
- 追加作業不要
- 各ページの目的に合ったデータセットを維持
デメリット:
- ページ間で対象企業が異なり、ユーザーが混乱する可能性
方法C:共通企業のみに統一
3つ全てに存在する企業のみを出力する(最も厳格なアプローチ)。
// 各スクリプトで共通フィルタを適用
const commonTickers = getCommonTickers() // 約149社
メリット:
- 全ページで同一企業セットを保証
デメリット:
- 一部ページで本来表示可能な企業が除外される
- スクリプト修正が必要
採用方針:方法C(共通企業のみに統一)
決定理由
- Koyfinの無料利用期間が終了 - 追加データ取得には再ログインや有料プランが必要
- 欠損企業は重要度が低い - BRKSN、WOLF、AZN、MPWR、QRVOはポートフォリオの主要銘柄ではない
- HUT、MARAはビットコイン関連 - 長期予測が存在しないのは業界特性であり、対応不要
対応内容(2025-12-20 実施完了)
3つのスクリプトすべてに除外企業リストを追加し、共通企業のみを出力するように修正した。
修正内容
各スクリプトに以下の除外リストを追加:
const EXCLUDED_TICKERS = new Set([
'BRKSN', // 全データ未取得
'WOLF', // EACデータなし
'AZN', // 財務諸表なし
'MPWR', // 財務諸表なし
'QRVO', // 財務諸表なし
'HUT', // 2026-2029のEPS/PER予測なし
'MARA', // 2026-2029のEPS/PERが全てnull
])
結果
| ページ | 使用データ | 企業数(変更前) | 企業数(変更後) |
|---|---|---|---|
actual-consensus.vue | eac-light-data.ts | 154社 | 149社 |
eps-per-scatter.vue | scatter-data.ts | 152社 | 149社 |
proportional-animation-qqq.vue | financial-data.ts | 152社 | 149社 |
全ページで同一の149社を使用するようになり、ページ間での企業セットの不整合が解消された。
今後の運用
- 新規企業追加時は3つのデータソースすべてにデータを取得する
- 除外企業リストは各スクリプトで共通化されているため、必要に応じて一括更新が可能
関連ファイル
scripts/generate-eac-light-data.mjsscripts/generate-scatter-data.mjsscripts/generate-financial-data.mjsdata/koyfin.db(SQLiteデータベース).claude/rules/data-generation.md(スクリプト運用ルール)