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,599 @@
1
+ ---
2
+ name: canslim-screener
3
+ description: Screen US stocks using William O'Neil's CANSLIM growth stock methodology. Use when user requests CANSLIM stock screening, growth stock analysis, momentum stock identification, or wants to find stocks with strong earnings and price momentum following O'Neil's investment system.
4
+ ---
5
+
6
+ # CANSLIM Stock Screener - Phase 2
7
+
8
+ ## Overview
9
+
10
+ This skill screens US stocks using William O'Neil's proven CANSLIM methodology, a systematic approach for identifying growth stocks with strong fundamentals and price momentum. CANSLIM analyzes 7 key components: **C**urrent Earnings, **A**nnual Growth, **N**ewness/New Highs, **S**upply/Demand, **L**eadership/RS Rank, **I**nstitutional Sponsorship, and **M**arket Direction.
11
+
12
+ **Phase 2** implements 6 of 7 components (C, A, N, S, I, M), representing **80% of the full methodology**. This phase adds critical volume analysis (S) and institutional ownership tracking (I) to the Phase 1 foundation.
13
+
14
+ **Two-Stage Approach:**
15
+ 1. **Stage 1 (FMP API + Finviz)**: Analyze stock universe with 6 CANSLIM components
16
+ 2. **Stage 2 (Reporting)**: Rank by composite score and generate actionable reports
17
+
18
+ **Key Features:**
19
+ - Composite scoring (0-100 scale) with weighted components
20
+ - **Finviz fallback** for institutional ownership data (automatic when FMP data incomplete)
21
+ - Progressive filtering to optimize API usage
22
+ - JSON + Markdown output formats
23
+ - Interpretation bands: Exceptional+ (90+), Exceptional (80-89), Strong (70-79), Above Average (60-69)
24
+ - Bear market protection (M component gating)
25
+
26
+ **Phase 2 Component Weights (Renormalized for 6 components):**
27
+ - C (Current Earnings): 19%
28
+ - A (Annual Growth): 25%
29
+ - N (Newness): 19%
30
+ - S (Supply/Demand): 19% ← **NEW**
31
+ - I (Institutional): 13% ← **NEW**
32
+ - M (Market Direction): 6%
33
+
34
+ **Future Phases:**
35
+ - Phase 3: Add L (Leadership/RS Rank) → 100% coverage (full CANSLIM)
36
+ - Phase 4: FINVIZ Elite integration → 10x faster execution
37
+
38
+ ---
39
+
40
+ ## When to Use This Skill
41
+
42
+ **Explicit Triggers:**
43
+ - "Find CANSLIM stocks"
44
+ - "Screen for growth stocks using O'Neil's method"
45
+ - "Which stocks have strong earnings and momentum?"
46
+ - "Identify stocks near 52-week highs with accelerating earnings"
47
+ - "Run a CANSLIM screener on [sector/universe]"
48
+
49
+ **Implicit Triggers:**
50
+ - User wants to identify multi-bagger candidates
51
+ - User is looking for growth stocks with proven fundamentals
52
+ - User wants systematic stock selection based on historical winners
53
+ - User needs a ranked list of stocks meeting O'Neil's criteria
54
+
55
+ **When NOT to Use:**
56
+ - Value investing focus (use value-dividend-screener instead)
57
+ - Income/dividend focus (use dividend-growth-pullback-screener instead)
58
+ - Bear market conditions (M component will flag - consider raising cash)
59
+
60
+ ---
61
+
62
+ ## Workflow
63
+
64
+ ### Step 1: Verify API Access and Requirements
65
+
66
+ Check if user has FMP API key configured:
67
+
68
+ ```bash
69
+ # Check environment variable
70
+ echo $FMP_API_KEY
71
+
72
+ # If not set, prompt user to provide it
73
+ ```
74
+
75
+ **Requirements:**
76
+ - **FMP API key** (free tier: 250 calls/day, sufficient for 40 stocks)
77
+ - **Python 3.7+** with required libraries:
78
+ - `requests` (FMP API calls)
79
+ - `beautifulsoup4` (Finviz web scraping)
80
+ - `lxml` (HTML parsing)
81
+
82
+ **Installation:**
83
+ ```bash
84
+ pip install requests beautifulsoup4 lxml
85
+ ```
86
+
87
+ If API key is missing, guide user to:
88
+ 1. Sign up at https://site.financialmodelingprep.com/developer/docs
89
+ 2. Get free API key (250 calls/day)
90
+ 3. Set environment variable: `export FMP_API_KEY=your_key_here`
91
+
92
+ ### Step 2: Determine Stock Universe
93
+
94
+ **Option A: Default Universe (Recommended)**
95
+ Use top 40 S&P 500 stocks by market cap (predefined in script):
96
+
97
+ ```bash
98
+ python3 skills/canslim-screener/scripts/screen_canslim.py
99
+ ```
100
+
101
+ **Option B: Custom Universe**
102
+ User provides specific symbols or sector:
103
+
104
+ ```bash
105
+ python3 skills/canslim-screener/scripts/screen_canslim.py \
106
+ --universe AAPL MSFT GOOGL AMZN NVDA META TSLA
107
+ ```
108
+
109
+ **Option C: Sector-Specific**
110
+ User can provide sector-focused list (Technology, Healthcare, etc.)
111
+
112
+ **API Budget Considerations (Phase 2):**
113
+ - 40 stocks × ~5.1 calls/stock = ~203 API calls (within free tier)
114
+ - FMP: ~3.3 calls/stock (income statements, quotes, prices, institutional holders)
115
+ - Finviz: ~1.8 calls/stock (institutional ownership fallback, 2s rate limit)
116
+ - Market data (S&P 500, VIX): 3 calls
117
+ - Total: ~206 calls per screening run
118
+
119
+ ### Step 3: Execute CANSLIM Screening Script
120
+
121
+ Run the main screening script with appropriate parameters:
122
+
123
+ ```bash
124
+ cd /Users/takueisaotome/PycharmProjects/claude-trading-skills/skills/canslim-screener/scripts
125
+
126
+ # Basic run (40 stocks, top 20 in report)
127
+ python3 screen_canslim.py --api-key $FMP_API_KEY
128
+
129
+ # Custom parameters
130
+ python3 screen_canslim.py \
131
+ --api-key $FMP_API_KEY \
132
+ --max-candidates 40 \
133
+ --top 20 \
134
+ --output-dir ../../../
135
+ ```
136
+
137
+ **Script Workflow (Phase 2):**
138
+ 1. **Market Direction (M)**: Analyze S&P 500 trend vs 50-day EMA
139
+ - If bear market detected (M=0), warn user to raise cash
140
+ 2. **Stock Analysis**: For each stock, calculate:
141
+ - **C Component**: Quarterly EPS/revenue growth (YoY)
142
+ - **A Component**: 3-year EPS CAGR and stability
143
+ - **N Component**: Distance from 52-week high, breakout detection
144
+ - **S Component**: Volume-based accumulation/distribution (up-day vs down-day volume) ← **NEW**
145
+ - **I Component**: Institutional holder count + ownership % (with Finviz fallback) ← **NEW**
146
+ 3. **Composite Scoring**: Weighted average with component breakdown
147
+ 4. **Ranking**: Sort by composite score (highest first)
148
+ 5. **Reporting**: Generate JSON + Markdown outputs
149
+
150
+ **Expected Execution Time (Phase 2):**
151
+ - 40 stocks: **~1 minute 40 seconds** (tested: 101.42 seconds)
152
+ - Finviz fallback adds ~2 seconds per stock (rate limiting)
153
+ - Much faster than Phase 1 due to optimized API calls
154
+
155
+ **Finviz Fallback Behavior:**
156
+ - Triggers automatically when FMP `sharesOutstanding` unavailable
157
+ - Scrapes institutional ownership % from Finviz.com (free, no API key)
158
+ - Increases I component accuracy from 35/100 (partial data) to 60-100/100 (full data)
159
+ - User sees: `✅ Using Finviz institutional ownership for NVDA: 68.3%`
160
+
161
+ ### Step 4: Read and Parse Screening Results
162
+
163
+ The script generates two output files:
164
+ - `canslim_screener_YYYY-MM-DD_HHMMSS.json` - Structured data
165
+ - `canslim_screener_YYYY-MM-DD_HHMMSS.md` - Human-readable report
166
+
167
+ Read the Markdown report to identify top candidates:
168
+
169
+ ```bash
170
+ # Find the latest report
171
+ ls -lt canslim_screener_*.md | head -1
172
+
173
+ # Read the report
174
+ cat canslim_screener_YYYY-MM-DD_HHMMSS.md
175
+ ```
176
+
177
+ **Report Structure (Phase 2):**
178
+ - Market Condition Summary (trend, M score, warnings)
179
+ - Top 20 CANSLIM Candidates (ranked)
180
+ - For each stock:
181
+ - Composite Score and Rating (Exceptional+/Exceptional/Strong/etc.)
182
+ - Component Breakdown (C, A, N, **S**, **I**, M scores with details) ← **S and I added**
183
+ - Interpretation (rating description, guidance, weakest component)
184
+ - Warnings (quality issues, market conditions, data source notes)
185
+ - Summary Statistics (rating distribution)
186
+ - Methodology note (Phase 2: 6 components)
187
+
188
+ **New Component Details in Report:**
189
+ - **S Component**: "Up/Down Volume Ratio: 1.06 ✓ Accumulation"
190
+ - **I Component**: "6199 holders, 68.3% ownership ⭐ Superinvestor"
191
+
192
+ ### Step 5: Analyze Top Candidates and Provide Recommendations
193
+
194
+ Review the top-ranked stocks and cross-reference with knowledge bases:
195
+
196
+ **Reference Documents to Consult:**
197
+ 1. `references/interpretation_guide.md` - Understand rating bands and portfolio sizing
198
+ 2. `references/canslim_methodology.md` - Deep dive into component meanings (now includes S and I)
199
+ 3. `references/scoring_system.md` - Understand scoring formulas (Phase 2 weights)
200
+
201
+ **Analysis Framework:**
202
+
203
+ For **Exceptional+ stocks (90-100 points)**:
204
+ - All components near-perfect (C≥85, A≥85, N≥85, S≥80, I≥80, M≥80)
205
+ - Guidance: Immediate buy, aggressive position sizing (15-20% of portfolio)
206
+ - Example: "NVDA scores 97.2 - explosive quarterly earnings (100), strong 3-year growth (95), at new highs (98), volume accumulation (85), strong institutional support (90), uptrend market (100)"
207
+
208
+ For **Exceptional stocks (80-89 points)**:
209
+ - Outstanding fundamentals + strong momentum
210
+ - Guidance: Strong buy, standard sizing (10-15% of portfolio)
211
+
212
+ For **Strong stocks (70-79 points)**:
213
+ - Solid across all components, minor weaknesses
214
+ - Guidance: Buy, standard sizing (8-12% of portfolio)
215
+ - Phase 2 Example: "NVDA scores 77.5 - explosive earnings (100), strong growth (90), near high (60), accumulation (60), good institutions (60), uptrend (90)"
216
+
217
+ For **Above Average stocks (60-69 points)**:
218
+ - Meets thresholds, one component weak
219
+ - Guidance: Buy on pullback, conservative sizing (5-8% of portfolio)
220
+
221
+ **Bear Market Override:**
222
+ - If M component = 0 (bear market detected), **do NOT buy** regardless of other scores
223
+ - Guidance: Raise 80-100% cash, wait for market recovery
224
+ - CANSLIM does not work in bear markets (3 out of 4 stocks follow market trend)
225
+
226
+ ### Step 6: Generate User-Facing Report
227
+
228
+ Create a concise, actionable summary for the user:
229
+
230
+ **Report Format:**
231
+
232
+ ```markdown
233
+ # CANSLIM Stock Screening Results (Phase 2)
234
+ **Date:** YYYY-MM-DD
235
+ **Market Condition:** [Trend] - M Score: [X]/100
236
+ **Stocks Analyzed:** [N]
237
+ **Components:** C, A, N, S, I, M (6 of 7)
238
+
239
+ ## Market Summary
240
+ [2-3 sentences on current market environment based on M component]
241
+ [If bear market: WARNING - Consider raising cash allocation]
242
+
243
+ ## Top 5 CANSLIM Candidates
244
+
245
+ ### 1. [SYMBOL] - [Company Name] ⭐⭐⭐
246
+ **Score:** [X.X]/100 ([Rating])
247
+ **Price:** $[XXX.XX] | **Sector:** [Sector]
248
+
249
+ **Component Breakdown:**
250
+ - C (Earnings): [X]/100 - [EPS growth]% QoQ, [Revenue growth]% revenue
251
+ - A (Growth): [X]/100 - [CAGR]% 3yr EPS CAGR
252
+ - N (Newness): [X]/100 - [Distance]% from 52wk high
253
+ - S (Supply/Demand): [X]/100 - Up/Down Volume Ratio: [X.XX]
254
+ - I (Institutional): [X]/100 - [N] holders, [X.X]% ownership [⭐ Superinvestor if present]
255
+ - M (Market): [X]/100 - [Trend]
256
+
257
+ **Interpretation:** [Rating description and guidance]
258
+ **Weakest Component:** [X] ([score])
259
+ **Data Source Note:** [If Finviz used: "Institutional data from Finviz"]
260
+
261
+ [Repeat for top 5 stocks]
262
+
263
+ ## Investment Recommendations
264
+
265
+ **Immediate Buy List (90+ score):**
266
+ - [List stocks with exceptional+ ratings]
267
+ - Position sizing: 15-20% each
268
+
269
+ **Strong Buy List (80-89 score):**
270
+ - [List stocks with exceptional ratings]
271
+ - Position sizing: 10-15% each
272
+
273
+ **Watchlist (70-79 score):**
274
+ - [List stocks with strong ratings]
275
+ - Buy on pullback
276
+
277
+ ## Risk Factors
278
+ - [Identify any quality warnings from components]
279
+ - [Market condition warnings]
280
+ - [Sector concentration risks if applicable]
281
+ - [Data source reliability notes if Finviz heavily used]
282
+
283
+ ## Next Steps
284
+ 1. Conduct detailed fundamental analysis on top 3 candidates
285
+ 2. Check earnings calendars for upcoming reports
286
+ 3. Review technical charts for entry timing
287
+ 4. [If bear market: Wait for market recovery before deploying capital]
288
+
289
+ ---
290
+ **Note:** This is Phase 2 (C, A, N, S, I, M components - 80% coverage). Phase 3 will add L component for full 7-component CANSLIM.
291
+ ```
292
+
293
+ ---
294
+
295
+ ## Resources
296
+
297
+ ### Scripts Directory (`scripts/`)
298
+
299
+ **Main Scripts:**
300
+ - `screen_canslim.py` - Main orchestrator script
301
+ - Entry point for screening workflow
302
+ - Handles argument parsing, API coordination, ranking, reporting
303
+ - Usage: `python3 screen_canslim.py --api-key KEY [options]`
304
+
305
+ - `fmp_client.py` - FMP API client wrapper
306
+ - Rate limiting (0.3s between calls)
307
+ - 429 error handling with 60s retry
308
+ - Session-based caching
309
+ - Methods: `get_income_statement()`, `get_quote()`, `get_historical_prices()`, `get_institutional_holders()`
310
+
311
+ - `finviz_stock_client.py` - Finviz web scraping client ← **NEW**
312
+ - BeautifulSoup-based HTML parsing
313
+ - Fetches institutional ownership % from Finviz.com
314
+ - Rate limiting (2.0s between calls)
315
+ - No API key required (free web scraping)
316
+ - Methods: `get_institutional_ownership()`, `get_stock_data()`
317
+
318
+ **Calculators (`scripts/calculators/`):**
319
+ - `earnings_calculator.py` - C component (Current Earnings)
320
+ - Quarterly EPS/revenue growth (YoY)
321
+ - Scoring: 50%+ = 100pts, 30-49% = 80pts, 18-29% = 60pts
322
+
323
+ - `growth_calculator.py` - A component (Annual Growth)
324
+ - 3-year EPS CAGR calculation
325
+ - Stability check (no negative growth years)
326
+ - Scoring: 40%+ = 90pts, 30-39% = 70pts, 25-29% = 50pts
327
+
328
+ - `new_highs_calculator.py` - N component (Newness)
329
+ - Distance from 52-week high
330
+ - Volume-confirmed breakout detection
331
+ - Scoring: 5% of high + breakout = 100pts, 10% + breakout = 80pts
332
+
333
+ - `supply_demand_calculator.py` - S component (Supply/Demand) ← **NEW**
334
+ - Volume-based accumulation/distribution analysis
335
+ - Up-day volume vs down-day volume ratio (60-day lookback)
336
+ - Scoring: ratio ≥2.0 = 100pts, 1.5-2.0 = 80pts, 1.0-1.5 = 60pts
337
+
338
+ - `institutional_calculator.py` - I component (Institutional) ← **NEW**
339
+ - Institutional holder count (from FMP)
340
+ - Ownership % (from FMP or Finviz fallback)
341
+ - Superinvestor detection (Berkshire Hathaway, Baupost, etc.)
342
+ - Scoring: 50-100 holders + 30-60% ownership = 100pts
343
+
344
+ - `market_calculator.py` - M component (Market Direction)
345
+ - S&P 500 vs 50-day EMA
346
+ - VIX-adjusted scoring
347
+ - Scoring: Strong uptrend = 100pts, Uptrend = 80pts, Bear market = 0pts
348
+
349
+ **Supporting Modules:**
350
+ - `scorer.py` - Composite score calculation
351
+ - Phase 2 weighted average: C×19% + A×25% + N×19% + S×19% + I×13% + M×6%
352
+ - Rating interpretation (Exceptional+/Exceptional/Strong/etc.)
353
+ - Minimum threshold validation (all 6 components must meet baseline)
354
+
355
+ - `report_generator.py` - Output generation
356
+ - JSON export (programmatic use)
357
+ - Markdown export (human-readable)
358
+ - Phase 2 component breakdown tables
359
+ - Summary statistics calculation
360
+
361
+ ### References Directory (`references/`)
362
+
363
+ **Knowledge Bases:**
364
+ - `canslim_methodology.md` (27KB) - Complete CANSLIM explanation ← **Updated for Phase 2**
365
+ - All 7 components with O'Neil's original thresholds
366
+ - **NEW**: S component (Volume accumulation/distribution) detailed explanation
367
+ - **NEW**: I component (Institutional sponsorship) detailed explanation
368
+ - Historical examples (AAPL 2009, NFLX 2013, TSLA 2019, NVDA 2023)
369
+ - Phase 2 implementation notes
370
+
371
+ - `scoring_system.md` (21KB) - Technical scoring specification ← **Updated for Phase 2**
372
+ - Phase 2 component weights and formulas
373
+ - Interpretation bands (90-100, 80-89, etc.)
374
+ - Minimum thresholds for 6 components
375
+ - Composite score calculation examples
376
+
377
+ - `fmp_api_endpoints.md` (18KB) - API integration guide ← **Updated for Phase 2**
378
+ - Required endpoints for each component
379
+ - **NEW**: Institutional holder endpoint documentation
380
+ - **NEW**: Finviz fallback strategy explanation
381
+ - Rate limiting strategy
382
+ - Cost analysis (Phase 2: ~203 calls for 40 stocks, within free tier)
383
+
384
+ - `interpretation_guide.md` (18KB) - User guidance
385
+ - Portfolio construction rules
386
+ - Position sizing by rating
387
+ - Entry/exit strategies
388
+ - Bear market protection rules
389
+
390
+ **How to Use References:**
391
+ - Read `canslim_methodology.md` first to understand O'Neil's system (now includes S and I)
392
+ - Consult `interpretation_guide.md` when analyzing results
393
+ - Reference `scoring_system.md` if scores seem unexpected
394
+ - Check `fmp_api_endpoints.md` for API troubleshooting or Finviz fallback issues
395
+
396
+ ---
397
+
398
+ ## Troubleshooting
399
+
400
+ ### Issue 1: FMP API Rate Limit Exceeded
401
+
402
+ **Symptoms:**
403
+ ```
404
+ ERROR: 429 Too Many Requests - Rate limit exceeded
405
+ Retrying in 60 seconds...
406
+ ```
407
+
408
+ **Causes:**
409
+ - Running multiple screenings within short time window
410
+ - Exceeding 250 calls/day (free tier limit)
411
+ - Other applications using same API key
412
+
413
+ **Solutions:**
414
+ 1. **Wait and Retry**: Script auto-retries after 60s
415
+ 2. **Reduce Universe**: Use `--max-candidates 30` to lower API usage
416
+ 3. **Check Daily Usage**: Free tier resets at midnight UTC
417
+ 4. **Upgrade Plan**: FMP Starter ($29.99/month) provides 750 calls/day
418
+
419
+ ### Issue 2: Missing Required Libraries
420
+
421
+ **Symptoms:**
422
+ ```
423
+ ERROR: required libraries not found. Install with: pip install beautifulsoup4 requests lxml
424
+ ```
425
+
426
+ **Solutions:**
427
+ ```bash
428
+ # Install all required libraries
429
+ pip install requests beautifulsoup4 lxml
430
+
431
+ # Or install individually
432
+ pip install beautifulsoup4
433
+ pip install requests
434
+ pip install lxml
435
+ ```
436
+
437
+ ### Issue 3: Finviz Fallback Slow Execution
438
+
439
+ **Symptoms:**
440
+ ```
441
+ Execution time: 2 minutes 30 seconds for 40 stocks (slower than expected)
442
+ ```
443
+
444
+ **Causes:**
445
+ - Finviz rate limiting (2.0s per request)
446
+ - All stocks triggering fallback due to FMP data gaps
447
+
448
+ **Solutions:**
449
+ 1. **Accept Delay**: 1-2 minutes for 40 stocks is normal with Finviz fallback
450
+ 2. **Monitor Fallback Usage**: Check logs for "Using Finviz institutional ownership" messages
451
+ 3. **Reduce Rate Limit** (advanced): Edit `finviz_stock_client.py`, change `rate_limit_seconds=2.0` to `1.5` (risk: IP ban)
452
+
453
+ **Note:** Finviz fallback adds ~2 seconds per stock but significantly improves I component accuracy (35 → 60-100 points).
454
+
455
+ ### Issue 4: Finviz Web Scraping Failure
456
+
457
+ **Symptoms:**
458
+ ```
459
+ WARNING: Finviz request failed with status 403 for NVDA
460
+ ⚠️ Using Finviz institutional ownership data - FMP shares outstanding unavailable. Finviz fallback also unavailable. Score reduced by 50%.
461
+ ```
462
+
463
+ **Causes:**
464
+ - Finviz blocking scraping requests (User-Agent detection)
465
+ - Rate limit exceeded (too many requests)
466
+ - Network issues or Finviz downtime
467
+
468
+ **Solutions:**
469
+ 1. **Wait and Retry**: Rate limit resets after a few minutes
470
+ 2. **Check Internet Connection**: Verify network access to finviz.com
471
+ 3. **Fallback Accepted**: Script continues with FMP holder count only (I score capped at 70/100)
472
+ 4. **Manual Verification**: Check Finviz website manually for blocked IP
473
+
474
+ **Graceful Degradation:**
475
+ - Script never fails due to Finviz issues
476
+ - Falls back to FMP holder count only
477
+ - User sees quality warning in report
478
+
479
+ ### Issue 5: No Stocks Meet Minimum Thresholds
480
+
481
+ **Symptoms:**
482
+ ```
483
+ ✓ Successfully analyzed 40 stocks
484
+ Top 5 Stocks:
485
+ 1. AAPL - 58.3 (Average)
486
+ 2. MSFT - 55.1 (Average)
487
+ ...
488
+ ```
489
+
490
+ **Causes:**
491
+ - Bear market conditions (M component low)
492
+ - Selected universe lacks growth stocks
493
+ - Market rotation away from growth
494
+
495
+ **Solutions:**
496
+ 1. **Check M Component**: If M=0 (bear market), raise cash per CANSLIM rules
497
+ 2. **Expand Universe**: Try different sectors or market cap ranges
498
+ 3. **Lower Expectations**: Average scores (55-65) may still be actionable in weak markets
499
+ 4. **Wait for Better Setup**: CANSLIM works best in bull markets
500
+
501
+ ### Issue 6: Data Quality Warnings
502
+
503
+ **Symptoms:**
504
+ ```
505
+ ⚠️ Revenue declining despite EPS growth (possible buyback distortion)
506
+ ⚠️ Using Finviz institutional ownership data (68.3%) - FMP shares outstanding unavailable.
507
+ ```
508
+
509
+ **Interpretation:**
510
+ - These are **not errors** - they are quality flags from calculators
511
+ - Revenue warning: EPS growth may be from share buybacks, not organic growth
512
+ - Finviz warning: Data source switched from FMP to Finviz (still accurate)
513
+
514
+ **Actions:**
515
+ 1. Review component details in full report
516
+ 2. Cross-check with fundamental analysis
517
+ 3. Adjust position sizing based on risk level
518
+ 4. Finviz data is reliable - no action needed for data source warnings
519
+
520
+ ---
521
+
522
+ ## Important Notes
523
+
524
+ ### Phase 2 Implementation Status
525
+
526
+ This is **Phase 2** implementing 6 of 7 CANSLIM components:
527
+ - ✅ **C** (Current Earnings) - Implemented
528
+ - ✅ **A** (Annual Growth) - Implemented
529
+ - ✅ **N** (Newness) - Implemented
530
+ - ✅ **S** (Supply/Demand) - Implemented (Phase 2) ← **NEW**
531
+ - ❌ **L** (Leadership/RS Rank) - Not implemented (Phase 3)
532
+ - ✅ **I** (Institutional) - Implemented (Phase 2) ← **NEW**
533
+ - ✅ **M** (Market Direction) - Implemented
534
+
535
+ **Implications:**
536
+ - Composite scores represent **80% of full CANSLIM methodology**
537
+ - Top scores typically max out at ~95 (full CANSLIM can reach 200+)
538
+ - Missing component: Relative strength rank (L component)
539
+ - Phase 2 provides highly accurate screening with volume and institutional analysis
540
+
541
+ **Score Conversion:**
542
+ - Phase 2 score 85+ ≈ Full CANSLIM 145-165 (Strong to Exceptional)
543
+ - Phase 2 score 70-84 ≈ Full CANSLIM 125-144 (Above Average to Strong)
544
+ - Phase 2 score 60-69 ≈ Full CANSLIM 110-124 (Average to Above Average)
545
+
546
+ ### Finviz Integration Benefits
547
+
548
+ **Automatic Fallback System:**
549
+ - When FMP API doesn't provide `sharesOutstanding`, Finviz automatically activates
550
+ - Scrapes institutional ownership % from Finviz.com (free, no API key)
551
+ - Improves I component accuracy from 35/100 (partial) to 60-100/100 (full)
552
+
553
+ **Data Source Priority:**
554
+ 1. **FMP API** (primary): Institutional holder count + shares outstanding calculation
555
+ 2. **Finviz** (fallback): Direct institutional ownership % from web page
556
+ 3. **Partial Data** (last resort): Holder count only, 50% penalty applied
557
+
558
+ **Tested Reliability:**
559
+ - 39/39 stocks successfully retrieved ownership % via Finviz (100% success rate)
560
+ - Average execution time: 2.54 seconds per stock
561
+ - No errors or IP blocks during testing
562
+
563
+ ### Future Enhancements
564
+
565
+ **Phase 3 (Planned):**
566
+ - Add L component: RS Rank estimation (52-week high proxy, 80% accuracy)
567
+ - Full 7-component CANSLIM: C 15%, A 20%, N 15%, S 15%, L 20%, I 10%, M 5%
568
+ - Coverage: 100% of full CANSLIM
569
+
570
+ **Phase 4 (Planned):**
571
+ - FINVIZ Elite integration for pre-screening
572
+ - Execution time: 2 minutes → 10-15 seconds
573
+ - FMP API usage reduction: 90%
574
+ - Larger universe possible (100+ stocks)
575
+
576
+ ### Data Source Attribution
577
+
578
+ - **FMP API**: Income statements, quotes, historical prices, key metrics, institutional holders
579
+ - **Finviz**: Institutional ownership % (fallback), market data
580
+ - **Methodology**: William O'Neil's "How to Make Money in Stocks" (4th edition)
581
+ - **Scoring System**: Adapted from IBD MarketSmith proprietary system
582
+
583
+ ### Disclaimer
584
+
585
+ **This screener is for educational and informational purposes only.**
586
+ - Not investment advice
587
+ - Past performance does not guarantee future results
588
+ - CANSLIM methodology works best in bull markets (M component confirms)
589
+ - Conduct your own research and consult a financial advisor before making investment decisions
590
+ - O'Neil's historical winners include AAPL (2009: +1,200%), NFLX (2013: +800%), but many stocks fail to perform
591
+
592
+ ---
593
+
594
+ **Version:** Phase 2
595
+ **Last Updated:** 2026-01-12
596
+ **API Requirements:** FMP API (free tier sufficient) + BeautifulSoup/requests/lxml for Finviz
597
+ **Execution Time:** ~1 minute 40 seconds for 40 stocks
598
+ **Output Formats:** JSON + Markdown
599
+ **Components Implemented:** C, A, N, S, I, M (6 of 7, 80% coverage)