theme-detector について
市場テーマを検出し、順位付けする分析スキルです。セクターローテーションやテーマ投資を調べる人向けに、業種横断のモメンタム、出来高、広がり、テーマの段階、ナラティブを組み合わせ、強気・弱気のテーマを評価します。
主な機能
- 01FINVIZの業種データからテーマを検出
- 02強気・弱気の方向を評価
- 03テーマのライフサイクル段階を分類
- 04ETF数で取引の過熱度を評価
- 05定量シグナルとナラティブで確信度を算出
- 06JSONとMarkdownのレポートを生成
活用シーン
- 01勢いを増す、または失う市場テーマの発見
- 02新興段階と衰退段階のテーマ比較
- 03過熱している可能性のあるテーマ取引の特定
- 04業種横断のローテーションシグナルの追跡
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ wind-alice/ alicemarket --skill theme-detectorインストール後、Claude Code で/theme-detectorを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
assets/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.pytest_scorer.py詳細
テーマ検出器
概要
このスキルは、セクターを横断するモメンタム、出来高、広がりのシグナルを分析し、注目を集める市場テーマを検出して順位付けします。強気(上昇モメンタム)と弱気(下落圧力)の両方のテーマを特定し、ライフサイクルの成熟度(初期/中期/後期/過熱)を評価するとともに、定量データとナラティブ分析を組み合わせた信頼度スコアを提示します。
3次元スコアリングモデル:
- テーマの勢い(0~100):テーマの方向性に依存しない強さ(モメンタム、出来高、上昇トレンド比率、広がり)
- ライフサイクルの成熟度:継続期間、極端な値の集中度、バリュエーション、ETF の増加状況に基づく段階分類(初期/中期/後期/過熱)
- 信頼度(低/中/高):定量的な広がりとナラティブによる裏付けを組み合わせた、検出結果の信頼性
主な機能:
- FINVIZ の業種データを使った、セクター横断的なテーマ検出
- 方向性を考慮したスコアリング(強気と弱気のテーマ)
- 混雑した取引と新興の取引を見分けるためのライフサイクル成熟度評価
- ETF 増加状況のスコアリング(ETF が多いほど、テーマが成熟または混雑)
- uptrend-dashboard と連携した3つの観点からの評価
- 2つの動作モード:FINVIZ Elite(高速)または一般公開データのスクレイピング(低速、制限あり)
- WebSearch を使った、上位テーマのナラティブ確認
このスキルを使用する場面
明示的なトリガー:
- 「現在、注目されている市場テーマは何ですか?」
- 「どのセクターが好調/不調ですか?」
- 「現在の市場テーマを検出して」
- 「最も強い強気/弱気のナラティブは何ですか?」
- 「AI/クリーンエネルギー/防衛は、今でも強いテーマですか?」
- 「セクターローテーションはどこに向かっていますか?」
- 「テーマ型投資の機会を見せて」
暗黙的なトリガー:
- ユーザーが市場全体のナラティブの変化を把握したい
- ユーザーがテーマ型 ETF やセクター配分のアイデアを探している
- ユーザーが混雑した取引やサイクル後期のテーマについて尋ねている
- ユーザーが新興テーマと過熱したテーマを知りたい
使用しない場面:
- 個別株の分析(代わりに us-stock-analysis を使用)
- チャート分析を含む特定セクターの詳細な調査(代わりに sector-analyst を使用)
- ポートフォリオのリバランス(代わりに portfolio-manager を使用)
- 配当/インカム投資(代わりに value-dividend-screener を使用)
ワークフロー
ステップ 1:要件を確認する
必要な API キーと依存関係を確認します。
# Check for FINVIZ Elite API key (optional but recommended)
echo $FINVIZ_API_KEY
# Check for FMP API key (optional, used for valuation metrics)
echo $FMP_API_KEY
要件:
- Python 3.7+ と
requests、beautifulsoup4、lxml - FINVIZ Elite API key(業種を幅広くカバーし、高速に処理するため推奨)
- FMP API key(任意、P/E レシオのバリュエーションデータ用)
- FINVIZ Elite がない場合、このスキルは一般公開されている FINVIZ データをスクレイピングします(業種あたり約20銘柄に制限され、レート制限も低速です)。
インストール:
pip install requests beautifulsoup4 lxml
ステップ 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 5 \
--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]"
ナラティブのシグナルを評価する:
- 強いナラティブ:複数の主要メディアがテーマを取り上げている、アナリストによる投資判断の引き上げ、政策面での追い風がある
- 中程度のナラティブ:一部で取り上げられているが、センチメントはまちまちで、明確なカタリストがない
- 弱いナラティブ:取り上げる報道が少ない、または懐疑的・逆張りの論調が大半を占める
調査結果に基づいて信頼度を更新します。
- 定量評価が高い + ナラティブが強い = 信頼度 高
- 定量評価が高い + ナラティブが弱い = 信頼度 中(モメンタムとの乖離の可能性)
- 定量評価が低い + ナラティブが強い = 信頼度 中(ナラティブが価格に先行している可能性)
- 定量評価が低い + ナラティブが弱い = 信頼度 低
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)の場合:
- ライフサイクルの段階を特定します(Early = 投資機会、Late/Exhaustion = 注意)
- テーマ内でパフォーマンス上位の業種を列挙します
- エクスポージャーを得るための代理 ETF を推奨します
- ETF の種類が多い場合は注意喚起します(取引集中の警告)
弱気のホットテーマ(Heat >= 70、Direction = Bearish)の場合:
- 圧力を受けている業種を特定します
- 弱気モメンタムが加速しているか、減速しているかを評価します
- ヘッジ戦略、または回避すべきセクターを推奨します
- ライフサイクルが Late/Exhaustion の場合は、平均回帰の機会の可能性を示します
新興テーマ(Heat 40-69、Lifecycle = Early)の場合:
- 初期のローテーションシグナルを示している可能性があります
- ウォッチリストに加えて監視することを推奨します
- テーマを加速させる可能性のあるカタリストとなるイベントを特定します
過熱が終息したテーマ(Heat >= 60、Lifecycle = Exhaustion)の場合:
- 取引集中のリスクを警告します
- 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/ ディレクトリに保存します。
リソース
Scripts ディレクトリ(scripts/)
主要スクリプト:
-
theme_detector.py- メインのオーケストレータースクリプト- 業種データの収集、テーマの分類、スコアリングを調整します
- JSON と Markdown の出力を生成します
- 使用方法:
python3 theme_detector.py [options]
-
theme_classifier.py- 業種をセクター横断型のテーマに対応付けます- テーマの定義を
cross_sector_themes.mdから読み込みます - テーマ単位の集計スコアを算出します
- 構成業種に基づいて方向性(強気/弱気)を判定します
- テーマの定義を
-
finviz_industry_scanner.py- FINVIZ の業種データ収集- エリートモード:業種ごとの完全な株式データを含む CSV エクスポート
- パブリックモード:レート制限を適用したウェブスクレイピング
- 抽出項目:パフォーマンス、出来高、変動率、平均出来高、時価総額
-
lifecycle_analyzer.py- ライフサイクルの成熟度評価- 期間スコアリング、極値のクラスタリング、バリュエーション分析
- thematic_etf_catalog.md に基づく ETF の種類の多さのスコアリング
- 段階の分類:Early / Mid / Late / Exhaustion
-
report_generator.py- レポート出力の生成- テンプレートから Markdown レポートを生成します
- JSON 形式の構造化出力
- テーマダッシュボードのフォーマット
References Directory (references/)
ナレッジベース:
cross_sector_themes.md- 業界、ETF、銘柄、照合条件を含むテーマの定義thematic_etf_catalog.md- テーマごとの件数を含む、包括的なテーマ別 ETF カタログfinviz_industry_codes.md- FINVIZ の業界とフィルターコードの完全な対応表theme_detection_methodology.md- 3D スコアリングモデルの技術文書
Assets Directory (assets/)
report_template.md- プレースホルダー形式を含む、レポート生成用の Markdown テンプレート
重要な注意事項
FINVIZ モードの違い
| 機能 | Elite モード | Public モード |
|---|---|---|
| 業界の網羅範囲 | 全約 145 業界 | 全約 145 業界 |
| 業界ごとの銘柄数 | 全銘柄 | 約 20 銘柄(1 ページ目) |
| レート制限 | リクエスト間隔 0.5 秒 | リクエスト間隔 2.0 秒 |
| データの鮮度 | リアルタイム | 15 分遅延 |
| API キーが必要 | はい($39.99/月) | いいえ |
| 実行時間 | 約 2~3 分 | 約 5~8 分 |
方向性の検出ロジック
テーマの方向性(強気か弱気か)は、次の要素で判定します。
- 業界パフォーマンスの加重平均:構成業界の変動率の平均を、時価総額で加重
- 上昇トレンド比率:各業界でテクニカルな上昇トレンドにある銘柄の割合(上昇トレンドのデータがある場合)
- 出来高による確認:出来高が価格の方向性を裏付けているかどうか(買い集めか、分配か)
テーマは次のように分類されます。
- 強気:加重パフォーマンスが 0 を上回り、かつ(上昇トレンド比率が 50% を上回る、または出来高による買い集めが確認される)
- 弱気:加重パフォーマンスが 0 を下回り、かつ(上昇トレンド比率が 50% を下回る、または出来高による分配が確認される)
- 中立:シグナルが混在している、またはデータが不十分
既知の制限事項
- サバイバーシップ・バイアス:現在上場している銘柄と ETF のみを分析します
- 遅延:FINVIZ のデータは日中の値動きから 15 分遅れる場合があります(Public モード)
- テーマの境界:複数のテーマに当てはまる銘柄もあります。分類には主要業界を使用します
- ETF の増加:カタログは静的なため、新しい ETF が反映されていない場合があります
- ナラティブのスコアリング:WebSearch に基づくもので、本質的に主観的です
- Public モードの制限:業界ごとの銘柄が約 20 に限られるため、小型株のシグナルを見落とす場合があります
免責事項
この分析は、教育および情報提供のみを目的としています。
- 投資助言ではありません
- 過去のテーマ別トレンドは、将来のパフォーマンスを保証するものではありません
- テーマ検出で特定するのはモメンタムであり、ファンダメンタル価値ではありません
- 投資判断を行う前に、ご自身で調査してください
バージョン: 1.0 最終更新日: 2026-02-16 API 要件: FINVIZ Elite(推奨)または Public モード(無料);FMP API は任意 実行時間: モードに応じて約 2~8 分 出力形式: JSON + Markdown 対象テーマ: 14 以上のクロスセクターテーマ