vn.py
首发于vn.py
JAQS - 全面的开源策略研发框架

JAQS - 全面的开源策略研发框架

项目简介

在vn.py社区里,经常有人会问:"vn.py能否提供多合约的CTA策略交易","vn.py能否用来实现Alpha策略"等类似的问题,回答一直是”NO“。主要原因在于vn.py项目的定位主要是一款解决交易员实盘交易中的各种实时业务需求的快速开发框架,而以上的需求更多是和Quant研究员的工作相关,硬用vn.py来套做扩展开发也不是不行,但总有点拿把手术刀去切菜的意思。

针对这类需求,现在终于有了一个全面的解决方案:由quantOS组织推出的JAQS项目。JAQS是一款开源量化策略研究平台,主要功能包括:自动化信号研究、快速策略开发和多维度回测分析,可以非常方便的用来实现Alpha、CTA、套利等需要交易多个合约的策略。其他的一些特点:

  • 通过统一的DataApi获取研究数据,实现研究数据的本地化存储和管理
  • 通过统一的TradeApi接入在线仿真系统进行仿真交易或者对接实盘通道实现实盘交易
  • 完全本地化的策略开发和部署,代码可以部署在任意个人电脑或服务器上,保证策略的安全性
  • 模块化设计,通过标准的输入输出接口,做到数据与回测分离、交易与分析分离, 每一个环节都清晰可控,同时方便用户根据自己的需求增加应用模块
  • 数据构建时进行严格的对齐,回测时提供当前快照而不是数据查询接口,防止未来函数的出现


信号研究

相比较于目前开源社区中的其他同类量化回测框架,JAQS主要特点之一就是提供了极为方便的信号研究功能,通过SignalDigger模块用户可以用向量化数学公式的方式快速构建信号的时间序列数据,并在历史数据样本中测试该信号的预测效果,如分组收益、加权组合收益、每日IC、IC分布等,同时SignalDigger会自动排除涨跌停、停牌、非指数成分等特殊情况,保证结果的正确性。


策略回测

有了靠谱的信号后,就可以开始基于其来构建交易策略,并通过历史数据进行回测。JAQS的回测实现并没有采用其他策略框架中常见的on_bar函数来执行策略逻辑运算和交易,而是通过给出选股条件和信号权重的方式,由框架来负责处理具体的交易,从而大大降低策略的开发难度,对于很多Quant研究员来说无需再去关注太过底层和繁琐的委托下单方面的细节。

回测框架完成数据回放和成交数据的计算后,可以将交易的结果输出到文件中保存,方便后续的进一步分析,一些效果截图:



仿真和实盘交易

策略研究的结果满意后,下一步就是仿真交易,作为上实盘前最后的效果验证。quantOS提供了一套完备的仿真交易系统TradeSim,从功能方面看可以看作为增强版的SimNow:

  1. 支持股票的仿真交易
  2. 提供算法交易功能(twap、vwap)
  3. 网页版后台监控环境
  4. 每日交易效果的统计分析

TradeSim和SimNow一样,同样提供了一套标准的交易接口TradeApi(基于Python开发)。使用JAQS策略的代码可以从历史回测无缝切换到仿真交易上,基于实时行情数据来驱动策略的交易信号的产生。


通过仿真交易的验证后,下一步就是上实盘。vn.py针对TradeApi的协议标准,开发了JaqsService模块(在近期即将发布v1.7.2版中包括),用户只需要修改TradeApi中的交易服务器地址配置,将JAQS框架实时产生的交易信号发送到运行在本机的VnTrader,JaqsService即可将信号转化为具体的交易委托发送到经纪商,并提供委托成交、账户持仓等相关信息的反馈。


由于刚发布不久,JAQS框架必然存在诸多的不足,也欢迎大家提出宝贵的意见,相关地址:

quantOS:开源的量化交易一站式解决方案

JAQS框架:基于严谨信号研究的策略开发框架

公众号:

weixin.qq.com/r/ZSgSCnX (二维码自动识别)

编辑于 2017-12-08

文章被以下专栏收录