基于时间的策略回溯测试系统

Mini-Exchange的Python项目详细描述


这个项目是为了模拟一个交换来测试数量 策略。

依赖关系

  • Python3.5
  • 熊猫0.23.0
  • Spyder 3.2.8
  • 绘图仪2.7.0

安装

pip install mini_exchange

用法

# price: dataframe dt*ticker
# signal01: dataframe dt*ticker
# signal02: dataframe dt*ticker
dates=price.loc[start:end].index
tickers=price.columns

from mini_exchange import Mini_Exchange,Account,Log
MM=Mini_Exchange(price)# create user01
acc01=Account(start_amount=1000)log01=Log()
MM.register(user_name='user01',account=acc01,log=log01)# create user02
acc02=Account(start_amount=1000)log02=Log()
MM.register(user_name='user02',account=acc02,log=log02)# trade
for dt in dates:
    print('\rrun %d'%dt,end='\r')
    MM.hold(dt)for ticker in tickers:
        #user01
if signal01.loc[dt,ticker]==1:
            #open long
            MM.long(ticker,amount=10,dt=dt,user='user01')elif signal01.loc[dt,ticker]==-1:
            #open short
            MM.short(ticker,amount=10,dt=dt,user='user01')elif signal01.loc[dt,ticker].isin((-2,2)):
            #close
            MM.close(dt,ticker, by='ticker',user='user01')#user02
if signal02.loc[dt,ticker]==1:
            #open long
            MM.long(ticker,amount=10,dt=dt,user='user02')elif signal02.loc[dt,ticker]==-1:
            #open short
            MM.short(ticker,amount=10,dt=dt,user='user02')elif signal01.loc[dt,ticker].isin((-2,2)):
            #close
            MM.close(dt,ticker, by='ticker',user='user01')
    MM.settle(dt)# summary
# user01
print(acc01.annual_return(),acc01.sharpe_ratio(rf=0.03))
print(pos01.win_rate())
acc01.plot_history(by_pct=True)
pos01.plot_history_position()history_position=pos01.pos
history_value=acc01.history_value

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
jframe为什么JAVA paint()方法不起作用?   java Guice:将ContainerRequestContext注入拦截器   java如何优雅地关闭Spring JMS MessageListenerAdapter   java如何在Spring中设置快照隔离级别   Java中的安卓平台独立信任存储路径   java无法在eclipse中运行hello world程序   java Sinch空指针问题   使用Java将JSON流式传输到BigQuery   java从“大数据”中选择什么Swing控件?   java通过对象字段过滤/排序集合?   java将数据从活动传递到另一个活动中的片段   java访问打包在jar文件中的文档   Java获取事件的大小。getDragboard()。getFiles()。流()。映射(文件::长度)。toString());   java Android libgdx:启动程序图标按下后,启动屏幕不会立即显示   java如何在Google App Engine灵活环境中配置oracle jdk   java有没有办法减少这些行?   Java:客户端socket不读取第二行,在终止符行之后保持打开状态   java以编程方式获取api 29上的所有APK文件   java ActionBar按钮不显示