复利与年化
直觉
「一年涨 10%」听起来很美好,但怎么涨决定了真实的结局:是每天稳稳涨一点(复利),还是某天暴涨一次?复利让收益滚动放大,同时也带来一个隐藏成本——波动率拖累:同样的平均收益,波动越大,最终到手越少。
数学原理
算术平均 vs 几何平均
期的收益率为 :
「人话」解释:该用哪个?
算术平均是「每期平均赚多少」,适合做单期统计(如估方差、夏普)。 几何平均才是「真正复利下来的平均增速」,适合算长期年化收益。 长期看,几何平均 算术平均,差的就是波动率拖累。
年化
设一年有 个周期(日 、月 )。对对数收益,年化最干净:
对简单收益,复利年化收益率为:
波动率拖累
当收益近似正态时,几何与算术平均有著名关系:
也就是说,每多一份方差,复利收益就被吃掉一半。
可运行案例:高波动如何侵蚀复利
我们模拟平均收益完全相同、但波动不同的两条路径,比较它们的几何平均(真实年化)。
import numpy as np
import matplotlib.pyplot as plt
rng = np.random.default_rng(11)
mean_daily = 0.05 / 252 # 两条路径的"算术"日均收益相同
vols = [0.10, 0.40] # 低波动 vs 高波动(年化)
T = 252 * 5 # 5 年
plt.figure(figsize=(9, 3.8))
for vol in vols:
r = rng.normal(mean_daily, vol/np.sqrt(252), T)
equity = 100 * np.cumprod(1 + r)
arith = r.mean()
geom = (1 + r).prod() ** (1/len(r)) - 1
drag = 0.5 * (r.std(ddof=0))**2 * 252 # 年化拖累 ≈ 0.5σ²
plt.plot(equity, label=f"年化波动{vol:.0%} 几何年化{geom*252:.2%} 拖勒≈{drag:.2%}")
print(f"波动{vol:.0%}: 算术年化{arith*252:.2%} 几何年化{geom*252:.2%} 差≈{(arith-geom)*252:.2%}")
plt.axhline(100, color="gray", lw=0.8)
plt.title("同样平均收益,高波动让复利结果大打折扣")
plt.xlabel("交易日"); plt.ylabel("资金(起点100)"); plt.legend(fontsize=9)
plt.tight_layout(); plt.show()
动手改一改
把 vols 改成 [0.10, 0.40, 0.80]——年化波动 80% 时,即便算术平均为正,几何年化可能变成负的。这就是为什么风控如此重要。
小结
- 单期统计用算术平均,长期年化用几何平均;
- 年化:对数收益 、波动率 ;
- 波动率拖累 :波动越大,复利越受伤。