value-dividend-screener について
米国の配当株とバリュー株を選別するスキルです。評価額、配当、成長の条件で事前選別し、財務健全性や収益性、配当の持続性を調べ、総合スコアで候補を順位付けします。
主な機能
- 01FINVIZ Elite と FMP による二段階選別
- 02評価額、配当成長、財務指標を分析
- 03配当性向とフリーキャッシュフローのカバー率を評価
- 04品質スコアを算出して銘柄を順位付け
- 05結果を JSON 形式で出力
活用シーン
- 01妥当な評価額と配当成長を備えた米国株を探す
- 02高配当候補の配当持続性を評価
- 03総合スコアで銘柄のファンダメンタルズを比較
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ nicepkg/ ai-workflow --skill value-dividend-screenerインストール後、Claude Code で/value-dividend-screenerを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
references/fmp_api_guide.mdscreening_methodology.mdscripts/screen_dividend_stocks.py詳細
バリュー配当株スクリーナー
概要
このスキルでは、2段階のスクリーニング手法を用いて、バリュー特性、魅力的なインカム創出力、安定した成長を兼ね備えた高品質な配当株を特定します。
- FINVIZ Elite API(任意ですが推奨):基本的な条件で銘柄を事前スクリーニングします(高速かつコスト効率に優れています)。
- Financial Modeling Prep(FMP)API:候補銘柄を詳細にファンダメンタル分析します。
バリュエーション比率、配当指標、財務健全性、収益性などの定量的な基準に基づいて、米国株をスクリーニングします。包括的なレポートを作成し、詳細なファンダメンタル分析と複合品質スコアに基づいて銘柄を順位付けします。
効率面でのメリット:FINVIZによる事前スクリーニングを利用すると、FMP API の呼び出しを90%削減できるため、無料プランの API ユーザーに最適です。
使用する場面
ユーザーが次のような依頼をしたときに、このスキルを呼び出してください。
- 「高品質な配当株を見つけて」
- 「バリュー配当株の投資機会をスクリーニングして」
- 「配当の成長が著しい銘柄を教えて」
- 「妥当なバリュエーションで取引されているインカム株を見つけて」
- 「持続可能な高利回り株をスクリーニングして」
- 配当利回り、バリュエーション指標、ファンダメンタル分析を組み合わせた依頼
ワークフロー
ステップ1:API キーの有無を確認する
2段階スクリーニング(推奨)の場合:
両方の API キーが利用可能か確認します。
import os
fmp_api_key = os.environ.get('FMP_API_KEY')
finviz_api_key = os.environ.get('FINVIZ_API_KEY')
利用できない場合は、API キーを提供するか、環境変数を設定するようユーザーに依頼します。
export FMP_API_KEY=your_fmp_key_here
export FINVIZ_API_KEY=your_finviz_key_here
FMP のみでスクリーニングする場合:
FMP API キーが利用可能か確認します。
import os
api_key = os.environ.get('FMP_API_KEY')
利用できない場合は、API キーを提供するか、環境変数を設定するようユーザーに依頼します。
export FMP_API_KEY=your_key_here
FINVIZ Elite API キー:
- FINVIZ Elite のサブスクリプションが必要です(月額約40ドル、または年額約330ドル)。
- 事前スクリーニング結果を CSV 形式でエクスポートできます。
- FMP API の使用量を削減できるため、強く推奨されます。
必要に応じて、references/fmp_api_guide.md の手順を案内してください。
ステップ2:スクリーニングスクリプトを実行する
適切なパラメーターを指定して、スクリーニングスクリプトを実行します。
2段階スクリーニング(推奨)
FINVIZ で事前スクリーニングを行い、その後 FMP で詳細に分析します。
デフォルト実行(上位20銘柄):
python3 scripts/screen_dividend_stocks.py --use-finviz
API キーを明示して実行:
python3 scripts/screen_dividend_stocks.py --use-finviz \
--fmp-api-key $FMP_API_KEY \
--finviz-api-key $FINVIZ_API_KEY
上位 N 件を指定:
python3 scripts/screen_dividend_stocks.py --use-finviz --top 50
出力先を指定:
python3 scripts/screen_dividend_stocks.py --use-finviz --output /path/to/results.json
スクリプトの動作(2段階):
- FINVIZ Elite による事前スクリーニング:
- 時価総額:中型株以上
- 配当利回り:3%以上
- 配当成長率(3年間):5%以上
- EPS 成長率(3年間):プラス
- P/B:2未満
- P/E:20未満
- 売上高成長率(3年間):プラス
- 地域:米国
- FINVIZ の結果を FMP で詳細に分析(通常20~50銘柄):
- 配当成長率の算出(3年間の CAGR)
- 売上高および EPS の推移分析
- 配当の持続可能性評価(配当性向、FCF カバレッジ)
- 財務健全性指標(負債資本比率、流動比率)
- 品質スコアリング(ROE、利益率)
- 複合スコアを算出して順位付け
- 上位 N 銘柄を JSON ファイルに出力
予想実行時間(2段階): FINVIZ の候補銘柄30~50件で2~3分(FMP のみの場合より大幅に高速)
FMP のみのスクリーニング(従来の方法)
FMP Stock Screener API のみを使用します(API の使用量が増加します)。
デフォルト実行:
python3 scripts/screen_dividend_stocks.py
API キーを明示して実行:
python3 scripts/screen_dividend_stocks.py --fmp-api-key $FMP_API_KEY
スクリプトの動作(FMP のみ):
- FMP Stock Screener API を使用した初期スクリーニング(配当利回り >=3.0%、P/E <=20、P/B <=2)
- 候補銘柄の詳細分析(通常100~300銘柄):
- 2段階の方法と同じ詳細分析
- 複合スコアを算出して順位付け
- 上位 N 銘柄を JSON ファイルに出力
予想実行時間(FMP のみ): 候補銘柄100~300件で5~15分(レート制限が適用されます)
API 使用量の比較:
- 2段階:約50~100回の FMP API 呼び出し(FINVIZ による事前絞り込みで約30銘柄)
- FMP のみ:約500~1500回の FMP API 呼び出し(スクリーナーの全結果を分析)
ステップ 3:結果の解析
生成された JSON ファイルを読み込みます。
import json
with open('dividend_screener_results.json', 'r') as f:
data = json.load(f)
metadata = data['metadata']
stocks = data['stocks']
銘柄ごとの主なデータ:
- 基本情報:
symbol、company_name、sector、market_cap、price - バリュエーション:
dividend_yield、pe_ratio、pb_ratio - 成長指標:
dividend_cagr_3y、revenue_cagr_3y、eps_cagr_3y - 持続可能性:
payout_ratio、fcf_payout_ratio、dividend_sustainable - 財務健全性:
debt_to_equity、current_ratio、financially_healthy - 品質:
roe、profit_margin、quality_score - 総合ランキング:
composite_score
ステップ 4:Markdown レポートの生成
以下のセクションを含む、構成の整った Markdown レポートをユーザー向けに作成します。
レポートの構成
# Value Dividend Stock Screening Report
**Generated:** [Timestamp]
**Screening Criteria:**
- Dividend Yield: >= 3.5%
- P/E Ratio: <= 20
- P/B Ratio: <= 2
- Dividend Growth (3Y CAGR): >= 5%
- Revenue Trend: Positive over 3 years
- EPS Trend: Positive over 3 years
**Total Results:** [N] stocks
---
## Top 20 Stocks Ranked by Composite Score
| Rank | Symbol | Company | Yield | P/E | Div Growth | Score |
|------|--------|---------|-------|-----|------------|-------|
| 1 | [TICKER] | [Name] | [%] | [X.X] | [%] | [XX.X] |
| ... |
---
## Detailed Analysis
### 1. [SYMBOL] - [Company Name] (Score: XX.X)
**Sector:** [Sector Name]
**Market Cap:** $[X.XX]B
**Current Price:** $[XX.XX]
**Valuation Metrics:**
- Dividend Yield: [X.X]%
- P/E Ratio: [XX.X]
- P/B Ratio: [X.X]
**Growth Profile (3-Year):**
- Dividend CAGR: [X.X]% [✓ Consistent / ⚠ One cut]
- Revenue CAGR: [X.X]%
- EPS CAGR: [X.X]%
**Dividend Sustainability:**
- Payout Ratio: [XX]%
- FCF Payout Ratio: [XX]%
- Status: [✓ Sustainable / ⚠ Monitor / ❌ Risk]
**Financial Health:**
- Debt-to-Equity: [X.XX]
- Current Ratio: [X.XX]
- Status: [✓ Healthy / ⚠ Caution]
**Quality Metrics:**
- ROE: [XX]%
- Net Profit Margin: [XX]%
- Quality Score: [XX]/100
**Investment Considerations:**
- [Key strength 1]
- [Key strength 2]
- [Risk factor or consideration]
---
[Repeat for other top stocks]
---
## Portfolio Construction Guidance
**Diversification Recommendations:**
- Sector breakdown of top 20 results
- Suggested allocation strategy
- Concentration risk warnings
**Monitoring Recommendations:**
- Key metrics to track quarterly
- Warning signs for each position
- Rebalancing triggers
**Risk Considerations:**
- Market cap concentration
- Sector biases in results
- Economic sensitivity warnings
ステップ 5:背景と手法の説明
結果を説明する際は、スクリーニング手法を参照します。
説明する主な概念:
- なぜこれらのしきい値(利回り 3.5%、P/E 20、P/B 2)を設定しているのか
- 静的な高利回りと比べた、配当成長の重要性
- 総合スコアがバリュー、成長、品質のバランスをどう取っているか
- 配当の持続可能性と、配当の罠との違い
- 財務健全性指標の重要性
詳しい説明を行うには、references/screening_methodology.md を読み込み、以下の内容を確認します。
- フェーズ 1:初期の定量フィルター
- フェーズ 2:成長の質に関するフィルター
- フェーズ 3:持続可能性と品質の分析
- 総合スコアリングシステム
- 投資哲学と制約事項
ステップ 6:追加の質問への回答
ユーザーからよくある質問を想定します。
「[stock] がリストに入らなかったのはなぜですか?」
- 利回り、バリュエーション、成長、持続可能性のどの基準を満たさなかったか確認します
- 除外につながった具体的なフィルターを説明します
「特定のセクターを対象にスクリーニングできますか?」
- スクリプトにフィルタリング機能があります(383~388 行を変更してください)
- セクターパラメーターを追加して再実行する方法を提案します
「利回りのしきい値を上げたり下げたりしたい場合は?」
- スクリプトのパラメーターは調整可能です
- 利回りと成長のトレードオフについて説明します
- 新しいパラメーターで再度スクリーニングすることを推奨します
「このスクリーニングはどのくらいの頻度で再実行すべきですか?」
- 四半期ごとを推奨します(決算サイクルに合わせます)
- 長期保有者であれば、半年ごとで十分です
- 市場環境によっては、より頻繁な確認が必要になる場合があります
「何銘柄を購入すべきですか?」
- 分散投資の目安:配当ポートフォリオでは最低 10~15 銘柄
- セクターのバランスも考慮します
- リスク許容度に応じてポジションサイズを決定します
リソース
scripts/screen_dividend_stocks.py
以下の機能を備えた総合スクリーニングスクリプトです。
- データ取得のために FMP API と連携します
- 複数フェーズのフィルタリングロジックを実装します
- 3 年間の期間で成長率(CAGR)を計算します
- 配当性向と FCF カバレッジに基づいて、配当の持続可能性を評価します
- 財務健全性(負債資本比率、流動比率)を評価します
- 品質スコア(ROE、利益率)を算出します
- 総合スコアリングシステムに基づいて銘柄をランキングします
- 構造化された JSON 結果を出力します
依存関係: requests ライブラリ(pip install requests でインストール)
レート制限: FMP API の制限(無料プランでは 1 日 250 リクエスト)を守るため、遅延が組み込まれています
エラー処理: データがない場合の段階的な機能縮退、レート制限時の再試行、API エラーへの対応
references/screening_methodology.md
スクリーニング手法の包括的なドキュメント:
フェーズ 1:初期の定量的フィルター
- 配当利回り >= 3.5% の根拠と計算方法
- P/E 比率 <= 20 のしきい値の妥当性
- P/B 比率 <= 2 のバリュエーションの考え方
フェーズ 2:成長の質に関するフィルター
- 配当成長率(3年間の CAGR >= 5%)
- 売上高のプラス傾向の分析
- EPS のプラス傾向の分析
フェーズ 3:品質と持続可能性の分析
- 配当の持続可能性指標(配当性向、FCF カバレッジ)
- 財務健全性指標(D/E、流動比率)
- 品質スコアリング手法(ROE、利益率)
複合スコアリングシステム(0~100ポイント)
- スコア構成要素の内訳と重み付け
- 解釈のガイドライン
投資理念
- この手法が機能する理由
- この戦略で避けられるもの(配当の罠、割安株の罠)
- 理想的な候補銘柄のプロファイル
利用上の注意と制限事項
- ポートフォリオ構築のベストプラクティス
- 売却判断の基準
- しきい値選定の歴史的背景
references/fmp_api_guide.md
Financial Modeling Prep API の完全ガイド:
API キーの設定
- 無料 API キーの取得
- 環境変数の設定
- 無料プランの制限(1日あたり250リクエスト)
使用する主なエンドポイント
- 株式スクリーナー API
- 損益計算書 API
- 貸借対照表 API
- キャッシュフロー計算書 API
- 主要指標 API
- 過去の配当 API
レート制限への対応
- スクリプトに組み込まれた保護機能
- リクエスト予算の管理
- 無料プランのベストプラクティス
エラー処理
- よくあるエラーと解決方法
- デバッグ手法
データ品質に関する考慮事項
- データの鮮度と欠落
- データ精度に関する注意事項
- SEC 提出書類で確認すべき場合
高度な使い方
スクリーニング基準のカスタマイズ
scripts/screen_dividend_stocks.py のしきい値を変更します:
383~388行目 - 初期スクリーニングのパラメーター:
candidates = client.screen_stocks(
dividend_yield_min=3.5, # Adjust yield threshold
pe_max=20, # Adjust P/E threshold
pb_max=2, # Adjust P/B threshold
market_cap_min=2_000_000_000 # Minimum $2B market cap
)
423行目 - 配当 CAGR のしきい値:
if not div_cagr or div_cagr < 5.0: # Adjust growth threshold
セクター別スクリーニング
初期スクリーニングの後にセクターのフィルタリングを追加します:
# Filter for specific sectors
target_sectors = ['Consumer Defensive', 'Utilities', 'Healthcare']
candidates = [s for s in candidates if s.get('sector') in target_sectors]
REIT と金融株の除外
REIT と金融株は配当特性が異なります(配当性向が高く、指標も異なります):
# Exclude REITs and Financials
exclude_sectors = ['Real Estate', 'Financial Services']
candidates = [s for s in candidates if s.get('sector') not in exclude_sectors]
CSV へのエクスポート
JSON の結果を CSV に変換して Excel で分析します:
import json
import csv
with open('dividend_screener_results.json', 'r') as f:
data = json.load(f)
stocks = data['stocks']
with open('screening_results.csv', 'w', newline='') as csvfile:
if stocks:
fieldnames = stocks[0].keys()
writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
writer.writeheader()
writer.writerows(stocks)
トラブルシューティング
「ERROR: requests library not found」
解決方法: requests ライブラリをインストールします
pip install requests
「ERROR: FMP API key required」
解決方法: 環境変数を設定するか、コマンドラインから指定します
export FMP_API_KEY=your_key_here
# OR
python3 scripts/screen_dividend_stocks.py --fmp-api-key your_key_here
「ERROR: FINVIZ API key required when using --use-finviz」
解決方法: 環境変数を設定するか、コマンドラインから指定します
export FINVIZ_API_KEY=your_key_here
# OR
python3 scripts/screen_dividend_stocks.py --use-finviz --finviz-api-key your_key_here
注: FINVIZ Elite のサブスクリプションが必要です(約$40/月、または約$330/年)
「ERROR: FINVIZ API authentication failed」
考えられる原因:
- FINVIZ API キーが無効
- FINVIZ Elite のサブスクリプションの有効期限切れ
- API キーの形式が正しくない
解決方法:
- FINVIZ Elite のサブスクリプションが有効であることを確認します
- API キーに誤字がないか確認します(英数字の文字列である必要があります)
- FINVIZ Elite アカウントにログインし、設定で API キーを確認します
- FINVIZ Elite スクリーナーに手動でアクセスし、サブスクリプションを確認します
「ERROR: FINVIZ pre-screening failed or returned no results」
考えられる原因:
- FINVIZ API の接続問題
- スクリーニング基準が厳しすぎる(条件に合う銘柄がない)
- 市場環境(弱気相場では結果が少なくなる可能性があります)
解決方法:
- インターネット接続を確認します
- FINVIZ Elite のウェブサイトにアクセスできることを確認します
- 代替手段として FMP のみを使う方法を試します:
python3 scripts/screen_dividend_stocks.py
「WARNING: Rate limit exceeded」
解決方法: スクリプトは60秒後に自動的に再試行します。問題が続く場合:
- 翌日まで待ちます(無料プランの制限は毎日リセットされます)
- 分析する銘柄数を減らします(394行目の上限を変更します)
- 有料の FMP プランへのアップグレードを検討します
「No stocks found matching all criteria」
解決方法: 基準が厳しすぎる可能性があります
- P/E のしきい値を緩和します(20より大きくします)
- 必要な配当利回りを引き下げます(3.5%より小さくします)
- 必要な配当成長率を引き下げます(5%より小さくします)
- 市場環境を確認します(弱気相場では条件を満たす銘柄が少なくなる可能性があります)
スクリプトの実行が遅い
想定される動作: API 呼び出しのレート制限のため、スクリプトは呼び出しの間に 0.3 秒の遅延を設けます
- 100 銘柄の分析に約 8~10 分かかります
- 条件に合う最初の 20~30 銘柄は、通常、最初の 50~70 銘柄を分析するまでに見つかります
パフォーマンスとコストの最適化
API 呼び出しの比較
2 段階スクリーニング(FINVIZ + FMP):
- FINVIZ:API 呼び出し 1 回
- FMP Quote API:約 30~50 回(事前スクリーニング済みのシンボルごとに 1 回)
- FMP Financial Data:約 150~250 回(5 エンドポイント × 30~50 シンボル)
- FMP の呼び出し合計:約 180~300 回
FMP のみのスクリーニング:
- FMP Stock Screener:1 回(100~1000 銘柄を返します)
- FMP Financial Data:約 500~5000 回(5 エンドポイント × 100~1000 シンボル)
- FMP の呼び出し合計:約 500~5000 回
削減効果:FMP API の使用量を 60~94%削減
コスト分析
FINVIZ Elite:
- 月額:$39.99
- 年額:$329.99(月あたり約 $27.50)
FMP API:
- 無料プラン:1 日あたり 250 回(2 段階スクリーニングには十分です)
- Starter プラン:月額 $29.99、1 日あたり 750 回
- Professional プラン:月額 $79.99、1 日あたり 2000 回
おすすめ:
- FMP 無料プランのユーザー: 2 段階スクリーニング(FINVIZ + FMP 無料プラン)を使用してください
- FMP 有料プランのユーザー: どちらの方法も使用できます。2 段階方式のほうが高速です
- 低予算向け: FMP のみを無料プランで使用(数日おきにスクリーニングを実行)
- 最適な選択肢: FINVIZ Elite(年額 $330)+ FMP 無料プラン = 完全なソリューション
バージョン履歴
- v1.1(2025 年 11 月):2 段階スクリーニング向けに FINVIZ Elite との連携を追加
- v1.0(2025 年 11 月):包括的な多段階スクリーニングを実装して初回リリース