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,477 @@
1
+ # Position Evaluation Framework
2
+
3
+ This document provides a systematic framework for evaluating individual positions within a portfolio to determine appropriate actions: HOLD, ADD, TRIM, or SELL.
4
+
5
+ ## Overview
6
+
7
+ Position evaluation requires both quantitative analysis and qualitative judgment. This framework helps answer:
8
+
9
+ 1. Is the original investment thesis still intact?
10
+ 2. Is the position appropriately sized given current conviction and risk?
11
+ 3. Has the valuation become stretched or attractive?
12
+ 4. What is the expected forward return vs risk?
13
+ 5. Are there better opportunities elsewhere?
14
+
15
+ ## Four-Factor Evaluation Model
16
+
17
+ Every position should be evaluated across four dimensions:
18
+
19
+ ### 1. Thesis Validation (40% weight)
20
+ - Is the investment thesis playing out as expected?
21
+ - Have fundamentals improved, remained stable, or deteriorated?
22
+ - Are growth prospects intact or changed?
23
+
24
+ ### 2. Valuation Assessment (30% weight)
25
+ - Is the stock overvalued, fairly valued, or undervalued?
26
+ - How does current valuation compare to historical range?
27
+ - How does it compare to peer group?
28
+
29
+ ### 3. Position Sizing (20% weight)
30
+ - Is current position size appropriate?
31
+ - Does it match conviction level?
32
+ - Is it creating concentration risk?
33
+
34
+ ### 4. Relative Opportunity (10% weight)
35
+ - Are there better uses of capital?
36
+ - Would selling this improve portfolio?
37
+ - Cost of holding vs deploying elsewhere
38
+
39
+ ## Detailed Evaluation Framework
40
+
41
+ ### Thesis Validation Analysis
42
+
43
+ **Original Thesis Documentation:**
44
+
45
+ For each position, document the original investment thesis:
46
+
47
+ **Example Thesis Template:**
48
+ ```
49
+ Symbol: AAPL
50
+ Initial Thesis (Date: Jan 2023):
51
+ - Services revenue growing 15%+ annually
52
+ - Installed base expansion (1.8B → 2.0B devices)
53
+ - Margin expansion from services mix shift
54
+ - Capital return program (dividends + buybacks)
55
+ - Valuation: P/E 24x vs historical 18x, justified by services growth
56
+
57
+ Entry Price: $145
58
+ Target Price: $180 (12-month)
59
+ Expected Return: 24% (+2% dividend = 26% total)
60
+ Risk Factors: iPhone demand slowdown, China regulatory risk
61
+ ```
62
+
63
+ **Thesis Validation Checklist:**
64
+
65
+ - [ ] **Revenue/Earnings Growth:** On track vs expectations?
66
+ - Expected: +15% revenue growth
67
+ - Actual: +12% (slightly below, acceptable / -5% (concerning))
68
+
69
+ - [ ] **Margins:** Improving, stable, or declining?
70
+ - Expected: Expanding by 100bps
71
+ - Actual: Expanded 80bps (close enough / Contracted 50bps (negative))
72
+
73
+ - [ ] **Competitive Position:** Strengthening or weakening?
74
+ - Market share trends
75
+ - New product success/failures
76
+ - Competitor actions
77
+
78
+ - [ ] **Management Execution:** Meeting targets?
79
+ - Guidance met/beaten/missed
80
+ - Capital allocation decisions
81
+ - Strategic pivots if any
82
+
83
+ - [ ] **Industry Tailwinds:** Still present?
84
+ - Secular trends intact?
85
+ - Regulatory changes
86
+ - Technology shifts
87
+
88
+ **Thesis Status Classification:**
89
+
90
+ | Status | Criteria | Action Bias |
91
+ |--------|----------|-------------|
92
+ | **Strengthening** | Fundamentals improving, thesis accelerating | Consider ADD |
93
+ | **Intact** | On track with expectations, no changes | HOLD |
94
+ | **Weakening** | Some concerns, thesis partially impaired | Consider TRIM |
95
+ | **Broken** | Thesis invalid, fundamentals deteriorating | SELL |
96
+
97
+ ### Valuation Assessment
98
+
99
+ **Valuation Methodology:**
100
+
101
+ Compare current valuation across multiple dimensions:
102
+
103
+ **1. Historical Valuation Range**
104
+
105
+ | Metric | Current | 1Y Avg | 3Y Avg | 5Y Avg | Min | Max |
106
+ |--------|---------|--------|--------|--------|-----|-----|
107
+ | P/E | 28x | 25x | 22x | 20x | 12x | 35x |
108
+ | P/B | 6.5x | 5.8x | 5.2x | 4.8x | 3.5x | 8.0x |
109
+ | EV/EBITDA | 22x | 19x | 17x | 16x | 10x | 25x |
110
+ | Div Yield | 1.2% | 1.4% | 1.6% | 1.8% | 0.8% | 2.5% |
111
+
112
+ **Analysis:**
113
+ - Current P/E (28x) near 3Y max (35x) → Expensive vs history
114
+ - P/B elevated vs 5Y avg → Premium valuation
115
+ - Dividend yield low vs range → Not a value play
116
+
117
+ **2. Peer Group Comparison**
118
+
119
+ | Company | P/E | P/B | EV/EBITDA | Dividend Yield | Rev Growth | Margin |
120
+ |---------|-----|-----|-----------|----------------|------------|--------|
121
+ | **[Target]** | 28x | 6.5x | 22x | 1.2% | 12% | 28% |
122
+ | Peer A | 22x | 4.2x | 18x | 1.8% | 8% | 22% |
123
+ | Peer B | 31x | 7.8x | 25x | 0.9% | 18% | 32% |
124
+ | Peer C | 25x | 5.1x | 20x | 1.5% | 10% | 25% |
125
+ | **Sector Median** | 25x | 5.5x | 20x | 1.4% | 11% | 26% |
126
+
127
+ **Analysis:**
128
+ - P/E slightly above sector median → Modest premium
129
+ - Growth (12%) above median (11%) → Premium partially justified
130
+ - Margins (28%) above median (26%) → Quality justifies some premium
131
+ - **Assessment:** Fair to slightly expensive vs peers
132
+
133
+ **3. Growth-Adjusted Valuation (PEG Ratio)**
134
+
135
+ ```
136
+ PEG Ratio = P/E / Earnings Growth Rate
137
+
138
+ Example:
139
+ P/E: 28x
140
+ Expected EPS growth: 15%
141
+ PEG = 28 / 15 = 1.87
142
+
143
+ Interpretation:
144
+ < 1.0 = Undervalued
145
+ 1.0-2.0 = Fair value
146
+ > 2.0 = Overvalued
147
+ ```
148
+
149
+ **4. DCF Fair Value Estimate (Simplified)**
150
+
151
+ If time permits, estimate intrinsic value using discounted cash flow:
152
+
153
+ ```
154
+ Fair Value = (FCF × (1 + growth rate)^5) / (discount rate - terminal growth)
155
+
156
+ Example inputs:
157
+ Current FCF: $100B
158
+ Growth (5Y): 12%
159
+ Discount rate: 10%
160
+ Terminal growth: 4%
161
+ ```
162
+
163
+ **Valuation Status Classification:**
164
+
165
+ | Status | Criteria | Action Bias |
166
+ |--------|----------|-------------|
167
+ | **Undervalued** | Below historical avg, below peers, low PEG | ADD |
168
+ | **Fair Value** | In-line with history and peers | HOLD |
169
+ | **Overvalued** | Above historical range, premium to peers, high PEG | TRIM |
170
+ | **Severely Overvalued** | Extreme multiples, bubble-like | SELL |
171
+
172
+ ### Position Sizing Analysis
173
+
174
+ **Current Position Assessment:**
175
+
176
+ ```
177
+ Position Size = Position Value / Total Portfolio Value
178
+
179
+ Example:
180
+ Position value: $18,000
181
+ Portfolio value: $120,000
182
+ Position size: 18,000 / 120,000 = 15%
183
+ ```
184
+
185
+ **Position Sizing Guidelines:**
186
+
187
+ | Conviction Level | Target Position Size | Max Position Size |
188
+ |------------------|---------------------|-------------------|
189
+ | **High Conviction** | 8-12% | 15% |
190
+ | **Medium Conviction** | 5-8% | 10% |
191
+ | **Low Conviction / Speculative** | 2-5% | 7% |
192
+ | **Starter Position** | 2-3% | 5% |
193
+
194
+ **Position Sizing Risk Assessment:**
195
+
196
+ | Current Size | Risk Level | Typical Action |
197
+ |--------------|-----------|----------------|
198
+ | **<5%** | Low | Can add if conviction high |
199
+ | **5-10%** | Normal | Monitor |
200
+ | **10-15%** | Elevated | Trim if conviction not very high |
201
+ | **15-20%** | High | Trim recommended |
202
+ | **>20%** | Excessive | Urgent trim required |
203
+
204
+ **Position Drift Analysis:**
205
+
206
+ Track how position size has changed due to price appreciation:
207
+
208
+ ```
209
+ Position Appreciation Impact:
210
+
211
+ Initial investment: $10,000 (10% of $100K portfolio)
212
+ Other holdings flat, this position doubled
213
+ Current value: $20,000 (18% of $110K portfolio)
214
+
215
+ Position drift: 10% → 18% (increased 8 percentage points)
216
+ Exceeded target: Yes (assuming 10% target)
217
+ Action: Trim back to 10-12% range
218
+ ```
219
+
220
+ **Rebalancing Calculation:**
221
+
222
+ ```
223
+ To trim from 18% to 10%:
224
+
225
+ Target value: $110,000 × 10% = $11,000
226
+ Current value: $20,000
227
+ Amount to sell: $20,000 - $11,000 = $9,000
228
+ Shares to sell: $9,000 / Current Price
229
+ ```
230
+
231
+ ### Relative Opportunity Analysis
232
+
233
+ **Opportunity Cost Framework:**
234
+
235
+ Ask: "If I sold this position today, where would I deploy the capital?"
236
+
237
+ **Comparison Matrix:**
238
+
239
+ | Option | Expected Return | Risk Level | Conviction | Notes |
240
+ |--------|----------------|------------|-----------|-------|
241
+ | **Hold [Current]** | 8% | Medium | Medium | Fairly valued, thesis intact |
242
+ | Alternative A | 15% | High | High | Undervalued, strong thesis |
243
+ | Alternative B | 10% | Low | Medium | Defensive, lower risk |
244
+ | Cash (wait) | 4% | None | N/A | Opportunity cost |
245
+
246
+ **Decision Logic:**
247
+
248
+ If (Alternative Expected Return - Hold Expected Return) > Switching Cost:
249
+ → Consider selling current, buying alternative
250
+
251
+ **Switching Costs to Consider:**
252
+ - **Taxes:** Capital gains (15-20% long-term, ordinary income short-term)
253
+ - **Transaction costs:** Commissions (minimal) + bid-ask spread
254
+ - **Opportunity risk:** Wrong about alternative, miss rebound in current
255
+
256
+ **Example Calculation:**
257
+
258
+ ```
259
+ Current position: Expected 8% return
260
+ Alternative: Expected 15% return
261
+ Differential: 7%
262
+
263
+ Unrealized gain: $8,000 on $20,000 position (67% gain)
264
+ Tax on sale (20% long-term): $8,000 × 0.20 = $1,600
265
+ After-tax proceeds: $20,000 - $1,600 = $18,400
266
+
267
+ After-tax opportunity gain (1 year):
268
+ Hold current: $20,000 × 1.08 = $21,600
269
+ Buy alternative: $18,400 × 1.15 = $21,160
270
+
271
+ Conclusion: Tax drag eliminates benefit for 1-year hold
272
+ Consider if: (1) Multi-year horizon, or (2) Tax-advantaged account, or (3) Can tax-loss harvest elsewhere
273
+ ```
274
+
275
+ ## Position Action Decision Matrix
276
+
277
+ Combine the four factors to determine action:
278
+
279
+ ### HOLD Decision
280
+
281
+ **Criteria:**
282
+ - ✅ Thesis: Intact or strengthening
283
+ - ✅ Valuation: Fair to undervalued
284
+ - ✅ Position Size: Within target range (5-10% for medium conviction)
285
+ - ✅ Relative Opportunity: No clearly better alternative after costs
286
+
287
+ **Example:**
288
+ ```
289
+ Position: Johnson & Johnson (JNJ)
290
+ Thesis: ✅ Intact (healthcare demand, dividend aristocrat)
291
+ Valuation: ✅ Fair (P/E 16x vs 15x historical avg)
292
+ Position Size: ✅ 7% of portfolio (target range)
293
+ Opportunity: ✅ No compelling alternative in healthcare
294
+
295
+ Decision: HOLD
296
+ Rationale: Position performing as expected, appropriately sized, no reason to change
297
+ Next Review: Quarterly earnings (Q3 2024)
298
+ ```
299
+
300
+ ### ADD Decision
301
+
302
+ **Criteria:**
303
+ - ✅ Thesis: Strengthening or intact with high conviction
304
+ - ✅ Valuation: Undervalued or fair with improving fundamentals
305
+ - ✅ Position Size: Below target, room to add without excessive concentration
306
+ - ✅ Opportunity: Among top ideas, better than alternatives
307
+
308
+ **Example:**
309
+ ```
310
+ Position: Meta Platforms (META)
311
+ Thesis: ✅ Strengthening (AI monetization exceeding expectations, cost discipline)
312
+ Valuation: ✅ Undervalued (P/E 22x vs 28x historical, PEG 1.2)
313
+ Position Size: ✅ 5% of portfolio (room to add to 8-10%)
314
+ Opportunity: ✅ Top conviction, better expected return than alternatives
315
+
316
+ Decision: ADD 3-5% more (increase position to 8-10% total)
317
+ Rationale: Thesis improving, valuation attractive, high conviction
318
+ Entry Strategy: Add 3% now, 2% more if pullback to $450 support
319
+ Risk Management: Set stop-loss at $420 (recent low)
320
+ ```
321
+
322
+ ### TRIM Decision
323
+
324
+ **Criteria:**
325
+ - ⚠️ Thesis: Weakening OR still intact but lower conviction
326
+ - ⚠️ Valuation: Overvalued or expensive vs historical/peers
327
+ - ⚠️ Position Size: Exceeded target (>12% for medium conviction, >15% for high conviction)
328
+ - ⚠️ Opportunity: Better alternatives available or risk reduction needed
329
+
330
+ **Example:**
331
+ ```
332
+ Position: NVIDIA (NVDA)
333
+ Thesis: ✅ Intact (AI demand strong) ⚠️ but slowing growth rates expected
334
+ Valuation: ⚠️ Expensive (P/E 65x vs 45x historical, extended vs peers)
335
+ Position Size: ⚠️ 18% of portfolio (exceeded 15% max)
336
+ Opportunity: ⚠️ Other high-quality tech at better valuations
337
+
338
+ Decision: TRIM from 18% to 10-12%
339
+ Rationale: Valuation extended, position too large, take some profits
340
+ Trim Strategy: Sell 6% now, consider selling another 2% if rallies above $950
341
+ Redeployment: Add to underweight healthcare and financials sectors
342
+ Tax Strategy: Sell highest-cost-basis shares first (minimize tax impact)
343
+ ```
344
+
345
+ ### SELL Decision
346
+
347
+ **Criteria:**
348
+ - ❌ Thesis: Broken or significantly impaired
349
+ - OR: Valuation severely overvalued with deteriorating fundamentals
350
+ - OR: Better opportunities + need to reduce position count
351
+ - OR: Risk management (stop-loss triggered, risk too high)
352
+
353
+ **Example:**
354
+ ```
355
+ Position: Teladoc (TDOC)
356
+ Thesis: ❌ Broken (telehealth adoption slower than expected, competition intense, path to profitability unclear)
357
+ Valuation: ❌ Expensive vs peers despite losses (EV/Sales 2.5x vs 1.2x sector)
358
+ Position Size: ⚠️ 4% of portfolio (not excessive, but capital can be better deployed)
359
+ Opportunity: ❌ Multiple better healthcare alternatives (UNH, ELW, CVS)
360
+
361
+ Decision: SELL (exit position entirely)
362
+ Rationale: Investment thesis has not materialized, competitive position weakening, capital better deployed elsewhere
363
+ Exit Strategy: Sell entire position over 2-3 days (avoid moving market)
364
+ Redeployment: Reallocate to UnitedHealth Group (stronger healthcare thesis)
365
+ Tax Benefit: Harvest $2,000 capital loss to offset gains
366
+ Lesson Learned: Avoid unprofitable growth stocks in competitive industries
367
+ ```
368
+
369
+ ## Position Review Checklist
370
+
371
+ Use this checklist when reviewing each position:
372
+
373
+ ### Fundamental Review
374
+ - [ ] Read recent earnings report and call transcript
375
+ - [ ] Review updated financial metrics (revenue, margins, EPS)
376
+ - [ ] Check for guidance changes (raised, lowered, maintained)
377
+ - [ ] Read recent analyst reports or news
378
+ - [ ] Verify competitive position (market share, new entrants)
379
+
380
+ ### Valuation Review
381
+ - [ ] Calculate current P/E, P/B, EV/EBITDA
382
+ - [ ] Compare to 1Y, 3Y, 5Y historical averages
383
+ - [ ] Compare to peer group
384
+ - [ ] Calculate PEG ratio
385
+ - [ ] Assess if valuation justified by fundamentals
386
+
387
+ ### Portfolio Fit Review
388
+ - [ ] Calculate current position size (% of portfolio)
389
+ - [ ] Assess if size matches conviction
390
+ - [ ] Check if position contributes to concentration risk
391
+ - [ ] Verify sector allocation impact
392
+ - [ ] Evaluate correlation with other holdings
393
+
394
+ ### Risk Review
395
+ - [ ] Identify new risks (regulatory, competitive, macro)
396
+ - [ ] Assess if stop-loss should be updated
397
+ - [ ] Review downside scenario (what could go wrong?)
398
+ - [ ] Check beta and volatility (has it increased?)
399
+ - [ ] Evaluate if risk/reward still favorable
400
+
401
+ ### Action Decision
402
+ - [ ] Does thesis warrant HOLD/ADD/TRIM/SELL?
403
+ - [ ] If change needed, what is specific action?
404
+ - [ ] What is timeline for action (immediate, gradual, wait for level)?
405
+ - [ ] What are trigger points for future action?
406
+ - [ ] Document decision and rationale
407
+
408
+ ## Common Position Evaluation Mistakes
409
+
410
+ ### Mistake 1: Anchoring to Purchase Price
411
+
412
+ **Problem:** "I bought at $100, now it's $80, I'll wait to break even before selling"
413
+
414
+ **Why wrong:** Purchase price is irrelevant to forward returns. Sunk cost fallacy.
415
+
416
+ **Correct approach:** Evaluate position based on current fundamentals and forward outlook. If thesis broken, sell now regardless of gain/loss.
417
+
418
+ ### Mistake 2: Letting Winners Run Indefinitely
419
+
420
+ **Problem:** "It's my best performer, I'll never sell!"
421
+
422
+ **Why wrong:** Position becomes oversized, creates concentration risk, valuation may become stretched.
423
+
424
+ **Correct approach:** Trim winners back to target weight periodically. Take some profits. Reinvest in undervalued areas.
425
+
426
+ ### Mistake 3: Selling Losers Too Quickly
427
+
428
+ **Problem:** "It's down 15%, I need to cut losses"
429
+
430
+ **Why wrong:** Volatility is normal. Selling in panic often locks in losses before recovery.
431
+
432
+ **Correct approach:** Evaluate if thesis still intact. If yes, consider adding (averaging down). If no, sell regardless of loss size.
433
+
434
+ ### Mistake 4: Ignoring Valuation ("Quality at Any Price")
435
+
436
+ **Problem:** "This is a great company, valuation doesn't matter"
437
+
438
+ **Why wrong:** Even great companies can be overvalued. Future returns depend on entry price.
439
+
440
+ **Correct approach:** Great companies at fair prices. Trim when expensive, add when cheap, even for high-quality names.
441
+
442
+ ### Mistake 5: Falling in Love with Stocks
443
+
444
+ **Problem:** Emotional attachment prevents objective evaluation
445
+
446
+ **Why wrong:** Stocks don't love you back. Capital allocation should be ruthlessly rational.
447
+
448
+ **Correct approach:** Treat positions as capital deployment decisions, not relationships. Be willing to sell anything if better opportunity exists.
449
+
450
+ ## Summary
451
+
452
+ **Position Evaluation Framework:**
453
+
454
+ 1. **Thesis Validation (40%)** - Is the story still true?
455
+ 2. **Valuation Assessment (30%)** - Is the price right?
456
+ 3. **Position Sizing (20%)** - Is the size appropriate?
457
+ 4. **Relative Opportunity (10%)** - Are there better uses of capital?
458
+
459
+ **Four Actions:**
460
+
461
+ - **HOLD:** Thesis intact, fair valuation, appropriate size
462
+ - **ADD:** Strengthening thesis, undervalued, room to add
463
+ - **TRIM:** Weakening thesis OR expensive OR oversized
464
+ - **SELL:** Broken thesis OR severely overvalued OR much better alternatives
465
+
466
+ **Best Practices:**
467
+
468
+ - Review positions quarterly (at minimum)
469
+ - Document thesis at purchase
470
+ - Update thesis as new information emerges
471
+ - Be willing to admit mistakes early
472
+ - Trim winners to maintain diversification
473
+ - Average down only if thesis intact
474
+ - Ignore purchase price (sunk cost)
475
+ - Remain objective and unemotional
476
+
477
+ **Remember:** Position evaluation is both art and science. Combine quantitative metrics with qualitative judgment. When in doubt, reduce position size rather than holding full position or selling entirely.