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,286 @@
1
+ #!/usr/bin/env python3
2
+ """
3
+ Test script for Alpaca API connection.
4
+
5
+ This script verifies that Alpaca API credentials are correctly configured
6
+ and tests basic API functionality.
7
+
8
+ Usage:
9
+ python3 test_alpaca_connection.py
10
+
11
+ Environment Variables:
12
+ ALPACA_API_KEY: Your Alpaca API Key ID
13
+ ALPACA_SECRET_KEY: Your Alpaca Secret Key
14
+ ALPACA_PAPER: Set to 'true' for paper trading, 'false' for live (default: true)
15
+ """
16
+
17
+ import os
18
+ import sys
19
+
20
+ try:
21
+ import requests
22
+ except ImportError:
23
+ print("ERROR: requests library not installed")
24
+ print("Install with: pip install requests")
25
+ sys.exit(1)
26
+
27
+
28
+ def load_credentials():
29
+ """Load Alpaca API credentials from environment variables."""
30
+ api_key = os.environ.get('ALPACA_API_KEY')
31
+ secret_key = os.environ.get('ALPACA_SECRET_KEY')
32
+ paper = os.environ.get('ALPACA_PAPER', 'true').lower() == 'true'
33
+
34
+ if not api_key or not secret_key:
35
+ print("ERROR: Alpaca API credentials not found")
36
+ print("\nPlease set environment variables:")
37
+ print(" export ALPACA_API_KEY='your_api_key_id'")
38
+ print(" export ALPACA_SECRET_KEY='your_secret_key'")
39
+ print(" export ALPACA_PAPER='true' # or 'false' for live trading")
40
+ print("\nOr add to your shell config file (~/.bashrc or ~/.zshrc):")
41
+ print(" echo 'export ALPACA_API_KEY=\"your_key\"' >> ~/.bashrc")
42
+ print(" echo 'export ALPACA_SECRET_KEY=\"your_secret\"' >> ~/.bashrc")
43
+ print(" echo 'export ALPACA_PAPER=\"true\"' >> ~/.bashrc")
44
+ print(" source ~/.bashrc")
45
+ sys.exit(1)
46
+
47
+ return api_key, secret_key, paper
48
+
49
+
50
+ def get_base_url(paper=True):
51
+ """Get appropriate Alpaca API base URL."""
52
+ if paper:
53
+ return "https://paper-api.alpaca.markets"
54
+ else:
55
+ return "https://api.alpaca.markets"
56
+
57
+
58
+ def test_account_info(api_key, secret_key, base_url):
59
+ """Test account information endpoint."""
60
+ print("\n" + "="*60)
61
+ print("Testing Alpaca Account API Connection")
62
+ print("="*60)
63
+
64
+ headers = {
65
+ 'APCA-API-KEY-ID': api_key,
66
+ 'APCA-API-SECRET-KEY': secret_key
67
+ }
68
+
69
+ try:
70
+ response = requests.get(f"{base_url}/v2/account", headers=headers)
71
+
72
+ if response.status_code == 200:
73
+ account = response.json()
74
+ print("✓ Successfully connected to Alpaca API\n")
75
+ print(f"Account Status: {account.get('status')}")
76
+ print(f"Account Number: {account.get('account_number')}")
77
+ print(f"Equity: ${float(account.get('equity', 0)):,.2f}")
78
+ print(f"Cash: ${float(account.get('cash', 0)):,.2f}")
79
+ print(f"Buying Power: ${float(account.get('buying_power', 0)):,.2f}")
80
+ print(f"Portfolio Value: ${float(account.get('portfolio_value', 0)):,.2f}")
81
+
82
+ # Check if account is restricted
83
+ if account.get('account_blocked') or account.get('trading_blocked'):
84
+ print("\n⚠ WARNING: Account has restrictions")
85
+ if account.get('account_blocked'):
86
+ print(" - Account is blocked")
87
+ if account.get('trading_blocked'):
88
+ print(" - Trading is blocked")
89
+
90
+ return True
91
+
92
+ elif response.status_code == 401:
93
+ print("✗ Authentication failed")
94
+ print("\nPossible causes:")
95
+ print(" 1. Invalid API credentials")
96
+ print(" 2. Using paper trading keys with live URL (or vice versa)")
97
+ print(" 3. API keys have been revoked")
98
+ print("\nSolutions:")
99
+ print(" 1. Verify API Key ID and Secret Key in Alpaca dashboard")
100
+ print(" 2. Check ALPACA_PAPER environment variable matches your keys")
101
+ print(" 3. Regenerate API keys if needed")
102
+ return False
103
+
104
+ elif response.status_code == 403:
105
+ print("✗ Forbidden - insufficient permissions")
106
+ print("\nPossible causes:")
107
+ print(" 1. API keys don't have required permissions")
108
+ print(" 2. Account not approved for trading")
109
+ print("\nSolutions:")
110
+ print(" 1. Regenerate API keys with full permissions")
111
+ print(" 2. Complete account approval process in Alpaca dashboard")
112
+ return False
113
+
114
+ else:
115
+ print(f"✗ Unexpected error: HTTP {response.status_code}")
116
+ print(f"Response: {response.text}")
117
+ return False
118
+
119
+ except requests.exceptions.RequestException as e:
120
+ print(f"✗ Network error: {e}")
121
+ print("\nPossible causes:")
122
+ print(" 1. No internet connection")
123
+ print(" 2. Alpaca API is down (check status.alpaca.markets)")
124
+ print(" 3. Firewall blocking connection")
125
+ return False
126
+
127
+
128
+ def test_positions(api_key, secret_key, base_url):
129
+ """Test positions endpoint."""
130
+ print("\n" + "="*60)
131
+ print("Testing Positions API")
132
+ print("="*60)
133
+
134
+ headers = {
135
+ 'APCA-API-KEY-ID': api_key,
136
+ 'APCA-API-SECRET-KEY': secret_key
137
+ }
138
+
139
+ try:
140
+ response = requests.get(f"{base_url}/v2/positions", headers=headers)
141
+
142
+ if response.status_code == 200:
143
+ positions = response.json()
144
+
145
+ if len(positions) == 0:
146
+ print("✓ API connection successful")
147
+ print("Portfolio is empty (no positions)")
148
+ else:
149
+ print(f"✓ API connection successful")
150
+ print(f"Found {len(positions)} position(s):\n")
151
+
152
+ total_value = 0
153
+ total_pl = 0
154
+
155
+ for pos in positions:
156
+ symbol = pos.get('symbol')
157
+ qty = float(pos.get('qty', 0))
158
+ avg_price = float(pos.get('avg_entry_price', 0))
159
+ current_price = float(pos.get('current_price', 0))
160
+ market_value = float(pos.get('market_value', 0))
161
+ unrealized_pl = float(pos.get('unrealized_pl', 0))
162
+ unrealized_plpc = float(pos.get('unrealized_plpc', 0)) * 100
163
+
164
+ total_value += market_value
165
+ total_pl += unrealized_pl
166
+
167
+ pl_sign = '+' if unrealized_pl >= 0 else ''
168
+
169
+ print(f"{symbol}:")
170
+ print(f" Quantity: {qty:.2f} shares")
171
+ print(f" Avg Entry: ${avg_price:.2f}")
172
+ print(f" Current Price: ${current_price:.2f}")
173
+ print(f" Market Value: ${market_value:,.2f}")
174
+ print(f" Unrealized P/L: {pl_sign}${unrealized_pl:,.2f} ({pl_sign}{unrealized_plpc:.2f}%)")
175
+ print()
176
+
177
+ print(f"Total Portfolio Value: ${total_value:,.2f}")
178
+ print(f"Total Unrealized P/L: ${total_pl:,.2f}")
179
+
180
+ return True
181
+
182
+ else:
183
+ print(f"✗ Error fetching positions: HTTP {response.status_code}")
184
+ print(f"Response: {response.text}")
185
+ return False
186
+
187
+ except requests.exceptions.RequestException as e:
188
+ print(f"✗ Network error: {e}")
189
+ return False
190
+
191
+
192
+ def test_market_data(api_key, secret_key):
193
+ """Test market data API (optional)."""
194
+ print("\n" + "="*60)
195
+ print("Testing Market Data API (Optional)")
196
+ print("="*60)
197
+
198
+ # Market data uses different base URL
199
+ base_url = "https://data.alpaca.markets"
200
+
201
+ headers = {
202
+ 'APCA-API-KEY-ID': api_key,
203
+ 'APCA-API-SECRET-KEY': secret_key
204
+ }
205
+
206
+ # Test with a simple quote request for AAPL
207
+ try:
208
+ response = requests.get(
209
+ f"{base_url}/v2/stocks/AAPL/quotes/latest",
210
+ headers=headers
211
+ )
212
+
213
+ if response.status_code == 200:
214
+ print("✓ Market data API accessible")
215
+ quote = response.json().get('quote', {})
216
+ if quote:
217
+ print(f"Sample quote (AAPL): Bid ${quote.get('bp', 0):.2f}, Ask ${quote.get('ap', 0):.2f}")
218
+ elif response.status_code == 402:
219
+ print("⚠ Market data requires paid subscription")
220
+ print(" Free tier provides delayed data only")
221
+ print(" This is normal for free accounts")
222
+ else:
223
+ print(f"⚠ Market data API returned HTTP {response.status_code}")
224
+ print(" This won't affect portfolio management functionality")
225
+
226
+ except Exception as e:
227
+ print(f"⚠ Could not test market data API: {e}")
228
+ print(" This won't affect portfolio management functionality")
229
+
230
+
231
+ def main():
232
+ """Main test function."""
233
+ print("Alpaca API Connection Test")
234
+ print("="*60)
235
+
236
+ # Load credentials
237
+ api_key, secret_key, paper = load_credentials()
238
+ base_url = get_base_url(paper)
239
+
240
+ mode = "PAPER TRADING" if paper else "LIVE TRADING"
241
+ print(f"\nMode: {mode}")
242
+ print(f"Base URL: {base_url}")
243
+ print(f"API Key: {api_key[:8]}...{api_key[-4:]}")
244
+
245
+ # Run tests
246
+ success = True
247
+
248
+ # Test 1: Account info
249
+ if not test_account_info(api_key, secret_key, base_url):
250
+ success = False
251
+
252
+ # Test 2: Positions (only if account test passed)
253
+ if success:
254
+ if not test_positions(api_key, secret_key, base_url):
255
+ success = False
256
+
257
+ # Test 3: Market data (optional, doesn't affect overall success)
258
+ test_market_data(api_key, secret_key)
259
+
260
+ # Summary
261
+ print("\n" + "="*60)
262
+ print("Test Summary")
263
+ print("="*60)
264
+
265
+ if success:
266
+ print("✓ All tests passed successfully")
267
+ print("\nYour Alpaca API connection is properly configured.")
268
+ print("The Portfolio Manager skill should work correctly.")
269
+ print("\nNext steps:")
270
+ print(" 1. Use Portfolio Manager skill in Claude: 'Analyze my portfolio'")
271
+ print(" 2. Review the generated portfolio analysis report")
272
+ print(" 3. Follow rebalancing recommendations if provided")
273
+ return 0
274
+ else:
275
+ print("✗ Some tests failed")
276
+ print("\nPlease review the errors above and:")
277
+ print(" 1. Verify your API credentials are correct")
278
+ print(" 2. Check that ALPACA_PAPER setting matches your API keys")
279
+ print(" 3. Ensure your Alpaca account is active and approved")
280
+ print(" 4. Check Alpaca API status: https://status.alpaca.markets/")
281
+ print("\nFor help, see: portfolio-manager/references/alpaca-mcp-setup.md")
282
+ return 1
283
+
284
+
285
+ if __name__ == "__main__":
286
+ sys.exit(main())
@@ -0,0 +1,317 @@
1
+ ---
2
+ name: scenario-analyzer
3
+ description: |
4
+ 以新闻标题为输入分析18个月情景的技能。
5
+ 通过scenario-analyst代理执行主分析,
6
+ 通过strategy-reviewer代理获取第二意见。
7
+ 生成包含一级、二级、三级影响、推荐股票和评审的综合报告,以中文输出。
8
+ 使用示例: /scenario-analyzer "Fed raises rates by 50bp"
9
+ 触发条件: 新闻分析、情景分析、18个月展望、中长期投资策略
10
+ ---
11
+
12
+ # 标题情景分析器
13
+
14
+ ## 概述
15
+
16
+ 本技能以新闻标题为起点,分析中长期(18个月)的投资情景。
17
+ 依次调用两个专业代理(`scenario-analyst`和`strategy-reviewer`),
18
+ 生成整合多角度分析和批判性评审的综合报告。
19
+
20
+ ## 何时使用本技能
21
+
22
+ 在以下情况下使用本技能:
23
+
24
+ - 想从新闻标题分析中长期投资影响
25
+ - 想构建18个月后的多个情景
26
+ - 想按一级/二级/三级分类整理对板块和个股的影响
27
+ - 需要包含第二意见的综合分析
28
+ - 需要中文报告输出
29
+
30
+ **使用示例:**
31
+ ```
32
+ /headline-scenario-analyzer "Fed raises interest rates by 50bp, signals more hikes ahead"
33
+ /headline-scenario-analyzer "China announces new tariffs on US semiconductors"
34
+ /headline-scenario-analyzer "OPEC+ agrees to cut oil production by 2 million barrels per day"
35
+ ```
36
+
37
+ ## 架构
38
+
39
+ ```
40
+ ┌─────────────────────────────────────────────────────────────────────┐
41
+ │ Skill(编排器) │
42
+ │ │
43
+ │ Phase 1: 准备 │
44
+ │ ├─ 标题解析 │
45
+ │ ├─ 事件类型分类 │
46
+ │ └─ 参考资料加载 │
47
+ │ │
48
+ │ Phase 2: 代理调用 │
49
+ │ ├─ scenario-analyst(主分析) │
50
+ │ └─ strategy-reviewer(第二意见) │
51
+ │ │
52
+ │ Phase 3: 整合与报告生成 │
53
+ │ └─ reports/scenario_analysis_<topic>_YYYYMMDD.md │
54
+ └─────────────────────────────────────────────────────────────────────┘
55
+ ```
56
+
57
+ ## 工作流程
58
+
59
+ ### Phase 1: 准备
60
+
61
+ #### 步骤1.1: 标题解析
62
+
63
+ 解析用户输入的标题。
64
+
65
+ 1. **标题确认**
66
+ - 确认是否作为参数传入了标题
67
+ - 如未传入则要求用户输入
68
+
69
+ 2. **关键词提取**
70
+ - 主要实体(公司名、国名、机构名)
71
+ - 数值数据(利率、价格、数量)
72
+ - 动作(上调、下调、发布、达成协议等)
73
+
74
+ #### 步骤1.2: 事件类型分类
75
+
76
+ 将标题分为以下类别:
77
+
78
+ | 类别 | 示例 |
79
+ |---------|-----|
80
+ | 货币政策 | FOMC、ECB、日本央行、加息、降息、QE/QT |
81
+ | 地缘政治 | 战争、制裁、关税、贸易摩擦 |
82
+ | 监管与政策 | 环境法规、金融监管、反垄断法 |
83
+ | 科技 | AI、EV、可再生能源、半导体 |
84
+ | 大宗商品 | 原油、黄金、铜、农产品 |
85
+ | 企业与并购 | 收购、破产、财报、行业重组 |
86
+
87
+ #### 步骤1.3: 参考资料加载
88
+
89
+ 根据事件类型加载相关参考资料:
90
+
91
+ ```
92
+ Read references/headline_event_patterns.md
93
+ Read references/sector_sensitivity_matrix.md
94
+ Read references/scenario_playbooks.md
95
+ ```
96
+
97
+ **参考资料内容:**
98
+ - `headline_event_patterns.md`: 过去的事件模式和市场反应
99
+ - `sector_sensitivity_matrix.md`: 事件×板块的影响度矩阵
100
+ - `scenario_playbooks.md`: 情景构建模板和最佳实践
101
+
102
+ ---
103
+
104
+ ### Phase 2: 代理调用
105
+
106
+ #### 步骤2.1: 调用scenario-analyst
107
+
108
+ 使用Task tool调用主分析代理。
109
+
110
+ ```
111
+ Task tool:
112
+ - subagent_type: "scenario-analyst"
113
+ - prompt: |
114
+ 请针对以下标题执行18个月情景分析。
115
+
116
+ ## 目标标题
117
+ [输入的标题]
118
+
119
+ ## 事件类型
120
+ [分类结果]
121
+
122
+ ## 参考信息
123
+ [已加载参考资料的摘要]
124
+
125
+ ## 分析要求
126
+ 1. 通过WebSearch收集过去2周的相关新闻
127
+ 2. 构建Base/Bull/Bear三个情景(概率合计100%)
128
+ 3. 按板块分析一级/二级/三级影响
129
+ 4. 选定正面/负面影响各3-5只股票(仅限美国市场)
130
+ 5. 全部以中文输出
131
+ ```
132
+
133
+ **期望输出:**
134
+ - 相关新闻文章列表
135
+ - 三个情景(Base/Bull/Bear)的详细内容
136
+ - 板块影响分析(一级/二级/三级)
137
+ - 股票推荐列表
138
+
139
+ #### 步骤2.2: 调用strategy-reviewer
140
+
141
+ 收到scenario-analyst的分析结果后,调用评审代理。
142
+
143
+ ```
144
+ Task tool:
145
+ - subagent_type: "strategy-reviewer"
146
+ - prompt: |
147
+ 请评审以下情景分析。
148
+
149
+ ## 目标标题
150
+ [输入的标题]
151
+
152
+ ## 分析结果
153
+ [scenario-analyst的完整输出]
154
+
155
+ ## 评审要求
156
+ 从以下角度进行评审:
157
+ 1. 被遗漏的板块/股票
158
+ 2. 情景概率分配的合理性
159
+ 3. 影响分析的逻辑一致性
160
+ 4. 乐观/悲观偏差的检测
161
+ 5. 替代情景的建议
162
+ 6. 时间线的现实性
163
+
164
+ 请以中文输出建设性且具体的反馈。
165
+ ```
166
+
167
+ **期望输出:**
168
+ - 遗漏指出
169
+ - 对情景概率的意见
170
+ - 偏差指出
171
+ - 替代情景建议
172
+ - 最终建议
173
+
174
+ ---
175
+
176
+ ### Phase 3: 整合与报告生成
177
+
178
+ #### 步骤3.1: 结果整合
179
+
180
+ 整合两个代理的输出,形成最终投资判断。
181
+
182
+ **整合要点:**
183
+ 1. 补充评审中指出的遗漏
184
+ 2. 调整概率分配(如有必要)
185
+ 3. 考虑偏差后的最终判断
186
+ 4. 制定具体的行动计划
187
+
188
+ #### 步骤3.2: 报告生成
189
+
190
+ 以以下格式生成最终报告并保存到文件。
191
+
192
+ **保存路径:** `reports/scenario_analysis_<topic>_YYYYMMDD.md`
193
+
194
+ ```markdown
195
+ # 标题情景分析报告
196
+
197
+ **分析日期**: YYYY-MM-DD HH:MM
198
+ **目标标题**: [输入的标题]
199
+ **事件类型**: [分类类别]
200
+
201
+ ---
202
+
203
+ ## 1. 相关新闻文章
204
+ [scenario-analyst收集的新闻列表]
205
+
206
+ ## 2. 预期情景概要(至18个月后)
207
+
208
+ ### Base Case(XX%概率)
209
+ [情景详情]
210
+
211
+ ### Bull Case(XX%概率)
212
+ [情景详情]
213
+
214
+ ### Bear Case(XX%概率)
215
+ [情景详情]
216
+
217
+ ## 3. 对板块和行业的影响
218
+
219
+ ### 一级影响(直接)
220
+ [影响表格]
221
+
222
+ ### 二级影响(价值链与相关产业)
223
+ [影响表格]
224
+
225
+ ### 三级影响(宏观、监管、技术)
226
+ [影响表格]
227
+
228
+ ## 4. 预计受正面影响的股票(3-5只)
229
+ [股票表格]
230
+
231
+ ## 5. 预计受负面影响的股票(3-5只)
232
+ [股票表格]
233
+
234
+ ## 6. 第二意见与评审
235
+ [strategy-reviewer的输出]
236
+
237
+ ## 7. 最终投资判断与启示
238
+
239
+ ### 推荐行动
240
+ [综合评审后的具体行动]
241
+
242
+ ### 风险因素
243
+ [主要风险列举]
244
+
245
+ ### 监控要点
246
+ [需要跟踪的指标和事件]
247
+
248
+ ---
249
+ **生成工具**: scenario-analyzer skill
250
+ **代理**: scenario-analyst, strategy-reviewer
251
+ ```
252
+
253
+ #### 步骤3.3: 报告保存
254
+
255
+ 1. 如果`reports/`目录不存在则创建
256
+ 2. 保存为`scenario_analysis_<topic>_YYYYMMDD.md`(例如:`scenario_analysis_venezuela_20260104.md`)
257
+ 3. 通知用户保存完成
258
+ 4. **不要直接保存在项目根目录**
259
+
260
+ ---
261
+
262
+ ## 资源
263
+
264
+ ### 参考资料
265
+ - `references/headline_event_patterns.md` - 事件模式和市场反应
266
+ - `references/sector_sensitivity_matrix.md` - 板块敏感度矩阵
267
+ - `references/scenario_playbooks.md` - 情景构建模板
268
+
269
+ ### 代理
270
+ - `scenario-analyst` - 主情景分析
271
+ - `strategy-reviewer` - 第二意见与评审
272
+
273
+ ---
274
+
275
+ ## 重要说明
276
+
277
+ ### 语言
278
+ - 所有分析和输出均以**中文**进行
279
+ - 股票代码保持英文表记
280
+
281
+ ### 目标市场
282
+ - 股票选择**仅限美国市场上市股票**
283
+ - 包含ADR
284
+
285
+ ### 时间轴
286
+ - 情景涵盖**18个月**
287
+ - 以0-6个月/6-12个月/12-18个月三个阶段描述
288
+
289
+ ### 概率分配
290
+ - Base + Bull + Bear = **100%**
291
+ - 每个情景的概率须附带依据
292
+
293
+ ### 第二意见
294
+ - **必须**执行(始终调用strategy-reviewer)
295
+ - 评审结果反映在最终判断中
296
+
297
+ ### 输出目录(重要)
298
+ - **必须**保存在`reports/`目录下
299
+ - 路径:`reports/scenario_analysis_<topic>_YYYYMMDD.md`
300
+ - 示例:`reports/scenario_analysis_fed_rate_hike_20260104.md`
301
+ - 如果`reports/`目录不存在则创建
302
+ - **不得直接保存在项目根目录**
303
+
304
+ ---
305
+
306
+ ## 质量检查清单
307
+
308
+ 报告完成前确认以下事项:
309
+
310
+ - [ ] 标题是否正确解析
311
+ - [ ] 事件类型分类是否恰当
312
+ - [ ] 三个情景的概率合计是否为100%
313
+ - [ ] 一级/二级/三级影响是否有逻辑关联
314
+ - [ ] 股票选择是否有具体依据
315
+ - [ ] 是否包含strategy-reviewer的评审
316
+ - [ ] 是否记载了综合评审后的最终判断
317
+ - [ ] 报告是否保存在正确路径