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.
Files changed (362) hide show
  1. package/.claude/skills/README.md +80 -0
  2. package/.claude/skills/backtest-expert/SKILL.md +206 -0
  3. package/.claude/skills/backtest-expert/references/failed_tests.md +236 -0
  4. package/.claude/skills/backtest-expert/references/methodology.md +227 -0
  5. package/.claude/skills/breadth-chart-analyst/SKILL.md +583 -0
  6. package/.claude/skills/breadth-chart-analyst/assets/SP500_Breadth_Index_200MA_8MA.jpeg +0 -0
  7. package/.claude/skills/breadth-chart-analyst/assets/US_Stock_Market_Uptrend_Ratio.jpeg +0 -0
  8. package/.claude/skills/breadth-chart-analyst/assets/breadth_analysis_template.md +558 -0
  9. package/.claude/skills/breadth-chart-analyst/references/breadth_chart_methodology.md +590 -0
  10. package/.claude/skills/canslim-screener/SKILL.md +599 -0
  11. package/.claude/skills/canslim-screener/references/canslim_methodology.md +606 -0
  12. package/.claude/skills/canslim-screener/references/fmp_api_endpoints.md +707 -0
  13. package/.claude/skills/canslim-screener/references/interpretation_guide.md +516 -0
  14. package/.claude/skills/canslim-screener/references/scoring_system.md +597 -0
  15. package/.claude/skills/canslim-screener/scripts/calculators/earnings_calculator.py +343 -0
  16. package/.claude/skills/canslim-screener/scripts/calculators/growth_calculator.py +334 -0
  17. package/.claude/skills/canslim-screener/scripts/calculators/institutional_calculator.py +347 -0
  18. package/.claude/skills/canslim-screener/scripts/calculators/leadership_calculator.py +380 -0
  19. package/.claude/skills/canslim-screener/scripts/calculators/market_calculator.py +244 -0
  20. package/.claude/skills/canslim-screener/scripts/calculators/new_highs_calculator.py +194 -0
  21. package/.claude/skills/canslim-screener/scripts/calculators/supply_demand_calculator.py +221 -0
  22. package/.claude/skills/canslim-screener/scripts/finviz_stock_client.py +227 -0
  23. package/.claude/skills/canslim-screener/scripts/fmp_client.py +393 -0
  24. package/.claude/skills/canslim-screener/scripts/report_generator.py +405 -0
  25. package/.claude/skills/canslim-screener/scripts/scorer.py +625 -0
  26. package/.claude/skills/canslim-screener/scripts/screen_canslim.py +361 -0
  27. package/.claude/skills/canslim-screener/scripts/test_institutional_endpoint.py +109 -0
  28. package/.claude/skills/chart/SKILL.md +20 -0
  29. package/.claude/skills/dividend-growth-pullback-screener/SKILL.md +322 -0
  30. package/.claude/skills/dividend-growth-pullback-screener/references/dividend_growth_compounding.md +400 -0
  31. package/.claude/skills/dividend-growth-pullback-screener/references/fmp_api_guide.md +642 -0
  32. package/.claude/skills/dividend-growth-pullback-screener/references/rsi_oversold_strategy.md +333 -0
  33. package/.claude/skills/dividend-growth-pullback-screener/scripts/screen_dividend_growth_rsi.py +1155 -0
  34. package/.claude/skills/earnings-calendar/SKILL.md +721 -0
  35. package/.claude/skills/earnings-calendar/assets/earnings_report_template.md +102 -0
  36. package/.claude/skills/earnings-calendar/references/fmp_api_guide.md +590 -0
  37. package/.claude/skills/earnings-calendar/scripts/fetch_earnings_fmp.py +443 -0
  38. package/.claude/skills/earnings-calendar/scripts/generate_report.py +366 -0
  39. package/.claude/skills/economic-calendar-fetcher/SKILL.md +365 -0
  40. package/.claude/skills/economic-calendar-fetcher/references/fmp_api_documentation.md +345 -0
  41. package/.claude/skills/economic-calendar-fetcher/scripts/get_economic_calendar.py +267 -0
  42. package/.claude/skills/ftd-detector/SKILL.md +147 -0
  43. package/.claude/skills/ftd-detector/references/ftd_methodology.md +188 -0
  44. package/.claude/skills/ftd-detector/references/post_ftd_guide.md +185 -0
  45. package/.claude/skills/ftd-detector/scripts/fmp_client.py +158 -0
  46. package/.claude/skills/ftd-detector/scripts/ftd_detector.py +280 -0
  47. package/.claude/skills/ftd-detector/scripts/post_ftd_monitor.py +404 -0
  48. package/.claude/skills/ftd-detector/scripts/rally_tracker.py +508 -0
  49. package/.claude/skills/ftd-detector/scripts/report_generator.py +341 -0
  50. package/.claude/skills/ftd-detector/scripts/tests/conftest.py +9 -0
  51. package/.claude/skills/ftd-detector/scripts/tests/helpers.py +107 -0
  52. package/.claude/skills/ftd-detector/scripts/tests/test_post_ftd_monitor.py +311 -0
  53. package/.claude/skills/ftd-detector/scripts/tests/test_rally_tracker.py +302 -0
  54. package/.claude/skills/institutional-flow-tracker/README.md +362 -0
  55. package/.claude/skills/institutional-flow-tracker/SKILL.md +357 -0
  56. package/.claude/skills/institutional-flow-tracker/references/13f_filings_guide.md +383 -0
  57. package/.claude/skills/institutional-flow-tracker/references/institutional_investor_types.md +580 -0
  58. package/.claude/skills/institutional-flow-tracker/references/interpretation_framework.md +573 -0
  59. package/.claude/skills/institutional-flow-tracker/scripts/analyze_single_stock.py +457 -0
  60. package/.claude/skills/institutional-flow-tracker/scripts/track_institution_portfolio.py +108 -0
  61. package/.claude/skills/institutional-flow-tracker/scripts/track_institutional_flow.py +450 -0
  62. package/.claude/skills/macro-regime-detector/SKILL.md +86 -0
  63. package/.claude/skills/macro-regime-detector/references/historical_regimes.md +124 -0
  64. package/.claude/skills/macro-regime-detector/references/indicator_interpretation_guide.md +144 -0
  65. package/.claude/skills/macro-regime-detector/references/regime_detection_methodology.md +138 -0
  66. package/.claude/skills/macro-regime-detector/scripts/calculators/__init__.py +1 -0
  67. package/.claude/skills/macro-regime-detector/scripts/calculators/concentration_calculator.py +165 -0
  68. package/.claude/skills/macro-regime-detector/scripts/calculators/credit_conditions_calculator.py +124 -0
  69. package/.claude/skills/macro-regime-detector/scripts/calculators/equity_bond_calculator.py +198 -0
  70. package/.claude/skills/macro-regime-detector/scripts/calculators/sector_rotation_calculator.py +123 -0
  71. package/.claude/skills/macro-regime-detector/scripts/calculators/size_factor_calculator.py +131 -0
  72. package/.claude/skills/macro-regime-detector/scripts/calculators/utils.py +347 -0
  73. package/.claude/skills/macro-regime-detector/scripts/calculators/yield_curve_calculator.py +279 -0
  74. package/.claude/skills/macro-regime-detector/scripts/fmp_client.py +134 -0
  75. package/.claude/skills/macro-regime-detector/scripts/macro_regime_detector.py +278 -0
  76. package/.claude/skills/macro-regime-detector/scripts/report_generator.py +327 -0
  77. package/.claude/skills/macro-regime-detector/scripts/scorer.py +574 -0
  78. package/.claude/skills/macro-regime-detector/scripts/tests/conftest.py +9 -0
  79. package/.claude/skills/macro-regime-detector/scripts/tests/test_concentration.py +78 -0
  80. package/.claude/skills/macro-regime-detector/scripts/tests/test_credit_conditions.py +59 -0
  81. package/.claude/skills/macro-regime-detector/scripts/tests/test_equity_bond.py +74 -0
  82. package/.claude/skills/macro-regime-detector/scripts/tests/test_helpers.py +90 -0
  83. package/.claude/skills/macro-regime-detector/scripts/tests/test_scorer.py +439 -0
  84. package/.claude/skills/macro-regime-detector/scripts/tests/test_sector_rotation.py +78 -0
  85. package/.claude/skills/macro-regime-detector/scripts/tests/test_size_factor.py +59 -0
  86. package/.claude/skills/macro-regime-detector/scripts/tests/test_utils.py +126 -0
  87. package/.claude/skills/macro-regime-detector/scripts/tests/test_yield_curve.py +64 -0
  88. package/.claude/skills/market-breadth-analyzer/SKILL.md +121 -0
  89. package/.claude/skills/market-breadth-analyzer/references/breadth_analysis_methodology.md +168 -0
  90. package/.claude/skills/market-breadth-analyzer/scripts/calculators/__init__.py +1 -0
  91. package/.claude/skills/market-breadth-analyzer/scripts/calculators/bearish_signal_calculator.py +150 -0
  92. package/.claude/skills/market-breadth-analyzer/scripts/calculators/cycle_calculator.py +168 -0
  93. package/.claude/skills/market-breadth-analyzer/scripts/calculators/divergence_calculator.py +119 -0
  94. package/.claude/skills/market-breadth-analyzer/scripts/calculators/historical_context_calculator.py +120 -0
  95. package/.claude/skills/market-breadth-analyzer/scripts/calculators/ma_crossover_calculator.py +115 -0
  96. package/.claude/skills/market-breadth-analyzer/scripts/calculators/trend_level_calculator.py +103 -0
  97. package/.claude/skills/market-breadth-analyzer/scripts/csv_client.py +225 -0
  98. package/.claude/skills/market-breadth-analyzer/scripts/market_breadth_analyzer.py +307 -0
  99. package/.claude/skills/market-breadth-analyzer/scripts/report_generator.py +330 -0
  100. package/.claude/skills/market-breadth-analyzer/scripts/scorer.py +271 -0
  101. package/.claude/skills/market-environment-analysis/SKILL.md +139 -0
  102. package/.claude/skills/market-environment-analysis/references/analysis_patterns.md +124 -0
  103. package/.claude/skills/market-environment-analysis/references/indicators.md +99 -0
  104. package/.claude/skills/market-environment-analysis/scripts/market_utils.py +127 -0
  105. package/.claude/skills/market-news-analyst/SKILL.md +714 -0
  106. package/.claude/skills/market-news-analyst/references/corporate_news_impact.md +446 -0
  107. package/.claude/skills/market-news-analyst/references/geopolitical_commodity_correlations.md +499 -0
  108. package/.claude/skills/market-news-analyst/references/market_event_patterns.md +393 -0
  109. package/.claude/skills/market-news-analyst/references/trusted_news_sources.md +510 -0
  110. package/.claude/skills/market-top-detector/SKILL.md +159 -0
  111. package/.claude/skills/market-top-detector/references/distribution_day_guide.md +100 -0
  112. package/.claude/skills/market-top-detector/references/historical_tops.md +142 -0
  113. package/.claude/skills/market-top-detector/references/market_top_methodology.md +167 -0
  114. package/.claude/skills/market-top-detector/scripts/calculators/__init__.py +17 -0
  115. package/.claude/skills/market-top-detector/scripts/calculators/breadth_calculator.py +116 -0
  116. package/.claude/skills/market-top-detector/scripts/calculators/defensive_rotation_calculator.py +127 -0
  117. package/.claude/skills/market-top-detector/scripts/calculators/distribution_day_calculator.py +161 -0
  118. package/.claude/skills/market-top-detector/scripts/calculators/index_technical_calculator.py +254 -0
  119. package/.claude/skills/market-top-detector/scripts/calculators/leading_stock_calculator.py +198 -0
  120. package/.claude/skills/market-top-detector/scripts/calculators/sentiment_calculator.py +213 -0
  121. package/.claude/skills/market-top-detector/scripts/fmp_client.py +158 -0
  122. package/.claude/skills/market-top-detector/scripts/market_top_detector.py +349 -0
  123. package/.claude/skills/market-top-detector/scripts/report_generator.py +314 -0
  124. package/.claude/skills/market-top-detector/scripts/scorer.py +473 -0
  125. package/.claude/skills/market-top-detector/scripts/tests/conftest.py +9 -0
  126. package/.claude/skills/market-top-detector/scripts/tests/helpers.py +49 -0
  127. package/.claude/skills/market-top-detector/scripts/tests/test_breadth.py +62 -0
  128. package/.claude/skills/market-top-detector/scripts/tests/test_defensive_rotation.py +56 -0
  129. package/.claude/skills/market-top-detector/scripts/tests/test_distribution_day.py +92 -0
  130. package/.claude/skills/market-top-detector/scripts/tests/test_index_technical.py +73 -0
  131. package/.claude/skills/market-top-detector/scripts/tests/test_leading_stock.py +57 -0
  132. package/.claude/skills/market-top-detector/scripts/tests/test_scorer.py +180 -0
  133. package/.claude/skills/market-top-detector/scripts/tests/test_sentiment.py +64 -0
  134. package/.claude/skills/options-strategy-advisor/README.md +469 -0
  135. package/.claude/skills/options-strategy-advisor/SKILL.md +959 -0
  136. package/.claude/skills/options-strategy-advisor/scripts/black_scholes.py +495 -0
  137. package/.claude/skills/pair-trade-screener/README.md +389 -0
  138. package/.claude/skills/pair-trade-screener/SKILL.md +622 -0
  139. package/.claude/skills/pair-trade-screener/references/cointegration_guide.md +745 -0
  140. package/.claude/skills/pair-trade-screener/references/methodology.md +853 -0
  141. package/.claude/skills/pair-trade-screener/scripts/analyze_spread.py +394 -0
  142. package/.claude/skills/pair-trade-screener/scripts/find_pairs.py +535 -0
  143. package/.claude/skills/portfolio-manager/README.md +394 -0
  144. package/.claude/skills/portfolio-manager/SKILL.md +750 -0
  145. package/.claude/skills/portfolio-manager/references/alpaca-mcp-setup.md +367 -0
  146. package/.claude/skills/portfolio-manager/references/asset-allocation.md +502 -0
  147. package/.claude/skills/portfolio-manager/references/diversification-principles.md +553 -0
  148. package/.claude/skills/portfolio-manager/references/portfolio-risk-metrics.md +603 -0
  149. package/.claude/skills/portfolio-manager/references/position-evaluation.md +477 -0
  150. package/.claude/skills/portfolio-manager/references/rebalancing-strategies.md +715 -0
  151. package/.claude/skills/portfolio-manager/references/risk-profile-questionnaire.md +608 -0
  152. package/.claude/skills/portfolio-manager/references/target-allocations.md +558 -0
  153. package/.claude/skills/portfolio-manager/scripts/test_alpaca_connection.py +286 -0
  154. package/.claude/skills/scenario-analyzer/SKILL.md +317 -0
  155. package/.claude/skills/scenario-analyzer/references/headline_event_patterns.md +264 -0
  156. package/.claude/skills/scenario-analyzer/references/scenario_playbooks.md +320 -0
  157. package/.claude/skills/scenario-analyzer/references/sector_sensitivity_matrix.md +217 -0
  158. package/.claude/skills/sector-analyst/SKILL.md +206 -0
  159. package/.claude/skills/sector-analyst/assets/industory_performance_1.jpeg +0 -0
  160. package/.claude/skills/sector-analyst/assets/industory_performance_2.jpeg +0 -0
  161. package/.claude/skills/sector-analyst/assets/sector_performance.jpeg +0 -0
  162. package/.claude/skills/sector-analyst/references/sector_rotation.md +170 -0
  163. package/.claude/skills/stanley-druckenmiller-investment/SKILL.md +84 -0
  164. package/.claude/skills/stanley-druckenmiller-investment/references/case-studies.md +148 -0
  165. package/.claude/skills/stanley-druckenmiller-investment/references/investment-philosophy.md +80 -0
  166. package/.claude/skills/stanley-druckenmiller-investment/references/market-analysis-guide.md +146 -0
  167. package/.claude/skills/stock/NOTION_SETUP.md +33 -0
  168. package/.claude/skills/stock/SKILL.md +38 -0
  169. package/.claude/skills/technical-analyst/SKILL.md +238 -0
  170. package/.claude/skills/technical-analyst/assets/analysis_template.md +183 -0
  171. package/.claude/skills/technical-analyst/references/technical_analysis_framework.md +282 -0
  172. package/.claude/skills/theme-detector/SKILL.md +320 -0
  173. package/.claude/skills/theme-detector/assets/report_template.md +155 -0
  174. package/.claude/skills/theme-detector/references/cross_sector_themes.md +252 -0
  175. package/.claude/skills/theme-detector/references/finviz_industry_codes.md +403 -0
  176. package/.claude/skills/theme-detector/references/thematic_etf_catalog.md +333 -0
  177. package/.claude/skills/theme-detector/references/theme_detection_methodology.md +430 -0
  178. package/.claude/skills/theme-detector/scripts/calculators/__init__.py +1 -0
  179. package/.claude/skills/theme-detector/scripts/calculators/heat_calculator.py +123 -0
  180. package/.claude/skills/theme-detector/scripts/calculators/industry_ranker.py +98 -0
  181. package/.claude/skills/theme-detector/scripts/calculators/lifecycle_calculator.py +172 -0
  182. package/.claude/skills/theme-detector/scripts/calculators/theme_classifier.py +195 -0
  183. package/.claude/skills/theme-detector/scripts/calculators/theme_discoverer.py +280 -0
  184. package/.claude/skills/theme-detector/scripts/config_loader.py +142 -0
  185. package/.claude/skills/theme-detector/scripts/default_theme_config.py +254 -0
  186. package/.claude/skills/theme-detector/scripts/etf_scanner.py +609 -0
  187. package/.claude/skills/theme-detector/scripts/finviz_performance_client.py +131 -0
  188. package/.claude/skills/theme-detector/scripts/report_generator.py +490 -0
  189. package/.claude/skills/theme-detector/scripts/representative_stock_selector.py +673 -0
  190. package/.claude/skills/theme-detector/scripts/scorer.py +87 -0
  191. package/.claude/skills/theme-detector/scripts/tests/README.md +21 -0
  192. package/.claude/skills/theme-detector/scripts/tests/conftest.py +9 -0
  193. package/.claude/skills/theme-detector/scripts/tests/test_config_loader.py +239 -0
  194. package/.claude/skills/theme-detector/scripts/tests/test_etf_scanner.py +810 -0
  195. package/.claude/skills/theme-detector/scripts/tests/test_heat_calculator.py +245 -0
  196. package/.claude/skills/theme-detector/scripts/tests/test_industry_ranker.py +256 -0
  197. package/.claude/skills/theme-detector/scripts/tests/test_lifecycle_calculator.py +301 -0
  198. package/.claude/skills/theme-detector/scripts/tests/test_report_generator.py +624 -0
  199. package/.claude/skills/theme-detector/scripts/tests/test_representative_stock_selector.py +898 -0
  200. package/.claude/skills/theme-detector/scripts/tests/test_scorer.py +185 -0
  201. package/.claude/skills/theme-detector/scripts/tests/test_theme_classifier.py +534 -0
  202. package/.claude/skills/theme-detector/scripts/tests/test_theme_detector_e2e.py +467 -0
  203. package/.claude/skills/theme-detector/scripts/tests/test_theme_discoverer.py +458 -0
  204. package/.claude/skills/theme-detector/scripts/tests/test_uptrend_client.py +76 -0
  205. package/.claude/skills/theme-detector/scripts/theme_detector.py +815 -0
  206. package/.claude/skills/theme-detector/scripts/themes.yaml +168 -0
  207. package/.claude/skills/theme-detector/scripts/uptrend_client.py +241 -0
  208. package/.claude/skills/uptrend-analyzer/SKILL.md +108 -0
  209. package/.claude/skills/uptrend-analyzer/references/uptrend_methodology.md +215 -0
  210. package/.claude/skills/uptrend-analyzer/scripts/calculators/__init__.py +1 -0
  211. package/.claude/skills/uptrend-analyzer/scripts/calculators/historical_context_calculator.py +122 -0
  212. package/.claude/skills/uptrend-analyzer/scripts/calculators/market_breadth_calculator.py +145 -0
  213. package/.claude/skills/uptrend-analyzer/scripts/calculators/momentum_calculator.py +183 -0
  214. package/.claude/skills/uptrend-analyzer/scripts/calculators/sector_participation_calculator.py +204 -0
  215. package/.claude/skills/uptrend-analyzer/scripts/calculators/sector_rotation_calculator.py +218 -0
  216. package/.claude/skills/uptrend-analyzer/scripts/data_fetcher.py +236 -0
  217. package/.claude/skills/uptrend-analyzer/scripts/report_generator.py +329 -0
  218. package/.claude/skills/uptrend-analyzer/scripts/scorer.py +276 -0
  219. package/.claude/skills/uptrend-analyzer/scripts/uptrend_analyzer.py +219 -0
  220. package/.claude/skills/us-market-bubble-detector/CHANGELOG.md +118 -0
  221. package/.claude/skills/us-market-bubble-detector/SKILL.md +545 -0
  222. package/.claude/skills/us-market-bubble-detector/references/bubble_framework.md +335 -0
  223. package/.claude/skills/us-market-bubble-detector/references/historical_cases.md +327 -0
  224. package/.claude/skills/us-market-bubble-detector/references/implementation_guide.md +473 -0
  225. package/.claude/skills/us-market-bubble-detector/references/quick_reference.md +354 -0
  226. package/.claude/skills/us-market-bubble-detector/references/quick_reference_en.md +342 -0
  227. package/.claude/skills/us-market-bubble-detector/scripts/bubble_scorer.py +309 -0
  228. package/.claude/skills/us-stock-analysis/SKILL.md +294 -0
  229. package/.claude/skills/us-stock-analysis/references/financial-metrics.md +172 -0
  230. package/.claude/skills/us-stock-analysis/references/fundamental-analysis.md +129 -0
  231. package/.claude/skills/us-stock-analysis/references/report-template.md +207 -0
  232. package/.claude/skills/us-stock-analysis/references/technical-analysis.md +93 -0
  233. package/.claude/skills/value-dividend-screener/SKILL.md +562 -0
  234. package/.claude/skills/value-dividend-screener/references/fmp_api_guide.md +348 -0
  235. package/.claude/skills/value-dividend-screener/references/screening_methodology.md +315 -0
  236. package/.claude/skills/value-dividend-screener/scripts/screen_dividend_stocks.py +1138 -0
  237. package/.claude/skills/vcp-screener/SKILL.md +79 -0
  238. package/.claude/skills/vcp-screener/references/fmp_api_endpoints.md +45 -0
  239. package/.claude/skills/vcp-screener/references/scoring_system.md +154 -0
  240. package/.claude/skills/vcp-screener/references/vcp_methodology.md +124 -0
  241. package/.claude/skills/vcp-screener/scripts/calculators/__init__.py +1 -0
  242. package/.claude/skills/vcp-screener/scripts/calculators/pivot_proximity_calculator.py +139 -0
  243. package/.claude/skills/vcp-screener/scripts/calculators/relative_strength_calculator.py +161 -0
  244. package/.claude/skills/vcp-screener/scripts/calculators/trend_template_calculator.py +228 -0
  245. package/.claude/skills/vcp-screener/scripts/calculators/vcp_pattern_calculator.py +322 -0
  246. package/.claude/skills/vcp-screener/scripts/calculators/volume_pattern_calculator.py +121 -0
  247. package/.claude/skills/vcp-screener/scripts/fmp_client.py +162 -0
  248. package/.claude/skills/vcp-screener/scripts/report_generator.py +317 -0
  249. package/.claude/skills/vcp-screener/scripts/scorer.py +155 -0
  250. package/.claude/skills/vcp-screener/scripts/screen_vcp.py +536 -0
  251. package/.claude/skills/vcp-screener/scripts/tests/__init__.py +0 -0
  252. package/.claude/skills/vcp-screener/scripts/tests/conftest.py +9 -0
  253. package/.claude/skills/vcp-screener/scripts/tests/test_vcp_screener.py +834 -0
  254. package/.claude/skills/weekly-trade-strategy/.claude/agents/druckenmiller-strategy-planner.md +300 -0
  255. package/.claude/skills/weekly-trade-strategy/.claude/agents/market-news-analyzer.md +239 -0
  256. package/.claude/skills/weekly-trade-strategy/.claude/agents/technical-market-analyst.md +187 -0
  257. package/.claude/skills/weekly-trade-strategy/.claude/agents/us-market-analyst.md +218 -0
  258. package/.claude/skills/weekly-trade-strategy/.claude/agents/weekly-trade-blog-writer.md +318 -0
  259. package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/SKILL.md +662 -0
  260. package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/assets/SP500_Breadth_Index_200MA_8MA.jpeg +0 -0
  261. package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/assets/US_Stock_Market_Uptrend_Ratio.jpeg +0 -0
  262. package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/assets/breadth_analysis_template.md +558 -0
  263. package/.claude/skills/weekly-trade-strategy/.claude/skills/breadth-chart-analyst/references/breadth_chart_methodology.md +590 -0
  264. package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/SKILL.md +721 -0
  265. package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/assets/earnings_report_template.md +102 -0
  266. package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/earnings_calendar_2025-11-02.md +447 -0
  267. package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/references/fmp_api_guide.md +590 -0
  268. package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/scripts/fetch_earnings_fmp.py +443 -0
  269. package/.claude/skills/weekly-trade-strategy/.claude/skills/earnings-calendar/scripts/generate_report.py +366 -0
  270. package/.claude/skills/weekly-trade-strategy/.claude/skills/economic-calendar-fetcher/SKILL.md +365 -0
  271. package/.claude/skills/weekly-trade-strategy/.claude/skills/economic-calendar-fetcher/references/fmp_api_documentation.md +345 -0
  272. package/.claude/skills/weekly-trade-strategy/.claude/skills/economic-calendar-fetcher/scripts/get_economic_calendar.py +267 -0
  273. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/SKILL.md +139 -0
  274. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/references/analysis_patterns.md +124 -0
  275. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/references/indicators.md +99 -0
  276. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-environment-analysis/scripts/market_utils.py +127 -0
  277. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/SKILL.md +714 -0
  278. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/references/corporate_news_impact.md +446 -0
  279. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/references/geopolitical_commodity_correlations.md +499 -0
  280. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/references/market_event_patterns.md +393 -0
  281. package/.claude/skills/weekly-trade-strategy/.claude/skills/market-news-analyst/references/trusted_news_sources.md +510 -0
  282. package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/SKILL.md +206 -0
  283. package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/assets/industory_performance_1.jpeg +0 -0
  284. package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/assets/industory_performance_2.jpeg +0 -0
  285. package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/assets/sector_performance.jpeg +0 -0
  286. package/.claude/skills/weekly-trade-strategy/.claude/skills/sector-analyst/references/sector_rotation.md +170 -0
  287. package/.claude/skills/weekly-trade-strategy/.claude/skills/stanley-druckenmiller-investment/SKILL.md +84 -0
  288. package/.claude/skills/weekly-trade-strategy/.claude/skills/stanley-druckenmiller-investment/references/case-studies.md +148 -0
  289. package/.claude/skills/weekly-trade-strategy/.claude/skills/stanley-druckenmiller-investment/references/investment-philosophy.md +80 -0
  290. package/.claude/skills/weekly-trade-strategy/.claude/skills/stanley-druckenmiller-investment/references/market-analysis-guide.md +146 -0
  291. package/.claude/skills/weekly-trade-strategy/.claude/skills/technical-analyst/SKILL.md +238 -0
  292. package/.claude/skills/weekly-trade-strategy/.claude/skills/technical-analyst/assets/analysis_template.md +183 -0
  293. package/.claude/skills/weekly-trade-strategy/.claude/skills/technical-analyst/references/technical_analysis_framework.md +282 -0
  294. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/CHANGELOG.md +118 -0
  295. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/SKILL.md +545 -0
  296. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/bubble_framework.md +335 -0
  297. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/historical_cases.md +327 -0
  298. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/implementation_guide.md +473 -0
  299. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/quick_reference.md +354 -0
  300. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/references/quick_reference_en.md +342 -0
  301. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-market-bubble-detector/scripts/bubble_scorer.py +309 -0
  302. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/SKILL.md +294 -0
  303. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/references/financial-metrics.md +172 -0
  304. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/references/fundamental-analysis.md +129 -0
  305. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/references/report-template.md +207 -0
  306. package/.claude/skills/weekly-trade-strategy/.claude/skills/us-stock-analysis/references/technical-analysis.md +93 -0
  307. package/.claude/skills/weekly-trade-strategy/CLAUDE.md +454 -0
  308. package/.claude/skills/weekly-trade-strategy/README.md +287 -0
  309. package/.claude/skills/weekly-trade-strategy/blogs/.gitkeep +0 -0
  310. package/.claude/skills/weekly-trade-strategy/charts/.gitkeep +0 -0
  311. package/.claude/skills/weekly-trade-strategy/earnings_data.json +10054 -0
  312. package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/SKILL.md +662 -0
  313. package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/assets/SP500_Breadth_Index_200MA_8MA.jpeg +0 -0
  314. package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/assets/US_Stock_Market_Uptrend_Ratio.jpeg +0 -0
  315. package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/assets/breadth_analysis_template.md +558 -0
  316. package/.claude/skills/weekly-trade-strategy/skills/breadth-chart-analyst/references/breadth_chart_methodology.md +590 -0
  317. package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/SKILL.md +721 -0
  318. package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/assets/earnings_report_template.md +102 -0
  319. package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/earnings_calendar_2025-11-02.md +447 -0
  320. package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/references/fmp_api_guide.md +590 -0
  321. package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/scripts/fetch_earnings_fmp.py +443 -0
  322. package/.claude/skills/weekly-trade-strategy/skills/earnings-calendar/scripts/generate_report.py +366 -0
  323. package/.claude/skills/weekly-trade-strategy/skills/economic-calendar-fetcher/SKILL.md +365 -0
  324. package/.claude/skills/weekly-trade-strategy/skills/economic-calendar-fetcher/references/fmp_api_documentation.md +345 -0
  325. package/.claude/skills/weekly-trade-strategy/skills/economic-calendar-fetcher/scripts/get_economic_calendar.py +267 -0
  326. package/.claude/skills/weekly-trade-strategy/skills/market-environment-analysis/SKILL.md +139 -0
  327. package/.claude/skills/weekly-trade-strategy/skills/market-environment-analysis/references/analysis_patterns.md +124 -0
  328. package/.claude/skills/weekly-trade-strategy/skills/market-environment-analysis/references/indicators.md +99 -0
  329. package/.claude/skills/weekly-trade-strategy/skills/market-environment-analysis/scripts/market_utils.py +127 -0
  330. package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/SKILL.md +714 -0
  331. package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/references/corporate_news_impact.md +446 -0
  332. package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/references/geopolitical_commodity_correlations.md +499 -0
  333. package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/references/market_event_patterns.md +393 -0
  334. package/.claude/skills/weekly-trade-strategy/skills/market-news-analyst/references/trusted_news_sources.md +510 -0
  335. package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/SKILL.md +206 -0
  336. package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/assets/industory_performance_1.jpeg +0 -0
  337. package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/assets/industory_performance_2.jpeg +0 -0
  338. package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/assets/sector_performance.jpeg +0 -0
  339. package/.claude/skills/weekly-trade-strategy/skills/sector-analyst/references/sector_rotation.md +170 -0
  340. package/.claude/skills/weekly-trade-strategy/skills/stanley-druckenmiller-investment/SKILL.md +84 -0
  341. package/.claude/skills/weekly-trade-strategy/skills/stanley-druckenmiller-investment/references/case-studies.md +148 -0
  342. package/.claude/skills/weekly-trade-strategy/skills/stanley-druckenmiller-investment/references/investment-philosophy.md +80 -0
  343. package/.claude/skills/weekly-trade-strategy/skills/stanley-druckenmiller-investment/references/market-analysis-guide.md +146 -0
  344. package/.claude/skills/weekly-trade-strategy/skills/technical-analyst/SKILL.md +238 -0
  345. package/.claude/skills/weekly-trade-strategy/skills/technical-analyst/assets/analysis_template.md +183 -0
  346. package/.claude/skills/weekly-trade-strategy/skills/technical-analyst/references/technical_analysis_framework.md +282 -0
  347. package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/CHANGELOG.md +118 -0
  348. package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/SKILL.md +545 -0
  349. package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/bubble_framework.md +335 -0
  350. package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/historical_cases.md +327 -0
  351. package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/implementation_guide.md +473 -0
  352. package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/quick_reference.md +354 -0
  353. package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/references/quick_reference_en.md +342 -0
  354. package/.claude/skills/weekly-trade-strategy/skills/us-market-bubble-detector/scripts/bubble_scorer.py +309 -0
  355. package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/SKILL.md +294 -0
  356. package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/references/financial-metrics.md +172 -0
  357. package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/references/fundamental-analysis.md +129 -0
  358. package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/references/report-template.md +207 -0
  359. package/.claude/skills/weekly-trade-strategy/skills/us-stock-analysis/references/technical-analysis.md +93 -0
  360. package/.mcp.json +3 -0
  361. package/cli.mjs +16 -16
  362. package/package.json +4 -2
@@ -0,0 +1,622 @@
1
+ ---
2
+ name: pair-trade-screener
3
+ description: Statistical arbitrage tool for identifying and analyzing pair trading opportunities. Detects cointegrated stock pairs within sectors, analyzes spread behavior, calculates z-scores, and provides entry/exit recommendations for market-neutral strategies. Use when user requests pair trading opportunities, statistical arbitrage screening, mean-reversion strategies, or market-neutral portfolio construction. Supports correlation analysis, cointegration testing, and spread backtesting.
4
+ ---
5
+
6
+ # Pair Trade Screener
7
+
8
+ ## Overview
9
+
10
+ This skill identifies and analyzes statistical arbitrage opportunities through pair trading. Pair trading is a market-neutral strategy that profits from the relative price movements of two correlated securities, regardless of overall market direction. The skill uses rigorous statistical methods including correlation analysis and cointegration testing to find robust trading pairs.
11
+
12
+ **Core Methodology:**
13
+ - Identify pairs of stocks with high correlation and similar sector/industry exposure
14
+ - Test for cointegration (long-term statistical relationship)
15
+ - Calculate spread z-scores to identify mean-reversion opportunities
16
+ - Generate entry/exit signals based on statistical thresholds
17
+ - Provide position sizing for market-neutral exposure
18
+
19
+ **Key Advantages:**
20
+ - Market-neutral: Profits in up, down, or sideways markets
21
+ - Risk management: Limited exposure to broad market movements
22
+ - Statistical foundation: Data-driven, not discretionary
23
+ - Diversification: Uncorrelated to traditional long-only strategies
24
+
25
+ ## When to Use This Skill
26
+
27
+ Use this skill when:
28
+ - User asks for "pair trading opportunities"
29
+ - User wants "market-neutral strategies"
30
+ - User requests "statistical arbitrage screening"
31
+ - User asks "which stocks move together?"
32
+ - User wants to hedge sector exposure
33
+ - User requests mean-reversion trade ideas
34
+ - User asks about relative value trading
35
+
36
+ Example user requests:
37
+ - "Find pair trading opportunities in the tech sector"
38
+ - "Which stocks are cointegrated?"
39
+ - "Screen for statistical arbitrage opportunities"
40
+ - "Find mean-reversion pairs"
41
+ - "What are good market-neutral trades right now?"
42
+
43
+ ## Analysis Workflow
44
+
45
+ ### Step 1: Define Pair Universe
46
+
47
+ **Objective:** Establish the pool of stocks to analyze for pair relationships.
48
+
49
+ **Option A: Sector-Based Screening (Recommended)**
50
+
51
+ Select a specific sector to screen:
52
+ - Technology
53
+ - Financials
54
+ - Healthcare
55
+ - Consumer Discretionary
56
+ - Industrials
57
+ - Energy
58
+ - Materials
59
+ - Consumer Staples
60
+ - Utilities
61
+ - Real Estate
62
+ - Communication Services
63
+
64
+ **Option B: Custom Stock List**
65
+
66
+ User provides specific tickers to analyze:
67
+ ```
68
+ Example: ["AAPL", "MSFT", "GOOGL", "META", "NVDA"]
69
+ ```
70
+
71
+ **Option C: Industry-Specific**
72
+
73
+ Narrow focus to specific industry within sector:
74
+ - Example: "Software" within Technology sector
75
+ - Example: "Regional Banks" within Financials
76
+
77
+ **Filtering Criteria:**
78
+ - Minimum market cap: $2B (mid-cap and above)
79
+ - Minimum average volume: 1M shares/day (liquidity requirement)
80
+ - Active trading: No delisted or inactive stocks
81
+ - Same exchange preference: Avoid cross-exchange complications
82
+
83
+ ### Step 2: Retrieve Historical Price Data
84
+
85
+ **Objective:** Fetch price history for correlation and cointegration analysis.
86
+
87
+ **Data Requirements:**
88
+ - Timeframe: 2 years (minimum 252 trading days)
89
+ - Frequency: Daily closing prices
90
+ - Adjustments: Adjusted for splits and dividends
91
+ - Clean data: No gaps or missing values
92
+
93
+ **FMP API Endpoint:**
94
+ ```
95
+ GET /v3/historical-price-full/{symbol}?apikey=YOUR_API_KEY
96
+ ```
97
+
98
+ **Data Validation:**
99
+ - Verify consistent date ranges across all symbols
100
+ - Remove stocks with >10% missing data
101
+ - Fill minor gaps with forward-fill method
102
+ - Log data quality issues
103
+
104
+ **Script Execution:**
105
+ ```bash
106
+ python scripts/fetch_price_data.py --sector Technology --lookback 730
107
+ ```
108
+
109
+ ### Step 3: Calculate Correlation and Beta
110
+
111
+ **Objective:** Identify candidate pairs with strong linear relationships.
112
+
113
+ **Correlation Analysis:**
114
+
115
+ For each pair of stocks (i, j) in the universe:
116
+ 1. Calculate Pearson correlation coefficient (ρ)
117
+ 2. Calculate rolling correlation (90-day window) for stability check
118
+ 3. Filter pairs with ρ >= 0.70 (strong positive correlation)
119
+
120
+ **Correlation Interpretation:**
121
+ - ρ >= 0.90: Very strong correlation (best candidates)
122
+ - ρ 0.70-0.90: Strong correlation (good candidates)
123
+ - ρ 0.50-0.70: Moderate correlation (marginal)
124
+ - ρ < 0.50: Weak correlation (exclude)
125
+
126
+ **Beta Calculation:**
127
+
128
+ For each candidate pair (Stock A, Stock B):
129
+ ```
130
+ Beta = Covariance(A, B) / Variance(B)
131
+ ```
132
+
133
+ Beta indicates the hedge ratio:
134
+ - Beta = 1.0: Equal dollar amounts
135
+ - Beta = 1.5: $1.50 of B for every $1.00 of A
136
+ - Beta = 0.8: $0.80 of B for every $1.00 of A
137
+
138
+ **Correlation Stability Check:**
139
+ - Calculate correlation over multiple periods (6mo, 1yr, 2yr)
140
+ - Require correlation to be stable (not deteriorating)
141
+ - Flag pairs where recent correlation < historical correlation by >0.15
142
+
143
+ ### Step 4: Cointegration Testing
144
+
145
+ **Objective:** Statistically validate long-term equilibrium relationship.
146
+
147
+ **Why Cointegration Matters:**
148
+ - Correlation measures short-term co-movement
149
+ - Cointegration proves long-term equilibrium relationship
150
+ - Cointegrated pairs mean-revert predictably
151
+ - Non-cointegrated pairs may diverge permanently
152
+
153
+ **Augmented Dickey-Fuller (ADF) Test:**
154
+
155
+ For each correlated pair:
156
+ 1. Calculate spread: `Spread = Price_A - (Beta × Price_B)`
157
+ 2. Run ADF test on spread series
158
+ 3. Check p-value: p < 0.05 indicates cointegration (reject null hypothesis of unit root)
159
+ 4. Extract ADF statistic for strength ranking
160
+
161
+ **Cointegration Interpretation:**
162
+ - p-value < 0.01: Very strong cointegration (★★★)
163
+ - p-value 0.01-0.05: Moderate cointegration (★★)
164
+ - p-value > 0.05: No cointegration (exclude)
165
+
166
+ **Half-Life Calculation:**
167
+
168
+ Estimate mean-reversion speed:
169
+ ```
170
+ Half-Life = -log(2) / log(mean_reversion_coefficient)
171
+ ```
172
+
173
+ - Half-life < 30 days: Fast mean-reversion (good for short-term trading)
174
+ - Half-life 30-60 days: Moderate speed (standard)
175
+ - Half-life > 60 days: Slow mean-reversion (long holding periods)
176
+
177
+ **Python Implementation:**
178
+ ```python
179
+ from statsmodels.tsa.stattools import adfuller
180
+
181
+ # Calculate spread
182
+ spread = price_a - (beta * price_b)
183
+
184
+ # ADF test
185
+ result = adfuller(spread)
186
+ adf_stat = result[0]
187
+ p_value = result[1]
188
+
189
+ # Interpret
190
+ is_cointegrated = p_value < 0.05
191
+ ```
192
+
193
+ ### Step 5: Spread Analysis and Z-Score Calculation
194
+
195
+ **Objective:** Quantify current spread deviation from equilibrium.
196
+
197
+ **Spread Calculation:**
198
+
199
+ Two common methods:
200
+
201
+ **Method 1: Price Difference (Additive)**
202
+ ```
203
+ Spread = Price_A - (Beta × Price_B)
204
+ ```
205
+ Best for: Stocks with similar price levels
206
+
207
+ **Method 2: Price Ratio (Multiplicative)**
208
+ ```
209
+ Spread = Price_A / Price_B
210
+ ```
211
+ Best for: Stocks with different price levels, easier interpretation
212
+
213
+ **Z-Score Calculation:**
214
+
215
+ Measures how many standard deviations spread is from its mean:
216
+ ```
217
+ Z-Score = (Current_Spread - Mean_Spread) / Std_Dev_Spread
218
+ ```
219
+
220
+ **Z-Score Interpretation:**
221
+ - Z > +2.0: Stock A expensive relative to B (short A, long B)
222
+ - Z > +1.5: Moderately expensive (watch for entry)
223
+ - Z -1.5 to +1.5: Normal range (no trade)
224
+ - Z < -1.5: Moderately cheap (watch for entry)
225
+ - Z < -2.0: Stock A cheap relative to B (long A, short B)
226
+
227
+ **Historical Spread Analysis:**
228
+ - Calculate mean and std dev over 90-day rolling window
229
+ - Plot historical z-score distribution
230
+ - Identify maximum historical z-score deviations
231
+ - Check for structural breaks (spread regime change)
232
+
233
+ ### Step 6: Generate Entry/Exit Recommendations
234
+
235
+ **Objective:** Provide actionable trading signals with clear rules.
236
+
237
+ **Entry Conditions:**
238
+
239
+ **Conservative Approach (Z ≥ ±2.0):**
240
+ ```
241
+ LONG Signal:
242
+ - Z-score < -2.0 (spread 2+ std devs below mean)
243
+ - Spread is mean-reverting (cointegration p < 0.05)
244
+ - Half-life < 60 days
245
+ → Action: Buy Stock A, Short Stock B (hedge ratio = beta)
246
+
247
+ SHORT Signal:
248
+ - Z-score > +2.0 (spread 2+ std devs above mean)
249
+ - Spread is mean-reverting (cointegration p < 0.05)
250
+ - Half-life < 60 days
251
+ → Action: Short Stock A, Buy Stock B (hedge ratio = beta)
252
+ ```
253
+
254
+ **Aggressive Approach (Z ≥ ±1.5):**
255
+ - Lower threshold for more frequent trades
256
+ - Higher win rate but smaller avg profit per trade
257
+ - Requires tighter risk management
258
+
259
+ **Exit Conditions:**
260
+
261
+ **Primary Exit: Mean Reversion (Z = 0)**
262
+ ```
263
+ Exit when spread returns to mean (z-score crosses 0)
264
+ → Close both legs simultaneously
265
+ ```
266
+
267
+ **Secondary Exit: Partial Profit Take**
268
+ ```
269
+ Exit 50% when z-score reaches ±1.0
270
+ Exit remaining 50% at z-score = 0
271
+ ```
272
+
273
+ **Stop Loss:**
274
+ ```
275
+ Exit if z-score extends beyond ±3.0 (extreme divergence)
276
+ Risk: Possible structural break in relationship
277
+ ```
278
+
279
+ **Time-Based Exit:**
280
+ ```
281
+ Exit after 90 days if no mean-reversion
282
+ Prevents holding broken pairs indefinitely
283
+ ```
284
+
285
+ ### Step 7: Position Sizing and Risk Management
286
+
287
+ **Objective:** Determine dollar amounts for market-neutral exposure.
288
+
289
+ **Market Neutral Sizing:**
290
+
291
+ For a pair (Stock A, Stock B) with beta = β:
292
+
293
+ **Equal Dollar Exposure:**
294
+ ```
295
+ If portfolio size = $10,000 allocated to this pair:
296
+ - Long $5,000 of Stock A
297
+ - Short $5,000 × β of Stock B
298
+
299
+ Example (β = 1.2):
300
+ - Long $5,000 Stock A
301
+ - Short $6,000 Stock B
302
+ → Market neutral, beta = 0
303
+ ```
304
+
305
+ **Position Sizing Considerations:**
306
+ - Total pair allocation: 10-20% of portfolio per pair
307
+ - Maximum pairs: 5-8 active pairs for diversification
308
+ - Correlation across pairs: Avoid highly correlated pairs
309
+
310
+ **Risk Metrics:**
311
+ - Maximum loss per pair: 2-3% of total portfolio
312
+ - Stop loss trigger: Z-score > ±3.0 or -5% loss on spread
313
+ - Portfolio-level risk: Sum of all pair risks ≤ 10%
314
+
315
+ ### Step 8: Generate Pair Analysis Report
316
+
317
+ **Objective:** Create structured markdown report with findings and recommendations.
318
+
319
+ **Report Sections:**
320
+
321
+ 1. **Executive Summary**
322
+ - Total pairs analyzed
323
+ - Number of cointegrated pairs found
324
+ - Top 5 opportunities ranked by statistical strength
325
+
326
+ 2. **Cointegrated Pairs Table**
327
+ - Pair name (Stock A / Stock B)
328
+ - Correlation coefficient
329
+ - Cointegration p-value
330
+ - Current z-score
331
+ - Trade signal (Long/Short/None)
332
+ - Half-life
333
+
334
+ 3. **Detailed Analysis (Top 10 Pairs)**
335
+ - Pair description
336
+ - Statistical metrics
337
+ - Current spread position
338
+ - Entry/exit recommendations
339
+ - Position sizing
340
+ - Risk assessment
341
+
342
+ 4. **Spread Charts (Text-Based)**
343
+ - Historical z-score plot (ASCII art)
344
+ - Entry/exit levels marked
345
+ - Current position indicator
346
+
347
+ 5. **Risk Warnings**
348
+ - Pairs with deteriorating correlation
349
+ - Structural breaks detected
350
+ - Low liquidity warnings
351
+
352
+ **File Naming Convention:**
353
+ ```
354
+ pair_trade_analysis_[SECTOR]_[YYYY-MM-DD].md
355
+ ```
356
+
357
+ Example: `pair_trade_analysis_Technology_2025-11-08.md`
358
+
359
+ ## Quality Standards
360
+
361
+ ### Statistical Rigor
362
+
363
+ **Minimum Requirements for Valid Pair:**
364
+ - ✓ Correlation ≥ 0.70 over 2-year period
365
+ - ✓ Cointegration p-value < 0.05 (ADF test)
366
+ - ✓ Spread stationarity confirmed
367
+ - ✓ Half-life < 90 days
368
+ - ✓ No structural breaks in recent 6 months
369
+
370
+ **Red Flags (Exclude Pair):**
371
+ - Correlation dropped >0.20 in recent 6 months
372
+ - Cointegration p-value > 0.05
373
+ - Half-life increasing over time (mean-reversion weakening)
374
+ - Significant corporate events (merger, spin-off, bankruptcy risk)
375
+ - Liquidity concerns (avg volume < 500K shares/day)
376
+
377
+ ### Practical Considerations
378
+
379
+ **Transaction Costs:**
380
+ - Assume 0.1% round-trip cost per leg
381
+ - Total cost per pair = 0.4% (entry + exit, both legs)
382
+ - Minimum z-score threshold should exceed transaction costs
383
+
384
+ **Short Selling:**
385
+ - Verify stock is shortable (not hard-to-borrow)
386
+ - Factor in short interest costs (borrow fees)
387
+ - Monitor short squeeze risk
388
+
389
+ **Execution:**
390
+ - Enter/exit both legs simultaneously (avoid leg risk)
391
+ - Use limit orders to control slippage
392
+ - Pre-locate shorts before entry
393
+
394
+ ## Available Scripts
395
+
396
+ ### scripts/find_pairs.py
397
+
398
+ **Purpose:** Screen for cointegrated pairs within a sector or custom list.
399
+
400
+ **Usage:**
401
+ ```bash
402
+ # Sector-based screening
403
+ python scripts/find_pairs.py --sector Technology --min-correlation 0.70
404
+
405
+ # Custom stock list
406
+ python scripts/find_pairs.py --symbols AAPL,MSFT,GOOGL,META --min-correlation 0.75
407
+
408
+ # Full options
409
+ python scripts/find_pairs.py \
410
+ --sector Financials \
411
+ --min-correlation 0.70 \
412
+ --min-market-cap 2000000000 \
413
+ --lookback-days 730 \
414
+ --output pairs_analysis.json
415
+ ```
416
+
417
+ **Parameters:**
418
+ - `--sector`: Sector name (Technology, Financials, etc.)
419
+ - `--symbols`: Comma-separated list of tickers (alternative to sector)
420
+ - `--min-correlation`: Minimum correlation threshold (default: 0.70)
421
+ - `--min-market-cap`: Minimum market cap filter (default: $2B)
422
+ - `--lookback-days`: Historical data period (default: 730 days)
423
+ - `--output`: Output JSON file (default: stdout)
424
+ - `--api-key`: FMP API key (or set FMP_API_KEY env var)
425
+
426
+ **Output:**
427
+ ```json
428
+ [
429
+ {
430
+ "pair": "AAPL/MSFT",
431
+ "stock_a": "AAPL",
432
+ "stock_b": "MSFT",
433
+ "correlation": 0.87,
434
+ "beta": 1.15,
435
+ "cointegration_pvalue": 0.012,
436
+ "adf_statistic": -3.45,
437
+ "half_life_days": 42,
438
+ "current_zscore": -2.3,
439
+ "signal": "LONG",
440
+ "strength": "Strong"
441
+ }
442
+ ]
443
+ ```
444
+
445
+ ### scripts/analyze_spread.py
446
+
447
+ **Purpose:** Analyze a specific pair's spread behavior and generate trading signals.
448
+
449
+ **Usage:**
450
+ ```bash
451
+ # Analyze specific pair
452
+ python scripts/analyze_spread.py --stock-a AAPL --stock-b MSFT
453
+
454
+ # Custom lookback period
455
+ python scripts/analyze_spread.py \
456
+ --stock-a JPM \
457
+ --stock-b BAC \
458
+ --lookback-days 365 \
459
+ --entry-zscore 2.0 \
460
+ --exit-zscore 0.5
461
+ ```
462
+
463
+ **Parameters:**
464
+ - `--stock-a`: First stock ticker
465
+ - `--stock-b`: Second stock ticker
466
+ - `--lookback-days`: Analysis period (default: 365)
467
+ - `--entry-zscore`: Z-score threshold for entry (default: 2.0)
468
+ - `--exit-zscore`: Z-score threshold for exit (default: 0.0)
469
+ - `--api-key`: FMP API key
470
+
471
+ **Output:**
472
+ - Current spread analysis
473
+ - Z-score calculation
474
+ - Entry/exit recommendations
475
+ - Position sizing
476
+ - Historical z-score chart (text)
477
+
478
+ ## Reference Documentation
479
+
480
+ ### references/methodology.md
481
+
482
+ Comprehensive guide to statistical arbitrage and pair trading:
483
+ - **Pair Selection Criteria**: How to identify good pair candidates
484
+ - **Statistical Tests**: Correlation, cointegration, stationarity
485
+ - **Spread Construction**: Price difference vs price ratio approaches
486
+ - **Mean Reversion**: Half-life calculation and interpretation
487
+ - **Risk Management**: Position sizing, stop losses, diversification
488
+ - **Common Pitfalls**: Survivorship bias, look-ahead bias, overfitting
489
+
490
+ ### references/cointegration_guide.md
491
+
492
+ Deep dive into cointegration testing:
493
+ - **What is Cointegration?**: Intuitive explanation
494
+ - **ADF Test**: Step-by-step procedure
495
+ - **P-Value Interpretation**: Statistical significance thresholds
496
+ - **Half-Life Estimation**: AR(1) model approach
497
+ - **Structural Breaks**: Testing for regime changes
498
+ - **Practical Examples**: Case studies with real pairs
499
+
500
+ ## Integration with Other Skills
501
+
502
+ **Sector Analyst Integration:**
503
+ - Use Sector Analyst to identify sectors in rotation
504
+ - Screen for pairs within outperforming sectors
505
+ - Pairs in leading sectors may have stronger trends
506
+
507
+ **Technical Analyst Integration:**
508
+ - Confirm pair entry/exit with individual stock technicals
509
+ - Check support/resistance levels before entry
510
+ - Validate trend direction aligns with spread signal
511
+
512
+ **Backtest Expert Integration:**
513
+ - Feed pair candidates to Backtest Expert for validation
514
+ - Test historical z-score entry/exit rules
515
+ - Optimize threshold parameters (entry z-score, stop loss)
516
+ - Walk-forward analysis for robustness
517
+
518
+ **Market Environment Analysis Integration:**
519
+ - Avoid pair trading during extreme volatility (VIX > 30)
520
+ - Correlations break down in crisis periods
521
+ - Prefer pair trading in sideways/range-bound markets
522
+
523
+ **Portfolio Manager Integration:**
524
+ - Track multiple pair positions
525
+ - Monitor overall market-neutral exposure
526
+ - Calculate portfolio-level pair trading P/L
527
+ - Rebalance hedge ratios periodically
528
+
529
+ ## Important Notes
530
+
531
+ - **All analysis and output in English**
532
+ - **Statistical foundation**: No discretionary interpretation
533
+ - **Market neutral focus**: Minimize directional beta exposure
534
+ - **Data quality critical**: Garbage in, garbage out
535
+ - **Requires FMP API key**: Free tier sufficient for basic screening
536
+ - **Python dependencies**: pandas, numpy, scipy, statsmodels
537
+
538
+ ## Common Use Cases
539
+
540
+ **Use Case 1: Technology Sector Pairs**
541
+ ```
542
+ User: "Find pair trading opportunities in tech stocks"
543
+
544
+ Workflow:
545
+ 1. Screen Technology sector for stocks with market cap > $10B
546
+ 2. Calculate all pairwise correlations
547
+ 3. Filter pairs with correlation ≥ 0.75
548
+ 4. Run cointegration tests
549
+ 5. Identify current z-score extremes (|z| > 2.0)
550
+ 6. Generate top 10 pairs report
551
+ ```
552
+
553
+ **Use Case 2: Specific Pair Analysis**
554
+ ```
555
+ User: "Analyze AAPL and MSFT as a pair trade"
556
+
557
+ Workflow:
558
+ 1. Fetch 2-year price history for AAPL and MSFT
559
+ 2. Calculate correlation and beta
560
+ 3. Test for cointegration
561
+ 4. Calculate current spread and z-score
562
+ 5. Generate entry/exit recommendation
563
+ 6. Provide position sizing guidance
564
+ ```
565
+
566
+ **Use Case 3: Regional Bank Pairs**
567
+ ```
568
+ User: "Screen for pairs among regional banks"
569
+
570
+ Workflow:
571
+ 1. Filter Financials sector for industry = "Regional Banks"
572
+ 2. Exclude banks with <$5B market cap
573
+ 3. Calculate pairwise statistics
574
+ 4. Rank by cointegration strength
575
+ 5. Focus on pairs with half-life < 45 days
576
+ 6. Report top 5 mean-reverting pairs
577
+ ```
578
+
579
+ ## Troubleshooting
580
+
581
+ **Problem: No cointegrated pairs found**
582
+
583
+ Solutions:
584
+ - Expand universe (lower market cap threshold)
585
+ - Relax cointegration p-value to 0.10
586
+ - Try different sectors (Utilities often cointegrate well)
587
+ - Increase lookback period to 3 years
588
+
589
+ **Problem: All z-scores near zero (no trade signals)**
590
+
591
+ Solutions:
592
+ - Normal market condition (pairs in equilibrium)
593
+ - Check back later or expand universe
594
+ - Lower entry threshold to ±1.5 instead of ±2.0
595
+
596
+ **Problem: Pair correlation broke down**
597
+
598
+ Solutions:
599
+ - Check for corporate events (earnings, guidance changes)
600
+ - Verify no M&A activity or restructuring
601
+ - Remove pair from watchlist if structural break confirmed
602
+ - Monitor for 30 days before re-entering
603
+
604
+ ## API Requirements
605
+
606
+ - **Required**: FMP API key (free tier sufficient)
607
+ - **Rate Limits**: ~250 requests/day on free tier
608
+ - **Data Usage**: ~2 requests per symbol for 2-year history
609
+ - **Upgrade**: Professional plan ($29/mo) recommended for frequent screening
610
+
611
+ ## Resources
612
+
613
+ - **FMP Historical Price API**: https://site.financialmodelingprep.com/developer/docs/historical-price-full
614
+ - **Stock Screener API**: https://site.financialmodelingprep.com/developer/docs/stock-screener-api
615
+ - **Statsmodels Documentation**: https://www.statsmodels.org/stable/index.html
616
+ - **Cointegration Paper**: Engle & Granger (1987) - "Co-Integration and Error Correction"
617
+
618
+ ---
619
+
620
+ **Version**: 1.0
621
+ **Last Updated**: 2025-11-08
622
+ **Dependencies**: Python 3.8+, pandas, numpy, scipy, statsmodels, requests