第3章:收益率计算与分布
各位同学,今天我们来聊聊收益率。这玩意儿看着简单,但坑特别多。我刚开始做量化那会儿,就因为收益率算错,导致整个对冲策略回测数据全废了。嗯,咱们一步步来。
3.1 简单收益率与对数收益率
先问个问题:你今天赚了10%,明天亏了10%,你亏了吗?
直觉上觉得不赚不赔对吧?但实际算一下:100块涨10%变110,再跌10%变99。你亏了1块。这就是简单收益率的“不对称性”问题。
简单收益率(也叫算术收益率)公式很简单:
R_t = (P_t - P_{t-1}) / P_{t-1}
而对数收益率是:
r_t = ln(P_t / P_{t-1})
我个人习惯用对数收益率做建模。为什么?三个原因:
- 可加性:多期对数收益率直接相加,简单收益率不行
- 近似正态:对数收益率更接近正态分布,建模方便
- 时间对称:涨10%和跌10%在对数尺度下是对称的
核心要点:做风险因子建模时,我几乎只用对数收益率。简单收益率只在计算组合收益时才用。
来看个代码示例:
import numpy as np
import pandas as pd
# 模拟价格序列
prices = np.array([100, 102, 98, 105, 103])
# 简单收益率
simple_returns = (prices[1:] - prices[:-1]) / prices[:-1]
# 对数收益率
log_returns = np.log(prices[1:] / prices[:-1])
print("简单收益率:", simple_returns)
print("对数收益率:", log_returns)
print("差异:", simple_returns - log_returns)
你会发现,当收益率很小时,两者几乎一样。但一旦波动大了,差异就出来了。我在做期权对冲时,这个差异直接影响到Delta计算的精度。
3.2 收益率分布特征:尖峰厚尾
教科书上说金融资产收益率服从正态分布。但实际呢?我做了十年风控,从没见过哪只股票收益率是正态的。
真实情况是:尖峰厚尾。
- 尖峰:中间比正态分布更“瘦高”,说明大部分时间波动很小
- 厚尾:两端比正态分布更“肥”,说明极端行情比预期更频繁
举个例子:正态分布下,超过3个标准差的事件,理论上几百年才发生一次。但2008年金融危机、2015年A股股灾、2020年疫情熔断——这些“黑天鹅”事件,我职业生涯里就碰了好几次。
避坑指南:我曾经用正态分布假设做VaR模型,结果回测时发现实际亏损超出VaR的次数是理论值的3倍。后来改用t分布,才勉强靠谱。记住:金融数据天生就是厚尾的。
为什么会这样?说白了,市场参与者不是理性的。恐慌和贪婪会放大极端行为。你想想看,当所有人都想跑的时候,价格下跌的速度远超正态分布预测的。
3.3 正态性检验:Jarque-Bera检验
既然我们怀疑收益率不服从正态分布,那就得用统计方法验证一下。Jarque-Bera检验(简称JB检验)就是干这个的。
JB统计量的公式:
JB = n/6 * (S² + (K-3)²/4)
其中:
- S:偏度(Skewness),衡量分布是否对称
- K:峰度(Kurtosis),衡量分布的“尖峰”程度
- n:样本量
正态分布的偏度为0,峰度为3。如果JB统计量很大,p值小于0.05,我们就拒绝“数据服从正态分布”的原假设。
来看代码:
from scipy import stats
import numpy as np
# 生成模拟的股票收益率数据(实际中从数据库读取)
np.random.seed(42)
returns = np.random.standard_t(df=3, size=1000) # t分布模拟厚尾
# Jarque-Bera检验
jb_stat, jb_pvalue = stats.jarque_bera(returns)
print(f"JB统计量: {jb_stat:.4f}")
print(f"p值: {jb_pvalue:.6f}")
if jb_pvalue < 0.05:
print("拒绝正态性假设:收益率显著偏离正态分布")
else:
print("无法拒绝正态性假设")
我在项目中一般会同时做三个检验:JB检验、Shapiro-Wilk检验、以及Q-Q图可视化。光看一个数字不够,得结合图形判断。
实战技巧:JB检验对样本量很敏感。样本量太大时,微小的偏离也会被判定为显著。我一般会结合Q-Q图一起看,如果尾部偏离不大,就当作近似正态处理。
3.4 本章知识体系
下面这张图总结了收益率计算与分布的核心逻辑:
3.5 小结
这一章我们聊了三件事:
- 收益率怎么算:简单收益率和对数收益率,各有各的用途
- 分布长什么样:尖峰厚尾是常态,别指望正态分布
- 怎么检验正态性:JB检验是快速筛查工具,但别迷信
最后说句实在话:做风控这么多年,我最大的体会就是——别跟数据较劲。它说它不是正态,你就别硬套正态模型。换个t分布、或者用非参数方法,往往效果更好。
核心记忆点:对数收益率 + 厚尾分布 + JB检验 = 市场风险建模的起点。这三样东西,我每个项目都会用到。
公众号:蓝海资料掘金营,微信deep3321