python量化交易历史回测

import tushare as ts
import xlrd
import pandas as pd

import matplotlib.pyplot as plt
ts.set_token('*******************')
pro = ts.pro_api()
JJ="006928.OF"
df = pro.fund_nav(ts_code=JJ)

df.sort_values(by=['end_date'],inplace=True)#按时间排序从小到大
df = df.reset_index(drop=True)#index重新标记
df['交易时间'] = pd.to_datetime(df['end_date'],format='%Y-%m-%d')
df=df[['交易时间','unit_nav']]#只选日期,和净值
df["移动平均值"]=df['unit_nav'].rolling(60).mean()
#设置投资时间
df=df[df['交易时间']>='2019-01-13']
df=df[df['交易时间']<='2020-01-13']
#
df["每次投入资金"]=30
df["累计投入资金"]=df["每次投入资金"].cumsum()
c_rate=0.002#手续费
df["每次数量"]=df["每次投入资金"]/df['unit_nav']*(1-c_rate)
df["累计数量"]=df["每次数量"].cumsum()
df["盈亏"]=df["累计数量"]*df['unit_nav']-df["累计投入资金"]
df["收益率"]=df["盈亏"]/df["累计投入资金"]*100

dfstrategy=df.copy()
dfstrategy=dfstrategy[["交易时间","unit_nav","移动平均值"]]
dfstrategy.loc[dfstrategy['unit_nav']<=(dfstrategy["移动平均值"]*0.97),"每次投入资金"]=200
dfstrategy.fillna(0,inplace=True)
dfstrategy["累计投入资金"]=dfstrategy["每次投入资金"].cumsum()
dfstrategy["每次数量"]=dfstrategy["每次投入资金"]/dfstrategy['unit_nav']*(1-c_rate)
dfstrategy["累计数量"]=dfstrategy["每次数量"].cumsum()
dfstrategy["盈亏"]=dfstrategy["累计数量"]*dfstrategy['unit_nav']-dfstrategy["累计投入资金"]
dfstrategy["收益率"]=dfstrategy["盈亏"]/dfstrategy["累计投入资金"]*100


df=df[["交易时间","unit_nav","累计投入资金","盈亏","收益率"]]
dfstrategy=dfstrategy[["交易时间","unit_nav","累计投入资金","盈亏","收益率"]]
print(df["收益率"].max())
print(df.tail())
print("=================")
print(dfstrategy["收益率"].max())
print(dfstrategy.tail())
#path = "C://Users//fuxingyu//Desktop//%s.xlsx" %JJ
#dfstrategy.to_excel(path)

你可能感兴趣的:(python)