theme-detector について
theme-detectorは、業種横断のモメンタム、出来高、広がりのシグナルから市場テーマを検出するスキルです。方向、ライフサイクル段階、信頼度を評価し、テーマ投資の調査用レポートをJSONとMarkdownで出力します。
主な機能
- 01FINVIZの業種データから横断テーマを検出
- 02強気・弱気の方向とテーマの強さを評価
- 03テーマのライフサイクル段階を分類
- 04テーマETF数から過密度を評価
- 05JSONとMarkdownのレポートを生成
活用シーン
- 01新興、加速、または消耗段階のテーマを抽出
- 02強気・弱気テーマの強さと段階を比較
- 03過密取引に注意しながらテーマETFの配分案を調査
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ mphinance/ alpha-skills --skill theme-detectorインストール後、Claude Code で/theme-detectorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
README.mdassets/report_template.mdreferences/cross_sector_themes.mdfinviz_industry_codes.mdthematic_etf_catalog.mdtheme_detection_methodology.mdscripts/config_loader.pydefault_theme_config.pyetf_scanner.pyfinviz_performance_client.pyreport_generator.pyrepresentative_stock_selector.pyscorer.pyscripts/calculators/__init__.pyheat_calculator.pyindustry_ranker.pylifecycle_calculator.pytheme_classifier.pytheme_discoverer.pyscripts/tests/conftest.pyREADME.mdtest_config_loader.pytest_detect_divergence.pytest_etf_scanner.pytest_finviz_performance_client.pytest_heat_calculator.pytest_industry_ranker.pytest_lifecycle_calculator.pytest_report_generator.pytest_representative_stock_selector.py詳細
テーマ検出
概要
このスキルは、セクター横断的なモメンタム、出来高、広がりのシグナルを分析して、トレンドの市場テーマを検出し、ランク付けします。強気(上昇モメンタム)と弱気(下落圧力)の両方のテーマを特定し、ライフサイクルの成熟度(新興/加速/トレンド/成熟/衰退)を評価するとともに、定量データとナラティブ分析を組み合わせた信頼度スコアを提示します。
3 次元スコアリングモデル:
- テーマの勢い(0~100):テーマの方向性に依存しない強さ(モメンタム、出来高、上昇トレンド比率、広がり)
- ライフサイクルの成熟度:継続期間、極端な値の集中、バリュエーション、ETF の増加状況に基づくステージ分類(新興/加速/トレンド/成熟/衰退)
- 信頼度(低/中/高):定量的な広がりとナラティブによる確認を組み合わせた、検出の信頼性。スクリプトの出力は「中」までです。Claude の WebSearch によるナラティブ確認ステップで「高」に引き上げることができます。
主な機能:
- FINVIZ の業界データを使用したセクター横断的なテーマ検出
- 方向性を考慮したスコアリング(強気と弱気のテーマ)
- 取引の混雑度と新興度を特定するライフサイクル成熟度の評価
- ETF の増加状況のスコアリング(ETF が多いほど、テーマの成熟度・混雑度が高い)
- 3 点評価のための uptrend-dashboard との連携
- FINVIZ Elite(高速)または公開データのスクレイピング(低速、制限あり)によるデュアルモード動作
- 上位テーマの WebSearch によるナラティブ確認
このスキルを使用する場面
明示的なトリガー:
- 「今、どのような市場テーマがトレンドになっていますか?」
- 「どのセクターが好調/不調ですか?」
- 「現在の市場テーマを検出してください」
- 「最も強い強気/弱気のナラティブは何ですか?」
- 「AI/クリーンエネルギー/防衛は、まだ強いテーマですか?」
- 「セクターローテーションはどこに向かっていますか?」
- 「テーマ型投資の機会を教えてください」
暗黙的なトリガー:
- ユーザーが市場全体のナラティブの変化を理解したい
- ユーザーがテーマ型 ETF やセクター配分のアイデアを探している
- ユーザーが混雑した取引やサイクル後半のテーマについて尋ねる
- ユーザーが新興テーマと衰退したテーマを知りたい
使用しない場面:
- 個別株の分析(代わりに us-stock-analysis を使用)
- チャート分析を含む特定セクターの詳細分析(代わりに sector-analyst を使用)
- ポートフォリオのリバランス(代わりに portfolio-manager を使用)
- 配当/インカム投資(代わりに value-dividend-screener を使用)
前提条件
必須:
- Python 3.7 以降とコア依存関係:
pip install requests beautifulsoup4 lxml pandas numpy yfinance
任意の API キー:
FINVIZ Elite(幅広い業界を網羅し、高速に処理するため推奨):
export FINVIZ_API_KEY=your_finviz_elite_api_key_here
FMP API(任意。P/E 比率のバリュエーションデータ用):
export FMP_API_KEY=your_fmp_api_key_here
任意の Python パッケージ:
finvizfinance- FINVIZ Elite モードに必要PyYAML- カスタムテーマ用の--themes-configに必要
FINVIZ Elite を使用しない場合、このスキルは公開 FINVIZ のスクレイピングを使用します(各業界あたり約 20 銘柄に制限され、レート制限により処理速度も低下します)。
ワークフロー
ステップ 1:環境を確認する
前提条件を参照し、API キーが設定されていることを確認します:
# Verify FINVIZ Elite API key (optional but recommended)
echo $FINVIZ_API_KEY
# Verify FMP API key (optional)
echo $FMP_API_KEY
ステップ 2:テーマ検出スクリプトを実行する
メインの検出スクリプトを実行します:
python3 skills/theme-detector/scripts/theme_detector.py \
--output-dir reports/
スクリプトのオプション:
# Full run (public FINVIZ mode, no API key required)
python3 skills/theme-detector/scripts/theme_detector.py \
--output-dir reports/
# With FINVIZ Elite API key
python3 skills/theme-detector/scripts/theme_detector.py \
--finviz-api-key $FINVIZ_API_KEY \
--output-dir reports/
# With FMP API key for enhanced stock data
python3 skills/theme-detector/scripts/theme_detector.py \
--fmp-api-key $FMP_API_KEY \
--output-dir reports/
# Custom limits
python3 skills/theme-detector/scripts/theme_detector.py \
--max-themes 5 \
--max-stocks-per-theme 10 \
--output-dir reports/
# Explicit FINVIZ mode
python3 skills/theme-detector/scripts/theme_detector.py \
--finviz-mode public \
--output-dir reports/
想定実行時間:
- FINVIZ Elite モード:約 2~3 分(14 以上のテーマ)
- 公開 FINVIZ モード:約 5~8 分(レート制限付きのスクレイピング)
ステップ 3:検出結果を読み取り、解析する
スクリプトは 2 つの出力ファイルを生成します:
theme_detector_YYYY-MM-DD_HHMMSS.json- プログラムで利用する構造化データtheme_detector_YYYY-MM-DD_HHMMSS.md- 人が読みやすいレポート
定量的な結果を把握するため、JSON 出力を読み取ります:
# Find the latest report
ls -lt reports/theme_detector_*.json | head -1
# Read the JSON output
cat reports/theme_detector_YYYY-MM-DD_HHMMSS.json
Step 4: WebSearch によるナラティブの確認
Theme Heat スコア上位 5 テーマについて、WebSearch クエリを実行してナラティブの強さを確認します。
検索パターン:
"[theme name] stocks market [current month] [current year]"
"[theme name] sector momentum [current month] [current year]"
ナラティブの兆候を評価します:
- 強いナラティブ:複数の主要メディアによる報道、アナリストの格上げ、政策を後押しする要因
- 中程度のナラティブ:報道はあるものの、見方が分かれており、明確な要因がない
- 弱いナラティブ:報道が少ない、または主に逆張り・懐疑的な論調
調査結果に基づいて信頼度を更新します:
- 定量的評価が High + ナラティブが強い = 信頼度 High
- 定量的評価が High + ナラティブが弱い = 信頼度 Medium(モメンタムとの乖離の可能性)
- 定量的評価が Low + ナラティブが強い = 信頼度 Medium(ナラティブが価格に先行する可能性)
- 定量的評価が Low + ナラティブが弱い = 信頼度 Low
Step 5: 結果を分析し、推奨事項を提示する
検出結果をナレッジベースと照合します。
参照するドキュメント:
references/cross_sector_themes.md- テーマの定義と構成業種references/thematic_etf_catalog.md- テーマ別の ETF エクスポージャーの選択肢references/theme_detection_methodology.md- スコアリングモデルの詳細references/finviz_industry_codes.md- 業種分類の参照情報
分析フレームワーク:
強い強気テーマ(Heat >= 70、Direction = Bullish)の場合:
- ライフサイクルの段階を特定します(Emerging = 機会、Mature/Exhausting = 注意)
- テーマ内でパフォーマンス上位の業種を列挙します
- エクスポージャーを得るための代理 ETF を推奨します
- ETF の数が多い場合は、過密な取引への警戒を促します
強い弱気テーマ(Heat >= 70、Direction = Bearish)の場合:
- 圧力を受けている業種を特定します
- 弱気モメンタムが加速しているか、減速しているかを評価します
- ヘッジ戦略または回避すべきセクターを推奨します
- ライフサイクルが Mature/Exhausting の場合は、平均回帰の可能性に言及します
新興テーマ(Heat 40-69、Lifecycle = Emerging)の場合:
- 早期の資金ローテーションの兆候である可能性があります
- ウォッチリストに追加して監視することを推奨します
- テーマを加速させる可能性のある触媒イベントを特定します
過熱が一巡したテーマ(Heat >= 60、Lifecycle = Exhausting)の場合:
- 過密な取引のリスクを警告します
- ETF 数が多い場合は、個人投資家の参加が過剰であることを確認できます
- 逆張りのポジションを検討するか、エクスポージャーの縮小を検討します
Step 6: 最終レポートを生成する
レポートテンプレートの構成に従って、ユーザーに最終レポートを提示します。
# Theme Detection Report
**Date:** YYYY-MM-DD
**Mode:** FINVIZ Elite / Public
**Themes Analyzed:** N
**Data Quality:** [note any limitations]
## Theme Dashboard
[Top themes table with Heat, Direction, Lifecycle, Confidence]
## Bullish Themes Detail
[Detailed analysis of bullish themes sorted by Heat]
## Bearish Themes Detail
[Detailed analysis of bearish themes sorted by Heat]
## All Themes Summary
[Complete theme ranking table]
## Industry Rankings
[Top performing and worst performing industries]
## Sector Uptrend Ratios
[Sector-level aggregation if uptrend data available]
## Methodology Notes
[Brief explanation of scoring model]
レポートを reports/ ディレクトリに保存します。
出力
このスキルは、reports/ ディレクトリに 2 つのファイルを出力します。
JSON 出力(theme_detector_YYYY-MM-DD_HHMMSS.json):
{
"report_type": "theme_detector",
"generated_at": "2026-04-18 10:30:00",
"metadata": {
"generated_at": "2026-04-18 10:30:00",
"data_mode": "full",
"finviz_mode": "elite",
"fmp_available": true,
"max_themes": 14,
"max_stocks_per_theme": 5,
"data_sources": {
"finviz_industries": 152,
"yfinance_stocks": 68,
"etf_volume": 24
}
},
"summary": {
"total_themes": 14,
"bullish_count": 8,
"bearish_count": 6,
"top_bullish": "AI & Machine Learning",
"top_bearish": "Regional Banks"
},
"themes": {
"all": [
{
"name": "AI & Machine Learning",
"direction": "bullish",
"heat": 85.3,
"maturity": 42.1,
"stage": "Accelerating",
"confidence": "Medium",
"heat_label": "Hot",
"industries": ["Software - Infrastructure", "Semiconductors"],
"representative_stocks": [{"symbol": "NVDA"}, {"symbol": "MSFT"}],
"proxy_etfs": ["BOTZ", "ROBO"],
"theme_origin": "seed"
}
],
"bullish": [...],
"bearish": [...]
},
"industry_rankings": {
"top": [...],
"bottom": [...]
},
"sector_uptrend": {...},
"data_quality": {...}
}
Markdown レポート(theme_detector_YYYY-MM-DD_HHMMSS.md):
- 並べ替え可能なランキングを含むテーマダッシュボード
- 強気・弱気テーマの詳細セクション
- 業種別パフォーマンスランキング
- セクターの上昇トレンド比率の概要
- 手法に関する注記
主な出力フィールド(テーマごと):
| フィールド | 説明 |
|---|---|
heat | 方向に依存しないテーマの強さ(0~100) |
direction | "bullish"(LEAD)または "bearish"(LAG) |
stage | Emerging / Accelerating / Trending / Mature / Exhausting |
confidence | Low / Medium / High(スクリプトでは Medium が上限ですが、WebSearch によって引き上げられる場合があります) |
representative_stocks | テーマを代表する上位銘柄(symbol と各種指標を含むオブジェクトのリスト) |
proxy_etfs | テーマ別 ETF のティッカー(長さ = ETF 数。多いほど過密な取引の可能性が高まります) |
theme_origin | "seed"(YAML 設定由来)または "discovered"(自動クラスタリングで発見) |
リソース
スクリプトディレクトリ(scripts/)
主なスクリプト:
-
theme_detector.py- メインのオーケストレータースクリプト- 業界データの収集、テーマの分類、スコアリングを調整します
- JSON と Markdown の出力を生成します
- 使用方法:
python3 theme_detector.py [options]
-
theme_classifier.py- 業界を複数セクターにまたがるテーマにマッピングしますcross_sector_themes.mdからテーマ定義を読み込みます- テーマ単位の集計スコアを計算します
- 構成業界から方向性(強気/弱気)を判定します
- 表示マッピング:「bullish」→「LEAD」、「bearish」→「LAG」(
report_generator.py::_direction_label()を参照)
-
finviz_industry_scanner.py- FINVIZ の業界データを収集します- エリートモード:業界ごとの全銘柄データを含む CSV をエクスポートします
- パブリックモード:レート制限付きでウェブスクレイピングを行います
- 抽出項目:パフォーマンス、出来高、変化率、平均出来高、時価総額
-
calculators/lifecycle_calculator.py- ライフサイクルの成熟度を評価します- 期間スコアリング、極端度のクラスタリング、バリュエーション分析
thematic_etf_catalog.mdに基づく ETF の普及度スコアリング- ステージ分類:新興/加速/トレンド/成熟/衰退
-
report_generator.py- レポート出力を生成します- テンプレートから Markdown レポートを生成します
- 構造化された JSON 出力を生成します
- テーマダッシュボードを整形します
参照ディレクトリ(references/)
ナレッジベース:
cross_sector_themes.md- 業界、ETF、銘柄、照合基準を含むテーマ定義thematic_etf_catalog.md- テーマごとの件数を含む、包括的なテーマ ETF カタログfinviz_industry_codes.md- FINVIZ の業界とフィルターコードの完全な対応表theme_detection_methodology.md- 3D スコアリングモデルの技術ドキュメント
アセットディレクトリ(assets/)
report_template.md- プレースホルダー形式を含むレポート生成用の Markdown テンプレート
重要な注意事項
FINVIZ モードの違い
| 機能 | エリートモード | パブリックモード |
|---|---|---|
| 業界の網羅範囲 | 約145の全業界 | 約145の全業界 |
| 業界あたりの銘柄数 | 全銘柄 | 約20銘柄(1ページ目) |
| レート制限 | リクエスト間隔0.5秒 | リクエスト間隔2.0秒 |
| データの鮮度 | リアルタイム | 15分遅延 |
| API キーが必要 | はい($39.50/月) | いいえ |
| 実行時間 | 約2~3分 | 約5~8分 |
方向性の判定ロジック
テーマの方向性は、構成業界の相対順位による多数決で決まります。
- 業界のランキング:約145の全業界を、複数の時間枠におけるモメンタムスコアで順位付けします
- 順位に基づく方向性:ランキングの上位半分の業界を「強気」、下位半分を「弱気」に分類します
- テーマの多数決:
_majority_direction()が各テーマ内の強気業界と弱気業界を数え、多数派を採用します
表示マッピング:「bullish」→ LEAD、「bearish」→ LAG(report_generator.py::_direction_label() を参照)
LEAD テーマは、その構成業界が相対的に優れたパフォーマンスを示していることを意味します。LAG テーマの絶対リターンがプラスの場合もあります。これは相対的な低パフォーマンスを示すものであり、ショートシグナルではありません。
既知の制限事項
- サバイバーシップバイアス:現在上場している銘柄と ETF のみを分析します
- 遅延:FINVIZ のデータは、日中の値動きに対して15分遅れる場合があります(パブリックモード)
- テーマの境界:複数のテーマに当てはまる銘柄もあります。分類には主要業界を使用します
- ETF の普及度:カタログは静的なため、ごく最近の ETF が反映されていない場合があります
- ナラティブスコアリング:WebSearch に基づいており、本質的に主観的です
- パブリックモードの制限:業界あたり約20銘柄のため、小型株のシグナルを見落とす場合があります
免責事項
この分析は、教育および情報提供のみを目的としています。
- 投資助言ではありません
- 過去のテーマ別トレンドは、将来のパフォーマンスを保証するものではありません
- テーマの検出はモメンタムを特定するものであり、ファンダメンタル価値を示すものではありません
- 投資判断を行う前に、ご自身で調査してください
バージョン: 1.0 最終更新日: 2026-02-16 API 要件: FINVIZ Elite(推奨)またはパブリックモード(無料);FMP API は任意 実行時間: モードに応じて約 2~8 分 出力形式: JSON + Markdown 対象テーマ: セクター横断型テーマ 14 件以上