什么是收益波动率?
收益波动率是衡量金融资产收益的波动程度,反映金融资产的风险水平。
波动率越高,说明金融资产的收益波动越剧烈,其收益率的不确定越强。
举个例子,有A和B两只基金,A和B的年化收益率都是10%,但是A的波动率是0.1,B的波动率是0.2。这就意味着,B在这个期间收益不稳定性更高,如果你在这期间的某几个时间点买入卖出,收益存在更大的不确定性。因此,在相同年化收益率的情况下,一般都去选择A,也就是波动率更小的基金产品。
怎么计算年化收益波动率?
具体计算方法为股票或基金每日收益的年化标准差
利用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、计算每日收益率
我们使用Pandas库中的pct_change函数,针对时间序列的金融数据十分方便地计算出日收益率。这里要注意pct_change函数的参数-1,用来控制函数计算顺序,表示第n行与第n 1行的差异率。
如果数据是按照时间从前往后重新排序,pct_change函数的参数需要设置为1,或者不传参,默认是1。
# 计算每日收益率
df['RETURNS'] = df['DWJZ'].pct_change(-1)
df.head()
3、计算年化波动率
波动率是针对某一个时间段来说的,我们这里选择100天,也就是说针对第N天,往前推100天,取这段时间的日收益率计算它的标准差,就得到了波动率,之后再年化。
# 计算波动率,然后根据均方根法进行年化
df['DEVIATION'] = df.sort_values(by='FSRQ')['RETURNS'].rolling(window=100).std() * np.sqrt(252)
df.head()
4、最后,我们画图更直观地展示这只基金的波动率
# 画图观察基金单位净值的变化趋势
df.plot(x='FSRQ', y='DEVIATION', title='基金波动率变化趋势', label='波动率')
plt.xlabel("时间")
plt.ylabel("波动率")
plt.show()
,