quantwise 1.2.0 → 1.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.claude/skills/README.md +80 -0
- package/.claude/skills/backtest-expert/SKILL.md +206 -0
- package/.claude/skills/backtest-expert/references/failed_tests.md +236 -0
- package/.claude/skills/backtest-expert/references/methodology.md +227 -0
- package/.claude/skills/breadth-chart-analyst/SKILL.md +583 -0
- package/.claude/skills/breadth-chart-analyst/assets/SP500_Breadth_Index_200MA_8MA.jpeg +0 -0
- package/.claude/skills/breadth-chart-analyst/assets/US_Stock_Market_Uptrend_Ratio.jpeg +0 -0
- package/.claude/skills/breadth-chart-analyst/assets/breadth_analysis_template.md +558 -0
- package/.claude/skills/breadth-chart-analyst/references/breadth_chart_methodology.md +590 -0
- package/.claude/skills/canslim-screener/SKILL.md +599 -0
- package/.claude/skills/canslim-screener/references/canslim_methodology.md +606 -0
- package/.claude/skills/canslim-screener/references/fmp_api_endpoints.md +707 -0
- package/.claude/skills/canslim-screener/references/interpretation_guide.md +516 -0
- package/.claude/skills/canslim-screener/references/scoring_system.md +597 -0
- package/.claude/skills/canslim-screener/scripts/calculators/earnings_calculator.py +343 -0
- package/.claude/skills/canslim-screener/scripts/calculators/growth_calculator.py +334 -0
- package/.claude/skills/canslim-screener/scripts/calculators/institutional_calculator.py +347 -0
- package/.claude/skills/canslim-screener/scripts/calculators/leadership_calculator.py +380 -0
- package/.claude/skills/canslim-screener/scripts/calculators/market_calculator.py +244 -0
- package/.claude/skills/canslim-screener/scripts/calculators/new_highs_calculator.py +194 -0
- package/.claude/skills/canslim-screener/scripts/calculators/supply_demand_calculator.py +221 -0
- package/.claude/skills/canslim-screener/scripts/finviz_stock_client.py +227 -0
- package/.claude/skills/canslim-screener/scripts/fmp_client.py +393 -0
- package/.claude/skills/canslim-screener/scripts/report_generator.py +405 -0
- package/.claude/skills/canslim-screener/scripts/scorer.py +625 -0
- package/.claude/skills/canslim-screener/scripts/screen_canslim.py +361 -0
- package/.claude/skills/canslim-screener/scripts/test_institutional_endpoint.py +109 -0
- package/.claude/skills/chart/SKILL.md +20 -0
- package/.claude/skills/dividend-growth-pullback-screener/SKILL.md +322 -0
- package/.claude/skills/dividend-growth-pullback-screener/references/dividend_growth_compounding.md +400 -0
- package/.claude/skills/dividend-growth-pullback-screener/references/fmp_api_guide.md +642 -0
- package/.claude/skills/dividend-growth-pullback-screener/references/rsi_oversold_strategy.md +333 -0
- package/.claude/skills/dividend-growth-pullback-screener/scripts/screen_dividend_growth_rsi.py +1155 -0
- package/.claude/skills/earnings-calendar/SKILL.md +721 -0
- package/.claude/skills/earnings-calendar/assets/earnings_report_template.md +102 -0
- package/.claude/skills/earnings-calendar/references/fmp_api_guide.md +590 -0
- package/.claude/skills/earnings-calendar/scripts/fetch_earnings_fmp.py +443 -0
- package/.claude/skills/earnings-calendar/scripts/generate_report.py +366 -0
- package/.claude/skills/economic-calendar-fetcher/SKILL.md +365 -0
- package/.claude/skills/economic-calendar-fetcher/references/fmp_api_documentation.md +345 -0
- package/.claude/skills/economic-calendar-fetcher/scripts/get_economic_calendar.py +267 -0
- package/.claude/skills/ftd-detector/SKILL.md +147 -0
- package/.claude/skills/ftd-detector/references/ftd_methodology.md +188 -0
- package/.claude/skills/ftd-detector/references/post_ftd_guide.md +185 -0
- package/.claude/skills/ftd-detector/scripts/fmp_client.py +158 -0
- package/.claude/skills/ftd-detector/scripts/ftd_detector.py +280 -0
- package/.claude/skills/ftd-detector/scripts/post_ftd_monitor.py +404 -0
- package/.claude/skills/ftd-detector/scripts/rally_tracker.py +508 -0
- package/.claude/skills/ftd-detector/scripts/report_generator.py +341 -0
- package/.claude/skills/ftd-detector/scripts/tests/conftest.py +9 -0
- package/.claude/skills/ftd-detector/scripts/tests/helpers.py +107 -0
- package/.claude/skills/ftd-detector/scripts/tests/test_post_ftd_monitor.py +311 -0
- package/.claude/skills/ftd-detector/scripts/tests/test_rally_tracker.py +302 -0
- package/.claude/skills/institutional-flow-tracker/README.md +362 -0
- package/.claude/skills/institutional-flow-tracker/SKILL.md +357 -0
- package/.claude/skills/institutional-flow-tracker/references/13f_filings_guide.md +383 -0
- package/.claude/skills/institutional-flow-tracker/references/institutional_investor_types.md +580 -0
- package/.claude/skills/institutional-flow-tracker/references/interpretation_framework.md +573 -0
- package/.claude/skills/institutional-flow-tracker/scripts/analyze_single_stock.py +457 -0
- package/.claude/skills/institutional-flow-tracker/scripts/track_institution_portfolio.py +108 -0
- package/.claude/skills/institutional-flow-tracker/scripts/track_institutional_flow.py +450 -0
- package/.claude/skills/macro-regime-detector/SKILL.md +86 -0
- package/.claude/skills/macro-regime-detector/references/historical_regimes.md +124 -0
- package/.claude/skills/macro-regime-detector/references/indicator_interpretation_guide.md +144 -0
- package/.claude/skills/macro-regime-detector/references/regime_detection_methodology.md +138 -0
- package/.claude/skills/macro-regime-detector/scripts/calculators/__init__.py +1 -0
- package/.claude/skills/macro-regime-detector/scripts/calculators/concentration_calculator.py +165 -0
- package/.claude/skills/macro-regime-detector/scripts/calculators/credit_conditions_calculator.py +124 -0
- package/.claude/skills/macro-regime-detector/scripts/calculators/equity_bond_calculator.py +198 -0
- package/.claude/skills/macro-regime-detector/scripts/calculators/sector_rotation_calculator.py +123 -0
- package/.claude/skills/macro-regime-detector/scripts/calculators/size_factor_calculator.py +131 -0
- package/.claude/skills/macro-regime-detector/scripts/calculators/utils.py +347 -0
- package/.claude/skills/macro-regime-detector/scripts/calculators/yield_curve_calculator.py +279 -0
- package/.claude/skills/macro-regime-detector/scripts/fmp_client.py +134 -0
- package/.claude/skills/macro-regime-detector/scripts/macro_regime_detector.py +278 -0
- package/.claude/skills/macro-regime-detector/scripts/report_generator.py +327 -0
- package/.claude/skills/macro-regime-detector/scripts/scorer.py +574 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/conftest.py +9 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_concentration.py +78 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_credit_conditions.py +59 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_equity_bond.py +74 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_helpers.py +90 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_scorer.py +439 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_sector_rotation.py +78 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_size_factor.py +59 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_utils.py +126 -0
- package/.claude/skills/macro-regime-detector/scripts/tests/test_yield_curve.py +64 -0
- package/.claude/skills/market-breadth-analyzer/SKILL.md +121 -0
- package/.claude/skills/market-breadth-analyzer/references/breadth_analysis_methodology.md +168 -0
- package/.claude/skills/market-breadth-analyzer/scripts/calculators/__init__.py +1 -0
- package/.claude/skills/market-breadth-analyzer/scripts/calculators/bearish_signal_calculator.py +150 -0
- package/.claude/skills/market-breadth-analyzer/scripts/calculators/cycle_calculator.py +168 -0
- package/.claude/skills/market-breadth-analyzer/scripts/calculators/divergence_calculator.py +119 -0
- package/.claude/skills/market-breadth-analyzer/scripts/calculators/historical_context_calculator.py +120 -0
- package/.claude/skills/market-breadth-analyzer/scripts/calculators/ma_crossover_calculator.py +115 -0
- package/.claude/skills/market-breadth-analyzer/scripts/calculators/trend_level_calculator.py +103 -0
- package/.claude/skills/market-breadth-analyzer/scripts/csv_client.py +225 -0
- package/.claude/skills/market-breadth-analyzer/scripts/market_breadth_analyzer.py +307 -0
- package/.claude/skills/market-breadth-analyzer/scripts/report_generator.py +330 -0
- package/.claude/skills/market-breadth-analyzer/scripts/scorer.py +271 -0
- package/.claude/skills/market-environment-analysis/SKILL.md +139 -0
- package/.claude/skills/market-environment-analysis/references/analysis_patterns.md +124 -0
- package/.claude/skills/market-environment-analysis/references/indicators.md +99 -0
- package/.claude/skills/market-environment-analysis/scripts/market_utils.py +127 -0
- package/.claude/skills/market-news-analyst/SKILL.md +714 -0
- package/.claude/skills/market-news-analyst/references/corporate_news_impact.md +446 -0
- package/.claude/skills/market-news-analyst/references/geopolitical_commodity_correlations.md +499 -0
- package/.claude/skills/market-news-analyst/references/market_event_patterns.md +393 -0
- package/.claude/skills/market-news-analyst/references/trusted_news_sources.md +510 -0
- package/.claude/skills/market-top-detector/SKILL.md +159 -0
- package/.claude/skills/market-top-detector/references/distribution_day_guide.md +100 -0
- package/.claude/skills/market-top-detector/references/historical_tops.md +142 -0
- package/.claude/skills/market-top-detector/references/market_top_methodology.md +167 -0
- package/.claude/skills/market-top-detector/scripts/calculators/__init__.py +17 -0
- package/.claude/skills/market-top-detector/scripts/calculators/breadth_calculator.py +116 -0
- package/.claude/skills/market-top-detector/scripts/calculators/defensive_rotation_calculator.py +127 -0
- package/.claude/skills/market-top-detector/scripts/calculators/distribution_day_calculator.py +161 -0
- package/.claude/skills/market-top-detector/scripts/calculators/index_technical_calculator.py +254 -0
- package/.claude/skills/market-top-detector/scripts/calculators/leading_stock_calculator.py +198 -0
- package/.claude/skills/market-top-detector/scripts/calculators/sentiment_calculator.py +213 -0
- package/.claude/skills/market-top-detector/scripts/fmp_client.py +158 -0
- package/.claude/skills/market-top-detector/scripts/market_top_detector.py +349 -0
- package/.claude/skills/market-top-detector/scripts/report_generator.py +314 -0
- package/.claude/skills/market-top-detector/scripts/scorer.py +473 -0
- package/.claude/skills/market-top-detector/scripts/tests/conftest.py +9 -0
- package/.claude/skills/market-top-detector/scripts/tests/helpers.py +49 -0
- package/.claude/skills/market-top-detector/scripts/tests/test_breadth.py +62 -0
- package/.claude/skills/market-top-detector/scripts/tests/test_defensive_rotation.py +56 -0
- package/.claude/skills/market-top-detector/scripts/tests/test_distribution_day.py +92 -0
- package/.claude/skills/market-top-detector/scripts/tests/test_index_technical.py +73 -0
- package/.claude/skills/market-top-detector/scripts/tests/test_leading_stock.py +57 -0
- package/.claude/skills/market-top-detector/scripts/tests/test_scorer.py +180 -0
- package/.claude/skills/market-top-detector/scripts/tests/test_sentiment.py +64 -0
- package/.claude/skills/options-strategy-advisor/README.md +469 -0
- package/.claude/skills/options-strategy-advisor/SKILL.md +959 -0
- package/.claude/skills/options-strategy-advisor/scripts/black_scholes.py +495 -0
- package/.claude/skills/pair-trade-screener/README.md +389 -0
- package/.claude/skills/pair-trade-screener/SKILL.md +622 -0
- package/.claude/skills/pair-trade-screener/references/cointegration_guide.md +745 -0
- package/.claude/skills/pair-trade-screener/references/methodology.md +853 -0
- package/.claude/skills/pair-trade-screener/scripts/analyze_spread.py +394 -0
- package/.claude/skills/pair-trade-screener/scripts/find_pairs.py +535 -0
- package/.claude/skills/portfolio-manager/README.md +394 -0
- package/.claude/skills/portfolio-manager/SKILL.md +750 -0
- package/.claude/skills/portfolio-manager/references/alpaca-mcp-setup.md +367 -0
- package/.claude/skills/portfolio-manager/references/asset-allocation.md +502 -0
- package/.claude/skills/portfolio-manager/references/diversification-principles.md +553 -0
- package/.claude/skills/portfolio-manager/references/portfolio-risk-metrics.md +603 -0
- package/.claude/skills/portfolio-manager/references/position-evaluation.md +477 -0
- package/.claude/skills/portfolio-manager/references/rebalancing-strategies.md +715 -0
- package/.claude/skills/portfolio-manager/references/risk-profile-questionnaire.md +608 -0
- package/.claude/skills/portfolio-manager/references/target-allocations.md +558 -0
- package/.claude/skills/portfolio-manager/scripts/test_alpaca_connection.py +286 -0
- package/.claude/skills/scenario-analyzer/SKILL.md +317 -0
- package/.claude/skills/scenario-analyzer/references/headline_event_patterns.md +264 -0
- package/.claude/skills/scenario-analyzer/references/scenario_playbooks.md +320 -0
- package/.claude/skills/scenario-analyzer/references/sector_sensitivity_matrix.md +217 -0
- package/.claude/skills/sector-analyst/SKILL.md +206 -0
- package/.claude/skills/sector-analyst/assets/industory_performance_1.jpeg +0 -0
- package/.claude/skills/sector-analyst/assets/industory_performance_2.jpeg +0 -0
- package/.claude/skills/sector-analyst/assets/sector_performance.jpeg +0 -0
- package/.claude/skills/sector-analyst/references/sector_rotation.md +170 -0
- package/.claude/skills/stanley-druckenmiller-investment/SKILL.md +84 -0
- package/.claude/skills/stanley-druckenmiller-investment/references/case-studies.md +148 -0
- package/.claude/skills/stanley-druckenmiller-investment/references/investment-philosophy.md +80 -0
- package/.claude/skills/stanley-druckenmiller-investment/references/market-analysis-guide.md +146 -0
- package/.claude/skills/stock/NOTION_SETUP.md +33 -0
- package/.claude/skills/stock/SKILL.md +38 -0
- package/.claude/skills/technical-analyst/SKILL.md +238 -0
- package/.claude/skills/technical-analyst/assets/analysis_template.md +183 -0
- package/.claude/skills/technical-analyst/references/technical_analysis_framework.md +282 -0
- package/.claude/skills/theme-detector/SKILL.md +320 -0
- package/.claude/skills/theme-detector/assets/report_template.md +155 -0
- package/.claude/skills/theme-detector/references/cross_sector_themes.md +252 -0
- package/.claude/skills/theme-detector/references/finviz_industry_codes.md +403 -0
- package/.claude/skills/theme-detector/references/thematic_etf_catalog.md +333 -0
- package/.claude/skills/theme-detector/references/theme_detection_methodology.md +430 -0
- package/.claude/skills/theme-detector/scripts/calculators/__init__.py +1 -0
- package/.claude/skills/theme-detector/scripts/calculators/heat_calculator.py +123 -0
- package/.claude/skills/theme-detector/scripts/calculators/industry_ranker.py +98 -0
- package/.claude/skills/theme-detector/scripts/calculators/lifecycle_calculator.py +172 -0
- package/.claude/skills/theme-detector/scripts/calculators/theme_classifier.py +195 -0
- package/.claude/skills/theme-detector/scripts/calculators/theme_discoverer.py +280 -0
- package/.claude/skills/theme-detector/scripts/config_loader.py +142 -0
- package/.claude/skills/theme-detector/scripts/default_theme_config.py +254 -0
- package/.claude/skills/theme-detector/scripts/etf_scanner.py +609 -0
- package/.claude/skills/theme-detector/scripts/finviz_performance_client.py +131 -0
- package/.claude/skills/theme-detector/scripts/report_generator.py +490 -0
- package/.claude/skills/theme-detector/scripts/representative_stock_selector.py +673 -0
- package/.claude/skills/theme-detector/scripts/scorer.py +87 -0
- package/.claude/skills/theme-detector/scripts/tests/README.md +21 -0
- package/.claude/skills/theme-detector/scripts/tests/conftest.py +9 -0
- package/.claude/skills/theme-detector/scripts/tests/test_config_loader.py +239 -0
- package/.claude/skills/theme-detector/scripts/tests/test_etf_scanner.py +810 -0
- package/.claude/skills/theme-detector/scripts/tests/test_heat_calculator.py +245 -0
- package/.claude/skills/theme-detector/scripts/tests/test_industry_ranker.py +256 -0
- package/.claude/skills/theme-detector/scripts/tests/test_lifecycle_calculator.py +301 -0
- package/.claude/skills/theme-detector/scripts/tests/test_report_generator.py +624 -0
- package/.claude/skills/theme-detector/scripts/tests/test_representative_stock_selector.py +898 -0
- package/.claude/skills/theme-detector/scripts/tests/test_scorer.py +185 -0
- package/.claude/skills/theme-detector/scripts/tests/test_theme_classifier.py +534 -0
- package/.claude/skills/theme-detector/scripts/tests/test_theme_detector_e2e.py +467 -0
- package/.claude/skills/theme-detector/scripts/tests/test_theme_discoverer.py +458 -0
- package/.claude/skills/theme-detector/scripts/tests/test_uptrend_client.py +76 -0
- package/.claude/skills/theme-detector/scripts/theme_detector.py +815 -0
- package/.claude/skills/theme-detector/scripts/themes.yaml +168 -0
- package/.claude/skills/theme-detector/scripts/uptrend_client.py +241 -0
- package/.claude/skills/uptrend-analyzer/SKILL.md +108 -0
- package/.claude/skills/uptrend-analyzer/references/uptrend_methodology.md +215 -0
- package/.claude/skills/uptrend-analyzer/scripts/calculators/__init__.py +1 -0
- package/.claude/skills/uptrend-analyzer/scripts/calculators/historical_context_calculator.py +122 -0
- package/.claude/skills/uptrend-analyzer/scripts/calculators/market_breadth_calculator.py +145 -0
- package/.claude/skills/uptrend-analyzer/scripts/calculators/momentum_calculator.py +183 -0
- package/.claude/skills/uptrend-analyzer/scripts/calculators/sector_participation_calculator.py +204 -0
- package/.claude/skills/uptrend-analyzer/scripts/calculators/sector_rotation_calculator.py +218 -0
- package/.claude/skills/uptrend-analyzer/scripts/data_fetcher.py +236 -0
- package/.claude/skills/uptrend-analyzer/scripts/report_generator.py +329 -0
- package/.claude/skills/uptrend-analyzer/scripts/scorer.py +276 -0
- package/.claude/skills/uptrend-analyzer/scripts/uptrend_analyzer.py +219 -0
- package/.claude/skills/us-market-bubble-detector/CHANGELOG.md +118 -0
- package/.claude/skills/us-market-bubble-detector/SKILL.md +545 -0
- package/.claude/skills/us-market-bubble-detector/references/bubble_framework.md +335 -0
- package/.claude/skills/us-market-bubble-detector/references/historical_cases.md +327 -0
- package/.claude/skills/us-market-bubble-detector/references/implementation_guide.md +473 -0
- package/.claude/skills/us-market-bubble-detector/references/quick_reference.md +354 -0
- package/.claude/skills/us-market-bubble-detector/references/quick_reference_en.md +342 -0
- package/.claude/skills/us-market-bubble-detector/scripts/bubble_scorer.py +309 -0
- package/.claude/skills/us-stock-analysis/SKILL.md +294 -0
- package/.claude/skills/us-stock-analysis/references/financial-metrics.md +172 -0
- package/.claude/skills/us-stock-analysis/references/fundamental-analysis.md +129 -0
- package/.claude/skills/us-stock-analysis/references/report-template.md +207 -0
- package/.claude/skills/us-stock-analysis/references/technical-analysis.md +93 -0
- package/.claude/skills/value-dividend-screener/SKILL.md +562 -0
- package/.claude/skills/value-dividend-screener/references/fmp_api_guide.md +348 -0
- package/.claude/skills/value-dividend-screener/references/screening_methodology.md +315 -0
- package/.claude/skills/value-dividend-screener/scripts/screen_dividend_stocks.py +1138 -0
- package/.claude/skills/vcp-screener/SKILL.md +79 -0
- package/.claude/skills/vcp-screener/references/fmp_api_endpoints.md +45 -0
- package/.claude/skills/vcp-screener/references/scoring_system.md +154 -0
- package/.claude/skills/vcp-screener/references/vcp_methodology.md +124 -0
- package/.claude/skills/vcp-screener/scripts/calculators/__init__.py +1 -0
- package/.claude/skills/vcp-screener/scripts/calculators/pivot_proximity_calculator.py +139 -0
- package/.claude/skills/vcp-screener/scripts/calculators/relative_strength_calculator.py +161 -0
- package/.claude/skills/vcp-screener/scripts/calculators/trend_template_calculator.py +228 -0
- package/.claude/skills/vcp-screener/scripts/calculators/vcp_pattern_calculator.py +322 -0
- package/.claude/skills/vcp-screener/scripts/calculators/volume_pattern_calculator.py +121 -0
- package/.claude/skills/vcp-screener/scripts/fmp_client.py +162 -0
- package/.claude/skills/vcp-screener/scripts/report_generator.py +317 -0
- package/.claude/skills/vcp-screener/scripts/scorer.py +155 -0
- package/.claude/skills/vcp-screener/scripts/screen_vcp.py +536 -0
- package/.claude/skills/vcp-screener/scripts/tests/__init__.py +0 -0
- package/.claude/skills/vcp-screener/scripts/tests/conftest.py +9 -0
- package/.claude/skills/vcp-screener/scripts/tests/test_vcp_screener.py +834 -0
- package/.claude/skills/weekly-trade-strategy/.claude/agents/druckenmiller-strategy-planner.md +300 -0
- package/.claude/skills/weekly-trade-strategy/.claude/agents/market-news-analyzer.md +239 -0
- package/.claude/skills/weekly-trade-strategy/.claude/agents/technical-market-analyst.md +187 -0
- package/.claude/skills/weekly-trade-strategy/.claude/agents/us-market-analyst.md +218 -0
- package/.claude/skills/weekly-trade-strategy/.claude/agents/weekly-trade-blog-writer.md +318 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/SKILL.md +662 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/assets/SP500_Breadth_Index_200MA_8MA.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/assets/US_Stock_Market_Uptrend_Ratio.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/assets/breadth_analysis_template.md +558 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/references/breadth_chart_methodology.md +590 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/SKILL.md +721 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/assets/earnings_report_template.md +102 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/earnings_calendar_2025-11-02.md +447 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/references/fmp_api_guide.md +590 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/scripts/fetch_earnings_fmp.py +443 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/scripts/generate_report.py +366 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/economic-calendar-fetcher/SKILL.md +365 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/economic-calendar-fetcher/references/fmp_api_documentation.md +345 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/economic-calendar-fetcher/scripts/get_economic_calendar.py +267 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/SKILL.md +139 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/references/analysis_patterns.md +124 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/references/indicators.md +99 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/scripts/market_utils.py +127 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/SKILL.md +714 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/references/corporate_news_impact.md +446 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/references/geopolitical_commodity_correlations.md +499 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/references/market_event_patterns.md +393 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/references/trusted_news_sources.md +510 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/SKILL.md +206 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/assets/industory_performance_1.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/assets/industory_performance_2.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/assets/sector_performance.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/references/sector_rotation.md +170 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/stanley-druckenmiller-investment/SKILL.md +84 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/stanley-druckenmiller-investment/references/case-studies.md +148 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/stanley-druckenmiller-investment/references/investment-philosophy.md +80 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/stanley-druckenmiller-investment/references/market-analysis-guide.md +146 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/technical-analyst/SKILL.md +238 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/technical-analyst/assets/analysis_template.md +183 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/technical-analyst/references/technical_analysis_framework.md +282 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/CHANGELOG.md +118 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/SKILL.md +545 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/bubble_framework.md +335 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/historical_cases.md +327 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/implementation_guide.md +473 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/quick_reference.md +354 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/quick_reference_en.md +342 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/scripts/bubble_scorer.py +309 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/SKILL.md +294 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/references/financial-metrics.md +172 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/references/fundamental-analysis.md +129 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/references/report-template.md +207 -0
- package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/references/technical-analysis.md +93 -0
- package/.claude/skills/weekly-trade-strategy/CLAUDE.md +454 -0
- package/.claude/skills/weekly-trade-strategy/README.md +287 -0
- package/.claude/skills/weekly-trade-strategy/blogs/.gitkeep +0 -0
- package/.claude/skills/weekly-trade-strategy/charts/.gitkeep +0 -0
- package/.claude/skills/weekly-trade-strategy/earnings_data.json +10054 -0
- package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/SKILL.md +662 -0
- package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/assets/SP500_Breadth_Index_200MA_8MA.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/assets/US_Stock_Market_Uptrend_Ratio.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/assets/breadth_analysis_template.md +558 -0
- package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/references/breadth_chart_methodology.md +590 -0
- package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/SKILL.md +721 -0
- package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/assets/earnings_report_template.md +102 -0
- package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/earnings_calendar_2025-11-02.md +447 -0
- package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/references/fmp_api_guide.md +590 -0
- package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/scripts/fetch_earnings_fmp.py +443 -0
- package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/scripts/generate_report.py +366 -0
- package/.claude/skills/weekly-trade-strategy/skills/economic-calendar-fetcher/SKILL.md +365 -0
- package/.claude/skills/weekly-trade-strategy/skills/economic-calendar-fetcher/references/fmp_api_documentation.md +345 -0
- package/.claude/skills/weekly-trade-strategy/skills/economic-calendar-fetcher/scripts/get_economic_calendar.py +267 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-environment-analysis/SKILL.md +139 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-environment-analysis/references/analysis_patterns.md +124 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-environment-analysis/references/indicators.md +99 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-environment-analysis/scripts/market_utils.py +127 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/SKILL.md +714 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/references/corporate_news_impact.md +446 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/references/geopolitical_commodity_correlations.md +499 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/references/market_event_patterns.md +393 -0
- package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/references/trusted_news_sources.md +510 -0
- package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/SKILL.md +206 -0
- package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/assets/industory_performance_1.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/assets/industory_performance_2.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/assets/sector_performance.jpeg +0 -0
- package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/references/sector_rotation.md +170 -0
- package/.claude/skills/weekly-trade-strategy/skills/stanley-druckenmiller-investment/SKILL.md +84 -0
- package/.claude/skills/weekly-trade-strategy/skills/stanley-druckenmiller-investment/references/case-studies.md +148 -0
- package/.claude/skills/weekly-trade-strategy/skills/stanley-druckenmiller-investment/references/investment-philosophy.md +80 -0
- package/.claude/skills/weekly-trade-strategy/skills/stanley-druckenmiller-investment/references/market-analysis-guide.md +146 -0
- package/.claude/skills/weekly-trade-strategy/skills/technical-analyst/SKILL.md +238 -0
- package/.claude/skills/weekly-trade-strategy/skills/technical-analyst/assets/analysis_template.md +183 -0
- package/.claude/skills/weekly-trade-strategy/skills/technical-analyst/references/technical_analysis_framework.md +282 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/CHANGELOG.md +118 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/SKILL.md +545 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/bubble_framework.md +335 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/historical_cases.md +327 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/implementation_guide.md +473 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/quick_reference.md +354 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/quick_reference_en.md +342 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/scripts/bubble_scorer.py +309 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/SKILL.md +294 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/references/financial-metrics.md +172 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/references/fundamental-analysis.md +129 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/references/report-template.md +207 -0
- package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/references/technical-analysis.md +93 -0
- package/.mcp.json +3 -0
- package/cli.mjs +16 -16
- package/package.json +4 -2
|
@@ -0,0 +1,320 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: theme-detector
|
|
3
|
+
description: Detect and analyze trending market themes across sectors. Use when user asks about current market themes, trending sectors, sector rotation, thematic investing, what themes are hot or cold, or wants to identify bullish and bearish market narratives with lifecycle analysis.
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# Theme Detector
|
|
7
|
+
|
|
8
|
+
## Overview
|
|
9
|
+
|
|
10
|
+
This skill detects and ranks trending market themes by analyzing cross-sector momentum, volume, and breadth signals. It identifies both bullish (upward momentum) and bearish (downward pressure) themes, assesses lifecycle maturity (early/mid/late/exhaustion), and provides a confidence score combining quantitative data with narrative analysis.
|
|
11
|
+
|
|
12
|
+
**3-Dimensional Scoring Model:**
|
|
13
|
+
1. **Theme Heat** (0-100): Direction-neutral strength of the theme (momentum, volume, uptrend ratio, breadth)
|
|
14
|
+
2. **Lifecycle Maturity**: Stage classification (Early / Mid / Late / Exhaustion) based on duration, extremity clustering, valuation, and ETF proliferation
|
|
15
|
+
3. **Confidence** (Low / Medium / High): Reliability of the detection, combining quantitative breadth with narrative confirmation
|
|
16
|
+
|
|
17
|
+
**Key Features:**
|
|
18
|
+
- Cross-sector theme detection using FINVIZ industry data
|
|
19
|
+
- Direction-aware scoring (bullish and bearish themes)
|
|
20
|
+
- Lifecycle maturity assessment to identify crowded vs. emerging trades
|
|
21
|
+
- ETF proliferation scoring (more ETFs = more mature/crowded theme)
|
|
22
|
+
- Integration with uptrend-dashboard for 3-point evaluation
|
|
23
|
+
- Dual-mode operation: FINVIZ Elite (fast) or public scraping (slower, limited)
|
|
24
|
+
- WebSearch-based narrative confirmation for top themes
|
|
25
|
+
|
|
26
|
+
---
|
|
27
|
+
|
|
28
|
+
## When to Use This Skill
|
|
29
|
+
|
|
30
|
+
**Explicit Triggers:**
|
|
31
|
+
- "What market themes are trending right now?"
|
|
32
|
+
- "Which sectors are hot/cold?"
|
|
33
|
+
- "Detect current market themes"
|
|
34
|
+
- "What are the strongest bullish/bearish narratives?"
|
|
35
|
+
- "Is AI/clean energy/defense still a strong theme?"
|
|
36
|
+
- "Where is sector rotation heading?"
|
|
37
|
+
- "Show me thematic investing opportunities"
|
|
38
|
+
|
|
39
|
+
**Implicit Triggers:**
|
|
40
|
+
- User wants to understand broad market narrative shifts
|
|
41
|
+
- User is looking for thematic ETF or sector allocation ideas
|
|
42
|
+
- User asks about crowded trades or late-cycle themes
|
|
43
|
+
- User wants to know which themes are emerging vs. exhausted
|
|
44
|
+
|
|
45
|
+
**When NOT to Use:**
|
|
46
|
+
- Individual stock analysis (use us-stock-analysis instead)
|
|
47
|
+
- Specific sector deep-dive with chart reading (use sector-analyst instead)
|
|
48
|
+
- Portfolio rebalancing (use portfolio-manager instead)
|
|
49
|
+
- Dividend/income investing (use value-dividend-screener instead)
|
|
50
|
+
|
|
51
|
+
---
|
|
52
|
+
|
|
53
|
+
## Workflow
|
|
54
|
+
|
|
55
|
+
### Step 1: Verify Requirements
|
|
56
|
+
|
|
57
|
+
Check for required API keys and dependencies:
|
|
58
|
+
|
|
59
|
+
```bash
|
|
60
|
+
# Check for FINVIZ Elite API key (optional but recommended)
|
|
61
|
+
echo $FINVIZ_API_KEY
|
|
62
|
+
|
|
63
|
+
# Check for FMP API key (optional, used for valuation metrics)
|
|
64
|
+
echo $FMP_API_KEY
|
|
65
|
+
```
|
|
66
|
+
|
|
67
|
+
**Requirements:**
|
|
68
|
+
- **Python 3.7+** with `requests`, `beautifulsoup4`, `lxml`
|
|
69
|
+
- **FINVIZ Elite API key** (recommended for full industry coverage and speed)
|
|
70
|
+
- **FMP API key** (optional, for P/E ratio valuation data)
|
|
71
|
+
- Without FINVIZ Elite, the skill uses public FINVIZ scraping (limited to ~20 stocks per industry, slower rate limits)
|
|
72
|
+
|
|
73
|
+
**Installation:**
|
|
74
|
+
```bash
|
|
75
|
+
pip install requests beautifulsoup4 lxml
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
### Step 2: Execute Theme Detection Script
|
|
79
|
+
|
|
80
|
+
Run the main detection script:
|
|
81
|
+
|
|
82
|
+
```bash
|
|
83
|
+
python3 skills/theme-detector/scripts/theme_detector.py \
|
|
84
|
+
--output-dir reports/
|
|
85
|
+
```
|
|
86
|
+
|
|
87
|
+
**Script Options:**
|
|
88
|
+
```bash
|
|
89
|
+
# Full run (public FINVIZ mode, no API key required)
|
|
90
|
+
python3 skills/theme-detector/scripts/theme_detector.py \
|
|
91
|
+
--output-dir reports/
|
|
92
|
+
|
|
93
|
+
# With FINVIZ Elite API key
|
|
94
|
+
python3 skills/theme-detector/scripts/theme_detector.py \
|
|
95
|
+
--finviz-api-key $FINVIZ_API_KEY \
|
|
96
|
+
--output-dir reports/
|
|
97
|
+
|
|
98
|
+
# With FMP API key for enhanced stock data
|
|
99
|
+
python3 skills/theme-detector/scripts/theme_detector.py \
|
|
100
|
+
--fmp-api-key $FMP_API_KEY \
|
|
101
|
+
--output-dir reports/
|
|
102
|
+
|
|
103
|
+
# Custom limits
|
|
104
|
+
python3 skills/theme-detector/scripts/theme_detector.py \
|
|
105
|
+
--max-themes 5 \
|
|
106
|
+
--max-stocks-per-theme 5 \
|
|
107
|
+
--output-dir reports/
|
|
108
|
+
|
|
109
|
+
# Explicit FINVIZ mode
|
|
110
|
+
python3 skills/theme-detector/scripts/theme_detector.py \
|
|
111
|
+
--finviz-mode public \
|
|
112
|
+
--output-dir reports/
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
**Expected Execution Time:**
|
|
116
|
+
- FINVIZ Elite mode: ~2-3 minutes (14+ themes)
|
|
117
|
+
- Public FINVIZ mode: ~5-8 minutes (rate-limited scraping)
|
|
118
|
+
|
|
119
|
+
### Step 3: Read and Parse Detection Results
|
|
120
|
+
|
|
121
|
+
The script generates two output files:
|
|
122
|
+
- `theme_detector_YYYY-MM-DD_HHMMSS.json` - Structured data for programmatic use
|
|
123
|
+
- `theme_detector_YYYY-MM-DD_HHMMSS.md` - Human-readable report
|
|
124
|
+
|
|
125
|
+
Read the JSON output to understand quantitative results:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
# Find the latest report
|
|
129
|
+
ls -lt reports/theme_detector_*.json | head -1
|
|
130
|
+
|
|
131
|
+
# Read the JSON output
|
|
132
|
+
cat reports/theme_detector_YYYY-MM-DD_HHMMSS.json
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
### Step 4: Perform Narrative Confirmation via WebSearch
|
|
136
|
+
|
|
137
|
+
For the top 5 themes (by Theme Heat score), execute WebSearch queries to confirm narrative strength:
|
|
138
|
+
|
|
139
|
+
**Search Pattern:**
|
|
140
|
+
```
|
|
141
|
+
"[theme name] stocks market [current month] [current year]"
|
|
142
|
+
"[theme name] sector momentum [current month] [current year]"
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
**Evaluate narrative signals:**
|
|
146
|
+
- **Strong narrative**: Multiple major outlets covering the theme, analyst upgrades, policy catalysts
|
|
147
|
+
- **Moderate narrative**: Some coverage, mixed sentiment, no clear catalyst
|
|
148
|
+
- **Weak narrative**: Little coverage, or predominantly contrarian/skeptical tone
|
|
149
|
+
|
|
150
|
+
Update Confidence levels based on findings:
|
|
151
|
+
- Quantitative High + Narrative Strong = **High** confidence
|
|
152
|
+
- Quantitative High + Narrative Weak = **Medium** confidence (possible momentum divergence)
|
|
153
|
+
- Quantitative Low + Narrative Strong = **Medium** confidence (narrative may lead price)
|
|
154
|
+
- Quantitative Low + Narrative Weak = **Low** confidence
|
|
155
|
+
|
|
156
|
+
### Step 5: Analyze Results and Provide Recommendations
|
|
157
|
+
|
|
158
|
+
Cross-reference detection results with knowledge bases:
|
|
159
|
+
|
|
160
|
+
**Reference Documents to Consult:**
|
|
161
|
+
1. `references/cross_sector_themes.md` - Theme definitions and constituent industries
|
|
162
|
+
2. `references/thematic_etf_catalog.md` - ETF exposure options by theme
|
|
163
|
+
3. `references/theme_detection_methodology.md` - Scoring model details
|
|
164
|
+
4. `references/finviz_industry_codes.md` - Industry classification reference
|
|
165
|
+
|
|
166
|
+
**Analysis Framework:**
|
|
167
|
+
|
|
168
|
+
For **Hot Bullish Themes** (Heat >= 70, Direction = Bullish):
|
|
169
|
+
- Identify lifecycle stage (Early = opportunity, Late/Exhaustion = caution)
|
|
170
|
+
- List top-performing industries within the theme
|
|
171
|
+
- Recommend proxy ETFs for exposure
|
|
172
|
+
- Flag if ETF proliferation is high (crowded trade warning)
|
|
173
|
+
|
|
174
|
+
For **Hot Bearish Themes** (Heat >= 70, Direction = Bearish):
|
|
175
|
+
- Identify industries under pressure
|
|
176
|
+
- Assess if bearish momentum is accelerating or decelerating
|
|
177
|
+
- Recommend hedging strategies or sectors to avoid
|
|
178
|
+
- Note potential mean-reversion opportunities if lifecycle is Late/Exhaustion
|
|
179
|
+
|
|
180
|
+
For **Emerging Themes** (Heat 40-69, Lifecycle = Early):
|
|
181
|
+
- These may represent early rotation signals
|
|
182
|
+
- Recommend monitoring with watchlist
|
|
183
|
+
- Identify catalyst events that could accelerate the theme
|
|
184
|
+
|
|
185
|
+
For **Exhausted Themes** (Heat >= 60, Lifecycle = Exhaustion):
|
|
186
|
+
- Warn about crowded trade risk
|
|
187
|
+
- High ETF count confirms excessive retail participation
|
|
188
|
+
- Consider contrarian positioning or reducing exposure
|
|
189
|
+
|
|
190
|
+
### Step 6: Generate Final Report
|
|
191
|
+
|
|
192
|
+
Present the final report to the user using the report template structure:
|
|
193
|
+
|
|
194
|
+
```markdown
|
|
195
|
+
# Theme Detection Report
|
|
196
|
+
**Date:** YYYY-MM-DD
|
|
197
|
+
**Mode:** FINVIZ Elite / Public
|
|
198
|
+
**Themes Analyzed:** N
|
|
199
|
+
**Data Quality:** [note any limitations]
|
|
200
|
+
|
|
201
|
+
## Theme Dashboard
|
|
202
|
+
[Top themes table with Heat, Direction, Lifecycle, Confidence]
|
|
203
|
+
|
|
204
|
+
## Bullish Themes Detail
|
|
205
|
+
[Detailed analysis of bullish themes sorted by Heat]
|
|
206
|
+
|
|
207
|
+
## Bearish Themes Detail
|
|
208
|
+
[Detailed analysis of bearish themes sorted by Heat]
|
|
209
|
+
|
|
210
|
+
## All Themes Summary
|
|
211
|
+
[Complete theme ranking table]
|
|
212
|
+
|
|
213
|
+
## Industry Rankings
|
|
214
|
+
[Top performing and worst performing industries]
|
|
215
|
+
|
|
216
|
+
## Sector Uptrend Ratios
|
|
217
|
+
[Sector-level aggregation if uptrend data available]
|
|
218
|
+
|
|
219
|
+
## Methodology Notes
|
|
220
|
+
[Brief explanation of scoring model]
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Save the report to `reports/` directory.
|
|
224
|
+
|
|
225
|
+
---
|
|
226
|
+
|
|
227
|
+
## Resources
|
|
228
|
+
|
|
229
|
+
### Scripts Directory (`scripts/`)
|
|
230
|
+
|
|
231
|
+
**Main Scripts:**
|
|
232
|
+
- `theme_detector.py` - Main orchestrator script
|
|
233
|
+
- Coordinates industry data collection, theme classification, and scoring
|
|
234
|
+
- Generates JSON + Markdown output
|
|
235
|
+
- Usage: `python3 theme_detector.py [options]`
|
|
236
|
+
|
|
237
|
+
- `theme_classifier.py` - Maps industries to cross-sector themes
|
|
238
|
+
- Reads theme definitions from `cross_sector_themes.md`
|
|
239
|
+
- Calculates theme-level aggregated scores
|
|
240
|
+
- Determines direction (bullish/bearish) from constituent industries
|
|
241
|
+
|
|
242
|
+
- `finviz_industry_scanner.py` - FINVIZ industry data collection
|
|
243
|
+
- Elite mode: CSV export with full stock data per industry
|
|
244
|
+
- Public mode: Web scraping with rate limiting
|
|
245
|
+
- Extracts: performance, volume, change%, avg volume, market cap
|
|
246
|
+
|
|
247
|
+
- `lifecycle_analyzer.py` - Lifecycle maturity assessment
|
|
248
|
+
- Duration scoring, extremity clustering, valuation analysis
|
|
249
|
+
- ETF proliferation scoring from thematic_etf_catalog.md
|
|
250
|
+
- Stage classification: Early / Mid / Late / Exhaustion
|
|
251
|
+
|
|
252
|
+
- `report_generator.py` - Report output generation
|
|
253
|
+
- Markdown report from template
|
|
254
|
+
- JSON structured output
|
|
255
|
+
- Theme dashboard formatting
|
|
256
|
+
|
|
257
|
+
### References Directory (`references/`)
|
|
258
|
+
|
|
259
|
+
**Knowledge Bases:**
|
|
260
|
+
- `cross_sector_themes.md` - Theme definitions with industries, ETFs, stocks, and matching criteria
|
|
261
|
+
- `thematic_etf_catalog.md` - Comprehensive thematic ETF catalog with counts per theme
|
|
262
|
+
- `finviz_industry_codes.md` - Complete FINVIZ industry-to-filter-code mapping
|
|
263
|
+
- `theme_detection_methodology.md` - Technical documentation of the 3D scoring model
|
|
264
|
+
|
|
265
|
+
### Assets Directory (`assets/`)
|
|
266
|
+
|
|
267
|
+
- `report_template.md` - Markdown template for report generation with placeholder format
|
|
268
|
+
|
|
269
|
+
---
|
|
270
|
+
|
|
271
|
+
## Important Notes
|
|
272
|
+
|
|
273
|
+
### FINVIZ Mode Differences
|
|
274
|
+
|
|
275
|
+
| Feature | Elite Mode | Public Mode |
|
|
276
|
+
|---------|-----------|-------------|
|
|
277
|
+
| Industry coverage | All ~145 industries | All ~145 industries |
|
|
278
|
+
| Stocks per industry | Full universe | ~20 stocks (page 1) |
|
|
279
|
+
| Rate limiting | 0.5s between requests | 2.0s between requests |
|
|
280
|
+
| Data freshness | Real-time | 15-min delayed |
|
|
281
|
+
| API key required | Yes ($39.99/mo) | No |
|
|
282
|
+
| Execution time | ~2-3 minutes | ~5-8 minutes |
|
|
283
|
+
|
|
284
|
+
### Direction Detection Logic
|
|
285
|
+
|
|
286
|
+
Theme direction (bullish vs. bearish) is determined by:
|
|
287
|
+
1. **Weighted industry performance**: Average change% across constituent industries, weighted by market cap
|
|
288
|
+
2. **Uptrend ratio**: Percentage of stocks in each industry that are in technical uptrends (if uptrend data available)
|
|
289
|
+
3. **Volume confirmation**: Whether volume supports the price direction (accumulation vs. distribution)
|
|
290
|
+
|
|
291
|
+
A theme is classified as:
|
|
292
|
+
- **Bullish**: Weighted performance > 0 AND (uptrend ratio > 50% OR volume accumulation confirmed)
|
|
293
|
+
- **Bearish**: Weighted performance < 0 AND (uptrend ratio < 50% OR volume distribution confirmed)
|
|
294
|
+
- **Neutral**: Mixed signals or insufficient data
|
|
295
|
+
|
|
296
|
+
### Known Limitations
|
|
297
|
+
|
|
298
|
+
1. **Survivorship bias**: Only analyzes currently listed stocks and ETFs
|
|
299
|
+
2. **Lag**: FINVIZ data may lag intraday moves by 15 minutes (public mode)
|
|
300
|
+
3. **Theme boundaries**: Some stocks fit multiple themes; classification uses primary industry
|
|
301
|
+
4. **ETF proliferation**: Catalog is static and may not capture very new ETFs
|
|
302
|
+
5. **Narrative scoring**: WebSearch-based and inherently subjective
|
|
303
|
+
6. **Public mode limitation**: ~20 stocks per industry may miss small-cap signals
|
|
304
|
+
|
|
305
|
+
### Disclaimer
|
|
306
|
+
|
|
307
|
+
**This analysis is for educational and informational purposes only.**
|
|
308
|
+
- Not investment advice
|
|
309
|
+
- Past thematic trends do not guarantee future performance
|
|
310
|
+
- Theme detection identifies momentum, not fundamental value
|
|
311
|
+
- Conduct your own research before making investment decisions
|
|
312
|
+
|
|
313
|
+
---
|
|
314
|
+
|
|
315
|
+
**Version:** 1.0
|
|
316
|
+
**Last Updated:** 2026-02-16
|
|
317
|
+
**API Requirements:** FINVIZ Elite (recommended) or public mode (free); FMP API optional
|
|
318
|
+
**Execution Time:** ~2-8 minutes depending on mode
|
|
319
|
+
**Output Formats:** JSON + Markdown
|
|
320
|
+
**Themes Covered:** 14+ cross-sector themes
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
# Theme Detection Report
|
|
2
|
+
|
|
3
|
+
**Date:** {{date}}
|
|
4
|
+
**Mode:** {{mode}}
|
|
5
|
+
**Themes Analyzed:** {{themes_analyzed}}
|
|
6
|
+
**Industries Scanned:** {{industries_scanned}}
|
|
7
|
+
**Total Stocks:** {{total_stocks}}
|
|
8
|
+
**Uptrend Data:** {{uptrend_data_status}}
|
|
9
|
+
**Execution Time:** {{execution_time}}
|
|
10
|
+
|
|
11
|
+
---
|
|
12
|
+
|
|
13
|
+
## 1. Theme Dashboard
|
|
14
|
+
|
|
15
|
+
| Rank | Theme | Direction | Heat | Lifecycle | Confidence |
|
|
16
|
+
|------|-------|-----------|------|-----------|------------|
|
|
17
|
+
{{#each top_themes}}
|
|
18
|
+
| {{rank}} | {{name}} | {{direction_emoji}} {{direction}} | {{heat}}/100 | {{lifecycle}} | {{confidence}} |
|
|
19
|
+
{{/each}}
|
|
20
|
+
|
|
21
|
+
**Legend:** Direction: UP = Bullish, DOWN = Bearish | Heat: 0-100 scale | Lifecycle: Early/Mid/Late/Exhaustion
|
|
22
|
+
|
|
23
|
+
---
|
|
24
|
+
|
|
25
|
+
## 2. Bullish Themes Detail
|
|
26
|
+
|
|
27
|
+
{{#each bullish_themes}}
|
|
28
|
+
### {{name}} - Heat: {{heat}}/100
|
|
29
|
+
|
|
30
|
+
**Direction:** Bullish ({{direction_strength}}) | **Lifecycle:** {{lifecycle}} | **Confidence:** {{confidence}}
|
|
31
|
+
|
|
32
|
+
**Heat Components:**
|
|
33
|
+
- Momentum: {{momentum}}/100
|
|
34
|
+
- Volume: {{volume}}/100
|
|
35
|
+
- Uptrend: {{uptrend}}/100
|
|
36
|
+
- Breadth: {{breadth}}/100
|
|
37
|
+
|
|
38
|
+
**Lifecycle Factors:**
|
|
39
|
+
- Duration: {{duration_weeks}} weeks
|
|
40
|
+
- Extremity clustering: {{extremity_pct}}%
|
|
41
|
+
- Relative P/E: {{relative_pe}}x
|
|
42
|
+
- ETF proliferation: {{etf_count}} ETFs (score: {{etf_score}}/100)
|
|
43
|
+
- Narrative: {{narrative_assessment}}
|
|
44
|
+
|
|
45
|
+
**Top Industries:**
|
|
46
|
+
{{#each industries}}
|
|
47
|
+
- {{name}}: {{change_pct}}% ({{stock_count}} stocks, uptrend {{uptrend_ratio}}%)
|
|
48
|
+
{{/each}}
|
|
49
|
+
|
|
50
|
+
**Top Movers:**
|
|
51
|
+
{{#each top_stocks}}
|
|
52
|
+
- {{ticker}}: {{change_pct}}% | Vol: {{relative_volume}}x
|
|
53
|
+
{{/each}}
|
|
54
|
+
|
|
55
|
+
**Proxy ETFs:** {{proxy_etfs}}
|
|
56
|
+
|
|
57
|
+
**Assessment:** {{assessment}}
|
|
58
|
+
|
|
59
|
+
---
|
|
60
|
+
{{/each}}
|
|
61
|
+
|
|
62
|
+
## 3. Bearish Themes Detail
|
|
63
|
+
|
|
64
|
+
{{#each bearish_themes}}
|
|
65
|
+
### {{name}} - Heat: {{heat}}/100
|
|
66
|
+
|
|
67
|
+
**Direction:** Bearish ({{direction_strength}}) | **Lifecycle:** {{lifecycle}} | **Confidence:** {{confidence}}
|
|
68
|
+
|
|
69
|
+
**Heat Components:**
|
|
70
|
+
- Momentum: {{momentum}}/100
|
|
71
|
+
- Volume: {{volume}}/100
|
|
72
|
+
- Downtrend: {{downtrend}}/100
|
|
73
|
+
- Breadth: {{breadth}}/100
|
|
74
|
+
|
|
75
|
+
**Top Declining Industries:**
|
|
76
|
+
{{#each industries}}
|
|
77
|
+
- {{name}}: {{change_pct}}% ({{stock_count}} stocks, downtrend {{downtrend_ratio}}%)
|
|
78
|
+
{{/each}}
|
|
79
|
+
|
|
80
|
+
**Worst Performers:**
|
|
81
|
+
{{#each bottom_stocks}}
|
|
82
|
+
- {{ticker}}: {{change_pct}}% | Vol: {{relative_volume}}x
|
|
83
|
+
{{/each}}
|
|
84
|
+
|
|
85
|
+
**Assessment:** {{assessment}}
|
|
86
|
+
|
|
87
|
+
---
|
|
88
|
+
{{/each}}
|
|
89
|
+
|
|
90
|
+
## 4. All Themes Summary
|
|
91
|
+
|
|
92
|
+
| Theme | Direction | Heat | Momentum | Volume | Uptrend | Breadth | Lifecycle | Confidence |
|
|
93
|
+
|-------|-----------|------|----------|--------|---------|---------|-----------|------------|
|
|
94
|
+
{{#each all_themes}}
|
|
95
|
+
| {{name}} | {{direction}} | {{heat}} | {{momentum}} | {{volume}} | {{uptrend}} | {{breadth}} | {{lifecycle}} | {{confidence}} |
|
|
96
|
+
{{/each}}
|
|
97
|
+
|
|
98
|
+
---
|
|
99
|
+
|
|
100
|
+
## 5. Industry Rankings
|
|
101
|
+
|
|
102
|
+
### Top 10 Industries (by performance)
|
|
103
|
+
|
|
104
|
+
| Rank | Industry | Sector | Change % | Rel. Volume | Uptrend Ratio | Theme |
|
|
105
|
+
|------|----------|--------|----------|-------------|---------------|-------|
|
|
106
|
+
{{#each top_industries}}
|
|
107
|
+
| {{rank}} | {{name}} | {{sector}} | {{change_pct}}% | {{rel_volume}}x | {{uptrend_ratio}}% | {{theme}} |
|
|
108
|
+
{{/each}}
|
|
109
|
+
|
|
110
|
+
### Bottom 10 Industries (by performance)
|
|
111
|
+
|
|
112
|
+
| Rank | Industry | Sector | Change % | Rel. Volume | Downtrend Ratio | Theme |
|
|
113
|
+
|------|----------|--------|----------|-------------|-----------------|-------|
|
|
114
|
+
{{#each bottom_industries}}
|
|
115
|
+
| {{rank}} | {{name}} | {{sector}} | {{change_pct}}% | {{rel_volume}}x | {{downtrend_ratio}}% | {{theme}} |
|
|
116
|
+
{{/each}}
|
|
117
|
+
|
|
118
|
+
---
|
|
119
|
+
|
|
120
|
+
## 6. Sector Uptrend Ratios
|
|
121
|
+
|
|
122
|
+
| Sector | Uptrend Ratio | Avg Change % | Dominant Theme | Direction |
|
|
123
|
+
|--------|---------------|-------------|----------------|-----------|
|
|
124
|
+
{{#each sectors}}
|
|
125
|
+
| {{name}} | {{uptrend_ratio}}% | {{avg_change_pct}}% | {{dominant_theme}} | {{direction}} |
|
|
126
|
+
{{/each}}
|
|
127
|
+
|
|
128
|
+
---
|
|
129
|
+
|
|
130
|
+
## 7. Methodology Notes
|
|
131
|
+
|
|
132
|
+
**Scoring Model:** 3-Dimensional (Heat x Lifecycle x Confidence)
|
|
133
|
+
- **Theme Heat** (0-100): Momentum (30%) + Volume (25%) + Uptrend (25%) + Breadth (20%)
|
|
134
|
+
- **Lifecycle**: Duration + Extremity clustering + Valuation + ETF proliferation + Narrative saturation
|
|
135
|
+
- **Confidence**: Quantitative breadth + Cross-sector confirmation + Narrative verification
|
|
136
|
+
|
|
137
|
+
**Data Sources:**
|
|
138
|
+
- FINVIZ {{mode}} (industry performance, volume, 52-week data)
|
|
139
|
+
{{#if uptrend_data}}
|
|
140
|
+
- uptrend-dashboard (3-point technical evaluation)
|
|
141
|
+
{{/if}}
|
|
142
|
+
{{#if fmp_data}}
|
|
143
|
+
- FMP API (P/E ratios for valuation analysis)
|
|
144
|
+
{{/if}}
|
|
145
|
+
- WebSearch (narrative confirmation for top themes)
|
|
146
|
+
|
|
147
|
+
**Limitations:**
|
|
148
|
+
- Theme definitions are static (predefined in cross_sector_themes.md)
|
|
149
|
+
- {{mode_limitation}}
|
|
150
|
+
- Duration tracking requires historical baseline data
|
|
151
|
+
- Narrative assessment is subjective
|
|
152
|
+
|
|
153
|
+
---
|
|
154
|
+
|
|
155
|
+
*Generated by Theme Detector v1.0 | {{date}} {{time}}*
|