跳到主要内容

复利和你想的不一样?完整模拟回测股票、ETF实务上长期的复利效果

· 13 分钟阅读
Eric Cheng

相信很多人都修过投资学,或者在开始进入投资市场时学过复利,最常看到的说法就是时间是复利的好朋友投资要趁早,同样的本金,早投资给几年就会...,之类的说法

先用自己网站上的【复利计算机-包含定期定额】,看一下 10% 的报酬率,投资 30 年会有什么的结果

复利结果

看似很美好,但真的进入投资市场后,发现好像不是那么回事,理论和实务上到底有多少差距?造成的原因是什么?还是我们念的理论根本上有问题?

复利和你想的不一样?

这是我们理想中符合复利表的投资标的走势

理想中的投资标的走势

这才是现实中的投资标的走势

现实中的投资标的走势

很好懂,简单的说,股市不会只涨不跌,所以复利表中的复利效果在股市中不会完全成立,也不太需要卖关子,上图橘线是大家熟悉的 SPY (S&P 500 ETF) 30年的走势图, 这样的走势大家应该还算可以接受,但如果是下图呢?

现实中的投资标的走势 2

理想和现实 差别在哪里?

我们先看一下 ffn 报表中 SPY 和 单纯复利,回测时间 1993-01-29 ~ 2022-12-23 (约 30 年)

 总报酬率最大亏损CAGR年化报酬率(Daily)年化波动率(Daily)
SPY1418.39%-55.19%9.53%10.90%18.93%
复利1418.39%09.53%9.10%0

这里看的是 Daily,先有几个基本的认识

  • 理想中的复利最大亏损为 0,因为只会涨不会跌,不会亏损
  • 理想中的复利的波动为 0,因为每天的涨幅都一样

蒙地卡罗模拟股价

蒙地卡罗方法是什么

蒙地卡罗方法(Monte Carlo method),听起来好像很专业的名词,但原理很简单,就是基于大数法则,透过大量随机乱数的实验,当实验的次数愈多,它的平均值或中位数就会愈趋近于理论值

蒙地卡罗模拟股价公式

我们参考雷大的这篇文章:【如何用蒙地卡罗模拟股价? 】,取得 python 的公式如下

S1 = S0 * np.exp((mu - 0.5 *Std**2)*dt + Std*np.sqrt(dt)*np.random.standard_normal())

mu : 资产年化报酬率
Std : 资产年化波动率
dt : 1/252. #模拟路径为每天,每天经过 1/252 年
S1:明天的股价
S0:今天的股价

实际模拟 SPY 股价 30 年报酬

在使用之前当然需要先验证,验证的对象就拿刚才的 SPY,因为我打算模拟 30 年,然后回圈跑 10000 次, 为了不虐待我的电脑,所以模拟路径改为「月」,年化报酬率和年化波动率也改为 Monthly,以下为 SPY 的资料

mu : 资产年化报酬率 = 10.26%
Std : 资产年化波动率 = 14.96%
dt : 1/12. #模拟路径为每月,每月经过 1/12 年

本金用 100,结果如下:模拟结果散布图:X 轴为报酬,Y 轴为发生的次数

SPY 30年股价模拟

模拟次数报酬平均值报酬最小值报酬中位数报酬最大值
10000215384154249390

先有个概念,这个模拟平均值是没有意义的,看散布图就知道,这是个很明显的右偏态,平均值会因为某些特别高的值(max 为 49390, 为中位数的 32 倍)一起加下去平均而被高估,就像我和郭台铭平均一人有30亿美元的资产一样,中位数是比较值得参考的数据

SPY 实际的数值为 1518 (CAGR: 9.53%),和模拟的中位数 1542 很接近,代表这个蒙地卡罗模拟股价有一定的参考性在,那我们就开始用这个公式来模拟股价了

CAGR 是什么

CAGR (compound annual growth rate),中文译为「复合年均成长率」, 在报表中是年化报酬率的一种,计算的依据只看投资金额的初值和最终值,不考虑中间的波动。 它其实比较接近现实中大家认知的真正报酬率,就是期初投入多少钱,期末真的能拿到手金额的年化报酬。

这个网站有提供【CAGR 年化报酬率计算机

模拟同样年化报酬率(10%),不同波动率的结果

波动率先分别用 5%,10%,20%,40% 来比较一下结果

模拟结果散布图:X 轴为报酬,Y 轴为发生的次数

年报酬 10% 30年股价模拟

波动率本金30年报酬中位数CAGR
5%100192210.35%
10%10017359.98%
20%10010868.27%
40%1001721.82%

这个图表很明显,波动愈大,右偏愈严重,报酬的中位数愈低,以 40% 波动的模拟,甚至 CAGR 低到 1.82%

还是得虐待电脑,这次同样用 10% 年报酬率,然后波动率从 2%, 4%, 6% 一直跑回圈算到 50%,整理绘图如下

蓝线为理想中的复利报酬 10%,绿线为使用蒙地卡罗的 CAGR 模拟结果,Y 轴为报酬率,X 轴为波动率 (小提示,将滑鼠移到图形上可以看到数据)

  • 这张图就更明确了,波动愈大,蒙地卡罗模拟出来的 CAGR 愈低,甚至在波动率到 45% 的时候,CAGR 变成了负值,代表你的投资经过了 30 年,结果最后的金额会比本金还少

夏普值 是什么

夏普值 (Sharpe Ratio) = 报酬率 / 波动率

模拟同样夏普值(0.6),不同波动率的结果

为什么要用同样的夏普值来做模拟?今年年初写过一篇文章:【杠杆型 ETF 适不适合长期持有?回测 TQQQ】,文章中的杠杆型 ETF 就是同时放大报酬和波动,下面的回测数据可以看出同时放大报酬和波动后长期持有的真正报酬率

使用 0.6 是因为 SPY 30 年的夏普值约在 0.6,继续虐待电脑,这次的模拟从 2%, 4%, 6% 一直跑回圈算到 80%,整理绘图如下

蓝线为理想中的复利报酬,绿线为使用蒙地卡罗的 CAGR 模拟结果,Y 轴为报酬率,X 轴为波动率 (小提示,将滑鼠移到图形上可以看到数据)

  • 从这张图来看,在波动率 20% 以下时,理想值和模拟实际值很接近,但随着波动率的增加,模拟实际值并没有跟上理想值
  • 波动率在 40% 左右,模拟实际值几乎不再上升,甚至在 70% 左右反而开始下降

在【杠杆型 ETF 适不适合长期持有?回测 TQQQ】这篇文章中的 Mock TQQQ 23 年的总报酬率是跑输 QQQ 的,当初觉得有点惊讶,但从 Mock TQQQ 当时测的波动率高达 78% 来看,用这个数学模型解释就一点都不奇怪了

不同投资商品的 报酬率、波动率 分布图

讲了那么多报酬率和波动率,所以我们经常投资的商品的报酬率和波动率到底是多少?

简单整理了一下比较常见的一些股票型 ETF、债券 ETF、股票如下图 (小提示,将滑鼠移到图形上可以看到数据), 数据回测时间除了 TLSA 外均为 2008-06-26(VT 的上市时间) 到 2022-12-27,TSLA 则是它上市时间到 2022-12-27,这个值会随回测的时间不一样而不同,所以尽量让大家的时间都差不多

  • 也不意外,债券型 ETF 多是低波动低报酬,股票型 ETF 次之,个股尤其是科技股就比较多高波动高报酬
  • 从刚才的模拟大概在 40% 的波动率可以得到最佳的报酬,以大盘型 ETF 大概是两倍杠杆左右,科技股则没什么开杠杆的空间了

结论

依惯例,文章太长,整理一下重点

  • 复利表中的复利效果在股市中不会完全成立,因为复利表中的复利波动为0,只涨不跌且涨幅相等,在股市不成立
  • 影响复利效果的原因在于报酬率和波动率
  • 使用蒙地卡罗摸拟股价结果:波动率愈大,右偏态愈明显,中位数愈低,代表实务投资状况波动率愈高的投资标的,在长期投资实际的报酬会愈容易不符预期
  • 开杠杆投资即使报酬率预期为正值,长期投资的报酬率并不会随杠杆倍数增加,反倒是波动率过高时报酬率还容易反而下降
  • 大盘型 ETF 的最佳报酬大概是两倍杠杆左右,科技股则没什么开杠杆的空间

备注

版权声明