糖尿病康复,内容丰富有趣,生活中的好帮手!
糖尿病康复 > 使用python计算夏普比率与最大回撤和最大回撤时间的程序

使用python计算夏普比率与最大回撤和最大回撤时间的程序

时间:2018-11-02 08:48:44

相关推荐

使用python计算夏普比率与最大回撤和最大回撤时间的程序

本程序为Ernest Chen所著Quantitative Trading中文版书中42页中例子,书中主要介绍了如何使用Excel和matlab来实现夏普比率与计算最大回撤和最大回撤时间的方法,python作为一种开源语言,能够实现matlab的相同功能,并能写交易程序,因此采用python实现了书中功能,作为练手

#计算夏普率与回撤与回撤时间

#第一次完成于/5/24

import pandas as pd

import numpy as np

import math

import matplotlib.pyplot as plt

#读取sheet1中的内容,存放在data中,数据类型为DataFrame

data = pd.ExcelFile('example3_4.xls')

data = data.parse('Sheet2')

#计算日收益率(G3-G2)/G2

data['return']=(data['Adj Close'].shift(-1)-data['Adj Close'])/data['Adj Close']

#计算超额回报率

data['exReturn']=data['return']-0.04/252

#计算夏普比率

sharperatio=math.sqrt(252)*data['exReturn'].mean()/data['exReturn'].std()

print('该策略的夏普率为: ', sharperatio)

data['Adj Close'].plot()

#计算累积收益率cumret=(1+return).cumsum

data['cumret']=np.cumprod(1+data['exReturn'])-1

fig = plt.figure()

data['cumret'].plot()

#计算累积最大收益率,最大回撤,累积最长回撤时间

Max_cumret=np.zeros(len(data))

retracement=np.zeros(len(data))

Re_date=np.zeros(len(data))

for i in range(len(data)):

#计算累积最大收益率

if i==0:

Max_cumret[0]=data['cumret'][0]

retracement[0]=(1+Max_cumret[0])/(1+data['cumret'][0])-1

else:

#计算累积最大收益率

Max_cumret[i]=max(Max_cumret[i-1],data['cumret'][i])

#计算策略回撤

retracement[i]=float((1+Max_cumret[i])/(1+data['cumret'][i])-1)

#计算最大回撤时间

if retracement[i]==0:

Re_date[i]=0

else:

Re_date[i]=Re_date[i-1]+1

#计算最最大回撤幅度

retracement=np.nan_to_num(retracement)

Max_re=retracement.max()

#计算最大回撤时间

Max_reDate=Re_date.max()

如果觉得《使用python计算夏普比率与最大回撤和最大回撤时间的程序》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。