什么是夏普比率(Sharpe Ratio)?
简单来说,夏普比率就是每承受一单位风险,所获得的超额回报是多少。
夏普比率越高,说明在承担相同风险情况下,获得的超额回报越多。反之,如果夏普比率很小甚至为负,说明承担相同风险情况下,所获得的超额回报很小,甚至为负,当然这种情况是大家不愿意看到的。这类似于我们常说的“性价比”,相同质量的产品,大家肯定更愿意接受价格优者。
举个例子,有两只基金A和B,年化收益率都是10%,但是夏普比率不同,A的夏普比率为0.5,而B的夏普比率为1。不考虑其他情况下,该怎么选择?毫无疑问B基金更优。在相同年化收益率下,B基金的夏普比率更高,表明B基金以较小的风险获得了相同的收益。
但是夏普比率也跟其他指标一样,计算得到的都是历史值,不能代表未来。而且,夏普比率的假设的模型是正态分布,也就是说只能衡量常态化的风险和超额回报,而“黑天鹅”的风险是夏普比率没办法衡量的。
如何计算夏普比率?
设定样本周期为沪深交易所交易日,则夏普s的计算方法为:
接下来,我们开始对指定时间范围内的某只基金进行分析。
1、读取数据
import pandas as pd
df = pd.read_csv('data/000001.csv')
df.head()
2、选定想要分析的时间范围
# 定义计算夏普比率的时间范围
start_time='2018-01-01'
end_time='2021-05-31'
3、过滤掉多余的数据
# 筛选指定时间范围内的数据
df_filter = df[df['FSRQ'].between(start_time, end_time, inclusive=True)]
4、计算每日的收益率
df_filter = df_filter.sort_values(by='FSRQ')
df_filter['RETURNS'] = df_filter['DWJZ'].pct_change()
5、选择一年期定期存款利率作为无风险利率,来计算夏普比率
# 选择一年期定期存款利率作为无风险利率
base_ratio = 0.015
sharp_ratio = (df_filter['RETURNS'].mean() - base_ratio / 365) / df_filter['RETURNS'].std() * np.sqrt(250)