团队内控策略组合管理的方式,给团队内部管理提供了完美的解决方案。
- 一方面,不同投研人员,不同的策略可以组合成一个组合运行,而且每个策略都有自己的理论部位,即使交易相同标的也不会互相干扰;
- 另一方面,
C++
级别的代码可以提供最大的策略保密性,投研人员不用担心策略的泄露; - 策略的绩效是独立核算的,团队内部的考核指标可以很容易实现。
多账户交易(多产品配置)对于不同行情周期下的策略组合,一般团队都会有一个当下最适应的策略组合。但是同一时期,团队可能会同时管理很多个账户,而其实这些账户用到的策略组合都是相同的。这个时候WonderTrader
平台提供的M+1+N执行架构就能够完美的满足这个需求。
- 首先,策略组合有自己的单位资金容量和对应的风险参数,以及各个策略的单位交易数量;
- 其次,不同的账户有不同的资金规模和风险偏好,这个时候只需要根据这些要求配置不同的手数倍率即可;
假如某组合盘P基本资金规模为500w,预期收益30%,最大回撤10%,收益风险比3:1;A账户使用该组合盘P交易,A账户的资金量为1000w,可以接受的最大回撤也是10%;B账户也使用该组合盘P交易,资金量也是1000w,但是可以接受的最大回撤为20%;这个时候因为A账户风险参数和基本盘一致,所以A账户的手数放大倍数为资金规模/基本盘的资金规模=1000w/500w=2倍;B账户因为可以忍受最大回撤20%,所以手数比例还要再放大一倍,即B账户可以配置4倍。
- 第三,不同的账户可以配置独立的风控逻辑,账户之间不会互相影响。
多标的跟踪一些用解释型语言(如Python
)开发核心模块的量化交易平台,在标的数不多的情况下,能够胜任各种不同的应用场景。但是当需要跟踪的标的数达到100个以上,甚至是50个以上时,就无法满足需求了。一方面资源占用大,利用multiprocess
等机制,虽然各个标的独立运行,但是上百个标的就要新建上百个进程,内存和CPU开销都非常大;另一方面策略效率低,资源争强严重的情况下,策略反应也会变慢。WonderTrader
核心采用C++
开发,数据伺服更是一开始就设计成向多个组合同时提供服务的架构,同时策略和执行剥离,信号执行和策略计算完全在两个不同的线程中独立运行。在这样的架构下,就能够很好的满足多标的跟踪的需求。
大计算量策略一些策略计算量会非常惊人,比较典型的就是选股策略,不管是用多因子也好,还是基本面也好,都会从数千只股票中,逐步筛选,从而得到最后的目标股池。另外,一些多标的的多因子框架也具有较大的计算量。这样的策略,计算量非常庞大,耗时也长。WonderTrader
的SEL
引擎就是为了满足这方面的需求而定制的。SEL
引擎采用异步时间驱动的模式,通过向引擎注册重算时间调度(支持日内,每日、每周、每月的等多种周期),定时触发重算,然后调整多标的的目标仓位,从而输出信号。
极速交易WonderTrader
使用C++
作为底层核心开发语言,一个最重要的目的就是追求极致性能,所以WonderTrader
的使用场景中高频交易或者极速交易有一个非常大的占比。WonderTrader
于v0.9
版本开设了一个新的UFTEngine,专门针对极速交易的场景。和原来的HFTEngine
不同,HFTEngine
针对的是一般高频,侧重于向应用层提供高性能的底层组件,会考虑更多的兼容性问题以及应用层对接的问题,系统延迟在1-2微秒之间。而UFTEngine
则完全从WtCore
项目剥离,不向应用层提供接口,全部在C++
进行开发实现,系统延迟在200ns以内。
算法交易WonderTrader
有一个独立的执行器入口模块WtExecMon
,用户可以在此基础上实现算法交易。WonderTrader
的M+1+N执行架构中,1+N执行部分剥离出来,就可以作为一个独立算法交易执行器来使用。用户在使用的时候,通过设置指定标的的目标头寸,算法执行单元就可以按照预设的算法进行交易下单。用户可以通过实现自己的WtExecFact
模块,来添加更多的算法执行单元。高效的C++
底层,可以给算法执行单元的执行效果提供有力的保障。
请发表评论