📈 收益率计算 · 四维精析

策略评估 & 归因分析
📚 第2讲 🧮 简单 · 对数 · 累计 · 年化 🎯 适用场景全解
⚡ 收益率是量化策略的“温度计”。不同计算方法揭示不同维度的风险与增长,
中小学生色系 · 温暖易读 —— 从课堂到实盘,精准选择。
收益率类型 公式 核心特点 适用场景
简单收益率
Rsimple
R = (Pt - Pt-1) / Pt-1 直观、对称性差,多期累加有偏 单期绩效、日报、快照对比
对数收益率
rlog
r = ln(Pt / Pt-1) 时间可加性、正态性假设、适合统计 高频分析、风险模型、回归归因
累计收益率
Rcum
Rcum = (1+R1)…(1+Rn) - 1 反映真实财富变化,路径依赖 策略净值曲线、业绩展示
年化收益率
Rann
Rann = (1+Rcum)1/T - 1 标准化至年度,可比性强 跨策略比较、基金评级

🧮 简单收益率

公式: \( R = \frac{P_t - P_{t-1}}{P_{t-1}} \)

优点:计算直接,适合单期快照。缺点:多期累加产生复利偏差。

📌 场景:每日盈亏播报、单笔交易回报。
# 简单收益率 (Python)
prices = [100, 102, 99, 105]
simple_returns = [(prices[i]-prices[i-1])/prices[i-1] 
                  for i in range(1, len(prices))]
print(simple_returns)
# [0.02, -0.02941, 0.06061]

📐 对数收益率

公式: \( r = \ln(P_t / P_{t-1}) \)

时间可加性:多期对数收益率可直接相加。近似等于简单收益率(小波动时)。

📌 场景:量化回归、波动率聚类、正态假设检验。
import numpy as np
prices = [100, 102, 99, 105]
log_returns = np.diff(np.log(prices))
print(log_returns)
# [ 0.01980, -0.02985,  0.05884]

📊 累计收益率

公式: \( R_{cum} = \prod_{i=1}^{n}(1+R_i) - 1 \)

体现真实资产增长,常用于净值曲线。若用对数收益率,则 \( R_{cum} = e^{\sum r_i} - 1 \)

📌 场景:策略累计回报、基金净值展示。
# 累计收益率 (基于简单收益)
R_simple = [0.02, -0.02941, 0.06061]
cum = 1
for r in R_simple:
    cum *= (1 + r)
cum_ret = cum - 1
print(f"{cum_ret:.4f}")  # 0.0499

📆 年化收益率

公式: \( R_{ann} = (1+R_{cum})^{1/T} - 1 \) (T为年数)

将不同时间跨度的回报统一为年度标准,便于横向比较。

📌 场景:比较不同年限策略、基金评级。
# 年化收益率 (252交易日/年)
days = 252
total_return = 0.05  # 假设累计5%
annual_return = (1 + total_return) ** (1/(days/252)) - 1
print(f"{annual_return:.4f}")  # 0.0500
📌 收益率选择 · 决策架构 收益率计算目标 简单收益率 对数收益率 累计收益率 年化收益率 单期/日报 高频/统计 净值/展示 跨期比较

🧩 归因分析 · 场景速查

  • 简单收益率 —— 业绩归因中的单期贡献分解,Brinson模型常用。
  • 对数收益率 —— 因子模型回归(CAPM、Fama-French),满足正态假设。
  • 累计收益率 —— 策略累计净值曲线,最大回撤计算基准。
  • 年化收益率 —— 夏普比率、信息比率分母标准化,绩效评级必备。

🔁 转换关系:若已知对数收益率序列,累计收益率 = exp(Σr) - 1;年化收益率 = (1+累计)^(1/T) - 1。

💡 小贴士:回测中常用对数收益率进行统计推断,展示时多转换为累计/年化收益率。