2. 资产收益率与风险度量:单资产收益率计算与风险度量

各位同学,咱们今天聊点实在的。做量化投资,第一步不是找代码,也不是调参数,而是搞清楚你手里拿的资产到底是个什么脾气。说白了,就是收益率和风险怎么算。

我刚开始做量化那会儿,踩过一个坑:直接用简单收益率去算长期回报,结果发现数据越算越离谱。后来才明白,不同场景下该用不同的收益率定义。今天咱们就把这个事彻底讲透。

2.1 单资产收益率计算

2.1.1 简单收益率

简单收益率,也叫百分比收益率。公式很简单:

R_t = (P_t - P_{t-1}) / P_{t-1}

其中 P_t 是今天的价格,P_{t-1} 是昨天的价格。

举个例子:昨天股价 100 元,今天涨到 105 元,那简单收益率就是 (105-100)/100 = 5%。

优点:直观,好理解。你跟客户说「今天赚了5%」,谁都听得懂。

缺点:时间不可加。什么意思?你算一周的总收益率,不能直接把每天的收益率加起来。比如第一天涨5%,第二天跌5%,总收益率不是0%,而是 (1+5%)*(1-5%)-1 ≈ -0.25%。

⚠️ 注意:简单收益率在计算多期组合收益时,必须用连乘,不能直接相加。我见过不少新手在这里翻车。

2.1.2 对数收益率

对数收益率,也叫连续复利收益率:

r_t = ln(P_t / P_{t-1})

还是刚才的例子:ln(105/100) ≈ 4.88%。

你可能会问:为什么比简单收益率小一点?嗯,这就是数学上的一个特性——对数收益率永远小于等于简单收益率,而且价格波动越大,差距越明显。

对数收益率的核心优势:时间可加性。一周的对数收益率,等于每天对数收益率之和。这在做时间序列分析时特别方便。

我个人习惯:做回测和统计分析时,一律用对数收益率。只有在跟客户汇报时,才转成简单收益率。

💡 小技巧:当收益率很小时(比如日收益率在±1%以内),简单收益率和对数收益率几乎相等。这时候用哪个都行,别纠结。

2.2 资产风险度量:方差与标准差

收益率算完了,接下来就是风险。风险怎么量化?最经典的就是方差和标准差。

方差衡量的是收益率偏离平均水平的程度。公式:

σ² = (1/n) * Σ(R_i - μ)²

标准差就是方差的平方根:σ = √σ²

为什么用标准差而不用方差?因为标准差的单位和收益率一样,都是百分比,更直观。比如某只股票日收益率标准差是2%,意思就是每天涨跌2%左右是常态。

我在项目中遇到过一个问题:用样本方差还是总体方差?

如果你用的是历史数据去估计未来的风险,记得用样本方差(分母是 n-1)。因为样本方差是无偏估计,能更好地反映真实波动。

# Python 代码示例
import numpy as np

# 假设有5天的收益率数据
returns = np.array([0.02, -0.01, 0.03, 0.01, -0.02])

# 样本方差(分母 n-1)
sample_var = np.var(returns, ddof=1)
sample_std = np.std(returns, ddof=1)

print(f"样本方差: {sample_var:.6f}")
print(f"样本标准差: {sample_std:.4f}")
📊 关键点:标准差越大,资产波动越剧烈,风险越高。但注意,高风险不一定等于高收益,这是很多新手容易混淆的。

2.3 协方差与相关系数矩阵

单资产的风险算完了,那多个资产之间怎么衡量关系?这就轮到协方差和相关系数出场了。

2.3.1 协方差

协方差衡量两个资产收益率一起变动的方向:

Cov(R_A, R_B) = (1/n) * Σ(R_A,i - μ_A)(R_B,i - μ_B)

协方差为正:两个资产同涨同跌。协方差为负:一个涨,另一个跌。

但协方差有个问题:它的数值大小没有统一标准。比如股票A和B的协方差是0.02,这算大还是小?没法判断。

2.3.2 相关系数

相关系数把协方差标准化到[-1, 1]之间:

ρ = Cov(R_A, R_B) / (σ_A * σ_B)
  • ρ = 1:完全正相关,两个资产走势一模一样
  • ρ = -1:完全负相关,一个涨另一个必然跌
  • ρ = 0:不相关,两个资产独立波动

我曾经犯过一个错:以为相关系数低就一定能分散风险。后来发现,市场暴跌时,所有资产的相关系数都会趋近于1。这就是所谓的「危机时刻,相关性趋同」。嗯,这个坑我替你们踩过了。

2.3.3 协方差矩阵

当你有N个资产时,把所有两两之间的协方差放在一个矩阵里,就是协方差矩阵:

Σ = [[σ₁², Cov₁₂, ..., Cov₁ₙ],
     [Cov₂₁, σ₂², ..., Cov₂ₙ],
     ...
     [Covₙ₁, Covₙ₂, ..., σₙ²]]

这个矩阵是马科维茨模型的核心输入。你想想看,没有它,你就没法做投资组合优化。

💡 实用建议:在实际项目中,我通常用 pandas 的 .cov() 和 .corr() 方法直接计算。但要注意:数据量太少时,协方差矩阵会不稳定。一般建议至少用 2-3 年的日数据。

2.4 本章知识体系

下面这张图帮你理清本章的核心逻辑:

资产收益率与风险度量 收益率计算 简单收益率 对数收益率 风险度量 方差 标准差 资产间关系 协方差 相关系数 输出:协方差矩阵 → 马科维茨模型输入

2.5 实战中的注意事项

最后,分享几个我在实战中总结的经验:

  1. 数据频率选择:日收益率波动大,但信息丰富;周收益率更平滑,适合长期分析。我一般先用日数据做分析,最后汇报时转成年度化数据。
  2. 异常值处理:股票停牌、分红、拆股都会导致收益率异常。记得做数据清洗,不然协方差矩阵会失真。
  3. 滚动窗口:别用全部历史数据算一个固定的协方差矩阵。市场在变,我习惯用滚动12个月的数据,每月更新一次。
  4. 年度化处理:日标准差乘以√252(交易日天数),就得到年化标准差。这个转换在汇报时很常用。
📌 核心总结:收益率选对数,风险看标准差,关系用相关系数。这三样东西,就是马科维茨模型的三大基石。搞懂了它们,后面的投资组合优化就是水到渠成的事。

公众号:蓝海资料掘金营,微信deep3321