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,267 @@
|
|
|
1
|
+
#!/usr/bin/env python3
|
|
2
|
+
"""
|
|
3
|
+
Economic Calendar Fetcher using FMP API
|
|
4
|
+
Retrieves economic events and data releases for specified date range
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import os
|
|
8
|
+
import sys
|
|
9
|
+
import json
|
|
10
|
+
import argparse
|
|
11
|
+
from datetime import datetime, timedelta
|
|
12
|
+
from typing import Dict, List, Optional
|
|
13
|
+
import urllib.request
|
|
14
|
+
import urllib.error
|
|
15
|
+
import urllib.parse
|
|
16
|
+
|
|
17
|
+
|
|
18
|
+
def get_api_key() -> Optional[str]:
|
|
19
|
+
"""
|
|
20
|
+
Get FMP API key from environment variable.
|
|
21
|
+
|
|
22
|
+
Returns:
|
|
23
|
+
API key string or None if not found
|
|
24
|
+
"""
|
|
25
|
+
api_key = os.environ.get('FMP_API_KEY')
|
|
26
|
+
if not api_key:
|
|
27
|
+
print("Warning: FMP_API_KEY environment variable not set", file=sys.stderr)
|
|
28
|
+
return api_key
|
|
29
|
+
|
|
30
|
+
|
|
31
|
+
def fetch_economic_calendar(
|
|
32
|
+
from_date: str,
|
|
33
|
+
to_date: str,
|
|
34
|
+
api_key: str
|
|
35
|
+
) -> List[Dict]:
|
|
36
|
+
"""
|
|
37
|
+
Fetch economic calendar data from FMP API.
|
|
38
|
+
|
|
39
|
+
Args:
|
|
40
|
+
from_date: Start date in YYYY-MM-DD format
|
|
41
|
+
to_date: End date in YYYY-MM-DD format
|
|
42
|
+
api_key: FMP API key
|
|
43
|
+
|
|
44
|
+
Returns:
|
|
45
|
+
List of economic event dictionaries
|
|
46
|
+
|
|
47
|
+
Raises:
|
|
48
|
+
urllib.error.HTTPError: If API request fails
|
|
49
|
+
ValueError: If response is invalid
|
|
50
|
+
"""
|
|
51
|
+
base_url = "https://financialmodelingprep.com/api/v3/economic_calendar"
|
|
52
|
+
|
|
53
|
+
# Build query parameters
|
|
54
|
+
params = {
|
|
55
|
+
'from': from_date,
|
|
56
|
+
'to': to_date,
|
|
57
|
+
'apikey': api_key
|
|
58
|
+
}
|
|
59
|
+
|
|
60
|
+
# Construct URL with parameters
|
|
61
|
+
url = f"{base_url}?{urllib.parse.urlencode(params)}"
|
|
62
|
+
|
|
63
|
+
try:
|
|
64
|
+
# Make API request
|
|
65
|
+
with urllib.request.urlopen(url) as response:
|
|
66
|
+
if response.status != 200:
|
|
67
|
+
raise ValueError(f"API returned status code {response.status}")
|
|
68
|
+
|
|
69
|
+
data = json.loads(response.read().decode('utf-8'))
|
|
70
|
+
|
|
71
|
+
if not isinstance(data, list):
|
|
72
|
+
raise ValueError(f"Unexpected API response format: {type(data)}")
|
|
73
|
+
|
|
74
|
+
return data
|
|
75
|
+
|
|
76
|
+
except urllib.error.HTTPError as e:
|
|
77
|
+
error_body = e.read().decode('utf-8') if e.fp else 'No error details'
|
|
78
|
+
raise urllib.error.HTTPError(
|
|
79
|
+
e.url, e.code, f"FMP API error: {e.reason}. Details: {error_body}",
|
|
80
|
+
e.hdrs, e.fp
|
|
81
|
+
)
|
|
82
|
+
except urllib.error.URLError as e:
|
|
83
|
+
raise ValueError(f"Network error: {e.reason}")
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def validate_date_range(from_date: str, to_date: str) -> None:
|
|
87
|
+
"""
|
|
88
|
+
Validate date range is within FMP API limits (max 90 days).
|
|
89
|
+
|
|
90
|
+
Args:
|
|
91
|
+
from_date: Start date in YYYY-MM-DD format
|
|
92
|
+
to_date: End date in YYYY-MM-DD format
|
|
93
|
+
|
|
94
|
+
Raises:
|
|
95
|
+
ValueError: If date range is invalid or exceeds 90 days
|
|
96
|
+
"""
|
|
97
|
+
try:
|
|
98
|
+
start = datetime.strptime(from_date, '%Y-%m-%d')
|
|
99
|
+
end = datetime.strptime(to_date, '%Y-%m-%d')
|
|
100
|
+
except ValueError as e:
|
|
101
|
+
raise ValueError(f"Invalid date format. Use YYYY-MM-DD: {e}")
|
|
102
|
+
|
|
103
|
+
if start > end:
|
|
104
|
+
raise ValueError(f"Start date {from_date} is after end date {to_date}")
|
|
105
|
+
|
|
106
|
+
delta = (end - start).days
|
|
107
|
+
if delta > 90:
|
|
108
|
+
raise ValueError(f"Date range ({delta} days) exceeds maximum of 90 days")
|
|
109
|
+
|
|
110
|
+
# Warn if querying past dates
|
|
111
|
+
today = datetime.now().date()
|
|
112
|
+
if end.date() < today:
|
|
113
|
+
print(f"Warning: End date {to_date} is in the past", file=sys.stderr)
|
|
114
|
+
|
|
115
|
+
|
|
116
|
+
def format_event_output(events: List[Dict], output_format: str = 'json') -> str:
|
|
117
|
+
"""
|
|
118
|
+
Format economic events for output.
|
|
119
|
+
|
|
120
|
+
Args:
|
|
121
|
+
events: List of event dictionaries from FMP API
|
|
122
|
+
output_format: Output format ('json' or 'text')
|
|
123
|
+
|
|
124
|
+
Returns:
|
|
125
|
+
Formatted string
|
|
126
|
+
"""
|
|
127
|
+
if output_format == 'json':
|
|
128
|
+
return json.dumps(events, indent=2, ensure_ascii=False)
|
|
129
|
+
|
|
130
|
+
elif output_format == 'text':
|
|
131
|
+
lines = []
|
|
132
|
+
lines.append(f"Economic Calendar Events (Total: {len(events)})")
|
|
133
|
+
lines.append("=" * 80)
|
|
134
|
+
|
|
135
|
+
for event in events:
|
|
136
|
+
lines.append(f"\nDate: {event.get('date', 'N/A')}")
|
|
137
|
+
lines.append(f"Country: {event.get('country', 'N/A')}")
|
|
138
|
+
lines.append(f"Event: {event.get('event', 'N/A')}")
|
|
139
|
+
lines.append(f"Currency: {event.get('currency', 'N/A')}")
|
|
140
|
+
lines.append(f"Impact: {event.get('impact', 'N/A')}")
|
|
141
|
+
|
|
142
|
+
previous = event.get('previous')
|
|
143
|
+
estimate = event.get('estimate')
|
|
144
|
+
actual = event.get('actual')
|
|
145
|
+
|
|
146
|
+
if previous is not None:
|
|
147
|
+
lines.append(f"Previous: {previous}")
|
|
148
|
+
if estimate is not None:
|
|
149
|
+
lines.append(f"Estimate: {estimate}")
|
|
150
|
+
if actual is not None:
|
|
151
|
+
lines.append(f"Actual: {actual}")
|
|
152
|
+
|
|
153
|
+
change = event.get('change')
|
|
154
|
+
change_pct = event.get('changePercentage')
|
|
155
|
+
if change is not None:
|
|
156
|
+
lines.append(f"Change: {change}")
|
|
157
|
+
if change_pct is not None:
|
|
158
|
+
lines.append(f"Change %: {change_pct}%")
|
|
159
|
+
|
|
160
|
+
lines.append("-" * 80)
|
|
161
|
+
|
|
162
|
+
return "\n".join(lines)
|
|
163
|
+
|
|
164
|
+
else:
|
|
165
|
+
raise ValueError(f"Unknown output format: {output_format}")
|
|
166
|
+
|
|
167
|
+
|
|
168
|
+
def main():
|
|
169
|
+
"""Main execution function."""
|
|
170
|
+
parser = argparse.ArgumentParser(
|
|
171
|
+
description='Fetch economic calendar events from FMP API',
|
|
172
|
+
formatter_class=argparse.RawDescriptionHelpFormatter,
|
|
173
|
+
epilog="""
|
|
174
|
+
Examples:
|
|
175
|
+
# Fetch events for next 7 days (default)
|
|
176
|
+
python get_economic_calendar.py
|
|
177
|
+
|
|
178
|
+
# Fetch events for specific date range
|
|
179
|
+
python get_economic_calendar.py --from 2025-01-01 --to 2025-01-31
|
|
180
|
+
|
|
181
|
+
# Provide API key via argument (overrides environment variable)
|
|
182
|
+
python get_economic_calendar.py --api-key YOUR_KEY_HERE
|
|
183
|
+
|
|
184
|
+
# Output as formatted text instead of JSON
|
|
185
|
+
python get_economic_calendar.py --format text
|
|
186
|
+
|
|
187
|
+
# Save output to file
|
|
188
|
+
python get_economic_calendar.py --output calendar.json
|
|
189
|
+
"""
|
|
190
|
+
)
|
|
191
|
+
|
|
192
|
+
# Date range arguments
|
|
193
|
+
today = datetime.now().date()
|
|
194
|
+
default_from = today.strftime('%Y-%m-%d')
|
|
195
|
+
default_to = (today + timedelta(days=7)).strftime('%Y-%m-%d')
|
|
196
|
+
|
|
197
|
+
parser.add_argument(
|
|
198
|
+
'--from', dest='from_date',
|
|
199
|
+
default=default_from,
|
|
200
|
+
help=f'Start date in YYYY-MM-DD format (default: {default_from})'
|
|
201
|
+
)
|
|
202
|
+
parser.add_argument(
|
|
203
|
+
'--to', dest='to_date',
|
|
204
|
+
default=default_to,
|
|
205
|
+
help=f'End date in YYYY-MM-DD format (default: {default_to})'
|
|
206
|
+
)
|
|
207
|
+
|
|
208
|
+
# API key argument
|
|
209
|
+
parser.add_argument(
|
|
210
|
+
'--api-key', dest='api_key',
|
|
211
|
+
help='FMP API key (overrides FMP_API_KEY environment variable)'
|
|
212
|
+
)
|
|
213
|
+
|
|
214
|
+
# Output format
|
|
215
|
+
parser.add_argument(
|
|
216
|
+
'--format', choices=['json', 'text'],
|
|
217
|
+
default='json',
|
|
218
|
+
help='Output format (default: json)'
|
|
219
|
+
)
|
|
220
|
+
|
|
221
|
+
# Output file
|
|
222
|
+
parser.add_argument(
|
|
223
|
+
'--output', '-o',
|
|
224
|
+
help='Output file path (default: stdout)'
|
|
225
|
+
)
|
|
226
|
+
|
|
227
|
+
# Parse arguments
|
|
228
|
+
args = parser.parse_args()
|
|
229
|
+
|
|
230
|
+
# Get API key
|
|
231
|
+
api_key = args.api_key or get_api_key()
|
|
232
|
+
if not api_key:
|
|
233
|
+
print("Error: FMP API key is required. Set FMP_API_KEY environment variable or use --api-key",
|
|
234
|
+
file=sys.stderr)
|
|
235
|
+
sys.exit(1)
|
|
236
|
+
|
|
237
|
+
try:
|
|
238
|
+
# Validate date range
|
|
239
|
+
validate_date_range(args.from_date, args.to_date)
|
|
240
|
+
|
|
241
|
+
# Fetch events
|
|
242
|
+
print(f"Fetching economic calendar from {args.from_date} to {args.to_date}...",
|
|
243
|
+
file=sys.stderr)
|
|
244
|
+
events = fetch_economic_calendar(args.from_date, args.to_date, api_key)
|
|
245
|
+
|
|
246
|
+
print(f"Retrieved {len(events)} events", file=sys.stderr)
|
|
247
|
+
|
|
248
|
+
# Format output
|
|
249
|
+
output = format_event_output(events, args.format)
|
|
250
|
+
|
|
251
|
+
# Write output
|
|
252
|
+
if args.output:
|
|
253
|
+
with open(args.output, 'w', encoding='utf-8') as f:
|
|
254
|
+
f.write(output)
|
|
255
|
+
print(f"Output written to {args.output}", file=sys.stderr)
|
|
256
|
+
else:
|
|
257
|
+
print(output)
|
|
258
|
+
|
|
259
|
+
sys.exit(0)
|
|
260
|
+
|
|
261
|
+
except Exception as e:
|
|
262
|
+
print(f"Error: {e}", file=sys.stderr)
|
|
263
|
+
sys.exit(1)
|
|
264
|
+
|
|
265
|
+
|
|
266
|
+
if __name__ == '__main__':
|
|
267
|
+
main()
|
package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/SKILL.md
ADDED
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: market-environment-analysis
|
|
3
|
+
description: 综合市场环境分析与报告工具。分析全球市场,包括美国、欧洲、亚洲市场、外汇、大宗商品和经济指标。提供风险偏好/风险规避评估、板块分析和技术指标解读。触发关键词包括:market analysis, market environment, global markets, trading environment, market conditions, investment climate, market sentiment, forex analysis, stock market analysis, 市场环境, 市场分析, 行情状况, 投资环境。
|
|
4
|
+
---
|
|
5
|
+
|
|
6
|
+
# 市场环境分析
|
|
7
|
+
|
|
8
|
+
随时理解市场状况并创建专业市场报告的综合分析工具。
|
|
9
|
+
|
|
10
|
+
## 核心工作流程
|
|
11
|
+
|
|
12
|
+
### 1. 初始数据收集
|
|
13
|
+
使用web_search工具收集最新市场数据:
|
|
14
|
+
1. 主要股票指数(S&P 500、NASDAQ、Dow、日经225、上证综指、恒生指数)
|
|
15
|
+
2. 外汇汇率(USD/JPY、EUR/USD、主要货币对)
|
|
16
|
+
3. 大宗商品价格(WTI原油、黄金、白银)
|
|
17
|
+
4. 美国国债收益率(2年期、10年期、30年期)
|
|
18
|
+
5. VIX指数(恐慌指标)
|
|
19
|
+
6. 市场交易状态(开盘/收盘/当前值)
|
|
20
|
+
|
|
21
|
+
### 2. 市场环境评估
|
|
22
|
+
根据收集的数据评估以下内容:
|
|
23
|
+
- **趋势方向**:上升趋势/下降趋势/区间震荡
|
|
24
|
+
- **风险情绪**:风险偏好(Risk-on)/风险规避(Risk-off)
|
|
25
|
+
- **波动率状态**:VIX反映的市场焦虑水平
|
|
26
|
+
- **板块轮动**:资金流向
|
|
27
|
+
|
|
28
|
+
### 3. 报告结构
|
|
29
|
+
|
|
30
|
+
#### 标准报告格式:
|
|
31
|
+
```
|
|
32
|
+
1. 执行摘要(3-5个关键要点)
|
|
33
|
+
2. 全球市场概览
|
|
34
|
+
- 美国市场
|
|
35
|
+
- 亚洲市场
|
|
36
|
+
- 欧洲市场
|
|
37
|
+
3. 外汇与大宗商品趋势
|
|
38
|
+
4. 关键事件与经济指标
|
|
39
|
+
5. 风险因素分析
|
|
40
|
+
6. 投资策略启示
|
|
41
|
+
```
|
|
42
|
+
|
|
43
|
+
## 脚本使用
|
|
44
|
+
|
|
45
|
+
### market_utils.py
|
|
46
|
+
提供报告创建的通用函数:
|
|
47
|
+
```bash
|
|
48
|
+
# 生成报告标题
|
|
49
|
+
python scripts/market_utils.py
|
|
50
|
+
|
|
51
|
+
# Available functions:
|
|
52
|
+
- format_market_report_header(): Create header
|
|
53
|
+
- get_market_session_times(): Check trading hours
|
|
54
|
+
- categorize_volatility(vix): Interpret VIX levels
|
|
55
|
+
- format_percentage_change(value): Format price changes
|
|
56
|
+
```
|
|
57
|
+
|
|
58
|
+
## 参考文档
|
|
59
|
+
|
|
60
|
+
### 关键指标解读 (references/indicators.md)
|
|
61
|
+
需要时参考:
|
|
62
|
+
- 各指数的重要水平
|
|
63
|
+
- 技术分析要点
|
|
64
|
+
- 板块特定的关注领域
|
|
65
|
+
|
|
66
|
+
### 分析模式 (references/analysis_patterns.md)
|
|
67
|
+
分析时参考:
|
|
68
|
+
- 风险偏好/风险规避标准
|
|
69
|
+
- 经济指标解读
|
|
70
|
+
- 市场间相关性
|
|
71
|
+
- 季节性和市场异常
|
|
72
|
+
|
|
73
|
+
## 输出示例
|
|
74
|
+
|
|
75
|
+
### 快速摘要版本
|
|
76
|
+
```
|
|
77
|
+
📊 市场摘要 [2025/01/15 14:00]
|
|
78
|
+
━━━━━━━━━━━━━━━━━━━━━
|
|
79
|
+
【美国】S&P 500: 5,123.45 (+0.45%)
|
|
80
|
+
【日本】日经225: 38,456.78 (-0.23%)
|
|
81
|
+
【外汇】USD/JPY: 149.85 (↑0.15)
|
|
82
|
+
【VIX】16.2(正常范围)
|
|
83
|
+
|
|
84
|
+
⚡ 关键事件
|
|
85
|
+
- 日本GDP快报
|
|
86
|
+
- 美国就业报告
|
|
87
|
+
|
|
88
|
+
📈 环境:风险偏好持续
|
|
89
|
+
```
|
|
90
|
+
|
|
91
|
+
### 详细分析版本
|
|
92
|
+
从执行摘要开始,然后逐节详细分析。
|
|
93
|
+
关键明确事项:
|
|
94
|
+
1. 当前市场阶段(看涨/看跌/中性)
|
|
95
|
+
2. 短期方向(1-5天展望)
|
|
96
|
+
3. 需监控的风险事件
|
|
97
|
+
4. 建议的仓位调整
|
|
98
|
+
|
|
99
|
+
## 重要注意事项
|
|
100
|
+
|
|
101
|
+
### 时区意识
|
|
102
|
+
- 考虑所有主要市场时区
|
|
103
|
+
- 美国市场:晚间至凌晨(亚洲时间)
|
|
104
|
+
- 欧洲市场:下午至晚间(亚洲时间)
|
|
105
|
+
- 亚洲市场:上午至下午(当地时间)
|
|
106
|
+
|
|
107
|
+
### 经济日历优先级
|
|
108
|
+
按重要性分类:
|
|
109
|
+
- ⭐⭐⭐ 关键(FOMC、NFP、CPI等)
|
|
110
|
+
- ⭐⭐ 重要(GDP、零售销售等)
|
|
111
|
+
- ⭐ 参考级别
|
|
112
|
+
|
|
113
|
+
### 数据来源优先级
|
|
114
|
+
1. 官方发布(央行、政府统计)
|
|
115
|
+
2. 主要财经媒体(Bloomberg、Reuters)
|
|
116
|
+
3. 券商报告
|
|
117
|
+
4. 分析师共识预期
|
|
118
|
+
|
|
119
|
+
## 故障排除
|
|
120
|
+
|
|
121
|
+
### 数据收集注意事项
|
|
122
|
+
- 检查市场假期(假日日历)
|
|
123
|
+
- 注意夏令时变更
|
|
124
|
+
- 区分快报数据和终值数据
|
|
125
|
+
|
|
126
|
+
### 市场波动应对
|
|
127
|
+
1. 首先梳理事实
|
|
128
|
+
2. 参考历史类似事件
|
|
129
|
+
3. 多源交叉验证
|
|
130
|
+
4. 保持客观分析
|
|
131
|
+
|
|
132
|
+
## 自定义选项
|
|
133
|
+
|
|
134
|
+
根据用户投资风格调整:
|
|
135
|
+
- **日内交易者**:关注日内图表、订单流
|
|
136
|
+
- **波段交易者**:侧重日线/周线技术面
|
|
137
|
+
- **长期投资者**:关注基本面、宏观经济
|
|
138
|
+
- **外汇交易者**:货币相关性、利率差异
|
|
139
|
+
- **期权交易者**:波动率分析、Greeks监控
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
# Market Analysis Patterns
|
|
2
|
+
|
|
3
|
+
## Market Pattern Analysis
|
|
4
|
+
|
|
5
|
+
### Trend Identification
|
|
6
|
+
1. **Uptrend**
|
|
7
|
+
- Higher highs and higher lows
|
|
8
|
+
- Moving averages trending upward
|
|
9
|
+
- Price rises accompanied by volume increases
|
|
10
|
+
|
|
11
|
+
2. **Downtrend**
|
|
12
|
+
- Lower highs and lower lows
|
|
13
|
+
- Moving averages trending downward
|
|
14
|
+
- Decreased volume on bounces
|
|
15
|
+
|
|
16
|
+
3. **Range-Bound Market**
|
|
17
|
+
- Trading within defined range
|
|
18
|
+
- Moving averages sideways
|
|
19
|
+
- Declining volume trend
|
|
20
|
+
|
|
21
|
+
### Risk-On / Risk-Off Assessment
|
|
22
|
+
|
|
23
|
+
#### Risk-On Environment Characteristics
|
|
24
|
+
- Stock markets rising (especially emerging markets)
|
|
25
|
+
- High-yield currency buying (AUD, NZD, etc.)
|
|
26
|
+
- VIX index declining
|
|
27
|
+
- Interest rates rising
|
|
28
|
+
- Risk assets like crude oil rising
|
|
29
|
+
|
|
30
|
+
#### Risk-Off Environment Characteristics
|
|
31
|
+
- Flight to safe assets (yen buying, Swiss franc buying)
|
|
32
|
+
- Gold prices rising
|
|
33
|
+
- Bond buying (yields falling)
|
|
34
|
+
- VIX index rising
|
|
35
|
+
- Emerging market currencies and stocks selling
|
|
36
|
+
|
|
37
|
+
## Economic Indicator Interpretation
|
|
38
|
+
|
|
39
|
+
### Employment Data (US)
|
|
40
|
+
|
|
41
|
+
- **Nonfarm Payrolls (NFP)**
|
|
42
|
+
- +200k or more above expectations: Strong employment, rate hike expectations
|
|
43
|
+
- -100k or more below expectations: Employment deterioration, rate cut expectations
|
|
44
|
+
|
|
45
|
+
- **Unemployment Rate**
|
|
46
|
+
- 3.5% or below: Near full employment
|
|
47
|
+
- 4.0% or above: Signs of employment environment deterioration
|
|
48
|
+
|
|
49
|
+
### Inflation Indicators
|
|
50
|
+
|
|
51
|
+
- **CPI (Consumer Price Index)**
|
|
52
|
+
- 2% YoY: Fed target level
|
|
53
|
+
- 3%+: Inflation alert
|
|
54
|
+
- Below 1%: Deflation risk
|
|
55
|
+
|
|
56
|
+
- **PPI (Producer Price Index)**
|
|
57
|
+
- Important as CPI leading indicator
|
|
58
|
+
- Captures upstream inflation
|
|
59
|
+
|
|
60
|
+
### Central Bank Policy
|
|
61
|
+
|
|
62
|
+
- **Fed (Federal Reserve)**
|
|
63
|
+
- Watch dot plot
|
|
64
|
+
- Policy rate outlook changes
|
|
65
|
+
|
|
66
|
+
- **BOJ (Bank of Japan)**
|
|
67
|
+
- YCC (Yield Curve Control) policy
|
|
68
|
+
- ETF purchase trends
|
|
69
|
+
|
|
70
|
+
- **ECB (European Central Bank)**
|
|
71
|
+
- 2% inflation target
|
|
72
|
+
- Response to regional disparities
|
|
73
|
+
|
|
74
|
+
## Inter-Market Correlation Analysis
|
|
75
|
+
|
|
76
|
+
### Positive Correlation Patterns
|
|
77
|
+
- Stocks ↑ → Interest rates ↑ (strong economy)
|
|
78
|
+
- USD/JPY ↑ → Nikkei ↑ (exporters favorable)
|
|
79
|
+
- Crude oil ↑ → Inflation expectations ↑
|
|
80
|
+
|
|
81
|
+
### Inverse Correlation Patterns
|
|
82
|
+
- Interest rates ↑ → Bond prices ↓
|
|
83
|
+
- Dollar ↑ → Gold prices ↓
|
|
84
|
+
- VIX ↑ → Stocks ↓
|
|
85
|
+
|
|
86
|
+
## Seasonality & Anomalies
|
|
87
|
+
|
|
88
|
+
### Monthly Patterns
|
|
89
|
+
- **January Effect**: New year fund inflows
|
|
90
|
+
- **Sell in May**: Pre-summer doldrums position closing
|
|
91
|
+
- **September**: Historically weak month
|
|
92
|
+
- **December**: Tax-loss selling, Santa Claus rally
|
|
93
|
+
|
|
94
|
+
### Day-of-Week Effects
|
|
95
|
+
- **Monday**: Weekend risk pricing
|
|
96
|
+
- **Friday**: Position adjustments
|
|
97
|
+
|
|
98
|
+
### Fiscal Year-End
|
|
99
|
+
- **End of March**: Japanese corporate fiscal year, repatriation flows
|
|
100
|
+
- **End of December**: Western corporate fiscal year
|
|
101
|
+
|
|
102
|
+
## Technical Indicator Usage
|
|
103
|
+
|
|
104
|
+
### Trend Indicators
|
|
105
|
+
- **Moving Averages**: 25-day, 75-day, 200-day line relationships
|
|
106
|
+
- **MACD**: Identifying trend turning points
|
|
107
|
+
- **Bollinger Bands**: Volatility and contrarian entry points
|
|
108
|
+
|
|
109
|
+
### Oscillators
|
|
110
|
+
- **RSI**: Over 70 overbought, below 30 oversold
|
|
111
|
+
- **Stochastics**: Short-term turning points
|
|
112
|
+
- **Volume**: Confirming price movement reliability
|
|
113
|
+
|
|
114
|
+
## Sentiment Analysis
|
|
115
|
+
|
|
116
|
+
### Capturing Investor Psychology
|
|
117
|
+
- **Put/Call Ratio**: Option market skew
|
|
118
|
+
- **Bull/Bear Ratio**: Investor surveys
|
|
119
|
+
- **Fear & Greed Index**: CNN Fear & Greed Index
|
|
120
|
+
|
|
121
|
+
### News Flow Analysis
|
|
122
|
+
- Headline tone changes
|
|
123
|
+
- Media coverage frequency
|
|
124
|
+
- Social media buzzwords
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
# Market Indicators Reference
|
|
2
|
+
|
|
3
|
+
## Major Stock Indices
|
|
4
|
+
|
|
5
|
+
### Japan
|
|
6
|
+
- **Nikkei 225**: Stock price average of 225 representative stocks on Tokyo Stock Exchange Prime
|
|
7
|
+
- Key levels: 30,000, 35,000, 40,000 yen
|
|
8
|
+
- Moving averages: Emphasize 25-day, 75-day, 200-day lines
|
|
9
|
+
|
|
10
|
+
- **TOPIX**: Market-cap weighted average of all Tokyo Stock Exchange Prime stocks
|
|
11
|
+
- Better reflects overall market
|
|
12
|
+
- Heavily influenced by banking/financial sector
|
|
13
|
+
|
|
14
|
+
### United States
|
|
15
|
+
- **S&P 500**: 500 large-cap US stocks
|
|
16
|
+
- Most representative US stock index
|
|
17
|
+
- Key levels: 4,000, 4,500, 5,000 points
|
|
18
|
+
|
|
19
|
+
- **NASDAQ**: Tech-focused
|
|
20
|
+
- Reflects mega-cap tech stock trends like GAFAM
|
|
21
|
+
- Higher volatility
|
|
22
|
+
|
|
23
|
+
- **Dow Jones Industrial Average**: Simple average of 30 stocks
|
|
24
|
+
- Historically significant but limited representation
|
|
25
|
+
|
|
26
|
+
## Foreign Exchange Rates
|
|
27
|
+
|
|
28
|
+
### USD/JPY (Dollar-Yen)
|
|
29
|
+
- Greatest impact on Japanese economy
|
|
30
|
+
- Key levels: 140, 145, 150, 155 yen
|
|
31
|
+
- BOJ intervention alert line: Reference past intervention records
|
|
32
|
+
|
|
33
|
+
### EUR/JPY (Euro-Yen)
|
|
34
|
+
- Related to European economy
|
|
35
|
+
- Influenced by ECB policy
|
|
36
|
+
|
|
37
|
+
### CNY/JPY (Yuan-Yen)
|
|
38
|
+
- Reflects Chinese economic trends
|
|
39
|
+
- Indicator of Asian trade
|
|
40
|
+
|
|
41
|
+
## Volatility Indicators
|
|
42
|
+
|
|
43
|
+
### VIX Index (Fear Index)
|
|
44
|
+
- Calculated from S&P 500 option prices
|
|
45
|
+
- Quantifies market anxiety psychology
|
|
46
|
+
- Interpretation:
|
|
47
|
+
- 10-15: Low volatility, stable market
|
|
48
|
+
- 15-20: Normal range
|
|
49
|
+
- 20-30: Unstable, caution needed
|
|
50
|
+
- 30+: High stress, panic selling
|
|
51
|
+
|
|
52
|
+
### Nikkei VI
|
|
53
|
+
- Volatility indicator for Nikkei Average
|
|
54
|
+
- Japanese version of VIX
|
|
55
|
+
|
|
56
|
+
## Commodities
|
|
57
|
+
|
|
58
|
+
### Crude Oil (WTI/Brent)
|
|
59
|
+
- Important as inflation indicator
|
|
60
|
+
- Reflects geopolitical risks
|
|
61
|
+
- Key levels: 70, 80, 90, 100 dollars/barrel
|
|
62
|
+
|
|
63
|
+
### Gold
|
|
64
|
+
- Representative safe asset
|
|
65
|
+
- Tends to rise during dollar weakness/inflation
|
|
66
|
+
- Key levels: 1,900, 2,000, 2,100 dollars/ounce
|
|
67
|
+
|
|
68
|
+
## Interest Rates & Bonds
|
|
69
|
+
|
|
70
|
+
### US 10-Year Treasury Yield
|
|
71
|
+
- Most critical interest rate indicator
|
|
72
|
+
- Direct impact on stock valuations
|
|
73
|
+
- Key levels: 3.5%, 4.0%, 4.5%, 5.0%
|
|
74
|
+
|
|
75
|
+
### Japan 10-Year Government Bond Yield
|
|
76
|
+
- Reflects BOJ policy
|
|
77
|
+
- Watch YCC target range
|
|
78
|
+
|
|
79
|
+
## Sector-Specific Focus Points
|
|
80
|
+
|
|
81
|
+
### Technology
|
|
82
|
+
- AI-related stock trends
|
|
83
|
+
- Semiconductor cycle
|
|
84
|
+
- Regulatory risks
|
|
85
|
+
|
|
86
|
+
### Financials
|
|
87
|
+
- Heavily influenced by interest rate trends
|
|
88
|
+
- Bank lending attitudes
|
|
89
|
+
- Non-performing loan ratios
|
|
90
|
+
|
|
91
|
+
### Energy
|
|
92
|
+
- Linked to crude oil prices
|
|
93
|
+
- Impact of decarbonization policies
|
|
94
|
+
- Renewable energy shift
|
|
95
|
+
|
|
96
|
+
### Consumer
|
|
97
|
+
- Consumer confidence index
|
|
98
|
+
- Retail sales
|
|
99
|
+
- Inflation impact
|