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,562 @@
1
+ ---
2
+ name: value-dividend-screener
3
+ description: Screen US stocks for high-quality dividend opportunities combining value characteristics (P/E ratio under 20, P/B ratio under 2), attractive yields (3% or higher), and consistent growth (dividend/revenue/EPS trending up over 3 years). Supports two-stage screening using FINVIZ Elite API for efficient pre-filtering followed by FMP API for detailed analysis. Use when user requests dividend stock screening, income portfolio ideas, or quality value stocks with strong fundamentals.
4
+ ---
5
+
6
+ # Value Dividend Screener
7
+
8
+ ## Overview
9
+
10
+ This skill identifies high-quality dividend stocks that combine value characteristics, attractive income generation, and consistent growth using a **two-stage screening approach**:
11
+
12
+ 1. **FINVIZ Elite API (Optional but Recommended)**: Pre-screen stocks with basic criteria (fast, cost-effective)
13
+ 2. **Financial Modeling Prep (FMP) API**: Detailed fundamental analysis of candidates
14
+
15
+ Screen US equities based on quantitative criteria including valuation ratios, dividend metrics, financial health, and profitability. Generate comprehensive reports ranking stocks by composite quality scores with detailed fundamental analysis.
16
+
17
+ **Efficiency Advantage**: Using FINVIZ pre-screening can reduce FMP API calls by 90%, making this approach ideal for free-tier API users.
18
+
19
+ ## When to Use
20
+
21
+ Invoke this skill when the user requests:
22
+ - "Find high-quality dividend stocks"
23
+ - "Screen for value dividend opportunities"
24
+ - "Show me stocks with strong dividend growth"
25
+ - "Find income stocks trading at reasonable valuations"
26
+ - "Screen for sustainable high-yield stocks"
27
+ - Any request combining dividend yield, valuation metrics, and fundamental analysis
28
+
29
+ ## Workflow
30
+
31
+ ### Step 1: Verify API Key Availability
32
+
33
+ **For Two-Stage Screening (Recommended):**
34
+
35
+ Check if both API keys are available:
36
+
37
+ ```python
38
+ import os
39
+ fmp_api_key = os.environ.get('FMP_API_KEY')
40
+ finviz_api_key = os.environ.get('FINVIZ_API_KEY')
41
+ ```
42
+
43
+ If not available, ask user to provide API keys or set environment variables:
44
+ ```bash
45
+ export FMP_API_KEY=your_fmp_key_here
46
+ export FINVIZ_API_KEY=your_finviz_key_here
47
+ ```
48
+
49
+ **For FMP-Only Screening:**
50
+
51
+ Check if FMP API key is available:
52
+
53
+ ```python
54
+ import os
55
+ api_key = os.environ.get('FMP_API_KEY')
56
+ ```
57
+
58
+ If not available, ask user to provide API key or set environment variable:
59
+ ```bash
60
+ export FMP_API_KEY=your_key_here
61
+ ```
62
+
63
+ **FINVIZ Elite API Key:**
64
+ - Requires FINVIZ Elite subscription (~$40/month or ~$330/year)
65
+ - Provides access to CSV export of pre-screened results
66
+ - Highly recommended for reducing FMP API usage
67
+
68
+ Provide instructions from `references/fmp_api_guide.md` if needed.
69
+
70
+ ### Step 2: Execute Screening Script
71
+
72
+ Run the screening script with appropriate parameters:
73
+
74
+ #### **Two-Stage Screening (RECOMMENDED)**
75
+
76
+ Uses FINVIZ for pre-screening, then FMP for detailed analysis:
77
+
78
+ **Default execution (Top 20 stocks):**
79
+ ```bash
80
+ python3 scripts/screen_dividend_stocks.py --use-finviz
81
+ ```
82
+
83
+ **With explicit API keys:**
84
+ ```bash
85
+ python3 scripts/screen_dividend_stocks.py --use-finviz \
86
+ --fmp-api-key $FMP_API_KEY \
87
+ --finviz-api-key $FINVIZ_API_KEY
88
+ ```
89
+
90
+ **Custom top N:**
91
+ ```bash
92
+ python3 scripts/screen_dividend_stocks.py --use-finviz --top 50
93
+ ```
94
+
95
+ **Custom output location:**
96
+ ```bash
97
+ python3 scripts/screen_dividend_stocks.py --use-finviz --output /path/to/results.json
98
+ ```
99
+
100
+ **Script behavior (Two-Stage):**
101
+ 1. FINVIZ Elite pre-screening:
102
+ - Market cap: Mid-cap or higher
103
+ - Dividend yield: 3%+
104
+ - Dividend growth (3Y): 5%+
105
+ - EPS growth (3Y): Positive
106
+ - P/B: Under 2
107
+ - P/E: Under 20
108
+ - Sales growth (3Y): Positive
109
+ - Geography: USA
110
+ 2. FMP detailed analysis of FINVIZ results (typically 20-50 stocks):
111
+ - Dividend growth rate calculation (3-year CAGR)
112
+ - Revenue and EPS trend analysis
113
+ - Dividend sustainability assessment (payout ratios, FCF coverage)
114
+ - Financial health metrics (debt-to-equity, current ratio)
115
+ - Quality scoring (ROE, profit margins)
116
+ 3. Composite scoring and ranking
117
+ 4. Output top N stocks to JSON file
118
+
119
+ **Expected runtime (Two-Stage):** 2-3 minutes for 30-50 FINVIZ candidates (much faster than FMP-only)
120
+
121
+ #### **FMP-Only Screening (Original Method)**
122
+
123
+ Uses only FMP Stock Screener API (higher API usage):
124
+
125
+ **Default execution:**
126
+ ```bash
127
+ python3 scripts/screen_dividend_stocks.py
128
+ ```
129
+
130
+ **With explicit API key:**
131
+ ```bash
132
+ python3 scripts/screen_dividend_stocks.py --fmp-api-key $FMP_API_KEY
133
+ ```
134
+
135
+ **Script behavior (FMP-Only):**
136
+ 1. Initial screening using FMP Stock Screener API (dividend yield >=3.0%, P/E <=20, P/B <=2)
137
+ 2. Detailed analysis of candidates (typically 100-300 stocks):
138
+ - Same detailed analysis as two-stage approach
139
+ 3. Composite scoring and ranking
140
+ 4. Output top N stocks to JSON file
141
+
142
+ **Expected runtime (FMP-Only):** 5-15 minutes for 100-300 candidates (rate limiting applies)
143
+
144
+ **API Usage Comparison:**
145
+ - Two-Stage: ~50-100 FMP API calls (FINVIZ pre-filters to ~30 stocks)
146
+ - FMP-Only: ~500-1500 FMP API calls (analyzes all screener results)
147
+
148
+ ### Step 3: Parse and Analyze Results
149
+
150
+ Read the generated JSON file:
151
+
152
+ ```python
153
+ import json
154
+
155
+ with open('dividend_screener_results.json', 'r') as f:
156
+ data = json.load(f)
157
+
158
+ metadata = data['metadata']
159
+ stocks = data['stocks']
160
+ ```
161
+
162
+ **Key data points per stock:**
163
+ - Basic info: `symbol`, `company_name`, `sector`, `market_cap`, `price`
164
+ - Valuation: `dividend_yield`, `pe_ratio`, `pb_ratio`
165
+ - Growth metrics: `dividend_cagr_3y`, `revenue_cagr_3y`, `eps_cagr_3y`
166
+ - Sustainability: `payout_ratio`, `fcf_payout_ratio`, `dividend_sustainable`
167
+ - Financial health: `debt_to_equity`, `current_ratio`, `financially_healthy`
168
+ - Quality: `roe`, `profit_margin`, `quality_score`
169
+ - Overall ranking: `composite_score`
170
+
171
+ ### Step 4: Generate Markdown Report
172
+
173
+ Create structured markdown report for user with following sections:
174
+
175
+ #### Report Structure
176
+
177
+ ```markdown
178
+ # Value Dividend Stock Screening Report
179
+
180
+ **Generated:** [Timestamp]
181
+ **Screening Criteria:**
182
+ - Dividend Yield: >= 3.5%
183
+ - P/E Ratio: <= 20
184
+ - P/B Ratio: <= 2
185
+ - Dividend Growth (3Y CAGR): >= 5%
186
+ - Revenue Trend: Positive over 3 years
187
+ - EPS Trend: Positive over 3 years
188
+
189
+ **Total Results:** [N] stocks
190
+
191
+ ---
192
+
193
+ ## Top 20 Stocks Ranked by Composite Score
194
+
195
+ | Rank | Symbol | Company | Yield | P/E | Div Growth | Score |
196
+ |------|--------|---------|-------|-----|------------|-------|
197
+ | 1 | [TICKER] | [Name] | [%] | [X.X] | [%] | [XX.X] |
198
+ | ... |
199
+
200
+ ---
201
+
202
+ ## Detailed Analysis
203
+
204
+ ### 1. [SYMBOL] - [Company Name] (Score: XX.X)
205
+
206
+ **Sector:** [Sector Name]
207
+ **Market Cap:** $[X.XX]B
208
+ **Current Price:** $[XX.XX]
209
+
210
+ **Valuation Metrics:**
211
+ - Dividend Yield: [X.X]%
212
+ - P/E Ratio: [XX.X]
213
+ - P/B Ratio: [X.X]
214
+
215
+ **Growth Profile (3-Year):**
216
+ - Dividend CAGR: [X.X]% [✓ Consistent / ⚠ One cut]
217
+ - Revenue CAGR: [X.X]%
218
+ - EPS CAGR: [X.X]%
219
+
220
+ **Dividend Sustainability:**
221
+ - Payout Ratio: [XX]%
222
+ - FCF Payout Ratio: [XX]%
223
+ - Status: [✓ Sustainable / ⚠ Monitor / ❌ Risk]
224
+
225
+ **Financial Health:**
226
+ - Debt-to-Equity: [X.XX]
227
+ - Current Ratio: [X.XX]
228
+ - Status: [✓ Healthy / ⚠ Caution]
229
+
230
+ **Quality Metrics:**
231
+ - ROE: [XX]%
232
+ - Net Profit Margin: [XX]%
233
+ - Quality Score: [XX]/100
234
+
235
+ **Investment Considerations:**
236
+ - [Key strength 1]
237
+ - [Key strength 2]
238
+ - [Risk factor or consideration]
239
+
240
+ ---
241
+
242
+ [Repeat for other top stocks]
243
+
244
+ ---
245
+
246
+ ## Portfolio Construction Guidance
247
+
248
+ **Diversification Recommendations:**
249
+ - Sector breakdown of top 20 results
250
+ - Suggested allocation strategy
251
+ - Concentration risk warnings
252
+
253
+ **Monitoring Recommendations:**
254
+ - Key metrics to track quarterly
255
+ - Warning signs for each position
256
+ - Rebalancing triggers
257
+
258
+ **Risk Considerations:**
259
+ - Market cap concentration
260
+ - Sector biases in results
261
+ - Economic sensitivity warnings
262
+ ```
263
+
264
+ ### Step 5: Provide Context and Methodology
265
+
266
+ Reference screening methodology when explaining results:
267
+
268
+ **Key concepts to explain:**
269
+ - Why these specific thresholds (3.5% yield, P/E 20, P/B 2)
270
+ - Importance of dividend growth vs. static high yield
271
+ - How composite score balances value, growth, and quality
272
+ - Dividend sustainability vs. dividend trap distinction
273
+ - Financial health metrics significance
274
+
275
+ Load `references/screening_methodology.md` to provide detailed explanations of:
276
+ - Phase 1: Initial quantitative filters
277
+ - Phase 2: Growth quality filters
278
+ - Phase 3: Sustainability and quality analysis
279
+ - Composite scoring system
280
+ - Investment philosophy and limitations
281
+
282
+ ### Step 6: Answer Follow-up Questions
283
+
284
+ Anticipate common user questions:
285
+
286
+ **"Why did [stock] not make the list?"**
287
+ - Check which criteria it failed (yield, valuation, growth, sustainability)
288
+ - Explain the specific filter that excluded it
289
+
290
+ **"Can I screen for specific sectors?"**
291
+ - Filtering capability exists in script (modify line 383-388)
292
+ - Suggest re-running with sector parameter additions
293
+
294
+ **"What if I want higher/lower yield threshold?"**
295
+ - Script parameters are adjustable
296
+ - Trade-offs between yield and growth
297
+ - Recommend re-screening with new parameters
298
+
299
+ **"How often should I re-run this screen?"**
300
+ - Quarterly recommended (aligns with earnings cycles)
301
+ - Semi-annually sufficient for long-term holders
302
+ - Market conditions may warrant more frequent checks
303
+
304
+ **"How many stocks should I buy?"**
305
+ - Diversification guidance: minimum 10-15 for dividend portfolio
306
+ - Sector balance considerations
307
+ - Position sizing based on risk tolerance
308
+
309
+ ## Resources
310
+
311
+ ### scripts/screen_dividend_stocks.py
312
+
313
+ Comprehensive screening script that:
314
+ - Interfaces with FMP API for data retrieval
315
+ - Implements multi-phase filtering logic
316
+ - Calculates growth rates (CAGR) over 3-year periods
317
+ - Evaluates dividend sustainability via payout ratios and FCF coverage
318
+ - Assesses financial health (debt-to-equity, current ratio)
319
+ - Computes quality scores (ROE, profit margins)
320
+ - Ranks stocks by composite scoring system
321
+ - Outputs structured JSON results
322
+
323
+ **Dependencies:** `requests` library (install via `pip install requests`)
324
+
325
+ **Rate limiting:** Built-in delays to respect FMP API limits (250 requests/day free tier)
326
+
327
+ **Error handling:** Graceful degradation for missing data, rate limit retries, API errors
328
+
329
+ ### references/screening_methodology.md
330
+
331
+ Comprehensive documentation of screening approach:
332
+
333
+ **Phase 1: Initial Quantitative Filters**
334
+ - Dividend yield >= 3.5% rationale and calculation
335
+ - P/E ratio <= 20 threshold justification
336
+ - P/B ratio <= 2 valuation logic
337
+
338
+ **Phase 2: Growth Quality Filters**
339
+ - Dividend growth (3-year CAGR >= 5%)
340
+ - Revenue positive trend analysis
341
+ - EPS positive trend analysis
342
+
343
+ **Phase 3: Quality & Sustainability Analysis**
344
+ - Dividend sustainability metrics (payout ratios, FCF coverage)
345
+ - Financial health indicators (D/E, current ratio)
346
+ - Quality scoring methodology (ROE, profit margins)
347
+
348
+ **Composite Scoring System (0-100 points)**
349
+ - Score component breakdown and weighting
350
+ - Interpretation guidelines
351
+
352
+ **Investment Philosophy**
353
+ - Why this approach works
354
+ - What this strategy avoids (dividend traps, value traps)
355
+ - Ideal candidate profile
356
+
357
+ **Usage Notes & Limitations**
358
+ - Best practices for portfolio construction
359
+ - When to sell criteria
360
+ - Historical context for threshold selection
361
+
362
+ ### references/fmp_api_guide.md
363
+
364
+ Complete guide for Financial Modeling Prep API:
365
+
366
+ **API Key Setup**
367
+ - Obtaining free API key
368
+ - Setting environment variables
369
+ - Free tier limits (250 requests/day)
370
+
371
+ **Key Endpoints Used**
372
+ - Stock Screener API
373
+ - Income Statement API
374
+ - Balance Sheet API
375
+ - Cash Flow Statement API
376
+ - Key Metrics API
377
+ - Historical Dividend API
378
+
379
+ **Rate Limiting Strategy**
380
+ - Built-in protection in script
381
+ - Request budget management
382
+ - Best practices for free tier
383
+
384
+ **Error Handling**
385
+ - Common errors and solutions
386
+ - Debugging techniques
387
+
388
+ **Data Quality Considerations**
389
+ - Data freshness and gaps
390
+ - Data accuracy caveats
391
+ - When to verify with SEC filings
392
+
393
+ ## Advanced Usage
394
+
395
+ ### Customizing Screening Criteria
396
+
397
+ Modify thresholds in `scripts/screen_dividend_stocks.py`:
398
+
399
+ **Line 383-388** - Initial screening parameters:
400
+ ```python
401
+ candidates = client.screen_stocks(
402
+ dividend_yield_min=3.5, # Adjust yield threshold
403
+ pe_max=20, # Adjust P/E threshold
404
+ pb_max=2, # Adjust P/B threshold
405
+ market_cap_min=2_000_000_000 # Minimum $2B market cap
406
+ )
407
+ ```
408
+
409
+ **Line 423** - Dividend CAGR threshold:
410
+ ```python
411
+ if not div_cagr or div_cagr < 5.0: # Adjust growth threshold
412
+ ```
413
+
414
+ ### Sector-Specific Screening
415
+
416
+ Add sector filtering after initial screening:
417
+
418
+ ```python
419
+ # Filter for specific sectors
420
+ target_sectors = ['Consumer Defensive', 'Utilities', 'Healthcare']
421
+ candidates = [s for s in candidates if s.get('sector') in target_sectors]
422
+ ```
423
+
424
+ ### Excluding REITs and Financials
425
+
426
+ REITs and financial stocks have different dividend characteristics (higher payouts, different metrics):
427
+
428
+ ```python
429
+ # Exclude REITs and Financials
430
+ exclude_sectors = ['Real Estate', 'Financial Services']
431
+ candidates = [s for s in candidates if s.get('sector') not in exclude_sectors]
432
+ ```
433
+
434
+ ### Exporting to CSV
435
+
436
+ Convert JSON results to CSV for Excel analysis:
437
+
438
+ ```python
439
+ import json
440
+ import csv
441
+
442
+ with open('dividend_screener_results.json', 'r') as f:
443
+ data = json.load(f)
444
+
445
+ stocks = data['stocks']
446
+
447
+ with open('screening_results.csv', 'w', newline='') as csvfile:
448
+ if stocks:
449
+ fieldnames = stocks[0].keys()
450
+ writer = csv.DictWriter(csvfile, fieldnames=fieldnames)
451
+ writer.writeheader()
452
+ writer.writerows(stocks)
453
+ ```
454
+
455
+ ## Troubleshooting
456
+
457
+ ### "ERROR: requests library not found"
458
+ **Solution:** Install requests library
459
+ ```bash
460
+ pip install requests
461
+ ```
462
+
463
+ ### "ERROR: FMP API key required"
464
+ **Solution:** Set environment variable or provide via command-line
465
+ ```bash
466
+ export FMP_API_KEY=your_key_here
467
+ # OR
468
+ python3 scripts/screen_dividend_stocks.py --fmp-api-key your_key_here
469
+ ```
470
+
471
+ ### "ERROR: FINVIZ API key required when using --use-finviz"
472
+ **Solution:** Set environment variable or provide via command-line
473
+ ```bash
474
+ export FINVIZ_API_KEY=your_key_here
475
+ # OR
476
+ python3 scripts/screen_dividend_stocks.py --use-finviz --finviz-api-key your_key_here
477
+ ```
478
+
479
+ **Note:** FINVIZ Elite subscription required (~$40/month or ~$330/year)
480
+
481
+ ### "ERROR: FINVIZ API authentication failed"
482
+ **Possible causes:**
483
+ 1. Invalid FINVIZ API key
484
+ 2. FINVIZ Elite subscription expired
485
+ 3. API key format incorrect
486
+
487
+ **Solution:**
488
+ - Verify FINVIZ Elite subscription is active
489
+ - Check API key for typos (should be alphanumeric string)
490
+ - Log into FINVIZ Elite account and verify API key in settings
491
+ - Try accessing FINVIZ Elite screener manually to confirm subscription
492
+
493
+ ### "ERROR: FINVIZ pre-screening failed or returned no results"
494
+ **Possible causes:**
495
+ 1. FINVIZ API connection issue
496
+ 2. Screening criteria too restrictive (no stocks match)
497
+ 3. Market conditions (bear market may yield fewer results)
498
+
499
+ **Solution:**
500
+ - Check internet connection
501
+ - Verify FINVIZ Elite website is accessible
502
+ - Try FMP-only method as fallback:
503
+ ```bash
504
+ python3 scripts/screen_dividend_stocks.py
505
+ ```
506
+
507
+ ### "WARNING: Rate limit exceeded"
508
+ **Solution:** Script automatically retries after 60 seconds. If persistent:
509
+ - Wait until next day (free tier resets daily)
510
+ - Reduce number of stocks analyzed (modify line 394 limit)
511
+ - Consider upgrading to paid FMP tier
512
+
513
+ ### "No stocks found matching all criteria"
514
+ **Solution:** Criteria may be too restrictive
515
+ - Relax P/E threshold (increase from 20)
516
+ - Lower dividend yield requirement (decrease from 3.5%)
517
+ - Reduce dividend growth requirement (decrease from 5%)
518
+ - Check market conditions (bear markets may have fewer qualifiers)
519
+
520
+ ### Script runs slowly
521
+ **Expected behavior:** Script includes 0.3s delay between API calls for rate limiting
522
+ - 100 stocks analyzed = ~8-10 minutes
523
+ - First 20-30 qualifying stocks usually found within first 50-70 analyzed
524
+
525
+ ## Performance & Cost Optimization
526
+
527
+ ### API Call Comparison
528
+
529
+ **Two-Stage Screening (FINVIZ + FMP):**
530
+ - FINVIZ: 1 API call
531
+ - FMP Quote API: ~30-50 calls (one per pre-screened symbol)
532
+ - FMP Financial Data: ~150-250 calls (5 endpoints × 30-50 symbols)
533
+ - **Total FMP calls: ~180-300**
534
+
535
+ **FMP-Only Screening:**
536
+ - FMP Stock Screener: 1 call (returns 100-1000 stocks)
537
+ - FMP Financial Data: ~500-5000 calls (5 endpoints × 100-1000 symbols)
538
+ - **Total FMP calls: ~500-5000**
539
+
540
+ **Savings: 60-94% reduction in FMP API usage**
541
+
542
+ ### Cost Analysis
543
+
544
+ **FINVIZ Elite:**
545
+ - Monthly: $39.99
546
+ - Annual: $329.99 (~$27.50/month)
547
+
548
+ **FMP API:**
549
+ - Free tier: 250 calls/day (sufficient for two-stage screening)
550
+ - Starter tier: $29.99/month for 750 calls/day
551
+ - Professional tier: $79.99/month for 2000 calls/day
552
+
553
+ **Recommendation:**
554
+ - **For free FMP tier users**: Use two-stage screening (FINVIZ + FMP free tier)
555
+ - **For paid FMP tier users**: Either approach works; two-stage is faster
556
+ - **Budget option**: FMP-only with free tier (run screening every few days)
557
+ - **Optimal option**: FINVIZ Elite ($330/year) + FMP free tier = Complete solution
558
+
559
+ ## Version History
560
+
561
+ - **v1.1** (November 2025): Added FINVIZ Elite integration for two-stage screening
562
+ - **v1.0** (November 2025): Initial release with comprehensive multi-phase screening