什么是收益波动率?

收益波动率是衡量金融资产收益的波动程度,反映金融资产的风险水平。

波动率越高,说明金融资产的收益波动越剧烈,其收益率的不确定越强。

举个例子,有A和B两只基金,A和B的年化收益率都是10%,但是A的波动率是0.1,B的波动率是0.2。这就意味着,B在这个期间收益不稳定性更高,如果你在这期间的某几个时间点买入卖出,收益存在更大的不确定性。因此,在相同年化收益率的情况下,一般都去选择A,也就是波动率更小的基金产品。

怎么计算年化收益波动率?

具体计算方法为股票或基金每日收益的年化标准差

量化投资指标公式(量化指标之收益波动率)(1)

利用Python计算某只基金的年化收益波动率

1、读取数据

import pandas as pd import numpy as np import matplotlib.pyplot as plt # 绘图设置 %matplotlib inline %config InlineBackend.figure_format = 'retina' plt.rcParams['font.sans-serif']=['SimHei'] plt.rcParams['axes.unicode_minus']=False plt.style.use('fivethirtyeight’) # 读取数据 df = pd.read_csv('data/000001.csv') df.head()

量化投资指标公式(量化指标之收益波动率)(2)

2、计算每日收益率

我们使用Pandas库中的pct_change函数,针对时间序列的金融数据十分方便地计算出日收益率。这里要注意pct_change函数的参数-1,用来控制函数计算顺序,表示第n行与第n 1行的差异率。

如果数据是按照时间从前往后重新排序,pct_change函数的参数需要设置为1,或者不传参,默认是1。

# 计算每日收益率 df['RETURNS'] = df['DWJZ'].pct_change(-1) df.head()

量化投资指标公式(量化指标之收益波动率)(3)

3、计算年化波动率

波动率是针对某一个时间段来说的,我们这里选择100天,也就是说针对第N天,往前推100天,取这段时间的日收益率计算它的标准差,就得到了波动率,之后再年化。

# 计算波动率,然后根据均方根法进行年化 df['DEVIATION'] = df.sort_values(by='FSRQ')['RETURNS'].rolling(window=100).std() * np.sqrt(252) df.head()

量化投资指标公式(量化指标之收益波动率)(4)

4、最后,我们画图更直观地展示这只基金的波动率

# 画图观察基金单位净值的变化趋势 df.plot(x='FSRQ', y='DEVIATION', title='基金波动率变化趋势', label='波动率') plt.xlabel("时间") plt.ylabel("波动率") plt.show()

量化投资指标公式(量化指标之收益波动率)(5)

,