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,603 @@
1
+ # Portfolio Risk Metrics
2
+
3
+ This document provides comprehensive guidance on measuring and interpreting portfolio risk using standard financial metrics.
4
+
5
+ ## Overview
6
+
7
+ Portfolio risk assessment requires both quantitative metrics and qualitative judgment. This guide covers:
8
+
9
+ 1. Volatility-based metrics (standard deviation, beta)
10
+ 2. Downside risk measures (maximum drawdown, semi-deviation)
11
+ 3. Risk-adjusted return metrics (Sharpe ratio, Sortino ratio)
12
+ 4. Concentration and correlation metrics
13
+ 5. Interpretation frameworks for different investor types
14
+
15
+ ## Volatility Metrics
16
+
17
+ ### Standard Deviation (σ)
18
+
19
+ **Definition:** Measure of how much returns vary from the average return over time.
20
+
21
+ **Formula:**
22
+ ```
23
+ σ = √[Σ(R_i - R_avg)² / (n-1)]
24
+
25
+ Where:
26
+ R_i = Return in period i
27
+ R_avg = Average return
28
+ n = Number of periods
29
+ ```
30
+
31
+ **Interpretation:**
32
+
33
+ | Annual Std Dev | Risk Level | Typical Assets |
34
+ |---------------|------------|----------------|
35
+ | **<5%** | Very Low | Cash, short-term bonds |
36
+ | **5-10%** | Low | Bond portfolios, conservative balanced |
37
+ | **10-15%** | Moderate | Balanced portfolios (60/40), dividend stocks |
38
+ | **15-20%** | High | Stock portfolios, growth stocks |
39
+ | **>20%** | Very High | Small caps, emerging markets, sector funds |
40
+
41
+ **S&P 500 Historical:** ~15-18% annualized standard deviation
42
+
43
+ **Usage in Portfolio Analysis:**
44
+ - Compare portfolio volatility to benchmarks
45
+ - Assess if volatility matches investor risk tolerance
46
+ - Track changes in volatility over time (increasing volatility = warning sign)
47
+
48
+ **Limitations:**
49
+ - Assumes normal distribution (actual returns have "fat tails")
50
+ - Treats upside and downside volatility equally
51
+ - Based on historical data (may not predict future)
52
+
53
+ ### Beta (β)
54
+
55
+ **Definition:** Measure of portfolio sensitivity to market movements.
56
+
57
+ **Formula:**
58
+ ```
59
+ β = Cov(R_portfolio, R_market) / Var(R_market)
60
+
61
+ Or estimated as:
62
+ β = (Σw_i × β_i)
63
+
64
+ Where:
65
+ w_i = Weight of position i
66
+ β_i = Beta of position i
67
+ ```
68
+
69
+ **Interpretation:**
70
+
71
+ | Beta | Market Sensitivity | Portfolio Behavior |
72
+ |------|-------------------|-------------------|
73
+ | **β < 0.5** | Very low | Defensive, low correlation to market |
74
+ | **β = 0.5-0.8** | Low | Below-market volatility, defensive tilt |
75
+ | **β = 0.8-1.0** | Moderate | Slightly less volatile than market |
76
+ | **β = 1.0** | Market | Moves in line with market (index-like) |
77
+ | **β = 1.0-1.3** | Moderate-high | More volatile than market |
78
+ | **β = 1.3-1.6** | High | Significantly more volatile |
79
+ | **β > 1.6** | Very high | Extremely volatile, aggressive |
80
+
81
+ **Typical Security Betas:**
82
+ - Utilities: 0.4-0.7
83
+ - Consumer Staples: 0.5-0.8
84
+ - Healthcare: 0.8-1.1
85
+ - S&P 500 Index: 1.0
86
+ - Technology: 1.1-1.5
87
+ - Small-cap growth: 1.3-2.0
88
+ - Leveraged ETFs: 2.0-3.0
89
+
90
+ **Example Portfolio Beta Calculation:**
91
+
92
+ Portfolio:
93
+ - 40% SPY (S&P 500 ETF, β=1.0): 0.40 × 1.0 = 0.40
94
+ - 30% QQQ (Nasdaq ETF, β=1.2): 0.30 × 1.2 = 0.36
95
+ - 20% VNQ (REIT ETF, β=0.9): 0.20 × 0.9 = 0.18
96
+ - 10% TLT (Bond ETF, β=0.3): 0.10 × 0.3 = 0.03
97
+
98
+ **Portfolio Beta** = 0.40 + 0.36 + 0.18 + 0.03 = **0.97**
99
+
100
+ **Interpretation:** Portfolio expected to move 97% as much as the market (slightly defensive).
101
+
102
+ **Usage:**
103
+ - Assess portfolio aggressiveness
104
+ - Predict portfolio behavior in market moves (β=1.2 means 12% drop when market drops 10%)
105
+ - Identify need for hedging or rebalancing
106
+
107
+ **Limitations:**
108
+ - Beta changes over time
109
+ - Based on historical correlations
110
+ - May not hold in extreme markets
111
+
112
+ ### Semi-Deviation
113
+
114
+ **Definition:** Standard deviation of returns below the mean (focuses on downside volatility only).
115
+
116
+ **Formula:**
117
+ ```
118
+ Semi-deviation = √[Σ(R_i - R_avg)² for all R_i < R_avg / n]
119
+ ```
120
+
121
+ **Interpretation:**
122
+ - Lower semi-deviation = better downside protection
123
+ - Useful for risk-averse investors who care more about losses than gains
124
+ - Typically 60-70% of standard deviation for symmetric distributions
125
+
126
+ **Usage:**
127
+ - Evaluate downside risk specifically
128
+ - Compare defensive vs aggressive strategies
129
+ - Input for Sortino ratio (risk-adjusted return metric)
130
+
131
+ ## Downside Risk Metrics
132
+
133
+ ### Maximum Drawdown (MDD)
134
+
135
+ **Definition:** Largest peak-to-trough decline in portfolio value over a specific period.
136
+
137
+ **Formula:**
138
+ ```
139
+ MDD = (Trough Value - Peak Value) / Peak Value
140
+
141
+ Or: MDD = max[(P_peak - P_trough) / P_peak] over all peaks
142
+ ```
143
+
144
+ **Example:**
145
+ - Portfolio peak: $150,000 (March 2020)
146
+ - Portfolio trough: $105,000 (March 2020 crash)
147
+ - MDD = ($105k - $150k) / $150k = **-30%**
148
+
149
+ **Historical Maximum Drawdowns:**
150
+
151
+ | Asset/Portfolio | Max Drawdown | Period |
152
+ |----------------|--------------|--------|
153
+ | S&P 500 | -57% | 2007-2009 (Financial Crisis) |
154
+ | S&P 500 | -34% | 2020 (COVID Crash) |
155
+ | Nasdaq 100 | -83% | 2000-2002 (Tech Bubble) |
156
+ | Nasdaq 100 | -32% | 2021-2022 (Rate Hikes) |
157
+ | 60/40 Portfolio | -32% | 2007-2009 |
158
+ | Treasury Bonds | -48% | 2020-2023 (Rising Rates) |
159
+
160
+ **Risk Tolerance Guide:**
161
+
162
+ | Investor Type | Max Acceptable Drawdown |
163
+ |--------------|------------------------|
164
+ | **Conservative** | -10 to -15% |
165
+ | **Moderate** | -15 to -25% |
166
+ | **Growth** | -25 to -35% |
167
+ | **Aggressive** | -35 to -50% |
168
+
169
+ **Usage:**
170
+ - Assess worst-case historical scenario
171
+ - Compare to investor risk tolerance
172
+ - Set risk management triggers (e.g., hedge if drawdown >20%)
173
+ - Estimate recovery time needed
174
+
175
+ **Recovery Time:**
176
+ - 20% drawdown requires +25% gain to recover
177
+ - 30% drawdown requires +43% gain
178
+ - 50% drawdown requires +100% gain (doubling)
179
+
180
+ ### Current Drawdown
181
+
182
+ **Definition:** Decline from most recent peak to current value.
183
+
184
+ **Formula:**
185
+ ```
186
+ Current Drawdown = (Current Value - Recent Peak Value) / Recent Peak Value
187
+ ```
188
+
189
+ **Example:**
190
+ - Recent peak: $150,000 (last month)
191
+ - Current value: $142,500
192
+ - Current drawdown = ($142.5k - $150k) / $150k = **-5%**
193
+
194
+ **Interpretation:**
195
+
196
+ | Current Drawdown | Status | Action |
197
+ |-----------------|--------|--------|
198
+ | **0%** | At all-time high | Monitor for complacency |
199
+ | **-1% to -5%** | Minor pullback | Normal, no action |
200
+ | **-5% to -10%** | Moderate correction | Review positions, monitor |
201
+ | **-10% to -20%** | Correction | Assess portfolio, consider adjustments |
202
+ | **>-20%** | Bear market territory | Review allocation, consider rebalancing |
203
+
204
+ **Usage:**
205
+ - Real-time risk monitoring
206
+ - Identify when portfolio is under stress
207
+ - Trigger rebalancing or risk reduction
208
+
209
+ ### Value at Risk (VaR)
210
+
211
+ **Definition:** Maximum expected loss over a given time period at a given confidence level.
212
+
213
+ **Example:**
214
+ - 1-month VaR at 95% confidence = $10,000
215
+ - **Interpretation:** 95% confident that portfolio will not lose more than $10,000 in the next month (or: 5% chance of losing more than $10,000)
216
+
217
+ **Calculation Methods:**
218
+
219
+ 1. **Historical VaR:** Use historical return distribution
220
+ 2. **Parametric VaR:** Assume normal distribution, use mean and std dev
221
+ 3. **Monte Carlo VaR:** Simulate thousands of scenarios
222
+
223
+ **Simplified Parametric VaR Formula:**
224
+ ```
225
+ VaR = Portfolio Value × (z-score × σ - μ)
226
+
227
+ Where:
228
+ z-score = 1.65 for 95% confidence, 2.33 for 99% confidence
229
+ σ = Portfolio standard deviation (daily or monthly)
230
+ μ = Expected return (daily or monthly)
231
+ ```
232
+
233
+ **Example Calculation:**
234
+ - Portfolio value: $100,000
235
+ - Annual std dev: 18%
236
+ - Monthly std dev: 18% / √12 = 5.2%
237
+ - Expected monthly return: 0.5%
238
+
239
+ **95% 1-month VaR:**
240
+ ```
241
+ VaR = $100,000 × (1.65 × 5.2% - 0.5%)
242
+ = $100,000 × (8.58% - 0.5%)
243
+ = $100,000 × 8.08%
244
+ = $8,080
245
+ ```
246
+
247
+ **Interpretation:** 95% confident that portfolio will not lose more than $8,080 in the next month.
248
+
249
+ **Usage:**
250
+ - Risk budgeting
251
+ - Setting position limits
252
+ - Regulatory compliance (for institutions)
253
+
254
+ **Limitations:**
255
+ - Assumes historical patterns continue
256
+ - Underestimates tail risk (extreme events)
257
+ - Doesn't tell you about losses beyond VaR threshold
258
+
259
+ ## Risk-Adjusted Return Metrics
260
+
261
+ ### Sharpe Ratio
262
+
263
+ **Definition:** Excess return per unit of risk (reward-to-variability ratio).
264
+
265
+ **Formula:**
266
+ ```
267
+ Sharpe Ratio = (R_portfolio - R_f) / σ_portfolio
268
+
269
+ Where:
270
+ R_portfolio = Portfolio return (annualized)
271
+ R_f = Risk-free rate (typically 10-year Treasury)
272
+ σ_portfolio = Portfolio standard deviation (annualized)
273
+ ```
274
+
275
+ **Example Calculation:**
276
+ - Portfolio return: 12%
277
+ - Risk-free rate: 4%
278
+ - Portfolio std dev: 15%
279
+
280
+ **Sharpe = (12% - 4%) / 15% = 8% / 15% = 0.53**
281
+
282
+ **Interpretation:**
283
+
284
+ | Sharpe Ratio | Quality | Interpretation |
285
+ |--------------|---------|----------------|
286
+ | **< 0** | Poor | Return less than risk-free rate |
287
+ | **0 - 0.5** | Suboptimal | Low excess return for risk taken |
288
+ | **0.5 - 1.0** | Good | Adequate risk-adjusted return |
289
+ | **1.0 - 2.0** | Very Good | Strong risk-adjusted return |
290
+ | **> 2.0** | Excellent | Exceptional risk-adjusted return |
291
+
292
+ **Typical Sharpe Ratios:**
293
+ - S&P 500 (long-term): 0.3-0.5
294
+ - Well-managed equity portfolio: 0.5-0.8
295
+ - Exceptional hedge fund: 1.0-1.5
296
+ - Market-neutral strategy: 1.5-2.0+
297
+
298
+ **Usage:**
299
+ - Compare different portfolios or strategies
300
+ - Assess if additional risk is being compensated
301
+ - Benchmark against market (S&P 500 Sharpe)
302
+
303
+ **Limitations:**
304
+ - Penalizes upside volatility equally with downside
305
+ - Assumes normal distribution
306
+ - Sensitive to time period chosen
307
+
308
+ ### Sortino Ratio
309
+
310
+ **Definition:** Like Sharpe ratio, but uses downside deviation instead of total volatility.
311
+
312
+ **Formula:**
313
+ ```
314
+ Sortino Ratio = (R_portfolio - R_f) / Semi-deviation
315
+
316
+ Where semi-deviation only counts returns below risk-free rate
317
+ ```
318
+
319
+ **Example:**
320
+ - Portfolio return: 12%
321
+ - Risk-free rate: 4%
322
+ - Semi-deviation (downside only): 10%
323
+
324
+ **Sortino = (12% - 4%) / 10% = 0.80**
325
+
326
+ **Interpretation:**
327
+ - Higher Sortino = better downside-adjusted returns
328
+ - Sortino typically higher than Sharpe (since semi-deviation < standard deviation)
329
+ - Preferred metric for risk-averse investors
330
+
331
+ **Usage:**
332
+ - Evaluate strategies with asymmetric returns (e.g., option strategies)
333
+ - Focus on downside protection
334
+ - Compare portfolios with different return distributions
335
+
336
+ ### Calmar Ratio
337
+
338
+ **Definition:** Return relative to maximum drawdown.
339
+
340
+ **Formula:**
341
+ ```
342
+ Calmar Ratio = Annualized Return / |Max Drawdown|
343
+ ```
344
+
345
+ **Example:**
346
+ - Annualized return: 10%
347
+ - Max drawdown: -25%
348
+
349
+ **Calmar = 10% / 25% = 0.40**
350
+
351
+ **Interpretation:**
352
+
353
+ | Calmar Ratio | Quality |
354
+ |--------------|---------|
355
+ | **< 0.5** | Poor (high drawdown relative to return) |
356
+ | **0.5 - 1.0** | Acceptable |
357
+ | **1.0 - 2.0** | Good |
358
+ | **> 2.0** | Excellent (low drawdown, high return) |
359
+
360
+ **Usage:**
361
+ - Focus on worst-case scenarios
362
+ - Evaluate hedge funds and absolute return strategies
363
+ - Assess recovery potential
364
+
365
+ ## Concentration and Correlation Metrics
366
+
367
+ ### Concentration Metrics
368
+
369
+ **1. Top-N Concentration**
370
+
371
+ Percentage of portfolio in largest N positions:
372
+
373
+ ```
374
+ Top-N % = (Σ Top N Position Values) / Total Portfolio Value
375
+ ```
376
+
377
+ **Guidelines:**
378
+ - Top 1 position: <10% ideal, <15% maximum
379
+ - Top 5 positions: <40% ideal, <50% maximum
380
+ - Top 10 positions: <60% ideal, <70% maximum
381
+
382
+ **2. Herfindahl-Hirschman Index (HHI)**
383
+
384
+ (See diversification-principles.md for detailed explanation)
385
+
386
+ ```
387
+ HHI = Σ(Weight_i × 100)²
388
+ ```
389
+
390
+ **Quick Assessment:**
391
+ - HHI < 1000: Well-diversified
392
+ - HHI 1000-1800: Moderately concentrated
393
+ - HHI > 1800: High concentration
394
+
395
+ ### Correlation Metrics
396
+
397
+ **Average Pairwise Correlation**
398
+
399
+ Average correlation between all position pairs:
400
+
401
+ ```
402
+ Avg Correlation = Σ(ρ_ij) / Number of pairs
403
+
404
+ Where:
405
+ ρ_ij = correlation between positions i and j
406
+ Number of pairs = n(n-1)/2 for n positions
407
+ ```
408
+
409
+ **Example (5 positions):**
410
+ - 10 pairs total
411
+ - Sum of correlations: 5.2
412
+ - Average: 5.2 / 10 = **0.52**
413
+
414
+ **Interpretation:**
415
+
416
+ | Avg Correlation | Diversification Quality |
417
+ |----------------|------------------------|
418
+ | **< 0.3** | Excellent (low correlation) |
419
+ | **0.3 - 0.5** | Good |
420
+ | **0.5 - 0.7** | Moderate (typical equity portfolio) |
421
+ | **> 0.7** | Poor (positions move together) |
422
+
423
+ ## Risk Scoring Framework
424
+
425
+ ### Composite Risk Score (0-100)
426
+
427
+ Combine multiple metrics into single score:
428
+
429
+ **Scoring Formula:**
430
+
431
+ ```
432
+ Risk Score =
433
+ (Volatility Score × 30%) +
434
+ (Beta Score × 20%) +
435
+ (Drawdown Score × 25%) +
436
+ (Concentration Score × 25%)
437
+ ```
438
+
439
+ **Individual Component Scores (0-100):**
440
+
441
+ **1. Volatility Score:**
442
+ - <10% std dev: 0-20 points (low risk)
443
+ - 10-15% std dev: 20-40 points
444
+ - 15-20% std dev: 40-60 points
445
+ - 20-25% std dev: 60-80 points
446
+ - >25% std dev: 80-100 points (very high risk)
447
+
448
+ **2. Beta Score:**
449
+ - β < 0.8: 0-20 points
450
+ - β 0.8-1.0: 20-40 points
451
+ - β 1.0-1.3: 40-60 points
452
+ - β 1.3-1.6: 60-80 points
453
+ - β > 1.6: 80-100 points
454
+
455
+ **3. Drawdown Score:**
456
+ - Max DD <10%: 0-20 points
457
+ - Max DD 10-20%: 20-40 points
458
+ - Max DD 20-30%: 40-60 points
459
+ - Max DD 30-40%: 60-80 points
460
+ - Max DD >40%: 80-100 points
461
+
462
+ **4. Concentration Score:**
463
+ - HHI <1000: 0-20 points
464
+ - HHI 1000-1500: 20-40 points
465
+ - HHI 1500-2000: 40-60 points
466
+ - HHI 2000-2500: 60-80 points
467
+ - HHI >2500: 80-100 points
468
+
469
+ **Composite Risk Score Interpretation:**
470
+
471
+ | Score | Risk Level | Appropriate For |
472
+ |-------|-----------|-----------------|
473
+ | **0-20** | Very Low | Ultra-conservative, retirees |
474
+ | **20-40** | Low | Conservative investors |
475
+ | **40-60** | Moderate | Balanced investors |
476
+ | **60-80** | High | Growth-oriented investors |
477
+ | **80-100** | Very High | Aggressive, long time horizon |
478
+
479
+ ## Practical Risk Assessment Workflow
480
+
481
+ ### Step 1: Calculate Basic Metrics
482
+
483
+ 1. **Portfolio Beta** (weighted average of position betas)
484
+ 2. **Standard Deviation** (if historical data available, else estimate)
485
+ 3. **Maximum Drawdown** (from portfolio history)
486
+ 4. **Current Drawdown** (vs recent peak)
487
+ 5. **Top-5 Concentration** (sum of 5 largest positions)
488
+ 6. **HHI** (concentration index)
489
+
490
+ ### Step 2: Compare to Benchmarks
491
+
492
+ **Against S&P 500:**
493
+ - Is beta higher or lower than 1.0?
494
+ - Is volatility higher or lower than ~16%?
495
+
496
+ **Against Risk Profile Targets:**
497
+ - Does risk level match investor's stated risk tolerance?
498
+ - Is maximum drawdown acceptable?
499
+
500
+ ### Step 3: Identify Risk Concentrations
501
+
502
+ **Position-Level:**
503
+ - Any position >15%? → Immediate trim
504
+ - Top 5 >50%? → High concentration
505
+
506
+ **Sector-Level:**
507
+ - Any sector >35%? → Concentration risk
508
+ - Any sector missing? → Diversification gap
509
+
510
+ **Factor-Level:**
511
+ - All high-beta growth stocks? → Factor concentration
512
+ - All value stocks? → Style concentration
513
+
514
+ ### Step 4: Risk-Adjusted Performance
515
+
516
+ 1. **Calculate Sharpe Ratio** (if return history available)
517
+ 2. **Compare to benchmark:** Is portfolio delivering better risk-adjusted returns?
518
+ 3. **Calculate Sortino Ratio** for downside focus
519
+ 4. **Assess if excess risk is being rewarded**
520
+
521
+ ### Step 5: Generate Risk Assessment
522
+
523
+ **Summary Format:**
524
+
525
+ ```markdown
526
+ ## Portfolio Risk Assessment
527
+
528
+ **Overall Risk Profile:** [Conservative / Moderate / Growth / Aggressive]
529
+
530
+ **Risk Score:** XX/100 ([Low / Medium / High / Very High])
531
+
532
+ **Key Metrics:**
533
+ - Portfolio Beta: X.XX (vs market 1.00)
534
+ - Estimated Volatility: XX% annualized
535
+ - Maximum Drawdown: -XX% (acceptable for [risk profile])
536
+ - Current Drawdown: -X% (vs recent peak)
537
+
538
+ **Risk Concentrations:**
539
+ - Top 5 positions: XX% of portfolio ([OK / High / Excessive])
540
+ - Largest single position: [SYMBOL] at XX% ([OK / Trim recommended])
541
+ - HHI: XXXX ([Well-diversified / Concentrated])
542
+
543
+ **Risk-Adjusted Performance:**
544
+ - Sharpe Ratio: X.XX ([Below / In-line / Above] market)
545
+ - Sortino Ratio: X.XX
546
+ - Performance for risk taken: [Excellent / Good / Fair / Poor]
547
+
548
+ **Risk Recommendations:**
549
+ - [List specific actions to reduce risk if needed]
550
+ ```
551
+
552
+ ## Risk Management Guidelines
553
+
554
+ ### When to Reduce Risk
555
+
556
+ **Signals:**
557
+ - Portfolio beta >1.5 for moderate risk tolerance investor
558
+ - Max drawdown exceeds investor's tolerance
559
+ - Single position >15% of portfolio
560
+ - Sector concentration >40%
561
+ - Current drawdown >20% (entering bear market)
562
+
563
+ **Actions:**
564
+ - Trim concentrated positions
565
+ - Add defensive sectors (Utilities, Staples, Healthcare)
566
+ - Increase bond allocation
567
+ - Raise cash levels
568
+
569
+ ### When to Increase Risk
570
+
571
+ **Signals:**
572
+ - Portfolio beta <0.7 for growth-oriented investor
573
+ - Cash position >15% (unless intentionally defensive)
574
+ - Underperforming benchmark significantly with lower volatility
575
+ - Long time horizon with conservative allocation
576
+
577
+ **Actions:**
578
+ - Add growth sectors (Technology, Consumer Discretionary)
579
+ - Increase equity allocation
580
+ - Deploy excess cash
581
+ - Add higher-conviction positions
582
+
583
+ ## Summary
584
+
585
+ **Key Takeaways:**
586
+
587
+ 1. **Multiple metrics needed:** No single metric tells the full story
588
+ 2. **Volatility measures:** Standard deviation and beta for overall risk
589
+ 3. **Downside risk:** Maximum drawdown, current drawdown, VaR for worst-case scenarios
590
+ 4. **Risk-adjusted returns:** Sharpe and Sortino ratios for performance quality
591
+ 5. **Concentration:** HHI and top-N positions for diversification assessment
592
+ 6. **Match to investor:** Risk metrics must align with risk tolerance and goals
593
+ 7. **Monitor continuously:** Risk characteristics change as markets move
594
+
595
+ **Practical Application:**
596
+
597
+ - Calculate key metrics quarterly
598
+ - Compare to investor risk tolerance
599
+ - Identify concentrations and gaps
600
+ - Adjust allocation to maintain target risk level
601
+ - Document risk assessment in portfolio reports
602
+
603
+ **Remember:** Risk metrics are tools, not absolute truth. Use judgment and consider qualitative factors (market environment, economic outlook, investor circumstances) alongside quantitative metrics.