当前位置: 首页 > 后端技术 > Python

Python量化交易历史回测

时间:2023-03-26 19:16:21 Python

importtushareastsimportxlrdimportpandasaspdimportmatplotlib.pyplotaspltts.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)#indexremarkdf['交易时间']=pd.to_datetime(df['结束日期'],format='%Y-%m-%d')df=df[['交易时间','unit_nav']]#选择日期只有,和净值df["movingaverage"]=df['unit_nav'].rolling(60).mean()#设置投资时间df=df[df['tradingtime']>='2019-01-13']df=df[df['交易时间']<='2020-01-13']#df["每笔投资"]=30df["累计投资"]=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["累计投资资金"]*100dfstrategy=df.copy()dfstrategy=dfstrategy[["交易时间","unit_nav","移动平均线"]]dfstrategy.loc[dfstrategy['unit_nav']<=(dfstrategy["移动平均线"]*0.97),"每笔投资"]=200dfstrategy.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["累计投入资金"资金""]*100df=df[["交易时间","unit_nav","累计投资基金","盈亏","收益率"]]dfstrategy=dfstrategy[["交易时间","unit_nav","累计投资资金","盈亏","收益率"]]print(df["收益率"].max())print(df.tail())print("=================")print(dfstrategy["yield"].max())print(dfstrategy.tai??l())#path="C://Users//fuxingyu//Desktop//%s.xlsx"%JJ#dfstrategy.to_excel(路径)