扫二维码与项目经理沟通
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流
python
创新互联专注于衡山网站建设服务及定制,我们拥有丰富的企业做网站经验。 热诚为您提供衡山营销型网站建设,衡山网站制作、衡山网页设计、衡山网站官网定制、小程序开发服务,打造衡山网络公司原创品牌,更为您提供衡山网站排名全网营销落地服务。
def isMax(a,b,c):
a = a if ab else b
c = c if ca else a
return c
def sumNcubes(n):
return sum(range(1,n))
def isPrime():
if n = 1:
return False
i = 1
while i*i = n:
if n % i == 0:
return False
i += 1
return True
本程序为Ernest Chen所著Quantitative Trading中文版书中42页中例子,书中主要介绍了如何使用Excel和matlab来实现夏普比率与计算最大回撤和最大回撤时间的方法,python作为一种开源语言,能够实现matlab的相同功能,并能写交易程序,因此采用python实现了书中功能,作为练手
#计算夏普率与回撤与回撤时间
#第一次完成于2016/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 中,“return”函数的用法如下:
1、return 语句用于退出函数,终止函数并将 return 值传回。实例:
def a(x,y):
if x==y:
return x,y
2、用于同一循环语句下,遇到第一个 return 后即返回。实例:
```python
def fun(a,b):
print (a)
return a
print (b)
return b
resunlt = fun(2,6)
2
```
3、用于 return 在不带参数的情况下(或者没有写 return 语句),默认返回 None。实例:
def recurve(a,b):
if a%b==0:
return b
else:
gcd(b,a%b)
以上内容参考:百度百科-Python
最大回撤是指:在任一时间点向后推,产品净值到达最低点时,收益率回撤幅度的最大值。这一指标描述了投资者买入某资产可能出现的最为糟糕的情况。
即,最大回撤是在每一个时间点上向后求其跌幅,然后找出最大的。从公式的第二个等式,我们首先给出最大回撤的一个直观算法
一、首先给出计算最大回撤的一个算法(先找出累计收益率的波峰点,在向后寻找最大的跌幅,即为最大回撤)
二、接着,使用np.maximum.accumulate函数计算最大回撤
接着计算沪深300指数的最大回撤
最大回撤结果为:72.30%。最大回撤开始日期为:
Timestamp('2007-10-16 00:00:00')
最大回撤结束日期为:
Timestamp('2008-11-04 00:00:00')
可以看出,直接投资指数会有较大的回撤。需要进一步地控制风险
用“max()”函数,它是用于返回列表/元组的最大数/浮点数,用法如下:
a = [0, 20, 6, 30]
max(a)
结果:
20
1、if判断
使用if流程语句依次判断三个数之间的大小,示例如下:
num1=float(input('输入第一个数:')) #输入要比较的三个数并转换为浮点型
num2=float(input('输入第二个数:'))
num3=float(input('输入第三个数:'))
if num1
elif num1 num2 and num3 num2: #判断第二个数是否为最大值
max_num =num2
else:# 三和二都不是最大值那么第一个数就为最大值
max _num = num1
print('三个数中最大的值为:%s' % max _num) #输出最大值
2、max()函数
max()函数是Python的内置函数,它可以返回给定参数的最大值,代码如下:
# 输入语句省略
print(max(num1.num2.num)) # 因为三个参数都为同一个类型,使用可以在输出函数里直接使用max()函数进行判断后输出。
3、列表Sort()方法
将三个数字变量放在列表中排序后,最后一个元素就是最大的值,示例如下:
# 输入语句省略
list = [num1.num2.num3] # 用传进来的三个数实例化一个列表对象
list.sort() # 对列表进行正序排序
print(list[-1]) # 排序后最后一个值就是最大值,索引-1取得最后一个元素
我们在微信上24小时期待你的声音
解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流