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,348 @@
1
+ # Financial Modeling Prep (FMP) API Guide
2
+
3
+ ## Overview
4
+
5
+ Financial Modeling Prep provides comprehensive financial data APIs for stocks, forex, cryptocurrencies, and more. This guide focuses on endpoints used for dividend stock screening.
6
+
7
+ ## API Key Setup
8
+
9
+ ### Obtaining an API Key
10
+
11
+ 1. Visit https://financialmodelingprep.com/developer/docs
12
+ 2. Sign up for a free account
13
+ 3. Navigate to Dashboard → API Keys
14
+ 4. Copy your API key
15
+
16
+ ### Free Tier Limits
17
+
18
+ - **250 requests per day**
19
+ - **Rate limit**: ~5 requests per second
20
+ - **No credit card required**
21
+ - Sufficient for daily/weekly screening runs
22
+
23
+ ### Paid Tiers (Optional)
24
+
25
+ - **Starter ($14/month)**: 500 requests/day
26
+ - **Professional ($29/month)**: 1,000 requests/day
27
+ - **Enterprise ($99/month)**: 10,000 requests/day
28
+
29
+ ## Setting API Key
30
+
31
+ ### Method 1: Environment Variable (Recommended)
32
+
33
+ **Linux/macOS:**
34
+ ```bash
35
+ export FMP_API_KEY=your_api_key_here
36
+ ```
37
+
38
+ **Windows (Command Prompt):**
39
+ ```cmd
40
+ set FMP_API_KEY=your_api_key_here
41
+ ```
42
+
43
+ **Windows (PowerShell):**
44
+ ```powershell
45
+ $env:FMP_API_KEY="your_api_key_here"
46
+ ```
47
+
48
+ **Persistent (add to shell profile):**
49
+ ```bash
50
+ # Add to ~/.bashrc or ~/.zshrc
51
+ echo 'export FMP_API_KEY=your_api_key_here' >> ~/.bashrc
52
+ source ~/.bashrc
53
+ ```
54
+
55
+ ### Method 2: Command-Line Argument
56
+
57
+ ```bash
58
+ python3 scripts/screen_dividend_stocks.py --api-key your_api_key_here
59
+ ```
60
+
61
+ ## Key Endpoints Used
62
+
63
+ ### 1. Stock Screener
64
+
65
+ **Endpoint:** `/v3/stock-screener`
66
+
67
+ **Purpose:** Initial filtering by dividend yield, P/E, P/B, market cap
68
+
69
+ **Parameters:**
70
+ - `dividendYieldMoreThan`: Minimum dividend yield (e.g., 3.5)
71
+ - `priceEarningRatioLowerThan`: Maximum P/E ratio (e.g., 20)
72
+ - `priceToBookRatioLowerThan`: Maximum P/B ratio (e.g., 2)
73
+ - `marketCapMoreThan`: Minimum market cap (e.g., 2000000000 = $2B)
74
+ - `exchange`: Exchanges to include (e.g., "NASDAQ,NYSE")
75
+ - `limit`: Max results (default: 1000)
76
+
77
+ **Example Request:**
78
+ ```
79
+ https://financialmodelingprep.com/api/v3/stock-screener?
80
+ dividendYieldMoreThan=3.5&
81
+ priceEarningRatioLowerThan=20&
82
+ priceToBookRatioLowerThan=2&
83
+ marketCapMoreThan=2000000000&
84
+ exchange=NASDAQ,NYSE&
85
+ limit=1000&
86
+ apikey=YOUR_API_KEY
87
+ ```
88
+
89
+ **Response Format:**
90
+ ```json
91
+ [
92
+ {
93
+ "symbol": "T",
94
+ "companyName": "AT&T Inc.",
95
+ "marketCap": 150000000000,
96
+ "sector": "Communication Services",
97
+ "industry": "Telecom Services",
98
+ "beta": 0.65,
99
+ "price": 20.50,
100
+ "lastAnnualDividend": 1.11,
101
+ "volume": 35000000,
102
+ "exchange": "NYSE",
103
+ "exchangeShortName": "NYSE",
104
+ "country": "US",
105
+ "isEtf": false,
106
+ "isActivelyTrading": true,
107
+ "dividendYield": 0.0541,
108
+ "pe": 7.5,
109
+ "priceToBook": 1.2
110
+ }
111
+ ]
112
+ ```
113
+
114
+ ### 2. Income Statement
115
+
116
+ **Endpoint:** `/v3/income-statement/{symbol}`
117
+
118
+ **Purpose:** Revenue, EPS, net income analysis
119
+
120
+ **Parameters:**
121
+ - `symbol`: Stock ticker (e.g., "AAPL")
122
+ - `limit`: Number of periods (e.g., 5 for 5 years)
123
+ - `period`: "annual" or "quarter"
124
+
125
+ **Example Request:**
126
+ ```
127
+ https://financialmodelingprep.com/api/v3/income-statement/AAPL?
128
+ limit=5&
129
+ apikey=YOUR_API_KEY
130
+ ```
131
+
132
+ **Key Fields Used:**
133
+ - `revenue`: Total revenue
134
+ - `eps`: Earnings per share
135
+ - `netIncome`: Net income
136
+ - `date`: Fiscal period end date
137
+
138
+ ### 3. Balance Sheet Statement
139
+
140
+ **Endpoint:** `/v3/balance-sheet-statement/{symbol}`
141
+
142
+ **Purpose:** Debt, equity, liquidity analysis
143
+
144
+ **Parameters:**
145
+ - `symbol`: Stock ticker
146
+ - `limit`: Number of periods
147
+
148
+ **Key Fields Used:**
149
+ - `totalDebt`: Total debt (short-term + long-term)
150
+ - `totalStockholdersEquity`: Shareholders' equity
151
+ - `totalCurrentAssets`: Current assets
152
+ - `totalCurrentLiabilities`: Current liabilities
153
+
154
+ ### 4. Cash Flow Statement
155
+
156
+ **Endpoint:** `/v3/cash-flow-statement/{symbol}`
157
+
158
+ **Purpose:** Free cash flow, dividends paid analysis
159
+
160
+ **Parameters:**
161
+ - `symbol`: Stock ticker
162
+ - `limit`: Number of periods
163
+
164
+ **Key Fields Used:**
165
+ - `operatingCashFlow`: Cash from operations
166
+ - `capitalExpenditure`: Capex (negative value)
167
+ - `dividendsPaid`: Dividends paid (negative value)
168
+ - `freeCashFlow`: OCF - Capex
169
+
170
+ ### 5. Key Metrics
171
+
172
+ **Endpoint:** `/v3/key-metrics/{symbol}`
173
+
174
+ **Purpose:** ROE, ROA, and other quality metrics
175
+
176
+ **Parameters:**
177
+ - `symbol`: Stock ticker
178
+ - `limit`: Number of periods
179
+
180
+ **Key Fields Used:**
181
+ - `roe`: Return on Equity (decimal, e.g., 0.15 = 15%)
182
+ - `roa`: Return on Assets
183
+ - `roic`: Return on Invested Capital
184
+ - `debtToEquity`: Debt-to-equity ratio
185
+ - `currentRatio`: Current ratio
186
+
187
+ ### 6. Historical Dividend
188
+
189
+ **Endpoint:** `/v3/historical-price-full/stock_dividend/{symbol}`
190
+
191
+ **Purpose:** Dividend history for growth rate calculation
192
+
193
+ **Example Request:**
194
+ ```
195
+ https://financialmodelingprep.com/api/v3/historical-price-full/stock_dividend/AAPL?
196
+ apikey=YOUR_API_KEY
197
+ ```
198
+
199
+ **Response Format:**
200
+ ```json
201
+ {
202
+ "symbol": "AAPL",
203
+ "historical": [
204
+ {
205
+ "date": "2024-11-08",
206
+ "label": "November 08, 24",
207
+ "adjDividend": 0.25,
208
+ "dividend": 0.25,
209
+ "recordDate": "2024-11-11",
210
+ "paymentDate": "2024-11-14",
211
+ "declarationDate": "2024-10-31"
212
+ }
213
+ ]
214
+ }
215
+ ```
216
+
217
+ ## Rate Limiting Strategy
218
+
219
+ ### Built-in Protection
220
+
221
+ The screening script includes rate limiting:
222
+ - **0.3 second delay** between requests (~3 requests/second)
223
+ - **Automatic retry** on 429 (rate limit exceeded) with 60-second backoff
224
+ - **Timeout**: 30 seconds per request
225
+
226
+ ### Managing Request Budget
227
+
228
+ For free tier (250 requests/day):
229
+
230
+ **Requests per stock analyzed:**
231
+ - Stock Screener: 1 request (returns 100-1000 stocks)
232
+ - Income Statement: 1 request per symbol
233
+ - Balance Sheet: 1 request per symbol
234
+ - Cash Flow: 1 request per symbol
235
+ - Key Metrics: 1 request per symbol
236
+ - Dividend History: 1 request per symbol
237
+
238
+ **Total: 5 requests per symbol + 1 screener request**
239
+
240
+ **Budget allocation:**
241
+ - Initial screener: 1 request
242
+ - Detailed analysis: 5 × N stocks = 5N requests
243
+ - **Maximum stocks per run**: (250 - 1) / 5 = ~49 stocks
244
+
245
+ **Script default**: Analyzes first 100 candidates but typically finds ~20-30 that pass all criteria
246
+
247
+ ### Best Practices
248
+
249
+ 1. **Run during off-peak hours**: Lower chance of rate limits
250
+ 2. **Space out runs**: Once daily or weekly, not multiple times per hour
251
+ 3. **Cache results**: Save JSON output and analyze locally
252
+ 4. **Upgrade if needed**: If screening large universes frequently, consider paid tier
253
+
254
+ ## Error Handling
255
+
256
+ ### Common Errors
257
+
258
+ **1. Invalid API Key**
259
+ ```json
260
+ {
261
+ "Error Message": "Invalid API KEY. Please retry or visit our documentation."
262
+ }
263
+ ```
264
+ **Solution**: Check API key, verify it's active in FMP dashboard
265
+
266
+ **2. Rate Limit Exceeded (429)**
267
+ ```json
268
+ {
269
+ "Error Message": "You have exceeded the rate limit. Please wait."
270
+ }
271
+ ```
272
+ **Solution**: Script automatically retries after 60 seconds
273
+
274
+ **3. Symbol Not Found**
275
+ ```json
276
+ {
277
+ "Error Message": "Invalid ticker symbol"
278
+ }
279
+ ```
280
+ **Solution**: Script skips symbol and continues (expected for delisted/invalid tickers)
281
+
282
+ **4. Insufficient Data**
283
+ - Empty array returned for financial statements
284
+ **Solution**: Script skips symbol (common for newly listed stocks or incomplete data)
285
+
286
+ ### Debugging
287
+
288
+ **Check request count:**
289
+ ```bash
290
+ # Count API calls in script output
291
+ python3 scripts/screen_dividend_stocks.py 2>&1 | grep "Analyzing" | wc -l
292
+ ```
293
+
294
+ **Verbose mode (add to script if needed):**
295
+ ```python
296
+ import logging
297
+ logging.basicConfig(level=logging.DEBUG)
298
+ ```
299
+
300
+ ## Data Quality Considerations
301
+
302
+ ### Data Freshness
303
+
304
+ - **Annual statements**: Updated after fiscal year end (delays possible)
305
+ - **Quarterly data**: Available ~1-2 months after quarter end
306
+ - **Real-time prices**: Updated during market hours
307
+ - **Dividend history**: Updated after declaration/payment
308
+
309
+ ### Data Gaps
310
+
311
+ Some stocks may have:
312
+ - **Incomplete history**: < 4 years of data (newly public companies)
313
+ - **Missing dividends**: Not all dividend-paying stocks report via API
314
+ - **Inconsistent metrics**: Different accounting standards, restatements
315
+
316
+ **Script behavior**: Skips stocks with insufficient data (requires 4+ years)
317
+
318
+ ### Data Accuracy
319
+
320
+ FMP sources data from:
321
+ - SEC EDGAR filings (US companies)
322
+ - Company investor relations
323
+ - Exchange data feeds
324
+
325
+ **Note**: Always verify critical investment decisions with company filings (10-K, 10-Q)
326
+
327
+ ## API Documentation
328
+
329
+ **Official Docs**: https://financialmodelingprep.com/developer/docs
330
+
331
+ **Key Sections:**
332
+ - Stock Fundamentals API
333
+ - Stock Screener API
334
+ - Historical Dividend API
335
+ - Ratios API
336
+
337
+ **Support**: support@financialmodelingprep.com
338
+
339
+ ## Alternative Data Sources
340
+
341
+ If FMP limits are restrictive:
342
+
343
+ 1. **Alpha Vantage**: Free tier, 500 requests/day
344
+ 2. **Yahoo Finance (yfinance)**: Free, unlimited (but less reliable)
345
+ 3. **Quandl/Nasdaq Data Link**: Free tier available
346
+ 4. **IEX Cloud**: Free tier, 50k messages/month
347
+
348
+ **Note**: Alternative sources may require script modifications for different data formats.
@@ -0,0 +1,315 @@
1
+ # Value Dividend Stock Screening Methodology
2
+
3
+ ## Overview
4
+
5
+ This screening methodology identifies high-quality dividend stocks that combine:
6
+ - **Value characteristics**: Reasonable valuations (low P/E, P/B)
7
+ - **Income generation**: Attractive dividend yields (>=3.5%)
8
+ - **Growth profile**: Consistent dividend, revenue, and EPS growth
9
+ - **Quality metrics**: Strong profitability, financial health, and dividend sustainability
10
+
11
+ ## Screening Criteria
12
+
13
+ ### Phase 1: Initial Quantitative Filters
14
+
15
+ #### 1. Dividend Yield >= 3.5%
16
+ **Rationale**: Provides meaningful income above typical market yields (S&P 500 average: ~1.5-2%)
17
+
18
+ **Calculation**:
19
+ ```
20
+ Dividend Yield = (Annual Dividends per Share / Current Stock Price) × 100
21
+ ```
22
+
23
+ **Threshold Logic**:
24
+ - 3.5%+ provides attractive income
25
+ - Not so high as to signal dividend risk (>8% often unsustainable)
26
+ - Balances income and growth potential
27
+
28
+ #### 2. P/E Ratio <= 20
29
+ **Rationale**: Identifies stocks trading at reasonable multiples relative to earnings
30
+
31
+ **Calculation**:
32
+ ```
33
+ P/E Ratio = Market Price per Share / Earnings per Share (TTM)
34
+ ```
35
+
36
+ **Threshold Logic**:
37
+ - S&P 500 historical average: ~15-18x
38
+ - P/E <= 20 indicates value territory
39
+ - Excludes overvalued growth stocks
40
+ - Focuses on mature, profitable companies
41
+
42
+ #### 3. P/B Ratio <= 2.0
43
+ **Rationale**: Ensures stock price is reasonable relative to book value
44
+
45
+ **Calculation**:
46
+ ```
47
+ P/B Ratio = Market Price per Share / Book Value per Share
48
+ ```
49
+
50
+ **Threshold Logic**:
51
+ - P/B <= 2.0 suggests reasonable valuation
52
+ - Avoids paying excessive premium over net assets
53
+ - Particularly relevant for asset-heavy businesses
54
+
55
+ ### Phase 2: Growth Quality Filters
56
+
57
+ #### 4. Dividend Growth: 3-Year CAGR >= 5%
58
+ **Rationale**: Identifies companies with consistent dividend-raising track record
59
+
60
+ **Calculation**:
61
+ ```
62
+ Dividend CAGR = [(End Dividend / Start Dividend)^(1/3) - 1] × 100
63
+ ```
64
+
65
+ **Threshold Logic**:
66
+ - 5% annual growth compounds meaningfully over time
67
+ - Demonstrates management confidence in cash flows
68
+ - Protects against inflation (long-term average: 2-3%)
69
+ - Signals business health and shareholder commitment
70
+
71
+ **Consistency Check**:
72
+ - No dividend cuts in the period
73
+ - Allows one year of flat dividends (economic cycles)
74
+ - Cuts signal financial stress or strategy changes
75
+
76
+ #### 5. Revenue Growth: Positive 3-Year Trend
77
+ **Rationale**: Confirms top-line growth supports dividend sustainability
78
+
79
+ **Evaluation**:
80
+ - Revenue in Year 3 > Revenue in Year 1
81
+ - Allows one year of decline (cyclical businesses, one-time events)
82
+ - Overall upward trajectory required
83
+
84
+ **Why Not a Fixed %**:
85
+ - Different industries have different growth rates
86
+ - Mature dividend stocks may have modest but stable growth
87
+ - Focus is on **trend direction** rather than absolute rate
88
+
89
+ #### 6. EPS Growth: Positive 3-Year Trend
90
+ **Rationale**: Ensures earnings power is expanding, not eroding
91
+
92
+ **Evaluation**:
93
+ - EPS in Year 3 > EPS in Year 1
94
+ - Allows one year of decline
95
+ - Overall upward trajectory required
96
+
97
+ **Significance**:
98
+ - Earnings fund dividends
99
+ - EPS growth = potential for future dividend increases
100
+ - Distinguishes quality companies from dividend traps
101
+
102
+ ### Phase 3: Quality & Sustainability Analysis
103
+
104
+ #### 7. Dividend Sustainability Metrics
105
+
106
+ **A. Payout Ratio**
107
+ ```
108
+ Payout Ratio = (Dividends Paid / Net Income) × 100
109
+ ```
110
+
111
+ **Healthy Range**: 30-70%
112
+ - < 30%: Conservative, room for growth
113
+ - 30-70%: Balanced, sustainable
114
+ - > 80%: Caution, limited flexibility
115
+
116
+ **B. Free Cash Flow Payout Ratio**
117
+ ```
118
+ FCF Payout Ratio = (Dividends Paid / Free Cash Flow) × 100
119
+ where FCF = Operating Cash Flow - Capital Expenditures
120
+ ```
121
+
122
+ **Healthy Range**: < 100%
123
+ - FCF is the true source of sustainable dividends
124
+ - < 100%: Dividends covered by actual cash generation
125
+ - > 100%: Unsustainable, funded by debt or asset sales
126
+
127
+ **Sustainability Flag**: ✅ if Payout Ratio < 80% AND FCF Payout Ratio < 100%
128
+
129
+ #### 8. Financial Health Metrics
130
+
131
+ **A. Debt-to-Equity Ratio**
132
+ ```
133
+ D/E Ratio = Total Debt / Shareholders' Equity
134
+ ```
135
+
136
+ **Healthy Range**: < 2.0
137
+ - Lower is generally better
138
+ - Varies by industry (utilities typically higher)
139
+ - < 2.0: Reasonable leverage, not overleveraged
140
+
141
+ **B. Current Ratio**
142
+ ```
143
+ Current Ratio = Current Assets / Current Liabilities
144
+ ```
145
+
146
+ **Healthy Range**: > 1.0 (ideally > 1.5)
147
+ - > 1.0: Can cover short-term obligations
148
+ - > 1.5: Strong liquidity cushion
149
+ - < 1.0: Liquidity risk
150
+
151
+ **Health Flag**: ✅ if D/E < 2.0 AND Current Ratio > 1.0
152
+
153
+ #### 9. Quality Score (0-100)
154
+
155
+ **Components**:
156
+
157
+ **A. Return on Equity (ROE)** - Max 50 points
158
+ ```
159
+ ROE = Net Income / Shareholders' Equity
160
+
161
+ Points = min((ROE% / 20%) × 50, 50)
162
+ ```
163
+
164
+ - 20%+ ROE = 50 points (excellent capital efficiency)
165
+ - 10% ROE = 25 points (average)
166
+ - < 5% ROE = poor capital returns
167
+
168
+ **B. Net Profit Margin** - Max 50 points
169
+ ```
170
+ Profit Margin = (Net Income / Revenue) × 100
171
+
172
+ Points = min((Margin% / 15%) × 50, 50)
173
+ ```
174
+
175
+ - 15%+ margin = 50 points (highly profitable)
176
+ - 7.5% margin = 25 points (average)
177
+ - < 3% margin = low profitability
178
+
179
+ **Quality Score Interpretation**:
180
+ - 80-100: Excellent quality (high profitability, efficiency)
181
+ - 60-79: Good quality
182
+ - 40-59: Average quality
183
+ - < 40: Below average quality
184
+
185
+ ## Composite Scoring System
186
+
187
+ ### Purpose
188
+ Rank stocks by overall attractiveness, balancing value, growth, and quality.
189
+
190
+ ### Score Components (Total: 100 points)
191
+
192
+ 1. **Dividend Growth** (Max 20 points)
193
+ - 10%+ CAGR = 20 points
194
+ - 5% CAGR = 10 points
195
+ - Linear scaling
196
+
197
+ 2. **Revenue Growth** (Max 15 points)
198
+ - 10%+ CAGR = 15 points
199
+ - 5% CAGR = 7.5 points
200
+ - Linear scaling
201
+
202
+ 3. **EPS Growth** (Max 15 points)
203
+ - 15%+ CAGR = 15 points
204
+ - 7.5% CAGR = 7.5 points
205
+ - Linear scaling
206
+
207
+ 4. **Dividend Sustainability** (10 points)
208
+ - Pass (sustainable) = 10 points
209
+ - Fail = 0 points
210
+
211
+ 5. **Financial Health** (10 points)
212
+ - Pass (healthy) = 10 points
213
+ - Fail = 0 points
214
+
215
+ 6. **Quality Score** (Max 30 points)
216
+ - Quality Score × 0.3
217
+ - 100 quality = 30 points
218
+ - 50 quality = 15 points
219
+
220
+ ### Interpretation
221
+
222
+ - **80-100**: Exceptional (high growth, quality, sustainability)
223
+ - **60-79**: Strong (solid all-around profile)
224
+ - **40-59**: Good (meets criteria, some trade-offs)
225
+ - **20-39**: Acceptable (passes filters but lower quality)
226
+ - **< 20**: Marginal (barely meets criteria)
227
+
228
+ ## Investment Philosophy
229
+
230
+ ### Why This Approach Works
231
+
232
+ 1. **Value + Growth + Quality**: Combines three proven factor premiums
233
+ 2. **Dividend Focus**: Signals management discipline and cash generation
234
+ 3. **Sustainability Screen**: Avoids dividend traps and value traps
235
+ 4. **Growth Requirements**: Ensures businesses are healthy, not declining
236
+ 5. **Quality Filters**: Identifies durable competitive advantages
237
+
238
+ ### What This Strategy Avoids
239
+
240
+ 1. **Dividend Traps**: High yields from struggling companies (growth filters catch these)
241
+ 2. **Value Traps**: Cheap stocks that stay cheap (quality metrics catch these)
242
+ 3. **Overvaluation**: Growth stocks trading at expensive multiples (P/E, P/B filters)
243
+ 4. **Financial Risk**: Overleveraged or illiquid companies (health metrics)
244
+
245
+ ### Ideal Candidate Profile
246
+
247
+ A stock scoring highly in this screen typically:
248
+ - Operates in stable, mature industry
249
+ - Has sustainable competitive advantage (moat)
250
+ - Generates consistent free cash flow
251
+ - Committed to shareholder returns (dividends)
252
+ - Trades at reasonable valuation (not hyped)
253
+ - Growing modestly but consistently
254
+ - Strong balance sheet and profitability
255
+
256
+ Examples: Dividend Aristocrats, quality REITs (if included), stable utilities, consumer staples leaders
257
+
258
+ ## Usage Notes
259
+
260
+ ### Limitations
261
+
262
+ 1. **Market Cap Bias**: Typically finds large/mid-cap stocks (small-caps less likely to meet all criteria)
263
+ 2. **Sector Bias**: May overweight certain sectors (utilities, consumer staples, REITs)
264
+ 3. **Excludes High Growth**: Tech and growth stocks generally won't qualify (by design)
265
+ 4. **Historical Performance**: Past growth doesn't guarantee future results
266
+ 5. **Economic Sensitivity**: Some qualified stocks may be cyclical
267
+
268
+ ### Best Practices
269
+
270
+ 1. **Diversification**: Don't concentrate in top 5; spread across top 20
271
+ 2. **Sector Balance**: Monitor sector exposure, avoid overconcentration
272
+ 3. **Rescreen Regularly**: Quarterly or semi-annually; fundamentals change
273
+ 4. **Valuation Check**: Just because it passed doesn't mean buy at any price
274
+ 5. **Dividend Safety**: Monitor payout ratios and cash flows quarterly
275
+ 6. **Hold for Long Term**: This is a quality dividend growth strategy, not trading
276
+
277
+ ### When to Sell
278
+
279
+ 1. **Dividend Cut**: Immediate red flag; review business health
280
+ 2. **Deteriorating Fundamentals**: Revenue/EPS declining multiple quarters
281
+ 3. **Payout Ratio > 100%**: Dividend unsustainable
282
+ 4. **Debt Spike**: Leverage increasing significantly without clear reason
283
+ 5. **Better Opportunities**: Capital allocation to higher-scoring stocks
284
+ 6. **Valuation Extreme**: Stock becomes significantly overvalued (P/E > 30, for example)
285
+
286
+ ## Historical Context
287
+
288
+ ### Why 3.5% Yield Threshold?
289
+
290
+ - **US 10-Year Treasury**: Historically 2-4%
291
+ - **S&P 500 Dividend Yield**: 1.5-2%
292
+ - **Equity Risk Premium**: 3.5% provides ~1.5-2% premium over Treasuries
293
+ - **Tax Efficiency**: Qualified dividends taxed favorably vs. bonds
294
+
295
+ ### Why P/E <= 20?
296
+
297
+ - **S&P 500 Historical Average**: ~15-18x
298
+ - **Fair Value Range**: 15-20x for mature, stable businesses
299
+ - **Margin of Safety**: Leaves room for multiple compression
300
+ - **Cyclically Adjusted**: Not overpaying at peak earnings
301
+
302
+ ### Why 5% Dividend CAGR?
303
+
304
+ - **Inflation Protection**: Beats long-term inflation (2-3%)
305
+ - **Real Income Growth**: Provides rising purchasing power
306
+ - **Achievable**: Sustainable for quality companies
307
+ - **Compound Power**: 5% doubles in 14.4 years
308
+
309
+ ## References
310
+
311
+ - Benjamin Graham: "The Intelligent Investor" (value investing principles)
312
+ - Jeremy Siegel: "The Future for Investors" (dividend growth research)
313
+ - CFA Institute: Equity Valuation standards
314
+ - S&P Dow Jones Indices: Dividend Aristocrats methodology
315
+ - Morningstar: Dividend Sustainability Research