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,389 @@
|
|
|
1
|
+
# Pair Trade Screener
|
|
2
|
+
|
|
3
|
+
Statistical arbitrage tool for identifying and analyzing pair trading opportunities using cointegration testing and mean-reversion analysis.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
The Pair Trade Screener finds statistically significant pair trading opportunities by:
|
|
8
|
+
- Testing for cointegration (long-term equilibrium relationships)
|
|
9
|
+
- Calculating hedge ratios (beta values)
|
|
10
|
+
- Measuring mean-reversion speed (half-life)
|
|
11
|
+
- Generating entry/exit signals based on z-score thresholds
|
|
12
|
+
|
|
13
|
+
**Market Neutral Strategy:** Profit from relative price movements regardless of overall market direction.
|
|
14
|
+
|
|
15
|
+
## Features
|
|
16
|
+
|
|
17
|
+
✅ **Sector-wide screening** - Analyze all stocks in a sector
|
|
18
|
+
✅ **Custom pair analysis** - Test specific stock combinations
|
|
19
|
+
✅ **Statistical rigor** - Cointegration tests (ADF), correlation analysis
|
|
20
|
+
✅ **Mean-reversion metrics** - Half-life calculation, z-score tracking
|
|
21
|
+
✅ **Trade signals** - Automatic entry/exit recommendations
|
|
22
|
+
✅ **FMP API integration** - Free tier sufficient for screening
|
|
23
|
+
✅ **JSON output** - Structured results for further analysis
|
|
24
|
+
|
|
25
|
+
## Installation
|
|
26
|
+
|
|
27
|
+
### Prerequisites
|
|
28
|
+
|
|
29
|
+
- Python 3.8+
|
|
30
|
+
- FMP API key (free tier: 250 requests/day)
|
|
31
|
+
|
|
32
|
+
### Install Dependencies
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
pip install pandas numpy scipy statsmodels requests
|
|
36
|
+
```
|
|
37
|
+
|
|
38
|
+
### Get FMP API Key
|
|
39
|
+
|
|
40
|
+
1. Visit: https://financialmodelingprep.com/developer/docs
|
|
41
|
+
2. Sign up for free account
|
|
42
|
+
3. Copy your API key
|
|
43
|
+
4. Set environment variable:
|
|
44
|
+
|
|
45
|
+
```bash
|
|
46
|
+
export FMP_API_KEY="your_key_here"
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Or add to `~/.bashrc` / `~/.zshrc` for persistence.
|
|
50
|
+
|
|
51
|
+
## Usage
|
|
52
|
+
|
|
53
|
+
### Quick Start
|
|
54
|
+
|
|
55
|
+
```bash
|
|
56
|
+
# Screen Technology sector for pairs
|
|
57
|
+
python scripts/find_pairs.py --sector Technology
|
|
58
|
+
|
|
59
|
+
# Analyze specific pair
|
|
60
|
+
python scripts/analyze_spread.py --stock-a AAPL --stock-b MSFT
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
### Screening for Pairs
|
|
64
|
+
|
|
65
|
+
**Sector-Based Screening:**
|
|
66
|
+
|
|
67
|
+
```bash
|
|
68
|
+
# Screen entire sector
|
|
69
|
+
python scripts/find_pairs.py --sector Financials
|
|
70
|
+
|
|
71
|
+
# Adjust correlation threshold
|
|
72
|
+
python scripts/find_pairs.py --sector Energy --min-correlation 0.75
|
|
73
|
+
|
|
74
|
+
# Longer lookback period
|
|
75
|
+
python scripts/find_pairs.py --sector Healthcare --lookback-days 1095
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Custom Stock List:**
|
|
79
|
+
|
|
80
|
+
```bash
|
|
81
|
+
# Test specific stocks
|
|
82
|
+
python scripts/find_pairs.py --symbols AAPL,MSFT,GOOGL,META,NVDA
|
|
83
|
+
|
|
84
|
+
# Tech giants pair screening
|
|
85
|
+
python scripts/find_pairs.py --symbols JPM,BAC,WFC,C,GS,MS
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Full Options:**
|
|
89
|
+
|
|
90
|
+
```bash
|
|
91
|
+
python scripts/find_pairs.py \
|
|
92
|
+
--sector Technology \
|
|
93
|
+
--min-correlation 0.70 \
|
|
94
|
+
--min-market-cap 10000000000 \
|
|
95
|
+
--lookback-days 730 \
|
|
96
|
+
--output tech_pairs.json \
|
|
97
|
+
--api-key YOUR_KEY
|
|
98
|
+
```
|
|
99
|
+
|
|
100
|
+
### Analyzing Individual Pairs
|
|
101
|
+
|
|
102
|
+
**Basic Analysis:**
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
python scripts/analyze_spread.py --stock-a AAPL --stock-b MSFT
|
|
106
|
+
```
|
|
107
|
+
|
|
108
|
+
**Custom Parameters:**
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
python scripts/analyze_spread.py \
|
|
112
|
+
--stock-a JPM \
|
|
113
|
+
--stock-b BAC \
|
|
114
|
+
--lookback-days 365 \
|
|
115
|
+
--entry-zscore 2.0 \
|
|
116
|
+
--exit-zscore 0.5 \
|
|
117
|
+
--api-key YOUR_KEY
|
|
118
|
+
```
|
|
119
|
+
|
|
120
|
+
## Example Output
|
|
121
|
+
|
|
122
|
+
### Pair Screening Results
|
|
123
|
+
|
|
124
|
+
```
|
|
125
|
+
PAIR TRADING SCREEN SUMMARY
|
|
126
|
+
==========================================================================
|
|
127
|
+
|
|
128
|
+
Total pairs analyzed: 45
|
|
129
|
+
Cointegrated pairs: 12
|
|
130
|
+
Pairs with trade signals: 5
|
|
131
|
+
|
|
132
|
+
==========================================================================
|
|
133
|
+
ACTIVE TRADE SIGNALS
|
|
134
|
+
==========================================================================
|
|
135
|
+
|
|
136
|
+
Pair: XOM/CVX
|
|
137
|
+
Signal: LONG
|
|
138
|
+
Z-Score: -2.35
|
|
139
|
+
Correlation: 0.9421
|
|
140
|
+
P-Value: 0.0012
|
|
141
|
+
Half-Life: 28.3 days
|
|
142
|
+
Strength: ★★★
|
|
143
|
+
```
|
|
144
|
+
|
|
145
|
+
### Individual Pair Analysis
|
|
146
|
+
|
|
147
|
+
```
|
|
148
|
+
PAIR TRADE ANALYSIS: AAPL / MSFT
|
|
149
|
+
==========================================================================
|
|
150
|
+
|
|
151
|
+
[ PAIR STATISTICS ]
|
|
152
|
+
Correlation: 0.8732
|
|
153
|
+
Hedge Ratio (Beta): 1.1523
|
|
154
|
+
Data Points: 365
|
|
155
|
+
|
|
156
|
+
[ COINTEGRATION TEST ]
|
|
157
|
+
ADF Statistic: -3.8542
|
|
158
|
+
P-value: 0.0028
|
|
159
|
+
Result: ✅ COINTEGRATED (p < 0.05)
|
|
160
|
+
Strength: ★★★ Very Strong
|
|
161
|
+
|
|
162
|
+
[ MEAN REVERSION ]
|
|
163
|
+
Half-Life: 42.1 days
|
|
164
|
+
Speed: Moderate (suitable for pair trading)
|
|
165
|
+
|
|
166
|
+
[ Z-SCORE ]
|
|
167
|
+
Current Z-Score: -2.13
|
|
168
|
+
Historical Range: [-3.45, 3.12]
|
|
169
|
+
|
|
170
|
+
[ TRADE SIGNAL ]
|
|
171
|
+
Signal: 🔺 LONG SPREAD
|
|
172
|
+
Action: Long AAPL, Short MSFT
|
|
173
|
+
Rationale: Z-score = -2.13 → AAPL cheap relative to MSFT
|
|
174
|
+
|
|
175
|
+
[ POSITION SIZING ]
|
|
176
|
+
Example Allocation: $10,000
|
|
177
|
+
LONG AAPL: $5,000 (27 shares @ $185.50)
|
|
178
|
+
SHORT MSFT: $5,762 (14 shares @ $411.25)
|
|
179
|
+
|
|
180
|
+
Exit Conditions:
|
|
181
|
+
- Primary: Z-score crosses 0 (mean reversion)
|
|
182
|
+
- Stop Loss: Z-score > ±3.0
|
|
183
|
+
- Time-based: No reversion after 90 days
|
|
184
|
+
```
|
|
185
|
+
|
|
186
|
+
## Understanding the Metrics
|
|
187
|
+
|
|
188
|
+
### Correlation
|
|
189
|
+
- **Range:** -1 to +1
|
|
190
|
+
- **Threshold:** ≥ 0.70 required
|
|
191
|
+
- **Interpretation:** Higher = stronger co-movement
|
|
192
|
+
|
|
193
|
+
### Cointegration P-Value
|
|
194
|
+
- **Range:** 0 to 1
|
|
195
|
+
- **Threshold:** < 0.05 required (statistically significant)
|
|
196
|
+
- **Interpretation:** Lower = stronger cointegration
|
|
197
|
+
- p < 0.01: ★★★ Very strong
|
|
198
|
+
- p 0.01-0.05: ★★ Moderate
|
|
199
|
+
- p > 0.05: ☆ Not cointegrated (reject)
|
|
200
|
+
|
|
201
|
+
### Half-Life
|
|
202
|
+
- **Meaning:** Time for spread to revert halfway to mean
|
|
203
|
+
- **Fast:** < 30 days (ideal for short-term trading)
|
|
204
|
+
- **Moderate:** 30-60 days (standard pair trading)
|
|
205
|
+
- **Slow:** > 60 days (long-term positions)
|
|
206
|
+
|
|
207
|
+
### Z-Score
|
|
208
|
+
- **Calculation:** (Current Spread - Mean) / Std Dev
|
|
209
|
+
- **Entry Signals:**
|
|
210
|
+
- Z > +2.0: Short spread (Short A, Long B)
|
|
211
|
+
- Z < -2.0: Long spread (Long A, Short B)
|
|
212
|
+
- **Exit:** Z crosses 0 (mean reversion)
|
|
213
|
+
- **Stop:** |Z| > 3.0 (extreme divergence)
|
|
214
|
+
|
|
215
|
+
### Hedge Ratio (Beta)
|
|
216
|
+
- **Meaning:** Dollar amount of Stock B per $1 of Stock A
|
|
217
|
+
- **Example:** Beta = 1.2 → Short $1,200 of B for every $1,000 long in A
|
|
218
|
+
- **Purpose:** Market-neutral positioning (net beta ≈ 0)
|
|
219
|
+
|
|
220
|
+
## Common Workflows
|
|
221
|
+
|
|
222
|
+
### 1. Weekly Pair Screening
|
|
223
|
+
|
|
224
|
+
```bash
|
|
225
|
+
# Monday: Screen for new opportunities
|
|
226
|
+
python scripts/find_pairs.py --sector Technology --output tech_pairs.json
|
|
227
|
+
|
|
228
|
+
# Review top pairs in JSON output
|
|
229
|
+
cat tech_pairs.json | jq '.pairs[] | select(.signal != "NONE")'
|
|
230
|
+
|
|
231
|
+
# Detailed analysis on top candidates
|
|
232
|
+
python scripts/analyze_spread.py --stock-a AAPL --stock-b MSFT
|
|
233
|
+
```
|
|
234
|
+
|
|
235
|
+
### 2. Sector Rotation Pairs
|
|
236
|
+
|
|
237
|
+
```bash
|
|
238
|
+
# Screen multiple sectors
|
|
239
|
+
for sector in Technology Financials Healthcare Energy; do
|
|
240
|
+
python scripts/find_pairs.py --sector $sector --output ${sector}_pairs.json
|
|
241
|
+
sleep 5
|
|
242
|
+
done
|
|
243
|
+
|
|
244
|
+
# Find pairs with strongest signals
|
|
245
|
+
cat *_pairs.json | jq '.pairs[] | select(.current_zscore | . > 2 or . < -2)'
|
|
246
|
+
```
|
|
247
|
+
|
|
248
|
+
### 3. Monitor Existing Pairs
|
|
249
|
+
|
|
250
|
+
```bash
|
|
251
|
+
# Update z-scores for current positions
|
|
252
|
+
python scripts/analyze_spread.py --stock-a XOM --stock-b CVX
|
|
253
|
+
python scripts/analyze_spread.py --stock-a JPM --stock-b BAC
|
|
254
|
+
python scripts/analyze_spread.py --stock-a GOOGL --stock-b META
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
## API Usage & Rate Limits
|
|
258
|
+
|
|
259
|
+
**Free Tier:**
|
|
260
|
+
- 250 API requests/day
|
|
261
|
+
- ~2 requests per stock for price data
|
|
262
|
+
- Can screen ~60 stocks/day (= 1,770 pairs)
|
|
263
|
+
|
|
264
|
+
**Screening Costs:**
|
|
265
|
+
```
|
|
266
|
+
Sector screening (30 stocks):
|
|
267
|
+
- Fetch 30 stock prices = 30 requests
|
|
268
|
+
- Analyze 435 pairs (30 choose 2) = 0 additional requests
|
|
269
|
+
- Total: 30 requests
|
|
270
|
+
|
|
271
|
+
Individual pair analysis:
|
|
272
|
+
- Fetch 2 stock prices = 2 requests
|
|
273
|
+
```
|
|
274
|
+
|
|
275
|
+
**Tips:**
|
|
276
|
+
- Run sector screens once/week (not daily)
|
|
277
|
+
- Cache results in JSON files
|
|
278
|
+
- Monitor specific pairs daily (2 requests each)
|
|
279
|
+
- Upgrade to paid plan if screening multiple sectors daily
|
|
280
|
+
|
|
281
|
+
## Interpretation Guide
|
|
282
|
+
|
|
283
|
+
### When to Trade
|
|
284
|
+
|
|
285
|
+
✅ **Strong Pair (Enter):**
|
|
286
|
+
- Correlation > 0.80
|
|
287
|
+
- P-value < 0.03
|
|
288
|
+
- Half-life 20-60 days
|
|
289
|
+
- |Z-score| > 2.0
|
|
290
|
+
- Economic linkage (same sector/industry)
|
|
291
|
+
|
|
292
|
+
⚠️ **Marginal Pair (Caution):**
|
|
293
|
+
- Correlation 0.70-0.80
|
|
294
|
+
- P-value 0.03-0.05
|
|
295
|
+
- Half-life > 60 days
|
|
296
|
+
- |Z-score| 1.5-2.0
|
|
297
|
+
|
|
298
|
+
❌ **Weak Pair (Avoid):**
|
|
299
|
+
- Correlation < 0.70
|
|
300
|
+
- P-value > 0.05
|
|
301
|
+
- Half-life > 90 days or undefined
|
|
302
|
+
- No economic linkage
|
|
303
|
+
|
|
304
|
+
### Exit Conditions
|
|
305
|
+
|
|
306
|
+
**Primary Exit:**
|
|
307
|
+
- Z-score crosses 0 (spread reverts to mean)
|
|
308
|
+
- Close both legs simultaneously
|
|
309
|
+
|
|
310
|
+
**Stop Loss:**
|
|
311
|
+
- |Z-score| > 3.0 (extreme divergence, possible structural break)
|
|
312
|
+
- -5% loss on spread
|
|
313
|
+
- Exit immediately
|
|
314
|
+
|
|
315
|
+
**Time-Based:**
|
|
316
|
+
- No mean reversion after 90 days (or 3× half-life)
|
|
317
|
+
- Free capital for better opportunities
|
|
318
|
+
|
|
319
|
+
## Troubleshooting
|
|
320
|
+
|
|
321
|
+
### No pairs found
|
|
322
|
+
|
|
323
|
+
**Solutions:**
|
|
324
|
+
- Lower `--min-correlation` to 0.65
|
|
325
|
+
- Expand stock universe (try different sector)
|
|
326
|
+
- Increase `--lookback-days` to 1095 (3 years)
|
|
327
|
+
|
|
328
|
+
### API rate limit exceeded
|
|
329
|
+
|
|
330
|
+
**Solutions:**
|
|
331
|
+
- Wait 24 hours (free tier resets daily)
|
|
332
|
+
- Cache screening results (JSON files)
|
|
333
|
+
- Upgrade to paid plan ($14/mo Starter tier)
|
|
334
|
+
|
|
335
|
+
### All z-scores near zero
|
|
336
|
+
|
|
337
|
+
**Normal:** Pairs in equilibrium, no trade signals
|
|
338
|
+
**Action:** Check back later or expand universe
|
|
339
|
+
|
|
340
|
+
### Pair correlation broke down
|
|
341
|
+
|
|
342
|
+
**Causes:** Corporate events, M&A, business model changes
|
|
343
|
+
**Detection:** Recent correlation << historical correlation
|
|
344
|
+
**Action:** Exit pair, remove from watchlist
|
|
345
|
+
|
|
346
|
+
## Integration with Other Skills
|
|
347
|
+
|
|
348
|
+
**Backtest Expert:**
|
|
349
|
+
- Test pair trading strategies historically
|
|
350
|
+
- Optimize entry/exit thresholds
|
|
351
|
+
- Validate robustness
|
|
352
|
+
|
|
353
|
+
**Sector Analyst:**
|
|
354
|
+
- Identify sectors in rotation
|
|
355
|
+
- Screen for pairs within leading sectors
|
|
356
|
+
|
|
357
|
+
**Technical Analyst:**
|
|
358
|
+
- Confirm individual stock trends
|
|
359
|
+
- Check support/resistance before entry
|
|
360
|
+
|
|
361
|
+
**Portfolio Manager:**
|
|
362
|
+
- Track multiple pair positions
|
|
363
|
+
- Monitor overall market-neutral exposure
|
|
364
|
+
|
|
365
|
+
## Resources
|
|
366
|
+
|
|
367
|
+
**Documentation:**
|
|
368
|
+
- `references/methodology.md` - Statistical arbitrage theory
|
|
369
|
+
- `references/cointegration_guide.md` - Cointegration testing guide
|
|
370
|
+
|
|
371
|
+
**FMP API:**
|
|
372
|
+
- API Docs: https://financialmodelingprep.com/developer/docs
|
|
373
|
+
- Historical Price API: `/v3/historical-price-full/{symbol}`
|
|
374
|
+
- Stock Screener API: `/v3/stock-screener`
|
|
375
|
+
|
|
376
|
+
**Academic Papers:**
|
|
377
|
+
- Engle & Granger (1987): "Co-Integration and Error Correction"
|
|
378
|
+
- Gatev et al. (2006): "Pairs Trading: Performance of a Relative-Value Arbitrage Rule"
|
|
379
|
+
|
|
380
|
+
## License
|
|
381
|
+
|
|
382
|
+
Educational and research use. Trade at your own risk. Past performance does not guarantee future results.
|
|
383
|
+
|
|
384
|
+
---
|
|
385
|
+
|
|
386
|
+
**Version:** 1.0
|
|
387
|
+
**Last Updated:** 2025-11-08
|
|
388
|
+
**Dependencies:** Python 3.8+, pandas, numpy, scipy, statsmodels, requests
|
|
389
|
+
**API:** FMP API (free tier sufficient)
|