(三)python计算夏普率

夏普率是衡量股票组合的一个指标之一:

(三)python计算夏普率_第1张图片
·
实际举例:
如果某个投资组合第一天收益率为5%、第二天收益为9%、第三天的收益为-10%(这里的收益率是相对于前一天的数据或者前一个周期的数据),同时假设国债的收益率为4%,计算夏普率:
shaper ration=average(5%+9%-10%)-国债收益率日数据/收益率的标准差
·
·
·

python 平安集团单支股票数据为例:

备注:tushare需要注册获取数据;

pro = ts.pro_api("xxxxxxxxxxxxxxxxxxxxxxxxxx")
df = pro.daily(ts_code='601318.SH',start_date='20190101', end_date='20200101') 
#中国平安

数据展示:(三)python计算夏普率_第2张图片
注释:pct_chg获取的数据是不含百分数单位的,在后面换算的时候注意单位的统一;
注释:pct_chg获取的数据是不含百分数单位的,在后面换算的时候注意单位的统一;
注释:pct_chg获取的数据是不含百分数单位的,在后面换算的时候注意单位的统一;

计算方法一:

(1)计算日收益率的均值:

mm=np.mean(df['pct_chg'])

(2)无风险收益率的日数据
注意:
sharp-ratio里一定要注意分子分母周期的一致性。比如基金产品很多净值是一周进行一次更新,所以很多无风险利率,收益率的要使用周的。
收益率的计算比较简单为: 周盈利/周初始资金 。 一般国内无风年利率普遍习采用一年期存款利率,约为3%,一年有52周,则周化无风险利率为 (1+3%)^(1/52)-1 为0.0569%。标准差也用当周收益率跟历史周收益均值进行计算。
【(1+4%)的1/365次方 】-1=0.0001059015326852

(3)计算收益率的标准差

nn=df['pct_chg'].std()

(4)计算夏普率结果

import math

日夏普率:

ss=mm-0.01059015326852
SR=ss/nn

年夏普率:

SR1=(mm-0.01059015326852)/nn*math.sqrt(252)

输出结果:

(日)夏普比率=0.11034304470125009
(年)夏普比率1.7516415311111468
以上是原始的夏普比率的计算方法,实际上对于固定时间内的夏普比率还得乘上一个k值。
对于不同采样频率的k值情况:
Daily=sqrt(252)(最小粒度是按天计)
Weekly=sqrt(52)(最小粒度是按星期计)
Monthly=sqrt(12)(最小粒度是按月计)

参考链接:https://www.jianshu.com/p/40c160ddc616

·

计算方法二:

df1 = df['pct_chg'] - (4/252)
print((df1.mean() * math.sqrt(252))/df1.std())

参考这个方法输出结果是:

(年)夏普比率=1.7017083586393216

结果不一致原因:方法一和方法二计算无风险收益率的日数据不同;
结果不一致原因:方法一和方法二计算无风险收益率的日数据不同;
结果不一致原因:方法一和方法二计算无风险收益率的日数据不同;

附注:实际含义

如果SR为2表示投资者风险每增加1%个单位的时候换来的是2%的多余收益;
夏普比率为负,就是收益低于无风险收益率,可以根据绩效考核的需要和实际情况,选择詹森指数,或者把无风险利率换成最低可接受收益(MAR),等等

你可能感兴趣的:(python,大数据)