那些滚雪球的人 — 完整实施方案规范

基于王星著,《那些滚雪球的人》


目录

  1. 概述
  2. 投资者画像与方法论
  3. A股价值投资
  4. A股成长投资
  5. 量化方法
  6. 股票选择框架
  7. 各种风格的风险管理
  8. 行为纪律与心理学
  9. 常见错误识别
  10. 完整交易生命周期示例
  11. 实施伪代码
  12. 关键语录与原则

1. 概述

《那些滚雪球的人》记录了成功的中国投资者,并提炼出他们的方法为可操作的框架。标题引用了巴菲特的比喻:"人生就像滚雪球。重要的是找到湿雪和长长的山坡。"本书探讨了中国投资者如何适应西方投资原则——并开发出原创方法——应用于中国A股市场的独特动态。

核心论点:没有单一正确的投资方式。成功的中国投资者涵盖价值投资、成长投资和量化方法——但他们都具备纪律、独立思考和严格的风险管理。

本书记录了三类投资者:

  1. 价值投资者 — 以安全边际购买被低估的资产,受 Graham/Buffett 启发但为中国SOE主导的市场和政策周期进行了调整
  2. 成长投资者 — 识别具有爆炸性盈利增长潜力的公司,在技术、消费和医疗保健的多年趋势中获利
  3. 量化/系统投资者 — 使用数据驱动模型、因子投资和系统化重新平衡来捕捉A股市场低效率

关键洞察:由于散户主导、信息不对称和政策驱动的波动性,A股是全球效率最低的主要市场之一——为三种方法都创造了机会。


2. 投资者画像与方法论

2.1 深度价值投资者

画像特征:

典型指标:

指标 阈值
PB 比率 < 1.0(或激进深度价值 < 0.7)
PE 比率 < 10 倍
股息收益率 > 4%
市值 > 50 亿人民币(避免微盘股)
负债权益比 < 0.5

A股特殊调整: 中国的深度价值投资者特别关注SOE改革催化剂。在0.6倍账面价值交易的国有公司,有改革催化剂可能在12个月内实现50-100%的重估。

2.2 优质价值投资者

画像特征:

选择标准:

2.3 成长投资者

画像特征:

目标画像:

指标 范围
收入增长 > 30% 同比
盈利增长 > 40% 同比
行业增长率 每年 > 20%
相对增长的 PE PEG < 1.5
市值 50 亿 - 1000 亿人民币(成长最佳点)

2.4 量化投资者

画像特征:


3. A股价值投资

3.1 为什么价值投资在中国运作不同

A股特征 对价值投资的影响
散户主导(80%+ 成交量) 创造更深的错误定价;情绪极端更极端
政策驱动周期 政府政策可以一夜之间创造/摧毁价值;必须监测政策风险
SOE所有权结构 控股股东可能不优先考虑小股东回报
10% 日价格限制 防止闪崩但创造多日动能级联
卖空限制有限 估值过高可以持续更长时间;价值陷阱更常见
快速经济转型 "便宜"公司可能因结构性原因而便宜(夕阳产业)

3.2 中国安全边际

传统的安全边际(低于内在价值购买)必须在A股中加强:

  1. 政策安全边际 — 公司是否与政府优先事项一致?受不利行业(例如2021年整顿后的教育辅导)的公司可能无论估值如何都会损失80%+。

  2. 治理安全边际 — 控股股东是否有关联方掏空的历史?股票质押?会计异常?治理风险是A股第一大价值陷阱。

  3. 流动性安全边际 — 股票是否足够流动可以退出?低成交量的小盘股价值陷阱可以困住资金多年。

  4. 结构性安全边际 — 行业是否结构性下降?中国经济正在快速转型;"便宜"的旧经济股票如果其行业正在被颠覆,可能是价值陷阱。

3.3 A股价值投资最佳行业

行业 为什么有效 风险
银行(银行) 持续便宜(0.5-0.8 倍 PB),高股息,国家支持 不良贷款风险、利率改革
保险(保险) 嵌入价值折扣、中产阶级增长 监管变化
公用事业(公用事业) 稳定现金流、政策保护定价 低增长天花板
房地产(地产) 周期底部便宜 政策风险(三条红线)、结构性下降
周期底部 钢铁、煤炭、化学品在周期底部 周期时机困难

4. A股成长投资

4.1 中国成长框架

本书中的成长投资者关注三大趋势:

趋势 1:消费升级(消费升级)

趋势 2:技术本地化(国产替代)

趋势 3:医疗健康(医疗健康)

4.2 成长股选择规则

  1. 收入加速:寻找收入增长加速的公司(例如 20% → 30% → 40% 同比)
  2. 扩张可寻址市场:TAM应该增长,而不仅仅是公司的份额
  3. 运营杠杆:毛利率稳定或上升;随着规模建立运营利润率提高
  4. 研发投资:技术公司研发支出 > 收入的 5%
  5. 客户多元化:没有单一客户 > 收入的 20%
  6. 内部人行为:管理层购买股票而非出售;员工股票期权计划(ESOP)

4.3 何时卖出成长股

卖出信号 描述
连续 2 个季度收入减速 成长故事可能结束
无解释的利润率压缩 竞争加剧或成本上升
关键高管离职 通常是麻烦的第一个信号
行业监管收紧 政府政策可以扼杀成长行业
估值超过 3 倍 PEG 即使成长也有极限
其他地方有更好的机会 机会成本很重要

5. 量化方法

5.1 A股因子投资

本书记录了几位使用因子模型的量化投资者。A股中有效的因子:

因子 描述 A股功效
价值(低估值) 低PE、PB、PS 长期强劲,但有长期表现不佳期
小市值(小市值) 市值 < 100 亿人民币 在A股历史上非常强劲;2017年后下降
动能(动量) 6-12 个月价格动能 有效但需要仔细风险管理;急剧反转
质量(质量) 高ROE、稳定盈利 随市场成熟越来越重要
低波动(低波动) 较低历史波动 提供下行保护
反转(反转) 短期均值回归(1 个月) 由于散户反应过度在A股强劲

5.2 多因子模型构建

评分 = w1 × 价值评分 + w2 × 质量评分 + w3 × 动能评分 + w4 × 规模评分

其中:
  价值评分 = z_score(1/PE) + z_score(1/PB) + z_score(股息收益率)
  质量评分 = z_score(ROE) + z_score(盈利稳定性) + z_score(经营现金流/净利润)
  动能评分 = z_score(12m回报 - 1m回报)  # 跳过最近一个月
  规模评分 = z_score(-log(市值))  # 负数因为越小 = 越高分

  w1 = 0.30, w2 = 0.30, w3 = 0.25, w4 = 0.15

5.3 量化策略执行规则

规则 详情
重新平衡频率 每月或每季度
组合规模 30-50 个等权重仓位
换手率约束 每次重新平衡 < 30%(降低交易成本)
行业约束 单一行业 < 20%
流动性过滤 平均日成交量 > 1000 万人民币
ST/退市过滤 排除所有ST、*ST和有退市风险的股票
IPO过滤 排除上市 < 6 个月的股票
无自主裁量覆盖 精确执行模型输出

6. 股票选择框架

6.1 "三好"框架(三好股票)

本书中优质价值投资者使用的框架:

好生意(好生意):

好管理(好管理):

好价格(好价格):

6.2 周期性投资框架

对于专注于周期性行业的投资者:

阶段 1:周期底部识别
  - 行业产能利用率处于多年低位
  - 现货价格低于边际生产成本
  - 行业内破产和整合
  - 股票以高 PE 或负盈利 交易( paradoxically 看涨)

阶段 2:早期积累
  - 在账面价值或以下购买领导者
  - 小仓位;预期进一步下行
  - 检查资产负债表实力(幸存者获胜)

阶段 3:确认
  - 现货价格开始复苏
  - 盈利从负转正
  - PE 快速下降因为盈利上升
  - 增加仓位

阶段 4:峰值识别
  - 创纪录盈利、低 PE( paradoxically 看跌)
  - 行业宣布产能扩张
  - 分析师积极上调目标
  - 开始在强势中卖出

阶段 5:退出
  - 在盈利峰值确认之前卖出剩余仓位
  - 市场在盈利显示之前定价下跌
  - 不要等待"确认"——到那时股票已经下跌 30%

7. 各种风格的风险管理

7.1 通用风险原则

无论投资风格如何,所有记录的投资者都共享这些风险原则:

原则 实施
永远不要使用你无法承受的杠杆 最大杠杆:权益的 30%;最好完全不用杠杆
仓位确定就是风险管理 没有单一仓位成本超过 10%;市值最多 15%
在熊市中保护资本 当市场 PE > 第 80 百分位时将权益敞口减少至 30-50%
入场前知道你的退出 购买前写下:"如果 [具体条件] 我将卖出"
将信念与固执分开 重新评估任何下跌 20% 的仓位;如果原始论点破裂,卖出
相关性意识 持有 10 只银行股不是多元化

7.2 风格特定风险控制

价值投资者:

成长投资者:

量化投资者:


8. 行为纪律与心理学

8.1 成功中国投资者的教训

记录的投资者共享常见的心理特质:

独立思考:

情绪调节:

持续学习:

耐心:

8.2 "反脆弱"投资者心态

本书为A股引入了反脆弱投资概念:

  1. 预期波动:A股每 3-5 年有 30-50% 的回撤;为此计划
  2. 从波动中受益:使用回撤以折扣购买优质股
  3. 为生存而建:永远不要被迫卖出(没有保证金 call、没有需要的生活费用)
  4. 从错误中学习:如果你正确分析,每个亏损都是信息
  5. 复合知识:投资技能像资本一样复合——每一年学习使下一年更有成效

8.3 A股投资者的情绪周期

市场顶部:     兴奋 → "我是天才"
               过度自信 → 增加杠杆、集中

早期下跌:     否认 → "它会反弹"
               焦虑 → 每小时检查价格

中期下跌:     恐惧 → "我应该全部卖出吗?"
               投降 → 在最糟糕的时刻卖出

市场底部:     沮丧 → "我永远不会投资了"
               抑郁 → 避免所有市场信息

早期复苏:     怀疑 → "这只是熊市反弹"
               希望 → 谨慎返回

中期复苏:     释然 → "我活过来了"
               乐观 → 重建仓位

接近顶部:     兴奋 → "这次不同了"
               快感 → 周期重复

记录的投资者通过以下方式打破这个周期:


9. 常见错误识别

9.1 按投资风格划分的错误

价值投资者错误:

错误 描述
价值陷阱 购买应该便宜的便宜股票(夕阳产业、糟糕治理)
忽视政策风险 5 倍 PE 的股票如果政府即将监管该行业并不便宜
过早买入 在衰退中过早购买周期性股票;"接落下的刀"
锚定历史估值 股票以前是 20 倍 PE 并不意味着它应该再次是
忽视管理层质量 糟糕的管理层可以随着时间摧毁账面价值

成长投资者错误:

错误 描述
为成长付出过多 以 100 倍 PE 购买因为"它将增长到估值"
将收入与利润混淆 许多成长公司从未实现盈利
忽视竞争动态 增长的市场吸引竞争;护城河很重要
爱上了故事 伟大的叙事 ≠ 伟大的投资
在破裂的成长上补仓 如果增长减速,股票可能永远无法恢复到之前的 PE

量化投资者错误:

错误 描述
过度拟合 策略在回测中完美有效,但实盘失败
生存者偏差 仅在当前上市的股票上测试,忽略退市的股票
制度变化盲目 在 2010-2015 年有效的因子可能在 2020-2025 年无效
忽视交易成本 理论回报在实际滑点和费用下侵蚀
覆盖模型 在回撤期间打破纪律使目的落空

10. 完整交易生命周期示例

优质价值方法:消费品投资

阶段 1:想法生成

来源:季度财务筛选
行业:消费品 — 家庭清洁产品
公司:分散行业中占 35% 份额的市场领导者

初步指标:
  收入增长:18% CAGR(5 年)
  ROE:26% 平均
  净利润率:15% 稳定
  PE:22 倍(5 年范围:18 倍 - 40 倍)
  PB:5.5 倍
  股息收益率:2.5%

阶段 2:深入尽职调查

业务分析:
  ✓ 强大品牌组合(品类中前 5 品牌中的 3 个)
  ✓ 分销网络:200 万+ 零售销售点
  ✓ 定价权:5 年内提价 3 次但无销量下降
  ✓ 研发管道:每年推出 50+ 新产品
  ✓ 低资本强度:capex/收入 = 5%

财务深入分析:
  ✓ 经营现金流 / 净利润 = 1.3 倍(高质量盈利)
  ✓ 营运资金管理:库存天数下降,现金周期缩短
  ✓ 债务:净现金状况(无财务风险)
  ✓ 商誉:资产的 2%(无收购风险)
  ✓ 收入多元化:最大客户 = 销售额的 8%

管理层评估:
  ✓ 创始人-CEO,领导公司 20+ 年
  ✓ 干净的治理记录
  ✓ 股票质押:0%
  ✓ 管理层持有 15% 股份 — 利益一致
  ✓ 关键人员的员工股票计划

已识别风险:
  - 原材料价格上涨(棕榈油、化学品)→ 被定价权缓解
  - 新竞争对手(外国品牌)→ 被分销优势缓解
  - 消费者信心低迷 → 防御性行业,低选择性暴露

阶段 3:估值与入场

内在价值估计:
  方法 1:DCF(10 年预测,10% 折现率)→ ¥45
  方法 2:盈利功率 × 历史中位数 PE → 2.5 × 22 倍 = ¥55
  方法 3:可比公司中位数 PE 应用 → ¥50

范围:¥45 - ¥55
当前价格:¥38
安全边际:15-30%

决策:买入
仓位规模:组合的 6%(低于最大 10%)
入场:¥38
书面退出条件:
  - 如果 ROE 连续 2 年低于 18% 则卖出
  - 如果出现管理层治理问题则卖出
  - 如果 PE 超过 35 倍则削减 50%
  - 如果 PE 超过 45 倍则全卖

阶段 4:持有期管理

第一季度:收入 +20%,盈利 +23%,符合论点。持有。
第二季度:市场下跌 15%。股票跌至 ¥33。
  → 基本面不变。增加 2%(现在 8% 仓位)。
第三季度:收入 +22%,利润率扩张。股票回升至 ¥42。
  → 接近公允价值。持有,不增加。
第四季度:全年业绩强劲。股票在 ¥48。
  → 接近内在价值。持有但注意估值过高。
第二年:股票因市场热情达到 ¥58。PE 在 38 倍。
  → 在 ¥58 削减 50% 仓位。锁定收益。
第三年:股票回调至 ¥44。PE 在 25 倍。增长仍然 18%。
  → 重新加仓至满仓。

阶段 5:退出

第五年:新外国竞争对手获得 10% 市场份额。
公司收入增长减速至 8%。
ROE 降至 19%(仍高于阈值但下降)。
管理层回应不明确。

决策:在 ¥52 卖出剩余仓位。
总收益:5 年约 85%(平均每年约 13%)
加股息:约 12% 累计
总计:约 97% 总收益

事后分析:好流程。折价入场,纪律性回调加仓,
估值过高时削减,竞争力下降时卖出。
记录在日志中供将来参考。

11. 实施伪代码

11.1 多风格筛选引擎

def screen_by_style(universe, style):
    """
    按投资风格筛选A股范围。
    """
    candidates = []

    for stock in universe:
        # 通用过滤器
        if stock.is_st or stock.is_star_st:
            continue
        if stock.days_since_ipo < 180:
            continue
        if stock.avg_daily_volume_3m < 10_000_000:  # 1000 万人民币
            continue

        if style == 'deep_value':
            if (stock.pb < 1.0 and
                stock.pe > 0 and stock.pe < 10 and
                stock.dividend_yield > 0.04 and
                stock.debt_to_equity < 0.5 and
                stock.market_cap > 5_000_000_000):
                candidates.append(stock)

        elif style == 'quality_value':
            if (stock.roe_5y_avg > 0.20 and
                stock.revenue_cagr_3y > 0.10 and
                stock.net_margin_trend == 'stable_or_expanding' and
                stock.pe_percentile_5y < 50 and
                stock.ocf_to_ni > 0.8 and
                stock.share_pledge_ratio < 0.1):
                candidates.append(stock)

        elif style == 'growth':
            if (stock.revenue_growth_yoy > 0.30 and
                stock.earnings_growth_yoy > 0.40 and
                stock.industry_growth_rate > 0.20 and
                stock.peg < 1.5 and
                stock.market_cap > 5_000_000_000 and
                stock.market_cap < 100_000_000_000):
                candidates.append(stock)

        elif style == 'quant_multi_factor':
            score = compute_factor_score(stock)
            if score > 0:
                candidates.append((stock, score))

    if style == 'quant_multi_factor':
        candidates.sort(key=lambda x: x[1], reverse=True)
        return [c[0] for c in candidates[:50]]

    return candidates

11.2 优质价值仓位管理器

class QualityValueManager:
    """
    管理集中优质价值组合。
    """

    def __init__(self, max_positions=12, max_single_weight=0.10):
        self.max_positions = max_positions
        self.max_single_weight = max_single_weight
        self.positions = {}
        self.journal = []

    def evaluate_entry(self, stock, portfolio_value):
        """决定是否建仓。"""
        # 三好检查
        business_score = self.score_business(stock)
        management_score = self.score_management(stock)
        price_score = self.score_price(stock)

        if business_score >= 7 and management_score >= 7 and price_score >= 6:
            # 计算仓位规模
            conviction = min(business_score, management_score, price_score)
            if conviction >= 9:
                target_weight = 0.08  # 高信念
            elif conviction >= 7:
                target_weight = 0.05  # 中等信念
            else:
                target_weight = 0.03  # 试点仓位

            shares = int(target_weight * portfolio_value / stock.price / 100) * 100
            return {
                'action': 'BUY',
                'shares': shares,
                'target_weight': target_weight,
                'exit_conditions': self.define_exit_conditions(stock)
            }
        return {'action': 'PASS'}

    def quarterly_review(self, portfolio):
        """每季度审查所有仓位。"""
        actions = []
        for ticker, position in portfolio.items():
            stock = get_current_data(ticker)

            # 检查退出条件
            if stock.roe < 0.18 and position.quarters_below_roe_threshold >= 2:
                actions.append({'ticker': ticker, 'action': 'SELL', 'reason': 'ROE 恶化'})
            elif stock.pe_percentile_5y > 90:
                actions.append({'ticker': ticker, 'action': 'TRIM_50', 'reason': '估值过高'})
            elif stock.governance_red_flag:
                actions.append({'ticker': ticker, 'action': 'SELL', 'reason': '治理风险'})
            elif stock.pe_percentile_5y < 20 and position.weight < self.max_single_weight:
                actions.append({'ticker': ticker, 'action': 'ADD', 'reason': '估值吸引'})
            else:
                actions.append({'ticker': ticker, 'action': 'HOLD', 'reason': '论点完整'})

        return actions

11.3 周期性投资计时器

def assess_cycle_phase(sector_data):
    """
    确定当前行业周期阶段。
    """
    capacity_util = sector_data.capacity_utilization
    spot_price_vs_cost = sector_data.spot_price / sector_data.marginal_cost
    yoy_capex_growth = sector_data.capex_growth_yoy
    bankruptcies_12m = sector_data.bankruptcies_trailing_12m
    pe_median = sector_data.median_pe

    if capacity_util < 0.65 and spot_price_vs_cost < 1.0 and bankruptcies_12m > 5:
        return '谷底', {
            'action': '在账面价值或以下积累领导者',
            'position_size': '小(每个 2-3%)',
            'risk': '可能进一步下行;使用宽止损'
        }

    elif capacity_util < 0.75 and spot_price_vs_cost > 1.0:
        return '早期复苏', {
            'action': '在盈利确认时增加仓位',
            'position_size': '增加至每个 5-7%',
            'risk': '可能虚假复苏'
        }

    elif capacity_util > 0.80 and spot_price_vs_cost > 1.3:
        return '中期周期', {
            'action': '持有;享受盈利动能',
            'position_size': '维持当前水平',
            'risk': '监测峰值信号'
        }

    elif capacity_util > 0.90 and yoy_capex_growth > 0.20:
        return '后期周期', {
            'action': '开始在强势中卖出',
            'position_size': '减少 30-50%',
            'risk': '峰值盈利创造价值幻觉(低 PE 陷阱)'
        }

    elif capacity_util > 0.85 and spot_price_vs_cost < 1.1 and pe_median < 8:
        return '峰值', {
            'action': '退出剩余仓位',
            'position_size': '零',
            'risk': '多年下行即将到来'
        }

    return '不确定', {'action': '等待明确'}

11.4 多因子量化重新平衡器

def monthly_rebalance(universe, current_portfolio, constraints):
    """
    A股量化策略的基于因子的月度重新平衡。
    """
    # 步骤 1:对所有股票评分
    scored = []
    for stock in universe:
        if not passes_liquidity_filter(stock):
            continue

        value = z_score(1/stock.pe) + z_score(1/stock.pb) + z_score(stock.div_yield)
        quality = z_score(stock.roe) + z_score(stock.earnings_stability) + z_score(stock.ocf_ni)
        momentum = z_score(stock.return_12m - stock.return_1m)  # 跳过最近一个月
        size = z_score(-math.log(stock.market_cap))

        composite = 0.30*value + 0.30*quality + 0.25*momentum + 0.15*size
        scored.append((stock, composite))

    scored.sort(key=lambda x: x[1], reverse=True)
    target_portfolio = scored[:50]  # 前 50 只股票

    # 步骤 2:应用行业约束
    target_portfolio = apply_sector_cap(target_portfolio, max_sector_weight=0.20)

    # 步骤 3:计算换手率约束的交易
    trades = calculate_rebalance_trades(
        current=current_portfolio,
        target=target_portfolio,
        max_turnover=0.30
    )

    # 步骤 4:执行
    for trade in trades:
        execute_trade(trade)

    return target_portfolio

12. 关键语录与原则

"找到湿的雪和长长的坡,然后让时间做你的朋友。"

"在A股做价值投资,你需要比巴菲特多一项能力:读懂政策。"

"便宜不是买入的理由,便宜且好才是。"

"成长股最大的风险不是估值高,而是增长不及预期。"

"量化投资的核心不是模型,而是纪律。"

"投资风格没有优劣,只有适合不适合。"

"护城河在中国同样重要,但你需要加上一条:政策护城河。"

"在这个市场上活得久,比赚得多更重要。"

"最好的投资者都是最好的学习者。"

"不要用一种方法去评判另一种方法的投资者。价值投资者不应该嘲笑趋势投资者,反之亦然。"