今天,我们将介绍非常重要的一部分:风险的量化。我们会从原理以及Python实战两个角度来学习。
我们开始今天的内容。
一、方差
1952年,Markowitz发表了均值-方差投资组合理论,在这套理论中他正式提出了用方差来描述资产收益不确定性的方法,也就是资产风险的方差度量法。
为什么我们可以用方差来度量风险呢?我解释一下方差的原理你就知道了。
这里R是指所有的收益率序列(真实或预估),E(R)是指收益率的期望。有些朋友可能对期望不太熟悉,所以我们换个表达方式。假如我们有一组已知的长度为n的收益率数据R,那么它们的方差为:
相当于每个收益率数据与平均收益率之间距离的平方的均值。简单来说,我们可以理解为收益率相对于均值的波动情况。方差越大,波动越大,风险也就越大,潜在的收益往往也越高。
随着风险理论的实践与发展,这种方法被发现了很大的弊端。首先,这个定义不能与风险完全等同,因为向上的剧烈波动也会造成方差偏高,但是这种波动是我们所希望发生的,能使我们获益;其次,Markowitz的均值-方差投资组合理论有一个重要假设,那就是收益率是符合正态分布的,但是现实中的金融产品收益率往往具有明显的偏度和峰度,仅仅使用方差来度量有可能会产生较大的误差。
假如我们已经获取到了一组收益率数据R,在Python中,我们可以很多方法来计算方差,这里我们用numpy和pandas来示范一下如何计算方差和标准差(方差的平方根):
# 使用numpy
import numpy as np
R = [0.01, 0.05, 0.02, -0.03]
var1 = np.var(R)
std1 = np.std(R)
# 使用pandas
import pandas as pd
R = pd.Series([0.01, 0.05, 0.02, -0.03])
var2 = R.var()
std2 = R.std()
二、下行风险
同样是1952年,Roy发表了用下行偏差来度量风险的方法。这个方法解决了前边我们提到的方差度量法的问题,它主要关注向下的波动。计算下行偏差时,一个最重要的变量就是目标收益率,通常用可接受的最低收益率代表(MARR,Minimum Acceptable Rate of Return)。我们常用无风险收益率、0或者资产收益率的平均值作为MARR。下行偏差描述的就是低于MARR的收益率的发散程度,其计算方式为:
也就是说,收益率大于MARR的部分全都会被抹平为0,小于MARR的部分会正常进行计算。这样的话,得到的下行偏差中不包含向上波动的成