mcpField
F
financial-analysis

financial-analysis

github.com/geogonsデータ・データベース6162 回インストール34 週間前に更新
リポジトリ

financial-analysis について

financial-analysisは、ポートフォリオ保有者や個別株を調べる人向けの、複数ソースを使う株式分析スキルです。APIやRSSのデータとローカル計算を組み合わせ、保有銘柄のレビュー、銘柄候補の検索、個別株の詳細分析を行い、呼び出し制限やフォールバックも管理します。

主な機能

  1. 01金融APIとRSSデータの集約
  2. 02ポートフォリオレビューと候補検索
  3. 03株式評価と目標価格の提示
  4. 04テクニカル指標と総合スコアのローカル計算
  5. 05呼び出し制限、ログ、APIフォールバックの管理

活用シーン

  1. 01保有銘柄を確認して売買評価を得る
  2. 02ポートフォリオ追加候補やスイングトレード候補を探す
  3. 03個別株のファンダメンタルズ、テクニカル、センチメントを調べる

インストール

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

$npx skills add https://github.com/geogons/skill-financial-analyst --skill financial-analysis

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

同梱ファイル

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

requirements.txt
README.md
QUICKSTART.md
LICENSE
.gitignore
setup.sh
references/
api_setup_guide.md
scripts/
api_caller.py
data_cache.py
data_fetchers.py
entry_exit.py
rss_feeds.py
macro_calendar.py
api_config.py
usage_tracker.py
sector_rotation.py
scoring.py
run_daily_scanner.py
run_deep_dive.py
run_portfolio_review.py
technical_analysis.py
tests/
test_skill.py
test_enhanced_report.py

詳細

金融分析スキル

14 以上の無料 API と 20 以上の RSS フィードからデータを集約し、実用的な売買評価と目標株価を含む、プロフェッショナル品質の株式分析を生成するマルチソース金融分析エンジンです。

初回セットアップ

このスキルを使用する前に、API セットアップガイドを読み、API キーを設定してください。

Read references/api_setup_guide.md

次に、設定を初期化してください。

python scripts/api_config.py init
python scripts/api_config.py status

Python の依存関係をインストールしてください。

pip install yfinance feedparser pandas pandas-ta requests --break-system-packages

アーキテクチャの概要

financial-analysis/
├── SKILL.md                          # This file — main instructions
├── scripts/
│   ├── api_config.py                 # API registry, keys, fallback chains
│   ├── usage_tracker.py              # Rate limit enforcement, logging, reports
│   ├── api_caller.py                 # Resilient caller with auto-fallback
│   └── rss_feeds.py                  # RSS feed catalog and parser
└── references/
    └── api_setup_guide.md            # Step-by-step key setup + rate limits
API システムの仕組み

すべての API 呼び出しは scripts/api_caller.py を経由し、次の処理を行います。

  1. 呼び出し前にレート制限を確認します(分単位、日単位、月単位)。
  2. IP ブロックを避けるため、呼び出しの間に遅延を設けます。
  3. すべての呼び出しを ~/.financial-analysis/logs/api_usage.jsonl に記録します。
  4. 失敗した場合:error_log.jsonl に記録し、フォールバックチェーンの次の API を試します。
  5. すべて失敗した場合:各試行の詳細を含むエラーを返します。

scripts/usage_tracker.py のトラッカーは使用状況を集計し、次の情報を生成します。

  • API ごとの無料利用枠の消費率(%)を示す日次使用状況レポート
  • 失敗した API と、正常に機能したフォールバックを示すエラーレポート
  • いずれかの API が無料利用枠の 70% を超えた場合の有料プランの推奨
フォールバックチェーン

各データカテゴリには、優先順位が設定された API チェーンがあります。プライマリ API が失敗した場合、またはレート制限に達した場合は、次の API が自動的に試されます。チェーンは scripts/api_config.py → FALLBACK_CHAINS で定義されています。主なチェーンは次のとおりです。

データカテゴリプライマリ → フォールバック
株価履歴yfinance → Polygon → Alpha Vantage → FMP
財務諸表yfinance + SEC EDGAR → Finnhub → FMP
アナリスト評価Finnhub → yfinance → SA RapidAPI → Mboum
インサイダー取引SEC EDGAR → Finnhub → Mboum → yfinance
議員の取引Mboum → Quiver(有料)
テクニカル指標Alpha Vantage → Mboum → Polygon → FMP
ニュースのセンチメントFinnhub → Alpha Vantage → Alpaca
Reddit のセンチメントApeWisdom → StockTwits

3 つのユースケース

このスキルは、用途の異なる 3 つのワークフローに対応しています。ユーザーがそのうちの 1 つを依頼します(または、状況に応じて適切なものを提案できます)。


ユースケース 1:週次ポートフォリオレビュー

トリガー:ユーザーが PDF、CSV、または現在保有している銘柄のリストを提示し、レビュー、分析、または買い/保有/売りの推奨を求めた場合。

入力:ポートフォリオの保有銘柄(ティッカーシンボル + 任意の保有数量/取得原価) 出力:銘柄ごとの評価(買い/保有/一部売却/売り)、信頼度スコア、3 つの買いエントリー水準、3 つの売却目標価格、および主な理由。 頻度:週 1 回(日曜日/月曜日)

ワークフロー

以下のフェーズを順番に実行します。すべての API 呼び出しで scripts/api_caller.py の call_with_fallback() を使用し、自動フォールバックとログ記録を有効にします。

フェーズ A — データ収集(ポートフォリオ内の各ティッカーについて):

  1. 現在価格と過去 1 年分の日次 OHLCV 履歴を取得します(yfinance)
  2. 四半期財務諸表を取得します:損益計算書、貸借対照表、キャッシュフロー計算書(yfinance + SEC EDGAR)
  3. アナリスト評価のコンセンサスを取得します:買い/ホールド/売りの件数(Finnhub)
  4. 過去 90 日間のインサイダー取引を調査します:Form 4 提出書類(SEC EDGAR)
  5. インサイダーセンチメントスコアを確認します:MSPR(Finnhub)
  6. 期近オプションチェーンを取得します(yfinance)
  7. ニュースセンチメントを取得します(Finnhub + Alpha Vantage)
  8. 1 回の呼び出しで取得します:Reddit のトレンドティッカーと言及速度(ApeWisdom)
  9. 1 回の呼び出しで取得します:最近の議会議員による取引(Mboum)
  10. 1 回の呼び出しで取得します:今後の決算カレンダー(Finnhub)

フェーズ B — テクニカル分析(pandas-ta を使用してローカルで計算。API 呼び出しなし):

  • SMA/EMA 一式(10/20/50/100/200)
  • RSI(14)、MACD(12,26,9)、ボリンジャーバンド(20,2)
  • ストキャスティクス・オシレーター、ADX
  • 出来高分析 + OBV
  • ピボットポイント(クラシック + フィボナッチ)
  • 直近のスイングを基にしたフィボナッチ・リトレースメント + エクステンション
  • ポジションサイジング用の ATR

フェーズ C — スコアリング(すべてローカルで計算):

  • ファンダメンタルスコア(0-100):売上成長率、利益率、FCF、各種比率、同業他社との比較
  • テクニカルスコア(0-100):トレンド、モメンタム、ボラティリティ、サポート/レジスタンスの位置
  • センチメントスコア(0-100):アナリスト + インサイダー + 議会 + ニュース + ソーシャル
  • 総合スコア:ファンダメンタル 40% + テクニカル 30% + センチメント 30%
  • 評価:75-100 = 買い · 40-74 = ホールド · 0-39 = 縮小/売却

フェーズ D — 出力生成(ティッカーごと):

項目説明
評価買い / ホールド / 縮小 / 売却
総合スコア0-100
確信度強い / 中程度 / 弱い(各フェーズの一致度に基づく)
エントリー 1(積極的)現在価格(確信度が高い場合)
エントリー 2(中程度)最寄りのサポート/フィボナッチ 38.2%
エントリー 3(保守的)強いサポート/フィボナッチ 61.8%
目標 1(T1)最寄りのレジスタンス/フィボナッチ・エクステンション 127.2%
目標 2(T2)主要なレジスタンス/フィボナッチ・エクステンション 161.8%
目標 3(T3)全エクステンション/フィボナッチ・エクステンション 261.8%
損切り主要なサポートを下回る水準、または ATR の 1.5 倍
主な上昇要因強気材料の上位 3~5 件
主なリスク弱気リスクの上位 3~5 件

すべてのティッカーの分析が完了したら、使用状況レポートを実行します:

from scripts.usage_tracker import get_tracker
get_tracker().print_daily_report()
get_tracker().save_daily_summary()

ユースケース 2:毎日の投資機会スキャナー

トリガー:ユーザーが新たな銘柄候補の検索、投資機会のスキャン、またはスイングトレード銘柄の特定を依頼した場合。

入力:ユーザーのポートフォリオ方針(例:「成長」「バリュー」「インカム」)と、重複を避けるための任意の現在の保有銘柄。 出力:ポートフォリオへの追加候補上位 5 件 + スイングトレード候補上位 5 件。それぞれにスコア、3 つのエントリー価格、3 つの決済価格を含めます。 頻度:毎日(市場が開く前)

ワークフロー

フェーズ A — ソース集約(幅広く情報を収集します):

  1. scripts/rss_feeds.py → scan_all_feeds() を使って、Tier 1 と Tier 2 のすべての RSS フィードをスキャンします。全フィードで言及されたティッカーを抽出します。
  2. 手順 1 の上位 5 件のティッカーについて、Seeking Alpha のティッカー別 RSS を取得します。
  3. Reddit のトレンドティッカー(ApeWisdom)を取得し、RSS での言及と照合します。
  4. 重複する上位 10 件のティッカーについて、StockTwits のセンチメントをスキャンします。
  5. 新たな議会取引(Mboum)を確認します。
  6. 今後 5 日間の決算予定(Finnhub)を取得します。

フェーズ B — スクリーニング(候補を上位 20 件に絞り込みます): 7. 上位 20 件の候補について、ニュースのセンチメントを調べます(Finnhub)。 8. 上位 5 件について、SA の定量評価とファクターグレードを取得します(SA RapidAPI)。 9. 上位 5 件について、AI センチメントスコアを取得します(Alpha Vantage — 1 日あたり 25 件のうち 5 件)。 10. 株価と出来高をスクリーニングします(yfinance)— 52 週レンジ内の位置、平均比の出来高。 11. 上位 10 件について、財務健全性を確認します(yfinance)— 売上高成長率、利益率、PER。 12. 上位 10 件について、アナリストのコンセンサスを取得します(Finnhub)。 13. 上位 10 件について、インサイダーの動向を確認します(SEC EDGAR)。

フェーズ C — 分析(上位 10 件の候補について): 14. サポート/レジスタンス水準とエントリー/エグジット目標を算出します(ローカルで pandas-ta を使用)。 15. 上位 5 件について、異常なオプション取引の動向を確認します(Mboum)。 16. マルチファクターのスコアリングと最終順位付けを行います(ローカルで計算)。

フェーズ D — 出力:

2 つのリストを提示します。

ポートフォリオへの追加(成長志向、長期保有向け):

  • ティッカー、スコア、評価、3 つのエントリー、3 つのエグジット、損切り、リスク・リワード比、カタリスト

スイングトレード(モメンタムベース、短期保有向け):

  • ティッカー、スコア、評価、3 つのエントリー、3 つのエグジット、損切り、リスク・リワード比、カタリスト、時間軸

ユースケース 3:オンデマンドの株式詳細分析

トリガー:特定の株式の分析、ティッカーの詳細分析、または「X を買うべきですか?」という質問をユーザーがした場合。

入力:1~10 件のティッカー
出力:ティッカーごとの、Buy/Watch·Hold/Sell 評価、3 つのエントリー、3 つのエグジット、包括的な分析を含む、アナリスト水準の詳細レポート。

ワークフロー

最も詳細な分析で、利用可能なすべてのデータソースを照会します。4 つのフェーズで、ティッカーあたり約 30 回の API 呼び出しを行います。

フェーズ A — ファンダメンタルズ(ティッカーごとに 11 ステップ): 企業概要、過去 5 年間の損益計算書、四半期ごとの収益動向、貸借対照表、キャッシュフロー、SEC EDGAR の XBRL データによるクロス検証、主要比率の算出(PER/PBR/PSR/PEG/EV-EBITDA/ROE/ROA/D-E/FCF 利回り)、同業他社との比較(5 社)、決算履歴と予想との差異、次回決算日、配当履歴。

フェーズ B — テクニカル分析(17 ステップ、大半は pandas-ta を使ったローカル処理): 過去 2 年間の日次価格履歴と過去 6 か月間のイントラデイ価格履歴、SMA/EMA 一式、RSI、MACD、ボリンジャーバンド、ストキャスティクス、ADX、出来高と OBV、VWAP、ピボットポイント、フィボナッチ・リトレースメント、フィボナッチ・エクステンション、出来高プロファイル、ATR、一目均衡表。Alpha Vantage API を使って 2 つの指標をクロス検証します。

フェーズ C — センチメントと代替データ(16 ステップ): アナリスト評価のコンセンサス(Finnhub)、目標株価(yfinance)、インサイダーの Form 4 提出書類(SEC EDGAR)、インサイダー MSPR(Finnhub)、議会取引(Mboum)、機関投資家の保有状況(yfinance)、空売り比率、ニュースセンチメント(Finnhub + AV AI)、Reddit での言及(ApeWisdom)、StockTwits のセンチメント、SA の定量評価とファクターグレード(SA RapidAPI)、SA のティッカー別記事(RSS)、オプションの取引フロー(yfinance)、異常なオプション取引(Mboum)、最近の SEC 提出書類のスキャン。

フェーズ D — スコアリングと出力(12 ステップ、すべてローカル処理): ファンダメンタルスコア(0~100)、テクニカルスコア(0~100)、センチメントスコア(0~100)、総合スコア(加重比率 40/30/30)、評価の決定(Buy ≥75/Watch·Hold 40-74/Sell <40)、3 つのエントリーレベル、3 つのエグジット目標、損切り、リスク・リワード比、信頼度、主なカタリスト、主なリスク。

調査結果をすべて含む、ティッカーごとの包括的なレポートを出力します。リスク・リワード比が 2:1 以上の取引のみを推奨します。


エラー処理

API 呼び出しが失敗した場合、システムは次の処理を行います。

  1. エラーを記録します。タイムスタンプ、API、カテゴリ、エラーメッセージを ~/.financial-analysis/logs/error_log.jsonl に記録します。
  2. フォールバックを試行します。そのデータカテゴリで次に使う API に切り替えます。
  3. フォールバックの結果を記録します。使用したフォールバックと、その成功の有無を記録します。
  4. すべてのフォールバックが失敗した場合は、利用可能なデータを使って処理を続け、出力に不足しているデータを記載します。
エラーの確認
python scripts/usage_tracker.py errors      # Last 7 days
python scripts/usage_tracker.py errors 30   # Last 30 days
よくあるエラーと対処法
エラーAPI対処法
429 Too Many Requestsyfinance待機時間を5秒に延ばします。バッチサイズを小さくします。
429 Rate LimitedAlpha Vantage1日あたり25回の上限に達しました。待つか、ローカルでpandas-taを使用します。
403 ForbiddenSEC EDGAR設定ファイルにUser-Agentのメールアドレスを設定します。
API key invalidAny~/.financial-analysis/api_keys.jsonを確認します。
Connection timeoutAny自動フォールバックが作動します。インターネット接続を確認します。

使用状況レポートと有料プランの推奨

各ワークフローの実行後、使用状況トラッカーが日次サマリーを保存します。いずれかのAPIの無料枠の70%を超えると、有料プランを推奨します。

python scripts/usage_tracker.py daily    # See today's report
python scripts/usage_tracker.py summary  # Save JSON summary

サマリーにはAPIごとに、今日/今月の呼び出し回数、無料枠に対する使用率、エラー数、重大度の評価(SAFE/WARNING/CRITICAL)が含まれます。

アップグレードが必要になる可能性が高いAPI(順):

  1. Alpha Vantage(1日25回) — 最初に上限に達します。アップグレード:月額$29.99
  2. Mboum(月600回) — 3つすべてのユースケースを毎日実行する場合は余裕がありません。アップグレード:月額$9.95
  3. SA RapidAPI(月1K回) — 詳細な調査を頻繁に行う場合は余裕がありません。RapidAPIの料金を確認してください。

重要事項

  • このスキルはデータに基づく分析を提供するものであり、金融アドバイスではありません。必ずご自身でデューデリジェンスを行ってください。
  • yfinanceは非公式のライブラリです。データが遅延したり、一時的に利用できなくなったりする場合があります。
  • SEC EDGARのデータは信頼性の高いものですが、解析が必要です。
  • すべてのタイムスタンプは、分析対象の市場のタイムゾーン(米国株の場合は米国東部時間)です。
  • スコアリングシステムの重みは、ユーザーの好みに応じて調整できます。

コメント