今天这节课计算风险收益指标:夏普比率
一、什么夏普比率
又叫做Sharpe Radio
,夏普指数,衡量的是一项投资在对其调整风险后,相对于无风险资产的收益。
在1966年,威廉夏普提出,美国金融经济学学者,曾在1990年获得诺贝尔经济学奖。是资产定价模型的奠基者
夏普率=(期望投资回报率 - 无风险利率)/ 投资回报率标准差
1.1无风险利率
是指当你买入一个没有风险的资产所获得的回报,什么是没有风险的资产?通常来说是债。通常各个国家的无风险利率都是以国债的年化回报为准,比如:中国债年化汇报3%左右。
所以你会发现,夏普比率最常用于投资组合类
的投资工具,比如说基金,因为基金除了纯货币
或纯债基
之外,大部分都是风险类的资产,比如说股票类的证券组成。这种基金有可能亏损。
1.2投资回报率标准差
投资回报率标准差:一种离散指标,体现数据样本内部的差异性。
等于(数据样本里面每个数据项
减去 样本的所有数据项的均值
)的绝对值
的平方
的总和
,除以 数据项个数
,然后开根号
。
比如说,有一支股票的收盘价,每个数据项就是每个收盘价,减去 所有收盘价的均值,取它们绝对值的平方,然后把每个收盘价和均值的距离差距 加起来,除以数据项个数,再开根号,就是标准方差。体现的是每个点和每个点之间的距离。
如果说一支股票,它的标准差很大,它代表这个股票的波动很大,也就意味着风险很大。所以标准差在金融领域中的应用代表的是风险指标。
1.3夏普比率
总的来说 夏普比率代表的是投资者额外承受的单位的风险, 对应所获得的额外收益有多少。基于这个层面,我们知道夏普比率肯定是越大越好的。只要它大于1,也 就是收益远高于风险的,如果小于1,那就是风险大于收益的。
在实际的应用中,不管做量化还是你在基金公司,非常看重的指标一定有夏普比率。其次就是回撤指标,还有收益率和风险其他相关的指标。
这就是关于夏普比率如何计算的问题,接下来学习一下如何使用Python代码来计算夏普比率。
二、实战
2.1计算夏普率
#计算夏普率
def caculate_sharp(data):
#公式 夏普率 = (回报率均值 - 无风险率) / 回报率的标准差
# pct_change()是pandas里面的自带的计算每日增长率的函数,它和calculate_profit_pct函数功能是一样的,用于计算股票的单次收益率。
daily_return = data['close'].pct_change()
# 回报率均值
avg_return = daily_return.mean()
# 回报率标准差
std_return = daily_return.std()
#计算夏普
sharp = avg_return / std_return
return sharp
2.1.1回报率的均值
要计算回报率的均值首先要计算回报率。
回报率是怎么算的呢,假设我们是以股票每日的收盘价为单位来计算,回报率就是每日的增长率,也就是说,你可以理解为日涨跌幅
。所以回报率的均值就是计算日涨跌幅的均值
。
以基金为例,它是一个投资组合,里面有股票、货币和债券,那这个情况下,回报率的均值就可以用基金每天的净值的日涨跌幅来替代。
2.1.2无风险利率
我们的回报率是以天为单位的,那这里3%
的年化回报率除以252
就是每天的,几乎等于0
,在大部分的sharp
计算中,我们会把无风险利率约等于
0,如果用年化算,就取3%
,每家公司都不太一样。
所以你会发现,你去看同一个基金的sharp
,你会发现有微小的差距。在这里,我们以天为单位,所以无风险利率等于0
。
2.2计算年夏普率
这里我们计算的是每日收益率,通常来说对于基金,我们会计算年化收益率,年化收益率怎么做呢?
#计算夏普率
def calculate_sharp(data):
#公式 夏普率 = (回报率均值 - 无风险率) / 回报率的标准差
# pct_change()是pandas里面的自带的计算每日增长率的函数,它和calculate_profit_pct函数功能是一样的,用于计算股票的单次收益率。
daily_return = data['close'].pct_change()
# 回报率均值
avg_return = daily_return.mean()
# 回报率标准差
std_return = daily_return.std()
#计算夏普
sharp = avg_return / std_return
#计算夏普 年华夏普
sharp_year = sharp * np.sqrt(252)
return sharp, sharp_year
为什么这里是开根号呢?因为根据之前的经验,我想把每日的收益率转化为每年的收益率 计算公式:
每日收益率*252 = 每年收益率
那为什么是开根号呢?标准差的计算是开过根号的.
夏普率=回报率均值*252/回报率标准差*根号252
2.3调用计算函数:
# 计算夏普比率
# 获取数据
data = st.get_single_price(stock_code='000001.XSHE', timefrequency='daily', start_date='2006-06-01', end_date='2021-06-01')
# 计算最大回撤率
sharp = calculate_sharp(data)
print(sharp)
转载请注明:xuhss » Python量化交易实战-18计算夏普比率,规避投资风险