简单与对数收益率的换算与使用边界
我的掌握程度:
先掌握这个答案
换算:R=ln(1+r),r=e^R−1。使用边界铁律:①横截面方向(组合加权):只能用简单收益——组合收益=Σwᵢrᵢ(简单),对数收益加权平均≠组合对数收益(Jensen不等式,差≈方差项的一半);②时间序列方向(跨期累加):对数收益直接求和最方便,简单收益需连乘。结论:一句话记忆——「横着用简单,竖着用对数」。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
先核对现金流与期限
没有中途出入金时才可直接用期末/期初计算持有期收益;分红、费用要避免漏计或重复计入。有出入金时区分时间加权与资金加权。复合年化使用净值比的幂,算术均值年化用于不同统计目的。
本阶段实战方法 · 每个统计量都要带单位和假设
计算收益、波动、回归、显著性或相关性时,先明确样本和推断条件。
- 写清收益频率、样本数、缺失处理、是否含费用;百分数与小数不可混用。
- 手算一组小样本,再用代码复算;区分算术均值年化、复合年化和年化波动。
- 解释假设不成立会发生什么:自相关、肥尾、非平稳与多次试验都会影响结论。
使用边界
- p值不是原假设为真的概率,也不是策略未来盈利概率。
- 日波动×√252依赖时间聚合假设;252是教学常用交易日数,实际市场与口径可能不同。
背景 · 从一个困惑说起
一位新研究员把组合里三只股票的对数收益率直接按权重平均,得到「组合对数收益」,再exp回简单收益——年化结果和对账系统差了0.8%。排查两天,发现病根在对数收益不能横截面加权。这类边界错误每天在无数回测代码里发生。
由此产生的问题
简单与对数收益率的精确换算是什么?横截面(跨资产)与时间序列(跨期)两个方向各自该用哪个?错误的代价有多大?
核心概念
换算:R=ln(1+r),r=e^R−1。使用边界铁律:①横截面方向(组合加权):只能用简单收益——组合收益=Σwᵢrᵢ(简单),对数收益加权平均≠组合对数收益(Jensen不等式,差≈方差项的一半);②时间序列方向(跨期累加):对数收益直接求和最方便,简单收益需连乘。结论:一句话记忆——「横着用简单,竖着用对数」。
为什么需要它
①精度即金钱:组合含高波动资产时,错用对数加权会系统性低估组合收益(幅度≈0.5×横截面方差);②读懂文献:学术论文默认log return,工程系统多用simple return,换算意识是跨界的翻译器;③本题是阶段4代码实战的数学地基——pandas里pct_change(简单)与np.log().diff()(对数)两条代码线正对应两个世界。
实际应用场景
回测引擎标准写法:日度组合收益用简单收益加权 → 净值连乘;风险分析(波动/相关性/回归)在同一段历史上用对数收益。两套数各管一段,账目分毫不差。
与之前知识的联系
q-201给了公式家族总表,本题划定使用边界——从此你在pandas里每次选择pct_change还是log().diff(),都有明确的判据。下一题起进入年化与统计量的推导(√252的来历就在前方)。
⚠ 常见误解
- 小差异无所谓:年化差0.8%在10亿规模=每年80万,且方向性偏差会误导因子评价
- 对数收益加权后exp回来就还原了:Jensen不等式保证这只在零波动时成立,波动越大偏差越大
- 教材用什么我就用什么:教材用对数是为了数学方便,你的对账系统用的是真金白银的简单收益——边界必须自己把关
🛠 本题实践任务
构造一个三资产组合(收益+50%、0%、−30%,等权),分别用正确与错误算法计算组合收益,验证误差≈0.5×收益横截面方差。把「横着用简单,竖着用对数」写进你的代码注释模板。
💡 提示(先自己想5分钟再看)
正确=简单加权=6.67%;错误=exp(均值ln)−1;方差=np.var([0.5,0,-0.3])。
✅ 验收标准
两个组合收益数字+误差与0.5σ²的对照。这个练习做过一次,终生免疫这类bug。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(简单收益率公式、对数收益率公式),再用案例、公式和代码帮助理解。此功能需要先启用服务。