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,606 @@
1
+ # CANSLIM Methodology - William O'Neil's Growth Stock Selection System
2
+
3
+ ## Overview
4
+
5
+ CANSLIM is a proven growth stock selection methodology developed by William O'Neil, founder of Investor's Business Daily (IBD). Based on comprehensive analysis of the greatest winning stocks from 1953 to the present, CANSLIM identifies 7 common characteristics that multi-bagger stocks exhibit before their major price advances.
6
+
7
+ **Historical Performance**: IBD's studies show that stocks exhibiting all 7 CANSLIM traits delivered average gains of 100-300% over 1-3 year periods, with many producing returns exceeding 1,000%.
8
+
9
+ **Investment Philosophy**: CANSLIM focuses on identifying emerging growth leaders at the beginning of their major price advances - not after they've already run. The methodology emphasizes buying quality growth stocks during brief consolidations or pullbacks in confirmed market uptrends.
10
+
11
+ ---
12
+
13
+ ## The 7 CANSLIM Components
14
+
15
+ ### C - Current Quarterly Earnings (15% Weight)
16
+
17
+ **O'Neil's Rule**: "Look for companies whose current quarterly earnings per share are up at least 18-20% compared to the same quarter the prior year."
18
+
19
+ #### Why It Matters
20
+
21
+ Earnings are the primary fundamental driver of stock prices. Companies with accelerating quarterly earnings signal business momentum, competitive advantages, and management execution. O'Neil's research found that 3 out of 4 winning stocks showed EPS growth of at least 70% in the quarter before their major price advance began.
22
+
23
+ #### Quantitative Criteria
24
+
25
+ - **Minimum**: 18% year-over-year (YoY) quarterly EPS growth
26
+ - **Preferred**: 25%+ YoY growth
27
+ - **Exceptional**: 50%+ YoY growth with accelerating trend
28
+
29
+ #### Scoring Formula (0-100 Points)
30
+
31
+ ```
32
+ 100 points: EPS growth >= 50% AND revenue growth >= 25% (explosive acceleration)
33
+ 80 points: EPS growth 30-49% AND revenue growth >= 15% (strong growth)
34
+ 60 points: EPS growth 18-29% AND revenue growth >= 10% (meets minimum)
35
+ 40 points: EPS growth 10-17% (below threshold)
36
+ 0 points: EPS growth < 10% or negative
37
+ ```
38
+
39
+ #### Revenue Growth Verification
40
+
41
+ **Critical Check**: EPS growth must be supported by revenue growth. If EPS grows significantly faster than revenue, investigate whether growth is driven by cost-cutting, share buybacks, or accounting adjustments rather than genuine business expansion.
42
+
43
+ **Red Flag**: EPS growth > 30% while revenue growth < 10% suggests unsustainable earnings quality.
44
+
45
+ #### Historical Examples
46
+
47
+ - **AAPL (2009 Q3)**: EPS +45% YoY (iPhone 3GS launch), stock gained 200% over next 2 years
48
+ - **NFLX (2013 Q1)**: EPS +278% YoY (streaming acceleration), stock up 400% in 18 months
49
+ - **TSLA (2020 Q3)**: EPS turned positive (first sustained profitability), stock up 700% in 12 months
50
+ - **NVDA (2023 Q2)**: EPS +429% YoY (AI chip demand), stock up 240% YTD
51
+
52
+ ---
53
+
54
+ ### A - Annual Earnings Growth (20% Weight)
55
+
56
+ **O'Neil's Rule**: "Annual earnings per share should be up 25% or more in each of the last three years."
57
+
58
+ #### Why It Matters
59
+
60
+ While current quarterly earnings (C) signal near-term momentum, annual earnings growth (A) validates sustained competitive advantages and business model strength. One-quarter wonders rarely sustain price gains. Multi-year consistency separates authentic growth companies from cyclical or temporary winners.
61
+
62
+ #### Quantitative Criteria
63
+
64
+ - **Minimum**: 25% annual EPS CAGR over 3 years
65
+ - **Preferred**: 30-40% annual CAGR
66
+ - **Exceptional**: 40%+ annual CAGR with no down years
67
+
68
+ #### 3-Year CAGR Calculation
69
+
70
+ ```python
71
+ # Compound Annual Growth Rate formula
72
+ EPS_CAGR = ((EPS_current / EPS_3_years_ago) ^ (1/3)) - 1
73
+
74
+ # Example: MSFT 2017-2020
75
+ # EPS: $3.25 (2017) → $5.76 (2020)
76
+ # CAGR = (5.76 / 3.25) ^ (1/3) - 1 = 21.0%
77
+ ```
78
+
79
+ #### Scoring Formula (0-100 Points)
80
+
81
+ ```
82
+ 90 points: EPS CAGR >= 40% AND stable (no down years) AND revenue CAGR >= 20%
83
+ 70 points: EPS CAGR 30-39% AND stable
84
+ 50 points: EPS CAGR 25-29% (meets CANSLIM minimum)
85
+ 30 points: EPS CAGR 15-24% (below threshold)
86
+ 0 points: EPS CAGR < 15% or erratic (down years present)
87
+
88
+ Bonus: +10 points if all 3 years show year-over-year growth (stability bonus)
89
+ Penalty: -20% of score if revenue CAGR < 50% of EPS CAGR (buyback-driven growth)
90
+ ```
91
+
92
+ #### Growth Stability Assessment
93
+
94
+ **Stable Growth** (preferred): EPS increases every year over the 3-year period
95
+ - Example: $1.00 → $1.30 → $1.69 → $2.20 (consistent 30% growth)
96
+
97
+ **Erratic Growth** (penalty): One or more years show declining EPS
98
+ - Example: $1.00 → $1.50 → $1.20 → $1.80 (volatile, uncertain)
99
+
100
+ **O'Neil's Insight**: "It's better to see three years of 25% growth than one year of 80% followed by two years of 10%."
101
+
102
+ #### Revenue Growth Validation
103
+
104
+ **Healthy Growth**: EPS CAGR and Revenue CAGR both strong (within 10 percentage points)
105
+ - Example: EPS 30% CAGR + Revenue 25% CAGR = Sustainable
106
+
107
+ **Warning Sign**: EPS CAGR >> Revenue CAGR (gap > 15 percentage points)
108
+ - Likely driven by margin expansion, buybacks, or cost cuts (less sustainable)
109
+ - Example: EPS 35% CAGR + Revenue 10% CAGR = Investigate quality
110
+
111
+ #### Historical Examples
112
+
113
+ - **V (2015-2018)**: EPS CAGR 29%, Revenue CAGR 18% → 180% stock gain
114
+ - **MA (2014-2017)**: EPS CAGR 33%, Revenue CAGR 14% → 200% stock gain
115
+ - **MSFT (2017-2020)**: EPS CAGR 21%, Revenue CAGR 13% → 280% stock gain
116
+ - **NVDA (2020-2023)**: EPS CAGR 76%, Revenue CAGR 52% → 450% stock gain
117
+
118
+ ---
119
+
120
+ ### N - New Products, Management, or Highs (15% Weight)
121
+
122
+ **O'Neil's Rule**: "Stocks making new price highs have no overhead supply (resistance), signaling strong demand. New products, services, or management can catalyze major moves."
123
+
124
+ #### Why It Matters
125
+
126
+ Price action near 52-week highs indicates institutional accumulation and investor demand. New products create earnings catalysts. New management brings strategic changes. The "N" component combines technical momentum (new highs) with fundamental catalysts (newness).
127
+
128
+ **Key Insight**: 95% of CANSLIM winning stocks made new all-time highs before their major advance. Stocks far from highs face resistance and lack sponsorship.
129
+
130
+ #### Quantitative Criteria
131
+
132
+ **Price Position**:
133
+ - **Ideal**: Within 5% of 52-week high
134
+ - **Acceptable**: Within 15% of 52-week high
135
+ - **Caution**: 15-25% below 52-week high
136
+ - **Avoid**: >25% below 52-week high (lacks momentum)
137
+
138
+ **Breakout Pattern** (bonus):
139
+ - New 52-week high achieved on volume 40-50%+ above average
140
+ - Signals institutional buying (large orders driving price)
141
+
142
+ #### Scoring Formula (0-100 Points)
143
+
144
+ ```python
145
+ # Distance from 52-week high
146
+ distance_pct = ((current_price / week_52_high) - 1) * 100
147
+
148
+ # Base score from price position
149
+ 100 points: distance <= 5% from high AND breakout detected AND new product/catalyst
150
+ 80 points: distance <= 10% from high AND breakout detected
151
+ 60 points: distance <= 15% from high OR breakout detected
152
+ 40 points: distance <= 25% from high
153
+ 20 points: distance > 25% from high (insufficient momentum)
154
+
155
+ # Bonus for new product/catalyst signals (from news)
156
+ +10-20 points: Keywords detected - "FDA approval", "new product", "patent granted", "breakthrough"
157
+ ```
158
+
159
+ #### New Product/Catalyst Detection (Supplementary)
160
+
161
+ **High-Impact Catalysts**:
162
+ - FDA drug approvals (pharmaceuticals)
163
+ - New platform/service launches (technology)
164
+ - Patent grants (defensive moat)
165
+ - Strategic acquisitions (expansion)
166
+ - New management from successful companies
167
+
168
+ **Data Source**: Keyword search in recent news headlines (FMP news API)
169
+ - "FDA approval" → +20 points
170
+ - "new product", "product launch" → +10 points
171
+ - "acquisition", "expansion" → +10 points
172
+
173
+ **Note**: Price action (new highs) is the primary signal (80% of N score). New product detection is supplementary (20% of N score).
174
+
175
+ #### Historical Examples
176
+
177
+ **New Highs + New Products**:
178
+ - **AAPL (2007)**: iPhone launch + new highs → 600% gain in 5 years
179
+ - **TSLA (2020)**: Model 3 production scale + new highs → 700% gain in 12 months
180
+ - **NVDA (2023)**: AI chip (H100) demand + new highs → 240% YTD gain
181
+
182
+ **New Highs After Consolidation**:
183
+ - **MSFT (2018)**: Azure cloud growth + breakout from 3-year consolidation → 350% gain in 3 years
184
+ - **META (2023)**: AI efficiency gains + breakout from 2022 bear market → 200% gain in 12 months
185
+
186
+ **Caution - Stocks Far from Highs**:
187
+ - Stocks 30-50% below highs rarely lead; they often become "dead money" for years
188
+ - Exception: Deep pullbacks in bear markets can reset; wait for new highs in next bull market
189
+
190
+ ---
191
+
192
+ ### M - Market Direction (5% Weight)
193
+
194
+ **O'Neil's Rule**: "You can be right about a stock but wrong about the market, and still lose money. Three out of four stocks follow the market's trend."
195
+
196
+ #### Why It Matters
197
+
198
+ CANSLIM doesn't work in bear markets. Even the best growth stocks decline 20-50% in sustained downtrends. O'Neil's research shows:
199
+ - **Bull markets**: 75% of stocks move with market direction
200
+ - **Bear markets**: Profitable stock picking nearly impossible
201
+ - **Market timing**: Staying in cash during corrections preserves capital for next bull phase
202
+
203
+ **Critical Insight**: "The most important decision is not which stock to buy, but whether to be invested at all."
204
+
205
+ #### Quantitative Criteria
206
+
207
+ **Primary Signal**: S&P 500 vs. 50-day Exponential Moving Average (EMA)
208
+ - **Uptrend**: S&P 500 closes above 50-day EMA for 3+ consecutive days
209
+ - **Choppy/Neutral**: S&P 500 oscillating around 50-day EMA (±2%)
210
+ - **Downtrend**: S&P 500 closes below 50-day EMA for 3+ consecutive days
211
+
212
+ **Secondary Signal**: VIX (Fear Gauge)
213
+ - **Low Fear**: VIX < 15 (complacent, supportive environment)
214
+ - **Normal**: VIX 15-20 (healthy market)
215
+ - **Elevated**: VIX 20-30 (caution, potential volatility)
216
+ - **Panic**: VIX > 30 (sell signal, go to cash)
217
+
218
+ #### Scoring Formula (0-100 Points)
219
+
220
+ ```python
221
+ # Calculate distance from 50-day EMA
222
+ distance_from_ema = (sp500_price / sp500_ema_50) - 1
223
+
224
+ # Market trend scoring
225
+ 100 points: sp500 > EMA by 2%+ AND VIX < 15 AND follow-through day detected
226
+ 80 points: sp500 > EMA by 1-2% AND VIX < 20
227
+ 60 points: sp500 > EMA by 0-1% (early uptrend)
228
+ 40 points: sp500 within ±2% of EMA (choppy, neutral)
229
+ 20 points: sp500 < EMA by 1-3% (early downtrend)
230
+ 0 points: sp500 < EMA by 3%+ OR VIX > 30 (bear market - DO NOT BUY)
231
+ ```
232
+
233
+ #### Follow-Through Day (FTD) - O'Neil's Bull Market Confirmation
234
+
235
+ **Definition**: A day when a major index (S&P 500, Nasdaq) rallies 1.25%+ on volume higher than the previous day, occurring on Day 4-10 of an attempted rally after a correction.
236
+
237
+ **Significance**:
238
+ - Signals institutional buying has resumed
239
+ - Confirms market bottoming process complete
240
+ - Green light to begin buying leading growth stocks
241
+
242
+ **Without FTD**: Rally attempts often fail; premature buying leads to losses
243
+
244
+ #### Market Direction Interpretation
245
+
246
+ **100 Points (Strong Uptrend)**:
247
+ - S&P 500 well above 50-day EMA
248
+ - VIX low (complacent)
249
+ - Follow-through day confirmed
250
+ - **Action**: Aggressively buy leading growth stocks (CANSLIM candidates)
251
+
252
+ **60 Points (Early Uptrend)**:
253
+ - S&P 500 just crossed above 50-day EMA
254
+ - Market still establishing trend
255
+ - **Action**: Start small positions (25-50% allocation)
256
+
257
+ **40 Points (Choppy/Neutral)**:
258
+ - S&P 500 oscillating around 50-day EMA
259
+ - Direction unclear
260
+ - **Action**: Reduce exposure to 25-50%, wait for confirmation
261
+
262
+ **0 Points (Downtrend/Bear Market)**:
263
+ - S&P 500 below 50-day EMA and declining
264
+ - VIX elevated or spiking
265
+ - **Action**: Sell all stocks, raise 80-100% cash, wait for FTD
266
+
267
+ #### Historical Examples
268
+
269
+ **Bull Market Phases (M Score 80-100)**:
270
+ - 2009-2011: Post-financial crisis recovery (AAPL, PCLN major winners)
271
+ - 2013-2015: QE-driven rally (NFLX, FB explosive gains)
272
+ - 2016-2018: Tax reform bull run (NVDA, AMD, FANG stocks)
273
+ - 2020-2021: Pandemic recovery (TSLA, NVDA, growth stocks)
274
+ - 2023-2024: AI boom (NVDA, META, MAG7)
275
+
276
+ **Bear Market Phases (M Score 0-20)**:
277
+ - 2008 (Financial Crisis): Even best stocks fell 40-60%
278
+ - 2011 (Debt Ceiling Crisis): 20% correction
279
+ - 2015-2016 (China Devaluation): Growth stocks down 20-30%
280
+ - 2018 (Fed Tightening): Nasdaq down 23%
281
+ - 2022 (Inflation/Fed): Nasdaq down 33%, growth stocks down 50-80%
282
+
283
+ **Key Takeaway**: In bear markets (M score < 20), CANSLIM candidates still decline despite strong fundamentals. Market direction trumps stock selection.
284
+
285
+ ---
286
+
287
+ ### S - Supply and Demand (15% Weight)
288
+
289
+ **O'Neil's Rule**: "Volume is the gas in the tank of a stock. Without gas, the car doesn't go anywhere. Look for stocks where volume expands on up days and contracts on down days."
290
+
291
+ #### Why It Matters
292
+
293
+ Volume patterns reveal institutional accumulation (buying) or distribution (selling). Individual investors trade in small lots (100-1,000 shares), but institutions move millions of shares. When institutions accumulate, volume surges on up days. When they distribute, volume spikes on down days. Volume precedes price - smart money moves before the crowd notices.
294
+
295
+ **Key Principle**: UP-DAY VOLUME > DOWN-DAY VOLUME = Accumulation (bullish)
296
+
297
+ #### Quantitative Criteria
298
+
299
+ **Accumulation/Distribution Analysis** (60-day period):
300
+ - Classify each day as up-day (close > previous close) or down-day (close < previous close)
301
+ - Calculate average volume for up-days vs. down-days
302
+ - **Accumulation Ratio** = Avg Up-Day Volume / Avg Down-Day Volume
303
+
304
+ **Thresholds**:
305
+ - **Strong Accumulation**: Ratio ≥ 2.0 (institutions aggressively buying)
306
+ - **Accumulation**: Ratio 1.5-2.0 (bullish volume pattern)
307
+ - **Neutral**: Ratio 1.0-1.5 (slightly positive)
308
+ - **Distribution**: Ratio 0.5-0.7 (institutions selling)
309
+ - **Strong Distribution**: Ratio < 0.5 (heavy selling pressure)
310
+
311
+ #### Scoring Formula (0-100 Points)
312
+
313
+ ```python
314
+ # Calculate accumulation/distribution ratio
315
+ up_days_volume = [volume for day in last_60_days if close > prev_close]
316
+ down_days_volume = [volume for day in last_60_days if close < prev_close]
317
+
318
+ avg_up_volume = sum(up_days_volume) / len(up_days_volume)
319
+ avg_down_volume = sum(down_days_volume) / len(down_days_volume)
320
+
321
+ ratio = avg_up_volume / avg_down_volume
322
+
323
+ # Scoring
324
+ 100 points: ratio >= 2.0 (Strong Accumulation)
325
+ 80 points: ratio 1.5-2.0 (Accumulation)
326
+ 60 points: ratio 1.0-1.5 (Neutral/Weak Accumulation)
327
+ 40 points: ratio 0.7-1.0 (Neutral/Weak Distribution)
328
+ 20 points: ratio 0.5-0.7 (Distribution)
329
+ 0 points: ratio < 0.5 (Strong Distribution)
330
+ ```
331
+
332
+ #### Historical Examples
333
+
334
+ - **NVDA (2023)**: Up/down ratio 2.3 before 500% run (massive institutional accumulation)
335
+ - **META (2023)**: Up/down ratio 1.8 during recovery from 2022 lows
336
+ - **TSLA (2019-2020)**: Ratio 2.1 during Model 3 production ramp
337
+ - **AAPL (2019)**: Ratio 1.7 before iPhone 11 cycle launched
338
+
339
+ **Red Flag**: Ratio < 0.7 signals distribution - institutions are selling into strength. Avoid or exit positions.
340
+
341
+ ---
342
+
343
+ ### I - Institutional Sponsorship (10% Weight)
344
+
345
+ **O'Neil's Rule**: "You need some of the big boys on your side. Look for stocks with increasing institutional sponsorship, but not too much. The sweet spot is 50-100 institutional holders with 30-60% ownership."
346
+
347
+ #### Why It Matters
348
+
349
+ Institutional investors (mutual funds, pension funds, hedge funds) have research teams, long time horizons, and large capital pools. Their sponsorship provides:
350
+ 1. **Liquidity**: Enables smooth trading without excessive slippage
351
+ 2. **Price Support**: Large holders defend positions during pullbacks
352
+ 3. **Discovery**: Attracts additional institutional and retail capital
353
+ 4. **Validation**: Smart money confirms the investment thesis
354
+
355
+ **Key Insight**: Too little institutional ownership (< 20%) means the stock is neglected. Too much (> 80%) means institutions have already bought - no buying power left to drive future gains.
356
+
357
+ #### Quantitative Criteria
358
+
359
+ **Holder Count**:
360
+ - **Sweet Spot**: 50-100 institutional holders
361
+ - **Good**: 30-50 holders (building interest)
362
+ - **Acceptable**: 100-150 holders (getting crowded)
363
+ - **Avoid**: < 30 holders (underowned) or > 150 holders (overcrowded)
364
+
365
+ **Ownership Percentage**:
366
+ - **Ideal Range**: 30-60% institutional ownership
367
+ - **Acceptable**: 20-30% or 60-80%
368
+ - **Caution**: < 20% (neglected) or > 80% (saturated)
369
+
370
+ **Quality Signal**: Superinvestor Presence (bonus)
371
+ - Holdings by legendary investors: Berkshire Hathaway, Baupost Group, Pershing Square, Greenlight Capital, Third Point, Appaloosa Management
372
+
373
+ #### Scoring Formula (0-100 Points)
374
+
375
+ ```python
376
+ # Calculate institutional ownership %
377
+ total_shares_held = sum(holder.shares for holder in institutional_holders)
378
+ ownership_pct = (total_shares_held / shares_outstanding) * 100
379
+
380
+ # Scoring logic
381
+ if 50 <= num_holders <= 100 and 30 <= ownership_pct <= 60:
382
+ score = 100 # O'Neil's sweet spot
383
+
384
+ elif superinvestor_present and 30 <= num_holders <= 150:
385
+ score = 90 # Superinvestor quality signal
386
+
387
+ elif (30 <= num_holders < 50 and 20 <= ownership_pct <= 40) or \
388
+ (100 < num_holders <= 150 and 40 <= ownership_pct <= 70):
389
+ score = 80 # Good ranges
390
+
391
+ elif (20 <= num_holders < 30 and 20 <= ownership_pct <= 50) or \
392
+ (50 <= num_holders <= 150 and 20 <= ownership_pct <= 70):
393
+ score = 60 # Acceptable
394
+
395
+ elif ownership_pct < 20 or ownership_pct > 80:
396
+ score = 40 # Suboptimal ownership
397
+
398
+ elif ownership_pct < 10 or ownership_pct > 90:
399
+ score = 20 # Extreme ownership (avoid)
400
+
401
+ else:
402
+ score = 50 # Default
403
+
404
+ # Superinvestor bonus
405
+ if superinvestor_present and score < 100:
406
+ score = min(score + 10, 100)
407
+ ```
408
+
409
+ #### Interpretation
410
+
411
+ **100 Points (Ideal)**:
412
+ - 50-100 holders, 30-60% ownership
413
+ - **Action**: Perfect institutional backing - proceed with confidence
414
+
415
+ **90 Points (Quality Signal)**:
416
+ - Superinvestor holding + good holder count
417
+ - **Action**: Quality investors provide margin of safety
418
+
419
+ **60 Points (Acceptable)**:
420
+ - Decent institutional interest, but not optimal
421
+ - **Action**: Proceed cautiously, monitor for changes
422
+
423
+ **40 Points (Suboptimal)**:
424
+ - Either underowned (< 20%) or overcrowded (> 80%)
425
+ - **Action**: Investigate why institutions are avoiding or have saturated
426
+
427
+ **20 Points (Avoid)**:
428
+ - Extreme ownership levels (< 10% or > 90%)
429
+ - **Action**: Pass - either neglected or no buying power left
430
+
431
+ #### Historical Examples
432
+
433
+ - **NVDA (2023 Q2)**: 74 holders, 44% ownership → 240% gain YTD
434
+ - **META (2023 Q1)**: 68 holders, 51% ownership → 194% recovery
435
+ - **TSLA (2020)**: Increased from 35 to 89 holders during 700% run
436
+ - **AAPL (2019)**: Berkshire Hathaway holding (superinvestor) → confidence signal
437
+
438
+ **Warning**: Stocks with > 150 holders and > 80% ownership often underperform - institutions have already bought, creating selling pressure during any weakness.
439
+
440
+ ---
441
+
442
+ ## Phase 2 Implementation Notes
443
+
444
+ This Phase 2 implementation includes **C, A, N, S, I, M** components, covering 80% of the full CANSLIM methodology weight. Phase 2 adds two critical components to Phase 1:
445
+
446
+ 1. **S (Supply/Demand)**: Volume-based accumulation/distribution analysis - reveals institutional buying/selling
447
+ 2. **I (Institutional Sponsorship)**: Holder count and ownership percentage - validates "smart money" backing
448
+
449
+ **Key Improvements Over Phase 1**:
450
+ - More accurate filtering: Volume patterns (S) eliminate stocks with distribution
451
+ - Quality validation: Institutional backing (I) confirms investment thesis
452
+ - Better ranking: Stocks with both strong fundamentals AND institutional support rise to top
453
+ - API efficient: Phase 2 requires ~203 calls for 40 stocks (81% of free tier)
454
+
455
+ ### Component Weights (Phase 2 - Renormalized)
456
+
457
+ | Component | Original Weight | Phase 2 Weight | Rationale |
458
+ |-----------|-----------------|----------------|-----------|
459
+ | C - Current Earnings | 15% | **19%** | Core fundamental - quarterly momentum |
460
+ | A - Annual Growth | 20% | **25%** | Validates sustainability |
461
+ | N - Newness | 15% | **19%** | Momentum confirmation |
462
+ | S - Supply/Demand | 15% | **19%** | Institutional accumulation signal |
463
+ | I - Institutional | 10% | **13%** | Smart money validation |
464
+ | M - Market Direction | 5% | **6%** | Gating filter |
465
+ | **Subtotal (Phase 2)** | **80%** | **100%** | Renormalized to 100% (excluding L) |
466
+
467
+ **Future Phases**:
468
+ - **Phase 3**: Add L (Leadership/RS Rank) → 100% complete CANSLIM
469
+ - **Phase 4**: FINVIZ Elite integration for 10x speed improvement
470
+
471
+ ### Interpretation for Phase 2 Scores
472
+
473
+ Phase 2 implements 6 of 7 components (80% weight), providing substantially more accurate screening than Phase 1:
474
+
475
+ - **90-100 points** (Phase 2): Exceptional+ (Rare multi-bagger setup with institutional backing)
476
+ - **80-89 points** (Phase 2): Exceptional (Outstanding fundamentals + accumulation)
477
+ - **70-79 points** (Phase 2): Strong (High-quality CANSLIM stock)
478
+ - **60-69 points** (Phase 2): Above Average (Watchlist - monitor for improvement)
479
+ - **<60 points** (Phase 2): Below CANSLIM standards
480
+
481
+ **Minimum Thresholds (Phase 2)**:
482
+ All 6 components must meet baseline criteria:
483
+ - C ≥ 60 (18%+ quarterly EPS growth)
484
+ - A ≥ 50 (25%+ annual CAGR)
485
+ - N ≥ 40 (within 15% of 52-week high)
486
+ - S ≥ 40 (accumulation pattern, ratio ≥ 1.0)
487
+ - I ≥ 40 (30+ holders OR 20%+ ownership)
488
+ - M ≥ 40 (market in uptrend)
489
+
490
+ **Key Difference from Phase 1**: Phase 2 scores reflect institutional validation (S, I). A stock with great fundamentals (C, A) but distribution pattern (S < 40) will score poorly, protecting against false positives.
491
+
492
+ ---
493
+
494
+ ## Investment Philosophy and Best Practices
495
+
496
+ ### When CANSLIM Works Best
497
+
498
+ 1. **Confirmed Bull Markets**: S&P 500 above 50-day and 200-day moving averages
499
+ 2. **Growth-Favoring Environment**: Low interest rates, economic expansion, innovation cycles
500
+ 3. **Sector Rotation into Growth**: Technology, healthcare, consumer discretionary leading
501
+ 4. **Positive Market Breadth**: Majority of stocks in uptrends (>50% above 200-day MA)
502
+
503
+ ### When to Avoid CANSLIM
504
+
505
+ 1. **Bear Markets**: Major indices below 200-day MA, VIX > 30
506
+ 2. **Value-Favoring Markets**: High inflation, rising rates favor defensive stocks
507
+ 3. **Sector Rotation into Defensives**: Utilities, consumer staples, REITs leading
508
+ 4. **Negative Breadth**: Majority of stocks in downtrends, breadth deteriorating
509
+
510
+ ### Position Management Rules
511
+
512
+ **Entry**:
513
+ - Buy stocks scoring 80+ (Phase 1) or 140+ (Full CANSLIM)
514
+ - Enter on pullback to 10-week moving average (best risk/reward)
515
+ - Position size: 10-20% of portfolio per stock, 5-10 total positions
516
+
517
+ **Stops**:
518
+ - Initial stop loss: 7-8% below entry (O'Neil's strict rule)
519
+ - Move to breakeven once stock up 15%
520
+ - Trail stop 10-15% below peak as stock advances
521
+
522
+ **Profit Taking**:
523
+ - Sell 20-25% of position when up 20-25% (lock in partial gains)
524
+ - Sell another 20-25% when up 50%
525
+ - Let winners run if still in Stage 2 uptrend (hold final 50%)
526
+
527
+ **Sell Signals**:
528
+ 1. Stop loss hit (7-8% loss) - no exceptions
529
+ 2. Market enters correction (M score drops to 0-20)
530
+ 3. Fundamental deterioration (C or A component score drops below 40)
531
+ 4. Climax top (parabolic move on extreme volume, then reversal)
532
+ 5. Distribution (heavy volume on down days, institutional selling)
533
+
534
+ ---
535
+
536
+ ## Common Mistakes and How to Avoid Them
537
+
538
+ ### Mistake 1: Ignoring Market Direction (M Component)
539
+
540
+ **Error**: Buying CANSLIM stocks in bear markets because "they have great fundamentals"
541
+
542
+ **Reality**: 75% of stocks follow market direction. Even perfect CANSLIM candidates decline 20-50% in sustained downtrends.
543
+
544
+ **Solution**:
545
+ - Check M component FIRST before analyzing individual stocks
546
+ - If M score < 40, raise cash to 80-100% and wait
547
+ - "Being right about a stock but wrong about the market still loses money"
548
+
549
+ ### Mistake 2: Chasing Stocks Far from Highs
550
+
551
+ **Error**: Buying stocks 30-50% below 52-week highs because "they're on sale"
552
+
553
+ **Reality**: Stocks trading far from highs lack institutional sponsorship and face overhead resistance. They rarely lead the next advance.
554
+
555
+ **Solution**:
556
+ - Focus on N component: stocks within 15% of 52-week high
557
+ - Wait for proper base breakout (7-8 weeks minimum consolidation)
558
+ - "Leaders of the last bull market rarely lead the next one"
559
+
560
+ ### Mistake 3: Overweighting Quarterly Earnings, Ignoring Annual Growth
561
+
562
+ **Error**: Buying stocks with explosive Q1 EPS growth (C) but erratic 3-year history (A)
563
+
564
+ **Reality**: One-quarter wonders often revert. Sustainable winners show consistent multi-year growth.
565
+
566
+ **Solution**:
567
+ - Require BOTH C >= 60 AND A >= 50 (Phase 1 scoring)
568
+ - View A component as validation of C component
569
+ - "Consistency beats volatility in long-term wealth building"
570
+
571
+ ### Mistake 4: Not Cutting Losses Quickly
572
+
573
+ **Error**: Holding losing positions hoping they "come back"
574
+
575
+ **Reality**: O'Neil's studies show that cutting losses at 7-8% prevents small losses from becoming large disasters.
576
+
577
+ **Solution**:
578
+ - Set stop loss at entry (7-8% below buy price)
579
+ - No exceptions: stop hit = sell immediately
580
+ - "Your first loss is your smallest loss - take it"
581
+
582
+ ---
583
+
584
+ ## Conclusion
585
+
586
+ CANSLIM is a time-tested, quantitative methodology for identifying emerging growth leaders before major price advances. The system combines fundamental analysis (C, A) with technical confirmation (N, M) to filter for stocks with institutional sponsorship and momentum.
587
+
588
+ **Phase 1 MVP (C, A, N, M)** provides immediate value by screening for stocks with:
589
+ - Accelerating quarterly earnings (C)
590
+ - Consistent multi-year growth (A)
591
+ - Price momentum near new highs (N)
592
+ - Confirmation of market uptrend (M)
593
+
594
+ **Future Phases** will add supply/demand analysis (S), institutional sponsorship tracking (I), and relative strength leadership ranking (L) to create a complete implementation of O'Neil's system.
595
+
596
+ **Remember**: CANSLIM is a growth stock methodology best applied during confirmed bull markets. In bear markets, the best action is to raise cash and wait for the next follow-through day signaling institutional buying has resumed.
597
+
598
+ ---
599
+
600
+ ## References and Further Reading
601
+
602
+ - **"How to Make Money in Stocks"** by William J. O'Neil (4th Edition, 2009)
603
+ - **"The Successful Investor"** by William J. O'Neil (2004)
604
+ - **IBD (Investor's Business Daily)** - Daily CANSLIM stock screens and market analysis
605
+ - **MarketSmith** - IBD's institutional-grade stock analysis platform with official RS Ranks
606
+ - **Historical Studies**: IBD's analysis of 600+ winning stocks (1953-2008) validating CANSLIM