什么是对数收益率?为什么学术圈和量化研究都爱用它?
我的掌握程度:
先掌握这个答案
对数收益率 r = ln(P_t / P_{t−1}) = ln(1 + 简单收益)。两大性质:①时间可加:多期对数收益直接相加=总对数收益(因为ln把乘法变加法);②取值范围是全体实数(简单收益被锁死在≥−100%),分布更对称。小收益率时两者几乎相等(1%→ln(1.01)≈0.995%)。
先读结论,再核对下方使用边界;数字例题为教学情景,涉及实际行情与规则时请核对原始来源。
从理解到使用
先核对现金流与期限
没有中途出入金时才可直接用期末/期初计算持有期收益;分红、费用要避免漏计或重复计入。有出入金时区分时间加权与资金加权。复合年化使用净值比的幂,算术均值年化用于不同统计目的。
本阶段实战方法 · 把行情数字变成可比较的收益
看股票、基金或策略业绩时,先对齐本金、起止日期、现金流与费用。
- 选一个固定区间,记录期初价值、期末价值、分红、出入金和交易费用。
- 没有中途出入金时,用(期末价值+已取出分红-期初价值-费用)÷期初价值计算收益;有出入金时先区分时间加权与资金加权。
- 用相同区间的基准作比较,同时记录最大亏损;不要单凭一次盈利评价能力。
使用边界
- 不同期限的收益不可直接排名;年化只是换算,不是未来收益承诺。
- 模拟价格不是实时行情。普通股票交易手数、T+1和费用应按具体市场规则核对。
背景 · 从一个困惑说起
你要把一只股票30年的日收益加起来算总收益——用简单收益率得连乘242×30≈7000次;而且收益率有下界-100%(破产),分布天然不对称,统计工具(正态、回归)用起来别扭。
由此产生的问题
有没有一种收益率变换,让「多期合并」变成加法,让分布更接近对称正态,方便统计工具使用?
核心概念
对数收益率 r = ln(P_t / P_{t−1}) = ln(1 + 简单收益)。两大性质:①时间可加:多期对数收益直接相加=总对数收益(因为ln把乘法变加法);②取值范围是全体实数(简单收益被锁死在≥−100%),分布更对称。小收益率时两者几乎相等(1%→ln(1.01)≈0.995%)。
为什么需要它
①计算便利:总收益=e^(对数收益之和),回测里sum一遍就出来;②统计友好:对数收益近似正态,均值/方差/回归/假设检验(阶段3)直接可用;③跨资产可比:横截面研究(阶段5因子检验)默认对数或排名口径。
实际应用场景
学术论文的「log return」;回测引擎的净值计算;波动率模型(GARCH)以对数收益为输入。注意边界:涉及「金额加权」(如组合权重)时要用简单收益,两者混用是新手常见bug。
与之前知识的联系
q-011说复利是连乘,对数把连乘变回加法——ln就是复利世界的「解码器」。q-018将用收益率序列画出分布,看它到底像不像正态。
⚠ 常见误解
- 对数收益和简单收益随便换用:加权平均组合收益必须用简单收益;时间累加用对数收益
- 对数变换让分布「变成」正态:只是更接近对称,真实市场仍是肥尾(阶段3细讲)
- 日常报价应该用对数收益:人类习惯百分比(简单收益),对数收益是研究工具不是展示工具
🛠 本题实践任务
用q-014下载的复权价,分别用「连乘简单收益」和「对数收益求和再exp」两种方法计算一年总收益,验证结果一致。
💡 提示(先自己想5分钟再看)
np.prod(1+r)−1 与 np.exp(np.log(1+p_t/p_{t-1}).sum())−1;数值应完全相同(浮点误差内)。
✅ 验收标准
写出两种方法的总收益数字并确认一致,然后说一句话:什么时候用连乘(组合加权)、什么时候用对数(跨期累加)。
在你的浏览器内运行。首次需联网下载 Python;支持标准库和 Pyodide 提供的 NumPy、pandas 等包。行情抓取、系统文件访问和部分第三方库请在本地环境运行。输出自检仅比对结果关键词,不代替逻辑审查。
Python · 独立工作线程 · 执行限时10秒
🤖 AI导师
导师会先检查你的前置知识(收益率、复利),再用案例、公式和代码帮助理解。此功能需要先启用服务。