基于杰里米·西格尔,《股市长线法宝(第五版,2014年)》
西格尔的论证建立在投资文献中最全面的数据集之上:超过200年的金融市场数据证明,股票是主导的长期财富构建资产类别。 不是以微小的差距——而是以压倒性的、复利的、不可阻挡的差距,没有任何其他资产类别能接近。
西格尔不是讲故事的人或励志作家。他是实证主义者。书中的每个论断都有跨越两个世纪的数据支持。其他投资书籍提供观点的地方,西格尔提供表格。其他地方提供轶事的地方,西格尔提供年复合增长率。历史证据的份量使这本书成为任何构建长期投资组合的人最重要的参考。
尽管数据密集,本书提炼为清晰、可操作的原則:
这是一整本书的基础数据集。1802年投资的1美元:
| 资产类别 | 1美元增长到(名义) | 1美元增长到(实际) | 实际CAGR |
|---|---|---|---|
| 股票 | $13,975,832 | $704,997 | 6.6% |
| 长期债券 | $33,922 | $1,778 | 3.6% |
| 国库券 | $5,379 | $281 | 2.7% |
| 黄金 | $86.40 | $4.52 | 0.7% |
| 美元 | $1.00 | $0.052 | -1.4% |
关键洞察: 股票的1美元变成了实际购买力的近705,000美元。债券的1美元变成了$1,778。黄金的1美元变成了$4.52。现金的1美元损失了95%的购买力。股票与每种其他资产类别之间的复利差距不是渐进的——它是指数级的、惊人的。
西格尔将数据分时期展示实际股票回报的显著稳定性:
| 时期 | 股票实际CAGR | 债券实际CAGR | 国库券实际CAGR |
|---|---|---|---|
| 1802-1870 | 7.0% | 4.8% | 5.1% |
| 1871-1925 | 6.6% | 3.7% | 3.2% |
| 1926-2012 | 6.4% | 2.6% | 0.5% |
| 全时期 | 6.6% | 3.6% | 2.7% |
关键观察: 股票实际回报在各分期之间几乎没有变动(6.4-7.0%)。债券和国库券的实际回报随时间大幅下降,尤其是在1926年后的通胀时代。股票是唯一在所有货币政策体系中可靠地保持和增长购买力的资产类别。
即使在最糟糕的时期,股票最终也会恢复并占据主导:
| 危机 | 峰值到谷底 | 恢复到实际值(年) |
|---|---|---|
| 1929年大萧条 | -83.4% | 15年 |
| 1973-74年石油危机 | -52.6% | 7年 |
| 2000-02年网络泡沫破裂 | -44.7% | 7年 |
| 2007-09年金融危机 | -52.6% | 5年 |
关键说明: 即使包括大萧条,从1929年峰值开始的20年持有期也会跑赢债券。损害总是暂时的;增长是永久的。
股票风险溢价(ERP)是股票相对于无风险资产(国库券)提供的超额回报,作为承受波动的补偿:
西格尔识别了股票风险溢价的多个来源:
西格尔讨论了Mehra和Prescott的著名发现,即历史股权溢价太大,无法用理性风险厌恶模型解释。标准经济理论预测ERP约为0.5-1.0%。实际的4-6%溢价意味着要么极端的风险厌恶,要么系统性的行为错误。西格尔认为主要是行为性的——这意味着只要人性没有根本改变,溢价可能会持续存在。
西格尔强调:名义收益对长期投资者毫无意义。 只有实际(经通胀调整)回报才重要,因为它们衡量实际购买力。
| 概念 | 定义 | 为什么重要 |
|---|---|---|
| 名义回报 | 包含通胀的原始百分比收益 | 高估真实财富创造 |
| 实际回报 | 减去通胀后的回报 | 衡量实际购买力 |
| 货币幻觉 | 混淆名义收益与真实财富 | 最常见的投资者错误 |
西格尔的数据显示股票是最好的长期通胀对冲:
关键对比:债券在名义上是"安全的",但在通胀时期代表实际损失。从1946年到1981年,长期政府债券提供了负实际回报——追求"安全"的投资者在35年期间实际上摧毁了购买力。西格尔称之为“有记录以来所谓安全资产的最大失败”。
西格尔最重要且反直觉的发现之一:随着持有期延长,股票的风险相对于债券下降。 这是均值回归现象——极端回报之后是抵消回报,将长期平均拉回6.6%的实际均值。
| 持有期 | 股票(年化标准差) | 债券(年化标准差) |
|---|---|---|
| 1年 | 18.1% | 8.3% |
| 2年 | 13.2% | 7.0% |
| 5年 | 7.5% | 5.3% |
| 10年 | 4.4% | 4.4% |
| 20年 | 2.8% | 3.5% |
| 30年 | 1.7% | 3.1% |
交叉点: 在约10年时,股票风险等于债券风险。超过10年,股票风险更低。到20-30年的horizon,股票回报紧密集中在6-7%实际值,而债券回报仍然分散。
| 持有期 | 股票跑赢债券的概率 | 股票跑赢国库券的概率 |
|---|---|---|
| 1年 | 60.6% | 61.5% |
| 5年 | 70.5% | 74.1% |
| 10年 | 79.6% | 82.3% |
| 20年 | 91.5% | 95.3% |
| 30年 | 99.4% | 99.8% |
实施规则: 对于任何20年以上不需要的资金,几乎没有任何历史场景中股票没有跑赢债券。随着horizon延长,股票的理由变得压倒性。
西格尔注意到股票的6.5-7.0%实际回报如此稳定地跨时期和跨国家,它几乎像物理常数一样运作。他将这归因于股票回报与经济增长加股息收益率之间的基本关系。只要经济在增长,公司支付股息,股票的实际回报就会趋近于此范围。
西格尔提供了关于股息在总回报中作用的惊人数据:
| 时期 | 总实际回报 | 价格增值 | 股息贡献 |
|---|---|---|---|
| 1871-2012 | 6.5% | 1.8% | 4.7% (72%) |
| 1926-2012 | 6.4% | 1.9% | 4.5% (70%) |
关键洞察: 长期股票回报的约70%来自重新投资的股息,而不是价格增值。花费股息而不是重新投资只捕获不到三分之一的总回报。
西格尔展示了"回报加速器"效应:当股票价格下跌时,重新投资的股息以较低价格购买更多股份,然后产生更多股息,创造加速恢复的复利循环。这就是为什么股息再投资将熊市从灾难变为机会。
书中的示例: 1929年最糟糕的时机投资的1,000美元在标准普尔500指数中,如果重新投资股息,到1945年将恢复到原始实际价值——但如果不重新投资,要到1958年才能恢复。股息再投资将恢复时间缩短了近一半。
西格尔注意到股息收益率从历史上的5-6%下降到现代的大约2%。他认为这在一定程度上被股票回购所抵消(从税收效率角度它们与股息经济上等价),但警告较低的收益率可能会减少未来的回报加速器效应,并将预期回报从历史的6.6%适度降低至未来可能5-6%实际值。
trailing P/E比率是最常用的估值指标:
| P/E范围 | 后续10年实际回报(历史平均) |
|---|---|
| 低于10 | 10-11% |
| 10-15 | 8-10% |
| 15-20 | 5-7% |
| 20-25 | 3-5% |
| 高于25 | 0-3% |
实施规则: 起始P/E解释约40%的后续10年回报。在P/E低时买入;在P/E高时期望较低回报。但永远不要仅用P/E来计时入场和出场——剩余60%的方差可能产生与P/E alone所预测的非常不同的结果。
西格尔广泛讨论了Robert Shiller的CAPE比率(使用10年平均实际盈利的P/E)。CAPE是比 trailing P/E更好的长期回报预测指标,因为它平滑了周期性盈利波动。
| CAPE范围 | 后续10年实际回报(历史平均) |
|---|---|
| 低于10 | 10-12% |
| 10-15 | 8-10% |
| 15-20 | 5-8% |
| 20-25 | 3-5% |
| 25-30 | 1-4% |
| 高于30 | 0-2% |
西格尔的CAPE警告: 他认为由于会计准则变化(特别是减值),CAPE近几十年有向上的偏差,这压低了盈利分母。他建议"真实"CAPE比报告的CAPE低约5点,这意味着市场可能不如原始CAPE所暗示的那样被高估。
股息收益率(年度股息/价格)是最古老的估值指标:
盈利收益率(P/E的倒数)允许与债券收益率直接比较:
西格尔不推荐单一指标。相反,使用综合指标:
西格尔展示了关于价值与成长辩论的广泛数据:
| 指标 | 价值股 | 成长股 | 价差 |
|---|---|---|---|
| 平均年实际回报 | 8.3% | 5.8% | +2.5% |
| 标准差 | 20.4% | 22.1% | 更低 |
| 夏普比率 | 0.35 | 0.22 | 更高 |
价值溢价是双刃剑: 价值在整个周期中跑赢,但价值股在投机泡沫期间(如1998-2000年)和剧烈经济收缩期间可能显著跑输。溢价需要以数十年为单位的耐心。
西格尔提供了几个解释:
| 类别 | 平均年实际回报 | 标准差 |
|---|---|---|
| 小盘 | 8.1% | 26.8% |
| 大盘 | 6.4% | 19.2% |
| 价差 | +1.7% | 更高 |
警告: 小盘溢价高度集中在难以大规模交易的微盘股中。调整交易成本后,可实施的小盘溢价接近0.5-1.0%。西格尔建议使用指数基金进行适度小盘倾斜(股票配置的10-15%),其中交易成本是可控的。
最高长期回报来自小盘价值股——两种溢价的交叉点。然而,这也是最波动和流动性最差的板块。实施应使用分散化指数基金而非个股选择。
西格尔检查了长期行业回报,发现1957年原始标准普尔500公司中表现最好的集中在:
悖论: 高增长行业(技术、电信)往往产生更低的长期回报,因为投资者为增长支付过多。最佳回报来自稳定的、枯燥的公司,具有强大的股息,以合理的估值购买——菲利普·莫里斯、雅培实验室、可口可乐。
西格尔检查了发达市场的股票回报:
| 国家 | 实际股票回报(1900-2012年) | 实际债券回报 |
|---|---|---|
| 美国 | 6.3% | 1.8% |
| 英国 | 5.2% | 1.5% |
| 德国 | 3.1% | -1.6% |
| 日本 | 3.8% | -1.0% |
| 法国 | 3.1% | -0.2% |
| 澳大利亚 | 7.3% | 1.6% |
| 世界平均 | 5.0% | 1.0% |
关键观察: 股票在每个研究的国家都跑赢了债券。即使是遭受毁灭性战争、恶性通胀和政治动荡的国家(德国、日本),也看到了正长期实际股票回报。股票的理由是全球性的,不只是美国的。
国际分散化降低投资组合波动性,因为国家级股票市场并非完美相关:
免费午餐: 国际分散化提供约15-20%的波动性降低,没有预期的回报牺牲。西格尔建议将股票的30-40%配置到非美国市场。
全球投资者严重超配本国市场。美国投资者持有约75-80%的国内股票,尽管美国仅占全球市值的约50%。这种本国偏好牺牲了分散化好处,并将风险集中在一个国家的经济和政治命运上。
西格尔对新兴市场持谨慎乐观态度:
西格尔量化了税收对长期复利的毁灭性影响:
| 情景 | 30年后$1,000(名义) |
|---|---|
| 税前10%回报 | $17,449 |
| 资本利得后(20%) | $12,368 |
| 所得税后(35%) | $7,612 |
| 资本利得+通胀后 | $6,213 |
复利成本: 税收不只是按其百分比税率降低回报。它们减少了复合的基数,在时间内产生指数增长的成本。30年间每年2%的税收拖累可以摧毁30-40%的终端财富。
西格尔推荐几种税收最小化方法:
西格尔强调通胀是一种不需要立法的税收:
这是最实用的部分之一。西格尔提供了基于时间 horizon 的具体配置指导:
| 时间 Horizon | 股票 | 债券 | 现金 | 理由 |
|---|---|---|---|---|
| 30年以上 | 90% | 10% | 0% | 最大复合;充分利用均值回归好处 |
| 20-30年 | 75-85% | 10-20% | 0-5% | 强烈的股票理由;适度的债券缓冲 |
| 10-20年 | 60-75% | 20-30% | 5-10% | 股票仍受青睐但波动性更重要 |
| 5-10年 | 40-60% | 30-40% | 10-20% | 平衡;较短的 horizon 限制恢复时间 |
| 1-5年 | 20-40% | 30-40% | 20-40% | 资本保值优先 |
| 1年以下 | 0-10% | 20-30% | 60-80% | 几乎全在现金和短期债券 |
在每个时间 horizon 区间内,西格尔建议根据心理风险承受能力进行调整:
随着投资者年龄增长和时间 horizon 缩短,配置应逐渐转移:
年龄25-35: 股票85-90% | 债券10-15% | 现金0%
年龄35-45: 股票75-85% | 债券15-20% | 现金0-5%
年龄45-55: 股票65-75% | 债券20-30% | 现金5%
年龄55-65: 股票50-65% | 债券25-35% | 现金10%
年龄65-75: 股票40-55% | 债券30-40% | 现金10-15%
年龄75+: 股票30-50% | 债券30-40% | 现金15-25%
关键警告: 即使在退休后,保持重要的股票暴露。65岁的人可能再活25-30年——这是股票发挥作用的足够长的 horizon。过于激进的股票削减在退休中可能导致资金耗尽。
西格尔识别了最损害长期回报的行为偏差:
| 偏差 | 描述 | 典型损害 |
|---|---|---|
| 短视损失厌恶 | 过于频繁检查投资组合;对短期损失反应过度 | 每年1-3% |
| 近因偏差 | 将近期回报推断到未来 | 导致买高卖低 |
| 过度自信 | 相信自己可以时机市场或挑选赢股 | 每年2-4%交易成本 |
| 从众 | 跟随人群进入流行投资 | 在峰值买入,在谷底卖出 |
| 锚定 | 锚定购买价格而非当前价值 | 持有输家,卖出赢家 |
| 处置效果 | 过早卖出赢家和长期持有输家 | 每年1-2% |
| 本国偏好 | 国内股票过度集中 | 减少分散化 |
| 叙事谬误 | 相信引人入胜的故事而非统计证据 | 为"故事股"支付过多 |
西格尔引用Dalbar研究,显示普通股票基金投资者赚取的回报比他们投资的基金每年少约3-4%。原因完全是行为性的:投资者在反弹后买入(当他们感到自信时),在下跌后卖出(当他们感到恐惧时)。这种买高卖低的模式是个人投资者回报最具破坏性的力量。
对抗行为偏差的唯一可靠防御是将人类判断从日常投资决策中移除:
西格尔提供了反对市场时机最有力的论证之一:
| 情景 | 年化回报(1963-2012年) |
|---|---|
| 始终满仓 | 10.0% |
| 错过10个最佳交易日 | 7.1% |
| 错过20个最佳交易日 | 5.3% |
| 错过30个最佳交易日 | 3.8% |
| 错过40个最佳交易日 | 2.4% |
毁灭性数学: 在约12,500个交易日中错过仅仅10个最佳交易日将回报削减近30%。最佳交易日往往发生在极端波动期间——正是市场时机玩家逃往现金的时候。在错误的时间离场的成本是灾难性的。
西格尔允许一个狭窄的例外规则:极端估值水平。 当CAPE超过30(约历史中位数的2倍)时,适度将股票配置减少5-10个百分点可能是合理的。当CAPE跌破10时,适度增加股票配置同样合理。但这些是极端水平的适度倾斜,不是全面市场时机。
| 组件 | 配置 | 工具 |
|---|---|---|
| 美国总股票市场 | 55% | 低成本总市场指数基金 |
| 国际发达市场 | 20% | 发达市场(美国除外)指数基金 |
| 新兴市场 | 10% | 广泛新兴市场指数基金 |
| 小盘价值倾斜 | 5% | 小盘价值指数基金 |
| 美国总债券市场 | 10% | aggregate债券指数基金 |
优先顺序: (1) 获取雇主401(k)匹配 (2) 最大化Roth IRA (3) 最大化401(k) (4) 税收经纪账户与税收效率基金。
| 组件 | 配置 | 工具 |
|---|---|---|
| 美国总股票市场 | 45% | 低成本总市场指数基金 |
| 国际发达市场 | 15% | 发达市场(美国除外)指数基金 |
| 新兴市场 | 5% | 广泛新兴市场指数基金 |
| 小盘价值倾斜 | 5% | 小盘价值指数基金 |
| 美国总债券市场 | 20% | aggregate债券指数基金 |
| TIPS | 5% | 国库通胀保护证券基金 |
| 现金/短期债券 | 5% | 货币市场或短期债券基金 |
| 组件 | 配置 | 工具 |
|---|---|---|
| 美国总股票市场 | 35% | 低成本总市场指数基金 |
| 国际发达市场 | 10% | 发达市场(美国除外)指数基金 |
| 股息成长股 | 10% | 股息贵族/高质量股息基金 |
| 美国总债券市场 | 20% | aggregate债券指数基金 |
| TIPS | 10% | 国库通胀保护证券基金 |
| 短期债券 | 10% | 短期债券基金 |
| 现金 | 5% | 货币市场基金 |
| 组件 | 配置 | 工具 |
|---|---|---|
| 美国总股票市场 | 25% | 低成本总市场指数基金 |
| 国际发达市场 | 10% | 发达市场(美国除外)指数基金 |
| 股息成长股 | 10% | 股息贵族基金 |
| 美国总债券市场 | 20% | aggregate债券指数基金 |
| TIPS | 15% | 国库通胀保护证券基金 |
| 短期债券 | 10% | 短期债券基金 |
| 现金 | 10% | 货币市场基金(1-2年费用) |
西格尔识别了损害长期财富最多的错误:
股票配置不足 — 最常见和最昂贵的错误。对短期波动的恐惧导致投资者持有过多的债券和现金,牺牲了巨大的长期复合潜力。
在恐慌中卖出 — 每次重大市场下跌都伴随着永久性经济崩溃的预测。它们都是错的。在恐慌中卖出将暂时的账面损失转化为永久的实际损失。
追逐表现 — 买入去年的赢家(行业、基金、风格)是可靠的高位买入方式。当一种趋势被广泛认识时,它通常接近尾声。
忽视股息 — 花费而非重新投资股息牺牲了70%的长期股票回报。在积累阶段,每笔股息都应自动重新投资。
支付过多费用 — 30年内1%的年费消耗约26%的终端财富。0.05%指数基金与1.0%主动基金之间的差异不是0.95%——在投资生涯中是数十万美元。
混淆名义和实际回报 — 4%通胀下的10%名义回报不是10%回报。是6%回报。不以实际方式思考导致储蓄不足和虚假信心。
时机市场 — 每有一个沃伦·巴菲特,就有数千个失败的市场时机者的故事从未被讲述。数据压倒性地支持在任何条件下保持投资。
忽视国际分散化 — 本国偏好集中风险并牺牲数学上免费的分散化好处。
不那么明显但仍有损害:
起点: $15,000储蓄,401(k)有雇主匹配
行动项目:
1. 将工资的10%投入401(k)($7,500/年)——获取完整雇主匹配
2. 开立Roth IRA,供款最大金额($6,500/年)
3. 设置配置:90%股票/10%债券
- 401(k):美国总股票指数(55%)、国际指数(25%)、债券指数(10%)、小盘价值(10%)
- Roth IRA:100%美国总股票指数(在税收优惠账户中更激进)
4. 自动化所有贡献和再投资
5. 每年审查;如偏离超过5%则再平衡
行动项目:
1. 最大化401(k)($22,500/年)和Roth IRA($6,500/年)
2. 开始向税收经纪账户供款($1,000+/月)
3. 调整配置至80%股票/15%债券/5%现金
4. 税收效率资产定位:
- 税收递延(401k):债券、REITs、高股息国际
- 税收免费(Roth):最高预期增长——小盘价值、新兴市场
- 应税:美国总市场指数(税收效率)、税收管理的国际
5. 开始在应税账户中进行税收损失收获
6. 每次加薪时提高储蓄率——至少将每次加薪的50%用于储蓄
行动项目:
1. 将配置转移至65%股票/25%债券/10%现金
2. 建立等于2年计划退休支出的现金储备
3. 建模退休收入需求:
- 目标支出:$80,000/年
- 社会保障(估计):$28,000/年
- 来自投资组合:$52,000/年
- 退休所需投资组合(4%规则):$1,300,000 — 已超过
4. 添加TIPS配置(10%)用于通胀保护
5. 如果处于较低税率年份,开始Roth转换阶梯
6. 将应税账户转向未来收入的股息成长股
行动项目:
1. 将配置设置为45%股票/35%债券/10% TIPS/10%现金
2. 实施提款策略:
- 第一年从现金储备支出(无强制卖出)
- 从股息和债券收入补充现金
- 只在上涨年出售股票以补充债券/现金
3. 提款率:初始投资组合的3.5-4.0%,根据通胀调整
4. 灵活支出规则:在投资组合下跌超过20%的任何年份将支出减少10%
5. 73岁开始所需最低分配——与提款计划协调
6. 继续再平衡;不因恐惧放弃股票
7. 与税务顾问年度审查以优化提款顺序
class HistoricalReturnAnalyzer:
"""
按照西格尔的方法分析长期资产类别回报。
使用实际(经通胀调整)回报作为主要指标。
"""
def __init__(self, price_data, dividend_data, cpi_data):
self.price_data = price_data # 日/月价格序列
self.dividend_data = dividend_data # 股息支付历史
self.cpi_data = cpi_data # 消费者价格指数序列
def compute_real_total_return(self, asset, start_date, end_date):
"""
计算实际总回报(价格 + 重新投资的股息 - 通胀)。
这是长期分析中唯一重要的回报指标。
"""
nominal_price_return = (
self.price_data[asset][end_date] /
self.price_data[asset][start_date]
)
cumulative_dividend_return = self._compound_reinvested_dividends(
asset, start_date, end_date
)
nominal_total_return = nominal_price_return * cumulative_dividend_return
inflation_factor = (
self.cpi_data[end_date] / self.cpi_data[start_date]
)
real_total_return = nominal_total_return / inflation_factor
return real_total_return
def compute_rolling_returns(self, asset, holding_period_years):
"""
计算所有可能的滚动N年回报。
用于展示均值回归和随时间下降的风险。
"""
rolling_returns = []
for start in self._all_start_dates(holding_period_years):
end = start + years(holding_period_years)
real_return = self.compute_real_total_return(asset, start, end)
cagr = real_return ** (1.0 / holding_period_years) - 1.0
rolling_returns.append({
'start': start,
'end': end,
'total_real_return': real_return,
'annualized_real_return': cagr
})
return rolling_returns
def compute_equity_risk_premium(self, start_date, end_date):
"""
ERP = 股票实际回报 - 无风险实际回报。
股票风险补偿的中心指标。
"""
stock_return = self.compute_real_total_return(
'stocks', start_date, end_date
)
bill_return = self.compute_real_total_return(
'tbills', start_date, end_date
)
years = (end_date - start_date).days / 365.25
stock_cagr = stock_return ** (1.0 / years) - 1.0
bill_cagr = bill_return ** (1.0 / years) - 1.0
return stock_cagr - bill_cagr
def analyze_mean_reversion(self, asset, holding_periods=[1, 5, 10, 20, 30]):
"""
展示回报波动性如何随持有期下降。
西格尔长期股票论证的核心证据。
"""
results = {}
for period in holding_periods:
returns = self.compute_rolling_returns(asset, period)
annualized = [r['annualized_real_return'] for r in returns]
results[period] = {
'mean': mean(annualized),
'std_dev': std(annualized),
'min': min(annualized),
'max': max(annualized),
'pct_positive': sum(1 for r in annualized if r > 0) / len(annualized),
'pct_beat_bonds': self._pct_beat_bonds(returns, period)
}
return results
def dividend_contribution_analysis(self, start_date, end_date):
"""
将总回报分解为价格增值与股息再投资。
展示西格尔的发现:股息 ≈ 总回报的70%。
"""
total_real = self.compute_real_total_return('stocks', start_date, end_date)
price_only_real = self._compute_price_only_real_return(start_date, end_date)
years = (end_date - start_date).days / 365.25
total_cagr = total_real ** (1.0 / years) - 1.0
price_cagr = price_only_real ** (1.0 / years) - 1.0
dividend_cagr = total_cagr - price_cagr
return {
'total_real_cagr': total_cagr,
'price_appreciation_cagr': price_cagr,
'dividend_reinvestment_cagr': dividend_cagr,
'dividend_contribution_pct': dividend_cagr / total_cagr * 100
}
def _compound_reinvested_dividends(self, asset, start, end):
"""以现行价格重新投资每笔股息。"""
shares = 1.0
for div_date, div_amount in self.dividend_data[asset].items():
if start <= div_date <= end:
price = self.price_data[asset][div_date]
new_shares = (shares * div_amount) / price
shares += new_shares
final_price = self.price_data[asset][end]
initial_price = self.price_data[asset][start]
return (shares * final_price) / (1.0 * initial_price)
class SiegelAllocationOptimizer:
"""
基于西格尔框架确定最佳资产配置。
主要输入:时间 horizon。次要输入:风险承受能力。
可选:当前估值水平用于战术倾斜。
"""
# 西格尔基于时间 horizon 的基础配置(年)
BASE_ALLOCATIONS = {
30: {'stocks': 0.90, 'bonds': 0.10, 'cash': 0.00},
25: {'stocks': 0.85, 'bonds': 0.12, 'cash': 0.03},
20: {'stocks': 0.78, 'bonds': 0.17, 'cash': 0.05},
15: {'stocks': 0.70, 'bonds': 0.22, 'cash': 0.08},
10: {'stocks': 0.60, 'bonds': 0.28, 'cash': 0.12},
5: {'stocks': 0.40, 'bonds': 0.35, 'cash': 0.25},
2: {'stocks': 0.20, 'bonds': 0.30, 'cash': 0.50},
1: {'stocks': 0.05, 'bonds': 0.25, 'cash': 0.70},
}
# 风险承受能力修饰符(应用于股票配置)
RISK_MODIFIERS = {
'aggressive': +0.05,
'moderate': 0.00,
'conservative': -0.10,
}
# 股票内的子配置
EQUITY_SUB_ALLOCATION = {
'us_total_market': 0.50,
'international_developed': 0.25,
'emerging_markets': 0.10,
'small_cap_value': 0.10,
'dividend_growth': 0.05,
}
def compute_allocation(self, time_horizon_years, risk_tolerance='moderate',
current_cape=None, investor_age=None):
"""
步骤1:从时间 horizon 插值基础配置
步骤2:根据风险承受能力调整
步骤3:应用基于估值的战术倾斜(如提供CAPE)
步骤4:计算子资产配置
"""
# 步骤1:基础配置
base = self._interpolate_allocation(time_horizon_years)
# 步骤2:风险承受能力调整
modifier = self.RISK_MODIFIERS.get(risk_tolerance, 0.0)
stock_pct = min(0.95, max(0.05, base['stocks'] + modifier))
bond_pct = base['bonds'] - modifier * 0.6
cash_pct = 1.0 - stock_pct - bond_pct
# 步骤3:基于估值的战术倾斜
if current_cape is not None:
cape_tilt = self._cape_tactical_tilt(current_cape)
stock_pct = min(0.95, max(0.10, stock_pct + cape_tilt))
bond_pct = bond_pct - cape_tilt * 0.6
cash_pct = 1.0 - stock_pct - bond_pct
# 归一化以确保配置总和为1.0
total = stock_pct + bond_pct + cash_pct
allocation = {
'stocks': round(stock_pct / total, 3),
'bonds': round(bond_pct / total, 3),
'cash': round(cash_pct / total, 3),
}
# 步骤4:子配置
equity_detail = {}
for sub_asset, weight in self.EQUITY_SUB_ALLOCATION.items():
equity_detail[sub_asset] = round(allocation['stocks'] * weight, 4)
# 为退休者调整子配置:增加股息成长
if investor_age and investor_age >= 60:
equity_detail['dividend_growth'] += 0.05 * allocation['stocks']
equity_detail['us_total_market'] -= 0.05 * allocation['stocks']
return {
'top_level': allocation,
'equity_detail': equity_detail,
'time_horizon': time_horizon_years,
'risk_tolerance': risk_tolerance,
'cape_used': current_cape,
}
def _cape_tactical_tilt(self, current_cape):
"""
基于CAPE估值的适度战术倾斜。
仅在极端情况适用——遵循西格尔的狭窄例外。
历史CAPE中位数:约16.5
"""
if current_cape > 30:
return -0.10 # 在极端高估时适度减少股票
elif current_cape > 25:
return -0.05
elif current_cape < 10:
return +0.10 # 在极端低估时适度增加股票
elif current_cape < 13:
return +0.05
else:
return 0.00 # 正常估值区间无倾斜
def _interpolate_allocation(self, years):
"""在定义的 horizon 括号之间进行线性插值。"""
horizons = sorted(self.BASE_ALLOCATIONS.keys())
if years >= max(horizons):
return self.BASE_ALLOCATIONS[max(horizons)]
if years <= min(horizons):
return self.BASE_ALLOCATIONS[min(horizons)]
lower = max(h for h in horizons if h <= years)
upper = min(h for h in horizons if h >= years)
if lower == upper:
return self.BASE_ALLOCATIONS[lower]
fraction = (years - lower) / (upper - lower)
result = {}
for key in self.BASE_ALLOCATIONS[lower]:
low_val = self.BASE_ALLOCATIONS[lower][key]
high_val = self.BASE_ALLOCATIONS[upper][key]
result[key] = low_val + fraction * (high_val - low_val)
return result
class PortfolioRebalancer:
"""
按照西格尔的规则执行定期再平衡。
"""
DRIFT_THRESHOLD = 0.05 # 5个百分点
def should_rebalance(self, current_allocation, target_allocation):
"""检查任何资产类别是否偏离超过阈值。"""
for asset_class in ['stocks', 'bonds', 'cash']:
current = current_allocation.get(asset_class, 0)
target = target_allocation.get(asset_class, 0)
if abs(current - target) > self.DRIFT_THRESHOLD:
return True
return False
def rebalance(self, portfolio, target_allocation):
"""
执行再平衡,通过新贡献和提款优先。
"""
trades = []
for asset_class, target_pct in target_allocation.items():
current_pct = portfolio.allocation[asset_class]
diff = target_pct - current_pct
if abs(diff) > self.DRIFT_THRESHOLD:
# 计算需要买入/卖出的金额
trade_value = portfolio.total_value * diff
trades.append({
'action': 'BUY' if diff > 0 else 'SELL',
'asset_class': asset_class,
'amount': abs(trade_value),
'target_pct': target_pct
})
return trades
def calendar_rebalance_check(self, portfolio, last_rebalance_date):
"""检查是否到了预定再平衡日期。"""
from datetime import timedelta
if datetime.now() - last_rebalance_date > timedelta(days=180):
return True # 半年
return False
"在过去的两个世纪里,股票被证明是长期投资的最佳选择。它们提供了比债券更好的保护和增长购买力的能力,比现金高得多的回报。这不是巧合,而是反映了股票作为对人类企业生产能力的索取权的根本性质。"
"投资者犯下的最大错误是让短期波动导致他们在应该最大化长期复合时最小化股票敞口。"
"高通胀和债券的组合对现金储蓄者是毁灭性的。在1970年代和1980年代初购买长期政府债券的投资者在通胀调整后损失了大量资金——这是'安全'投资的悖论。"
"在市场上获得最佳结果需要的不是洞察力或灵活性,而是坚持一个简单的策略并保持长期视角的毅力的简单策略。"
"等待最佳时机入场的投资者——比如等待市场崩盘——几乎总是发现当他们最终投资时,最好的日子已经过去了。"
"对于任何有超过20年 horizon 的资金,历史上没有一种主要资产类别能像股票那样可靠地保护和提高购买力。"
"那些在市场恐慌中保持投资的投资者,那些无视短期噪音并坚持计划的投资者,是那些积累财富的投资者。"
"投资者最大的敌人不是市场,而是他们自己的情绪。近因偏差和从众心理导致人们在错误的时间买入和卖出。"
"长期来看,股票是唯一持续提供正实际税后回报的主要资产类别——这是它们作为财富建设工具的持久优势的基础。"
实施方案规范编译自杰里米·西格尔,《股市长线法宝(第五版)》。 本文件是实践应用的系统提炼,不替代阅读原作。
(文件结束)