回撤率 python_求问怎么用python求夏普比率和最大回撤率呢

作者:知乎用户

链接:https://www.zhihu.com/question/27264526/answer/147672695

来源:知乎

著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

同一个资产,不同周期频率收益率,算出来的夏普值,根本就不是一回事!比如用每日的收益率算夏普值,和用每年的收益率算夏普,就不是一回事。而且在计算的时候,收益率和波动率周期是要一致的,你不能用日线数据算收益率,然后用周线算波动率。在题主的问题里面,其实是把周期弄混了,如果你要按三天一个样本来算收益,那么必须也要按三天一个样本的频率来算波动率,然而,这里按三天周期的话,就只有一个样本,是无法计算波动率的。所以只能按每日的收益来进行计算。下面是最近写的一篇详细解释文,用了一个实际例子来说明(Python语言)。---------------------------------------------------------我是分割线---------------------------------------------------------衡量基金收益的一个有名的标准就是夏普比率(Sharpe ratio)。有投资常识的人都明白,投资光看收益是不够的,还要看承受的风险,也就是收益风险比。夏普比率描述的正是这个概念,即每承受一单位的总风险,会产生多少超额的报酬。用数学公式描述就是:其中,:投资组合预期收益率:无风险利率:投资组合的波动率(亦即投资组合的风险)上面三个值一般是指年化后的值,比如预期收益率是指预期年化收益率。需要注意的是,虽然公式看起来很简单,计算起来其实并不容易。原因就是预期收益率和波动率其实是无法准确得知的。我们只能用统计方法去估计这两个值。估计的方法有很多种,最简单的方法就是计算历史年化收益率和其标准差。然而,即使是同一种方法,针对不同周期算出来的结果也可能差别很大,从而产生误导。这里举个例子来说明一下。我们先生成一组收益率数据:import pandas as pd

import numpy as np

year_list=[]

month_list=[]

rtn_list=[]

# 生成对数收益率,以半年为周期

for year in range(2006,2017):

for month in [6,12]:

year_list.append(year)

month_list.append(month)

rtn=round((-1)**(month/6)*(month/6/10),3)+(np.random.random()-0.5)*0.1

rtn_list.append(rtn)

# 生成半年为周期的收益率df

df=pd.DataFrame()

df['year']=year_list

df['month']=month_list

df['rtn']=rtn_list

这组收益率是对数收益率,。从2006年到2016年,以半年为频率,总共22个数据点。计算其夏普比率:round(df['rtn'].mean()/df['rtn'].std()*np.sqrt(2),3)

结果是:0.495由于我们要计算的是年化的值,所以收益率要乘以2,波动率要乘以(一年是半年的2倍)。现在我们把数据变换成以年为频率的收益率。使用groupby方法:# 生成每年的收益数据df_year(对数收益率可以直接相加)

df_year=df.groupby(['year']).sum()

del df_year['month']

计算其夏普比率:round(df_year['rtn'].mean()/df_year['rtn'].std(),3)

得到的结果是:2.205可以看到,同样的收益率数据,使用不同周期,计算出来的结果差距非常大。一般来说,周期频率越小,越难以保持收益稳定,每天都盈利比每年都盈利困难太多了。我们可以想象一个极端情况,10年中,每年的收益都是10%,夏普值就是无穷大,因为收益完全稳定,没有任何波动,然而每月的收益又不完全相同,所以从每月的收益率来看,夏普值并不是无穷大。所以在看Sharpe值的时候,一定要留意这个Sharpe值的计算方式,否则很容易产生误判。自己计算的话,并没有强行的标准,只是有两点要注意。一是要结合自己的实际,比如高频策略当然得用日收益率,每周调仓的策略可以用周收益率。二是对比策略优劣的时候,周期要一致,比如对比每日调仓的策略和每月调仓的策略,一定要换算到同一个周期上,才有可比性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值