成功股票投资的五条规则 — 完整实施规范

基于 Pat Dorsey,The Five Rules for Successful Stock Investing(2004年)


目录

  1. 概述 — 晨星哲学
  2. 五条规则
  3. 规则1 — 做好功课
  4. 规则2 — 找到经济护城河
  5. 经济护城河的四个来源
  6. 衡量护城河强度 — 财务特征
  7. 规则3 — 拥有安全边际
  8. 估值方法
  9. 规则4 — 长期持有
  10. 规则5 — 知道何时卖出
  11. 财务报表分析
  12. 行业特定分析
  13. 晨星方法 — 星级评级和流程
  14. 入场规则
  15. 出场规则
  16. 投资组合管理
  17. 常见错误
  18. 投资生命周期示例
  19. 实施伪代码
  20. 关键语录

1. 概述 — 晨星哲学

Pat Dorsey 是晨星股票研究总监,他建立了数千名晨星分析师仍用于评估股票的 analytical 框架。他的核心论点:成功的股票投资不是关于寻找令人兴奋的故事或追逐动量——而是以公平价格购买优秀企业并持有它们。

核心逻辑链

  1. 大多数投资者失败是因为跳过了无聊的工作——阅读财务报表、理解竞争动态、计算内在价值。
  2. 投资中最重要的概念是 经济护城河——一种结构性竞争优势,允许公司以高于平均水平回报率持续投资资本。
  3. 即使是优秀企业,如果支付过多也是糟糕投资。安全边际的估值纪律防止分析错误和坏运气。
  4. 复利只有在让它发挥作用时才有效。长期持有减少交易成本、延迟税收并允许护城河复合股东财富。
  5. 卖出应由业务 thesis 变化驱动,而非价格波动或对新闻的情绪反应。

本书有何不同

Dorsey 提供了很少有投资作家提供的东西:一套完整的、可重复的分析流程,适用于各行业。这不是关于低买高卖的格言集合。这是一本操作手册——如何阅读10-K、如何识别护城河、如何计算内在价值,以及如何将这些技术不同地应用于银行、REITs、科技公司、医疗保健和消费企业。

可实施框架


2. 五条规则

Dorsey 将他的整个投资哲学提炼为五条规则。每条都简单易述,但一致执行要求严格:

# 规则 核心原则
1 做好功课 阅读财报、理解业务、知道你拥有什么
2 找到经济护城河 购买具有持久竞争优势的公司
3 拥有安全边际 支付低于内在价值以防止错误
4 长期持有 让复利发挥作用;最小化税收和交易成本
5 知道何时卖出 基于 thesis 变化卖出,而非价格下跌或不耐烦

这些规则是分层的。规则1是其他一切的前提——没有分析工作,你无法找到护城河或估计内在价值。规则2将范围缩小到优质企业。规则3确保你不会为优质支付过多。规则4获取复利收益。规则5防止过早卖出和固执持有破碎 thesis。


3. 规则1 — 做好功课

研究必要性

Dorsey 最直接的信息:大多数投资者研究新电视购买比研究股票花费更多时间。购买股票前可接受的最低研究包括:

  1. 阅读年报(10-K) — 不是华丽摘要,而是实际的 SEC 文件。重点关注管理层讨论与分析(MD&A)、风险因素和脚注。
  2. 阅读至少三年的财报 — 一年无法说明趋势。
  3. 理解业务模式 — 公司如何赚钱?客户是谁?什么会导致他们停止购买?
  4. 识别竞争格局 — 主要竞争对手是谁?为什么客户选择这家公司而非替代品?
  5. 评估管理层质量 — 关注资本配置历史、内幕所有权、薪酬结构和股东信函的坦诚度。

两分钟测试

在深入研究之前,Dorsey 推荐一个快速过滤器:

如果大多数答案是"否"或"我不知道",要么跳过该股票,要么在承诺全面分析之前做更多初步阅读。

信息来源


4. 规则2 — 找到经济护城河

什么是经济护城河?

经济护城河是使公司能够在其资本成本以上持续获得投资资本回报(ROIC)的结构性竞争优势——通常持续十年或更长时间。该术语借鉴自 Warren Buffett,是 Dorsey 的核心分析概念。

为什么护城河重要

护城河 vs. 动量

Dorsey 明确警告将当前表现与持久优势混淆:


5. 经济护城河的四个来源

Dorsey 确定了恰好四个结构性来源。公司可能有一个或几个,但每种持久竞争优势都可追溯到其中至少一个:

5.1 无形资产

定义: 创造定价权或需求而没有物质形式的资产。

三个子类:

品牌 — 但只有增加支付意愿或推动重复购买的品牌。Dorsey 精确地说:知名品牌的护城河测试不是它是否被认可,而是品牌是否允许公司收取溢价价格 或者 以可衡量方式增加客户忠诚度。

专利 — 提供法律垄断,但有到期日。单一专利是临时优势,不是护城河。专利管道(制药公司、3M)可以构成护城河,如果公司持续以快于旧专利到期的速度产生新知识产权。

监管许可 — 政府授予的运营权利(广播许可、公用事业特许经营权、银行执照)。这些创造进入壁垒,但可能因政治行动而改变,因此持久性取决于监管环境。

如何识别: 公司是否在竞争对手提供类似功能产品的类别中收取溢价价格?它能长期保持这些溢价吗?有什么法律障碍(专利、许可)防止复制?

如何衡量: 与竞争对手的毛利率溢价;市场研究中的品牌价格溢价;专利管道深度和续展率;监管壁垒高度。

5.2 转换成本

定义: 客户在从一个产品或服务转换到另一个时产生的成本——货币、时间、努力、风险。

转换成本很强大,因为它们在不要求持续优越性的情况下锁定客户。 一个仅仅是勉强够用但深度嵌入的产品通常比容易被替换的优越产品更有利可图。

转换成本类型:

如何识别: 问:"如果竞争对手提供好10%且便宜10%的产品,客户会快速转换吗?"如果答案是否,转换成本存在。寻找:客户保留率(>90%)、平均客户任期、经常性收入模式、与客户工作流程的深度集成。

如何衡量: 客户保留/流失率;随时间的每客户收入;经常性或合同收入百分比;新客户平均实施时间(越长 = 转换成本越高)。

护城河示例:企业软件(SAP、Oracle)——切换ERP系统是多年、数百万美元的项目。银行——更改所有自动付款和直接存款的麻烦使大多数客户即使竞争对手提供更好利率也保持不变。医疗设备——接受特定系统培训的外科医生抵制切换。

5.3 网络效应

定义: 随着用户总数增加,产品或服务对每个用户变得更有价值。这是最强大的护城河来源,因为它创造了指数级难以打破的自我强化循环。

网络效应类型:

如何识别: 产品是否随着更多人使用而变得更有用?是否有连接两个或更多用户组的市场或平台动态?更多使用是否产生改善服务的 data?

如何衡量: 用户增长率(加速增长表明网络效应正在加强);市场份额集中度(网络效应往往走向赢家通吃或赢家通吃);随总用户增加的人均参与度指标;随规模增加的定价权。

关键警告: 网络效应可以反向运作。如果用户开始离开,产品变得不那么有价值,加速进一步离开。这使得网络效应企业的结果是二元的——主导或死亡。

5.4 成本优势

定义: 以低于竞争对手的成本生产商品或服务的能力,允许公司要么低价要么以相同价格赚取更高利润率。

成本优势来源:

如何识别: 将运营利润率和资产周转率与竞争对手比较。有成本优势的公司将在相似价格下显示更高利润率,或在显著更高市场份额下以较低价格获得相似利润率。

如何衡量: 运营利润率与行业平均比较;SG&A占收入百分比与同行比较;资产周转率;每单位生产成本(如果有);规模优势比率(收入每固定成本美元与竞争对手比较)。

护城河来源持久性排名

来源 持久性 脆弱性
网络效应 非常高 技术颠覆、用户离开
转换成本 代际技术转变
无形资产(品牌) 品牌管理不当、文化转变
无形资产(专利) 中等 到期、法律挑战
成本优势(规模) 中高 颠覆性商业模式
成本优势(流程) 中低 被竞争对手模仿

6. 衡量护城河强度 — 财务特征

护城河在财务报表中留下可衡量的痕迹。Dorsey 识别区分护城河公司与其他的关 key metrics:

投资资本回报率(ROIC)

最重要的单一指标。ROIC = NOPAT / 投资资本。

关键词是 持续地。 单一年高 ROIC 毫无意义。寻找整个经济周期中的稳定性或上升趋势。

自由现金流转换

护城河公司将更高比例的收益转换为自由现金流,因为它们不需要持续再投资以维持竞争地位。

毛利率稳定性

宽护城河公司在经济衰退和竞争压力下保持稳定或扩大的毛利率。毛利率下降是护城河侵蚀的 earliest warning——表明公司正在失去定价权。

每员工收入趋势

每员工收入上升表明业务正在有效扩展,通常是无形资产或网络效应在起作用。

一致性检查清单

如果公司展示以下 全部,很可能有护城河:


7. 规则3 — 拥有安全边际

概念

每个内在价值估计都是错误的。问题是你能错多少。安全边际意味着以显著低于你估计的内在价值的价格购买,即使你的分析过于乐观,你仍然获得合理回报。

按护城河宽度的安全边际要求

护城河宽度 低于公允价值的要求折扣 理由
宽护城河 20-25% 业务质量提供自己的安全性
窄护城河 25-35% 优势持续确定性较低
无护城河 35-50% 高不确定性需要更大缓冲
周期性/ turnaround 40-50%+ 未来盈利不确定性最大

为什么市场提供折扣

价格低于内在价值有可识别的、反复出现的原因:


8. 估值方法

Dorsey 倡导使用多种估值方法并进行三角测量。没有一种方法适用于每种业务,方法之间的分歧本身就是信息性的。

8.1 折现现金流(DCF)

理论上最稳健的方法。内在价值等于所有未来自由现金流的现值。

流程:

  1. 估计下一年的自由现金流(从去年开始,根据已知因素调整)
  2. 预测5-10年增长(使用保守假设)
  3. 计算终值(通常使用3-4%的永续增长模型)
  4. 使用 WACC(通常9-12%)将所有现金流折现回现值
  5. 将总现值除以流通股数

关键敏感性:

最适合: 稳定、可预测增长的现金生成业务。 最不适合: 早期阶段公司、高度周期性业务、金融机构。

8.2 市盈率(P/E)

最广泛使用和最常被误用的估值指标。

正确使用: 将公司当前 P/E 与(a)其自身历史平均、(b)行业平均和(c)市场平均比较。根据增长率调整——更高的 P/E 仅通过更高、更可持续的增长来证明合理。

PEG 比率: P/E 除以预期盈利增长率。PEG 低于1.0表明低估;高于2.0表明高估。但 PEG 是粗略启发式,不是精确工具。

关键陷阱:

最适合: 稳定、盈利、一致的企业。 最不适合: 周期性公司、亏损公司、有大量非现金 charge 的公司。

8.3 市净率(P/B)

将市场价值与股权账面价值进行比较。

正确使用: 对金融机构(银行、保险)最有用了,其中资产以市值标记或接近公允价值携带。低于账面价值交易的银行可能便宜;账面价值的2倍应要求卓越的 ROIC 来证明合理。

关键陷阱:

最适合: 银行、保险公司、资产重企业。 最不适合: 资产轻科技公司、品牌重消费公司。

8.4 市销率(P/S)

收入比收益更难操纵,使 P/S 作为健全性检查有用。

正确使用: 将 P/S 与净利润率比较。P/S 为2.0且净利润率为20%的公司有效 P/E 为10(2.0 / 0.20)。如果预期利润率扩大,P/S 可以识别隐藏价值。

关键陷阱:

最适合: 在同一行业内比较公司;评估暂时盈利 depression 但稳定收入的公司。 最不适合: 任何公司的独立估值。

8.5 EV/EBITDA

企业价值除以利息、税费、折旧和摊销前盈利。 accounts for 资本结构和税率差异。

正确使用: 比较不同债务水平的公司。EV/EBITDA 剥离融资决策和税收管辖区的 effects,使跨境和跨资本结构比较有用。

典型范围:

关键陷阱:

最适合: 资本密集型企业、跨境比较、M&A 分析。 最不适合: 金融公司、折旧最小的公司。

估值三角测量

Dorsey 的实际方法:使用至少两种方法计算公允价值。如果 DCF 说$50 而相对估值说$40,公允价值范围是$40-50。将安全边际应用于较低估计。只有当股票交易低于折现较低 bound 时才买入。


9. 规则4 — 长期持有

持有的数学

Dorsey 提供了耐心的定量案例:

"长期"意味着什么

Dorsey 将长期持有定义为条件而非时间目标:

行为挑战

规则4最困难的部分不是智力而是情感。Dorsey 识别长期持有的心理敌人:


10. 规则5 — 知道何时卖出

三个合法卖出理由

Dorsey 明确——只有三个有效原因:

1. 护城河正在侵蚀。 你识别的竞争优势正在减弱。迹象包括:ROIC 趋势3年以上下降、定价权丧失(毛利率下降)、客户流失加速、绕过护城河的新技术或商业模式。这是最重要的卖出信号。

2. 你犯了错误。 你的原始分析是错误的——你认为有护城河但实际没有、你误解了业务模式、你高估了增长。智力诚实要求卖出而不是希望最终被证明正确。

3. 股票变得极其昂贵。 如果价格远超任何合理内在价值估计,卖出是理性的,即使业务仍然很棒。Dorsey 警告这应该是非常高的 bar——伟大企业往往以看起来拉伸的估值增长到似乎合理。只有当价格暗示的增长假设真正不现实时才因高估卖出。

何时不卖出


11. 财务报表分析

损益表 — 寻找什么

  1. 收入质量: 增长是有机的还是收购驱动的?收入是经常性还是一次性?收入确认保守吗?
  2. 毛利率趋势: 定价权和成本地位的最佳总结。稳定或上升 = 好。下降 = 潜在护城河侵蚀。
  3. 运营杠杆: 随着收入增长,运营利润率扩大吗?这表明可扩展性和固定成本杠杆。
  4. 净利率 vs. 运营利润率差距: 大差距表明高利息支出(太多债务)或异常税收情况。
  5. 盈利质量: 将净收入与经营现金流进行比较。如果净收入持续超过 OCF,盈利质量低。

资产负债表 — 寻找什么

  1. 债务水平: 债务权益比、利息 coverage ratio、债务 EBITDA。拥有宽护城河的公司通常不需要太多债务。在 supposedly 伟大业务上高债务是矛盾的。
  2. 商誉和无形资产: 大商誉 = 以溢价价格进行收购的历史。有没有商誉减值?那意味着它 overpaid。
  3. 营运资本效率: 销售天数(DSO)、库存周转、销售天数应付。改善趋势表明运营卓越。
  4. 表外义务: 运营租赁、养老金义务、法律或有事项。阅读脚注。

现金流量表 — 寻找什么

  1. 经营现金流: 对于健康业务应超过净收入。OCF 和净收入之间的差距是盈利质量指标。
  2. 资本支出: 维护资本支出 vs. 增长资本支出。公司很少披露这个 split,但你可以估计:如果资本支出大致等于折旧,大部分是维护。
  3. 自由现金流: OCF 减去资本支出。这是实际可供股东支配的。持续正和增长的 FCF 是护城河公司的标志。
  4. 资本配置: 公司如何使用 FCF?股息、回购(以什么价格?)、收购(以什么回报?)、债务减少。这是管理层质量最佳衡量。

12. 行业特定分析

Dorsey 将书中大约一半用于特定行业章节。每个行业都有独特的 economics,需要修改的分析框架。

12.1 银行和金融机构

12.2 REITs(房地产投资信托)

12.3 医疗保健

12.4 科技

12.5 消费品和零售


13. 晨星方法 — 星级评级和流程

星级评级系统

晨星的股票星级评级(区别于共同基金评级)完全基于当前价格与估计公允价值之间的差距,并根据不确定性调整:

星级 含义 隐含行动
5星 远低于公允价值 强烈买入
4星 适中低于公允价值 买入/积累
3星 交易接近公允价值 持有(如果已有)
2星 适中溢价于公允价值 考虑卖出
1星 远溢价于公允价值 卖出/回避

晨星经济护城河评级

不确定性评级

每家公司也有不确定性评级(低、中、高、非常高、极端),决定安全边际 band 有多宽。宽护城河公司具有低不确定性(如可口可乐)比窄护城河公司具有高不确定性(如生物技术公司)需要更小的折扣才能获得5星。

晨星的分析流程

  1. 分配分析师覆盖公司(每位分析师深入覆盖10-15只股票)
  2. 用每行列项目的明确假设构建详细 DCF 模型
  3. 通过竞争分析确定经济护城河评级
  4. 根据结果范围设置不确定性评级
  5. 计算公允价值估计
  6. 星级评级根据价格相对于公允价值自动更新
  7. 至少每季度全面模型审查,更频繁地如果有重大事件发生

14. 入场规则

Dorsey 入场检查清单

买入前,所有条件必须满足:

  1. 业务质量: 公司有来自四个结构性来源至少一个的可识别经济护城河。
  2. 财务健康: 债务可控,自由现金流为正且增长,ROIC 持续超过资本成本。
  3. 管理层质量: 资本配置历史健全,内幕所有权有意义,薪酬与长期绩效一致。
  4. 估值: 当前价格低于内在价值,按安全边际调整(根据护城河宽度和不确定性)。
  5. 理解: 你能用通俗语言解释业务模式、竞争优势和关键风险。如果不能解释,你不了解它。

入场时仓位配置


15. 出场规则

系统性出场标准

触发器 行动 时间框架
ROIC 连续3年以上下降 重新评估护城河;如果护城河破裂则卖出 立即审查
毛利率连续3年下降 深入研究竞争动态 1-2季度审查
原始 thesis 证明错误 卖出全部仓位 立即
价格超过公允价值估计的150% 修剪至50%仓位 数周内执行
价格超过公允价值估计的200% 卖出至核心25%仓位 数周内执行
管理层诚信违反 卖出全部仓位 立即
有更好的机会与相同资本 仅在新仓位有50%+上涨空间时交换 仅高信念

卖出纪律问题

Dorsey 承认卖出比买入更难,因为它触发了两种竞争的情绪偏见:

解药是定期问:"如果我不拥有这只股票,鉴于我现在知道的,以今天的价格我会买它吗?"如果答案始终是不,卖出。


16. 投资组合管理

构建原则

重新平衡

Dorsey 的方法是 thesis-based,而非 calendar-based:

投资组合监控频率


17. 常见错误

Dorsey 最常看到的错误

  1. 混淆好产品与好投资。 令人兴奋的产品不保证股东回报。产品质量和股票回报之间的关系由竞争动态和估值调解。

  2. 因为公司伟大而忽视估值。 没有任何公司好到值得无限价格。2000年的思科是糟糕价格下的伟大公司。它花了一代人来证明其峰值价格合理。

  3. 锚定购买价格。 你的购买价格与股票未来回报无关。它在心理上有力但在分析上毫无意义。

  4. 过度加权近期数据。 两个好季度不构成趋势。两个坏季度不 break a护城河。以年而非季度思考。

  5. 混淆熟悉与理解。 使用公司产品不意味着你了解其 economics。你在麦当劳吃饭但你知道其特许经营 fee 结构、房地产模型和同店销售动态吗?

  6. 将所有收益视为相等。 有宽护城河和强劲 FCF 的一美元收益比来自无护城河、重资本要求公司的的一美元收益价值高得多。

  7. 忽视机会成本。 持有公允价值股票是积极决定不部署那资本。每个仓位应赚取其位置。

  8. 过度交易。 普通投资者最大的拖累不是糟糕的股票选择而是太多交易的摩擦成本——佣金、买卖价差、税收和持续决策的情绪成本。

  9. 依赖单一估值方法。 每种方法都有盲点。跨 DCF、倍数和历史比较的三角测量提供更稳健的估计。

  10. 忽视管理层质量。 宽护城河由无能或不诚实的管理层管理会缩小。资本配置是长期回报最被低估的驱动因素。


18. 投资生命周期示例

案例:分析假设性消费品公司(ABC Corp)

第1步 — 做好功课(规则1)

阅读 ABC Corp 的10-K。关键发现:

第2步 — 找到护城河(规则2)

识别护城河来源:

护城河评估:宽护城河。 两个强结构性来源(品牌 + 规模),一个中等支持来源(转换成本)。ROIC连续12年高于18%,在财务数据中确认护城河。

第3步 — 估值(规则3)

三角测量公允价值范围:$55-62。使用较低边界$55。 宽护城河要求的安全边际:20%。 买入低于:$55 x 0.80 = $44。

当前价格:$41。可操作 — 买入。

第4步 — 买入和持有(规则4)

以$41购买4%仓位。设置在下次10-K发布时审查的日历提醒。不要设置止损——持有期不确定,只要护城河保持。

第5步 — 持续监控(规则4和5)

第三季度:股票因收入失误(坏天气影响销售)跌至$36。 分析:毛利率不变,市场份额不变,护城河完整。增持——现在是投资组合的5%。

第二年:股票恢复至$52。审查 thesis——ROIC仍为19%,毛利率稳定,FCF增长。继续持有。

第五年:股价$78。现在高于更新增长后的公允价值估计$72。 Thesis仍完整。修剪将仓位从7%减少回5%。持有核心。

第七年:新CEO开始以高价进行 empire-building 收购。ROIC开始下降——17%,然后15%,然后13%。毛利率从55%下滑至52%。这是护城河侵蚀。卖出全部仓位。


19. 实施伪代码

19.1 护城河评分器

function score_economic_moat(company):
    score = 0
    max_score = 100

    // --- 无形资产(最高25分) ---
    if gross_margin > industry_average * 1.15:
        score += 10  // 定价权指标
    if brand_premium_percentage > 15%:
        score += 8   // 可衡量品牌溢价
    if patent_count > 0 AND patent_renewal_rate > 70%:
        score += 7   // 活跃专利组合

    // --- 转换成本(最高25分) ---
    if customer_retention_rate > 95%:
        score += 10
    elif customer_retention_rate > 90%:
        score += 6
    if recurring_revenue_pct > 75%:
        score += 8
    elif recurring_revenue_pct > 50%:
        score += 5
    if avg_implementation_months > 6:
        score += 7   // 长实施 = 高转换成本

    // --- 网络效应(最高25分) ---
    if market_share > 50% AND platform_business:
        score += 15  // 主导平台
    elif market_share > 30% AND platform_business:
        score += 8
    if user_growth_accelerating AND engagement_per_user_rising:
        score += 10  // 网络效应加强

    // --- 成本优势(最高25分) ---
    if operating_margin > industry_avg * 1.20:
        score += 10  // 显著成本优势
    if sga_pct_revenue < industry_avg * 0.80:
        score += 8   // 分销规模效率
    if revenue_per_employee > industry_avg * 1.25:
        score += 7   // 运营效率

    // --- 财务确认 ---
    roic_years_above_15 = count(years where ROIC > 15%, last_10_years)
    if roic_years_above_15 < 5:
        score = score * 0.5  // ROIC不确认则分数减半

    fcf_positive_years = count(years where FCF > 0, last_10_years)
    if fcf_positive_years < 8:
        score = score * 0.7  // FCF不一致则减少分数

    // --- 护城河分类 ---
    if score >= 70:
        return "WIDE_MOAT"
    elif score >= 45:
        return "NARROW_MOAT"
    else:
        return "NO_MOAT"

19.2 估值计算器

function calculate_fair_value(company, moat_rating):
    // --- DCF 估值 ---
    base_fcf = company.last_year_fcf
    growth_rate = conservative_growth_estimate(company)
    terminal_growth = 0.03  // 3% 永续增长
    discount_rate = estimate_wacc(company)  // 通常9-12%

    dcf_value = 0
    projected_fcf = base_fcf
    for year in 1..10:
        projected_fcf = projected_fcf * (1 + growth_rate)
        dcf_value += projected_fcf / (1 + discount_rate)^year

    terminal_value = projected_fcf * (1 + terminal_growth) /
                     (discount_rate - terminal_growth)
    dcf_value += terminal_value / (1 + discount_rate)^10
    dcf_per_share = dcf_value / company.shares_outstanding

    // --- 相对估值 ---
    historical_pe = company.avg_pe_10_years
    pe_value = company.eps * historical_pe

    industry_ev_ebitda = industry.avg_ev_ebitda
    ev_value = company.ebitda * industry_ev_ebitda
    ebitda_equity_value = (ev_value - company.net_debt) / company.shares_outstanding

    // --- 三角测量 ---
    estimates = [dcf_per_share, pe_value, ebitda_equity_value]
    fair_value = minimum(estimates)  // 保守:使用最低

    // --- 安全边际 ---
    if moat_rating == "WIDE_MOAT":
        margin_of_safety = 0.20
    elif moat_rating == "NARROW_MOAT":
        margin_of_safety = 0.30
    else:
        margin_of_safety = 0.40

    buy_below = fair_value * (1 - margin_of_safety)

    return {
        "fair_value": fair_value,
        "buy_below": buy_below,
        "dcf_value": dcf_per_share,
        "pe_value": pe_value,
        "ev_ebitda_value": ebitda_equity_value,
        "margin_of_safety": margin_of_safety
    }

19.3 投资组合监控器

function monitor_portfolio(portfolio):
    alerts = []

    for position in portfolio.positions:
        company = position.company

        // --- 护城河侵蚀检查 ---
        roic_trend = linear_regression_slope(company.roic, last_3_years)
        if roic_trend < -0.01:
            alerts.append({
                "ticker": company.ticker,
                "type": "MOAT_EROSION_WARNING",
                "detail": "ROIC declining: " + format_trend(roic_trend),
                "action": "DEEP_REVIEW_REQUIRED"
            })

        gross_margin_trend = linear_regression_slope(company.gross_margin, last_3_years)
        if gross_margin_trend < -0.005:
            alerts.append({
                "ticker": company.ticker,
                "type": "PRICING_POWER_WARNING",
                "detail": "Gross margin declining: " + format_trend(gross_margin_trend),
                "action": "INVESTIGATE_COMPETITIVE_DYNAMICS"
            })

        // --- 估值检查 ---
        current_price = get_market_price(company.ticker)
        valuation = calculate_fair_value(company, position.moat_rating)

        price_to_fair = current_price / valuation.fair_value
        if price_to_fair > 1.50:
            alerts.append({
                "ticker": company.ticker,
                "type": "OVERVALUATION_ALERT",
                "detail": "Trading at " + format_pct(price_to_fair) + " of fair value",
                "action": "CONSIDER_TRIMMING_50PCT"
            })
        elif price_to_fair > 2.00:
            alerts.append({
                "ticker": company.ticker,
                "type": "EXTREME_OVERVALUATION",
                "detail": "Trading at " + format_pct(price_to_fair) + " of fair value",
                "action": "SELL_TO_CORE_POSITION"
            })

        // --- 仓位大小检查 ---
        position_pct = position.value / portfolio.total_value
        if position_pct > 0.10:
            alerts.append({
                "ticker": company.ticker,
                "type": "POSITION_SIZE_ALERT",
                "detail": "Position is " + format_pct(position_pct) + " of portfolio",
                "action": "TRIM_TO_8PCT_MAX"
            })

        // --- 管理层质量检查 ---
        if company.ceo_changed_recently:
            alerts.append({
                "ticker": company.ticker,
                "type": "MANAGEMENT_CHANGE",
                "detail": "New CEO appointed",
                "action": "REVIEW_CAPITAL_ALLOCATION_OUTLOOK"
            })

        // --- 行业集中度检查 ---
        sector_totals = {}
        for pos in portfolio.positions:
            sector = pos.company.sector
            sector_totals[sector] = sector_totals.get(sector, 0) + pos.pct_of_portfolio
        for sector, pct in sector_totals:
            if pct > 0.25:
                alerts.append({
                    "type": "SECTOR_CONCENTRATION",
                    "detail": sector + " at " + format_pct(pct),
                    "action": "REDUCE_SECTOR_EXPOSURE"
                })

    // --- 机会成本审查 ---
    for position in portfolio.positions:
        if position.upside_to_fair_value < 0.05:
            alerts.append({
                "ticker": position.company.ticker,
                "type": "OPPORTUNITY_COST",
                "detail": "Minimal remaining upside to fair value",
                "action": "EVALUATE_REDEPLOYMENT_IF_BETTER_OPTIONS_EXIST"
            })

    return alerts


function quarterly_review(portfolio):
    print("=== QUARTERLY PORTFOLIO REVIEW ===")

    // 刷新所有公允价值估计
    for position in portfolio.positions:
        position.valuation = calculate_fair_value(
            position.company, position.moat_rating
        )
        position.moat_score = score_economic_moat(position.company)

        // 如果分数实质性变化则重新评级护城河
        if moat_changed(position.moat_score, position.moat_rating):
            position.moat_rating = reclassify_moat(position.moat_score)
            flag_for_review(position)

    // 运行完整监控
    alerts = monitor_portfolio(portfolio)

    // 生成行动项目
    for alert in sort_by_severity(alerts):
        print(alert.type + ": " + alert.detail)
        print("Recommended action: " + alert.action)

20. 关键语录

"成功的股票投资不是关于寻找令人兴奋的故事或追逐动量——而是以公平价格购买优秀企业并持有它们。"

"护城河是一种结构性竞争优势,允许公司获得高于资本成本的回报持续超过资本成本。"

"即使再好的企业如果你支付过多也是糟糕投资。估值纪律是保护。"

"复利只有在让它发挥作用时才有效。长期持有减少交易成本、延迟税收并允许护城河复合股东财富。"

"卖出应由业务 thesis 变化驱动,而非价格波动或对新闻的情绪反应。"

"护城河公司在经济衰退和竞争压力下保持稳定或扩大的毛利率。毛利率下降是护城河侵蚀的 earliest warning。"

"安全边际意味着以显著低于你估计的内在价值的价格购买,即使你的分析过于乐观,你仍然获得合理回报。"

"资本配置是 CEO 最重要的工作。这决定了股东价值是创造还是毁灭。"

"投资中最重要的单一概念是经济护城河——一种结构性竞争优势,使公司能够持续跑赢资本成本。"

"分析是一种 bundles of bundles 的工作。你需要理解业务、竞争动态、财务报表和估值。每一项都需要纪律和耐心。"


实施规范结束。