多期收益复合:连乘的完整算术
我的掌握程度:
先掌握这个答案
复合规则:总简单收益=(1+r1)(1+r2)...(1+rn)−1(连乘减一);对数口径:总对数收益=Σln(1+r_t)(直接相加)。相加为何高估:算术和忽略了"亏损后需要更大的涨幅回本"的非对称(-50%需+100%)——连乘如实记录这一不对称。工程写法:numpy的np.prod(1+r)−1 或 np.exp(np.log1p(r).sum())−1;pandas的(1+df).cumprod()生成净值序列。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
本阶段实战方法 · 每个统计量都要带单位和假设
计算收益、波动、回归、显著性或相关性时,先明确样本和推断条件。
- 写清收益频率、样本数、缺失处理、是否含费用;百分数与小数不可混用。
- 手算一组小样本,再用代码复算;区分算术均值年化、复合年化和年化波动。
- 解释假设不成立会发生什么:自相关、肥尾、非平稳与多次试验都会影响结论。
使用边界
- p值不是原假设为真的概率,也不是策略未来盈利概率。
- 日波动×√252依赖时间聚合假设;252是教学常用交易日数,实际市场与口径可能不同。
打开术语词典,随时查阅基础概念。
背景 · 从一个困惑说起
月收益率表摆在面前:+4%、-2%、+3%、+1%——总收益是多少?新手脱口而出4-2+3+1=6%;账户里的真实数字是1.04×0.98×1.03×1.01-1≈6.15%——差得不多?换一组极端数字就现形:+50%、-50%的算术和是0,连乘是-25%。
由此产生的问题
多期复合的完整算术规则是什么?为什么相加总是高估?连乘在工程上怎么写最不容易错?
核心概念
复合规则:总简单收益=(1+r1)(1+r2)...(1+rn)−1(连乘减一);对数口径:总对数收益=Σln(1+r_t)(直接相加)。相加为何高估:算术和忽略了"亏损后需要更大的涨幅回本"的非对称(-50%需+100%)——连乘如实记录这一不对称。工程写法:numpy的np.prod(1+r)−1 或 np.exp(np.log1p(r).sum())−1;pandas的(1+df).cumprod()生成净值序列。
为什么需要它
①一切净值计算的内核:回测引擎、基金净值、指数点位全是这行算术的循环;②高估的量级直觉:波动越大,算术和与真实复合的差距越大(差≈σ²/2,q-208的波动拖累预演);③防错价值:混用相加与连乘是新手回测的第一大算术bug——差值在长周期可达两位数百分比。
实际应用场景
净值曲线=(1+r).cumprod();年化=(期末净值)^(252/天数)−1(q-205衔接);对数收益求和再exp=完全等价的另一条路(验证代码正确性的双通道)。
与之前知识的联系
q-201的公式家族第一条落地为计算;q-011(阶段1复利)的直觉获得精确算术;q-206的√252建立在这些和式性质之上。
⚠ 常见误解
- 月收益加起来就是年收益:+10%与-10%相加是0、连乘是-1%——波动下加法永远高估
- 连乘顺序影响结果:乘法交换律保证顺序无关;影响的只是"路径"(回撤),不是终点
- 对数收益相加是近似:完全精确——ln((1+r1)(1+r2))=ln(1+r1)+ln(1+r2)是恒等式不是近似
🛠 本题实践任务
下载任一指数近12个月月度收益,分别用相加与连乘计算年度收益,记录差值。再模拟±10%交替24个月的净值终点。
💡 提示(先自己想5分钟再看)
月度收益=月末收盘pct_change;差值=波动的价格标签。
✅ 验收标准
两个年度收益数字+差值。亲手看过一次差距,你终生不会再犯加法错误。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(简单与对数收益、复利),再用案例、公式和代码帮助理解。此功能需要先启用服务。