头图

image

前言

  《WonderTrader架构详解》系列文章,上周介绍了WonderTrader数据处理机制。当平台解决了策略的数据问题以后,就需要向策略提供稳定可靠的信号执行机制,保证策略的信号被正确的执行,是每一个平台最基本的功能。因此,本文作为系列文章的第三篇,将主要介绍WonderTrader信号执行的处理机制

往期文章列表:

1+N执行架构

  WonderTrader设计了一种执行架构,该执行架构可以将一个策略组合的信号,分发到若干个执行通道执行,我们称之为1+N执行架构。为什么会把信号执行设计成这样呢?

  • 基于策略最简化的基本原则
对于策略来说,最核心的任务是抓住赚钱的因子。但是交易的过程中,会涉及到行情的接入和订单回报的处理。市面上有不少平台,选择直接将这样的回报暴露给策略。在这类平台上,策略除了核心逻辑以外,还需要写很多重复的订单管理逻辑。有些平台甚至将底层接口的数据结构直接暴露给策略,这样做的结果是给策略引入了更多的复杂度,除了管理回报,还需要对不同的接口做数据的兼容处理。
WonderTrader的一个设计目标就是是要给策略研发人员做减法,让他们将更多的精力放到策略本身,而不是如何和接口打交道。1+N执行架构,也正是基于这条基本原则。因为信号和执行彻底剥离,所以策略不需要关注任何回报,因为底层会将执行这块处理得很好,策略只需要关注自己的目标头寸和进出场的价格即可。这样就大大简化了策略的编写,只需要将信号计算的核心逻辑实现好就可以了。
  • 大规模产品管理的实际需求
当我们只有一个策略时,最简单的方式,就是把策略写成一个小型的平台,自己处理行情回报和交易回报,再针对特定的需求做一些功能扩展即可。而这种做法,容易把平台做成一个“玩具”,不具备管理大规模产品的基础,有很多量化交易框架都类似这种。
对于大规模的产品管理,最基本的需求就是多个策略形成一个组合共同交易,而一个策略组合又同时在多个产品进行交易。而不同资金规模的产品,在发出交易指令的时候,所需要的执行算法也是不一样的。比如买入100手和买入1手某期货合约,显然就不能用完全一样的方式下单
1+N执行架构很重要的一方面就是针对大规模产品管理的需求。相同的策略组合,在不同的交易通道下,会根据产品的资金规模和风险偏好配置不同的交易数量放大倍数。而交易数量的不同,有需要针对不同的交易通道配置不同的执行算法,这样才能让各个产品都能获得更好的执行价格
  • 策略逻辑和执行的反复权衡
1+N执行架构下,需要把策略分为两类策略:重逻辑轻操作的策略轻逻辑重操作的策略大多数趋势类策略都属于前者,而几乎所有的高频策略都属于后者
重逻辑轻操作的策略,最显著的特点就是信号出现时必须要执行到位。这类策略,还表现出频率较低(相对高频而言),对滑点敏感度低等特点。而这类策略就是1+N执行架构主要服务的策略,这类策略也很容易通过1+N执行架构扩展到更多的交易通道。
相对的,轻逻辑重操作的策略,最显著的特点就是信号出现时,要看执行的情况,才能决定下一步如何应对。这类策略最常见的就是套利策略高频策略,它们需要不停地挂单试探盘口的情况,才能做出更有利的决策。显然1+N执行架构无法满足这类策略,所以WonderTrader专门针对这类策略提供了HFT引擎,该引擎将交易接口和交易回报直接暴露给策略,这样策略就能根据回报执行管理订单。
  • 投研人员的编码水平的考量
在量化领域中,对从业人员的成分划分,有一个很有趣的分类方法:P-QuantQ-QuantP-Quant的共同属性是这些从业人员基本都有软件开发的技术背景,拥有相对较好的编码能力。而Q-Quant则相反,一般没有技术背景,编码能力相对较弱,但是在策略建模、金融工程方面相对较强
因为两类从业人员的背景和能力树的不同,所以他们对于平台的需求也不大一样。P-Quant编码能力相对较强,倾向于平台提供核心的基础功能即可,他们可以自行开发自己需要的各种功能,同时希望平台能够尽可能低延时(P-Quant从事高频策略开发的比例更高);Q-quant编码能力相对较弱,则倾向于平台提供更完善的基础设施和策略开发API,相对的,他们对延时不那么敏感(当然如果平台能够做到更低延时,对他们同样有利),但是希望平台支持的应用场景更丰富一些(要满足不同类型的策略的回测、实盘等需求)。

  鉴于以上提到的几个方面,WonderTrader最终决定针对CTA策略,基于信号和执行的剥离,采用1+N执行架构进行实盘交易。而针对HFT策略,则选择将交易接口直接暴露给策略(不同交易接口的差异被封装到交易模块中,策略处理的交易接口是无差别的),让策略自行管理订单,转而在数据需求上提供支持。这样就能兼顾不同类型的策略的不同的应用场景,让不同类型的策略都能在WonderTrader中可以更高效的管理起来。

如何同步信号

  对于CTA引擎,既然采用1+N执行架构,就意味着平台需要管理两套头寸,一套是策略的理论头寸,一套是交易通道的实际头寸。在实盘运行中,我们需要对两套头寸分别进行管理。

  • 理论头寸的管理
理论头寸的管理,也分为两个层面。第一个是策略层面,即每个策略有自己的理论头寸,包括进出场的时间、价格、方向、数量等。策略可以管理的也只能是自己的理论部位,每个策略都是互相隔离的。持有的头寸,再实时计算浮动盈亏,并核算最大潜在浮盈和最大潜在浮亏等数据。回测的时候,数据都在内存中,不需要实时保存。而实盘环境下,要考虑策略重启等各种情况,所以数据需要实时保存到文件中
第二个是组合层面,即策略的目标头寸整合到一起以后,形成一个净头寸。这个净头寸本质上和策略的理论头寸是一致的,只不过是轧平过相反的头寸以后,归属于策略组合管理。策略组合也要实时计算浮动盈亏,同时根据预设的资金规模,计算资金风险指标,进行实时风控。实盘环境下,数据也要实时保存到文件中(回测引擎针对单策略,所以不存在策略组合的概念)。
  • 实际头寸的处理
策略组合的头寸是最终分发到各个交易通道的基础目标头寸。每个交易通道,会根据所对应产品的资金规模和风险需求分别配置自己的放大倍数,基础为1倍,支持小数倍数,会自动做四舍五入的处理。
每个执行通道确定了自己的实际目标头寸以后,跟自己当前实际持有的头寸进行比较,将有差别的头寸,根据预设的执行算法WonderTrader内置的是以最新价、最优价和对手价三个价格作为基础价格,再加上一个滑价跳数作为限价,基本上满足了绝大部分资金规模有限的策略需求)发出下单指令。并根据订单回报成交回报实时更新持仓状态订单状态
  • 滑点如何处理
正如前面所说,不同资金规模的策略,最终成交的价格是不同的,更何况不同的交易通道还是依赖相同的信号进行交易的,并发执行的前提下,不同交易通道的订单最终也会在交易所进行竞争。这就造成一个客观的事实:相同策略在不同产品中的实盘表现一定是有差异的,而差异的来源就是滑点
回测的时候,我们一般用小手数进行回测,所以一般情况下都不考虑滑点。但是实盘环境下,滑点问题就不可避免。这也是我们内置的执行算法,都是以限价单下单的根本原因。一般情况下,笔者建议放大倍数大的交易通道,执行算法中预设的滑价可以相对放大倍数小的交易通道设置得更大一些(最终要根据流动性判断)。这样即使产生滑点,也在可以接受的范围之内。如果使用市价单发出下单指令,极端行情下,最终产生的滑点可能会压缩掉全部的利润。

1+N执行架构的意义

  前面基本介绍了1+N执行架构基本原理。从WonderTrader的角度来说,所谓的1+N其实也有两层意思:N个策略在1个组合中共同运行,而1个组合又同时在N个交易通道进行交易。所以一开始的时候笔者有意称之为N+1+N执行架构。显然,不管从哪方面来说,1+N执行架构的意义是非凡的:

  • 策略和执行剥离,对研发人员更友好,团队管理更高效
投研人员的技术栈其实是策略coding的核心问题,我们选择一个平台的时候,应该尽量的减少技术栈的引入。而一般交易接口都是异步回调的,如果强行要策略投研人员深入了解这类纯技术技能,从团队管理的角度来说,是低效的。同时对于投研人员来说,花太多的精力到自身技能树的分支上,也不是一个聪明的选择,更何况技术本身也并不那么容易。
所以策略和执行的剥离,对大部分投研人员,尤其是Q-Quants来说,是一种非常友好的设计。这样的设计当然也不是WonderTrader首创的,笔者也从同事的实际需求中和其他的量化平台吸收了一些经验。
  • 净头寸执行,不存在自成交风险
对于策略来说,风控是必不可少的,同样策略组合的风控也是平台的重点之一。风控中,除了资金风控以外,还有一个合规风控。绩效回撤了,可以再赚,但是如果合规风控过线了,可能会引起非常大的麻烦。其中最重要的合规风控点就是自成交。自成交次数过多,手数过大,很容易被认定为对敲操控市场,相应的处罚也是非常严厉的
WonderTrader需要解决多策略在多产品运营的问题,首要考虑的就是合规性的问题。如果两个策略同时发出相反的交易信号,并且分发到多个产品同时下单,自成交的风险就会被放大。所以WonderTrader通过在策略组合中轧平相反头寸,最终以净头寸的方式发出下单指令。除了天然避免自成交的问题,同时还能节省佣金减少保证金的占用。策略组合内部,策略有自己的理论头寸,不受组合头寸的影响。
  • 同一个策略组合的多产品,可以保证信号的一致性
笔者此前,经常会被投资人问:你们怎么保证各个产品绩效的一致性的?笔者没有太多去研究别家是怎么处理的,但是对于WonderTrader1+N执行架构来说,这样的问题就显得太简单了。
即使两个规模一样的产品,用同一套策略交易,绩效也不可能完全一样。因为即使同时下单,也受到交易通道速度的影响。但是不能保证绩效的完全一致性,保证信号的完全一致性却是没有问题的。
  • 满足大规模管理产品的需求
专业投资机构对于交易平台的需求,和个人投资者还是有很大差别的。最核心的一点就是大规模的产品如何管理的问题。例如某些头部私募,发了数百只产品,假设只有一百只产品需要实际操作,而每只产品都需要交易股票、期货、期权等标的。
如果不从架构上解决这样的需求,对于这些机构的IT来说,这基本上是一个灾难:在不同的服务器上部署策略运行环境,每天还要监控各台服务器在开盘前是否正常运行。甚至有些柜台要到开盘前才会启动,这就使得运维人员的检查时间窗口只能限定在半个小时甚至更短的时间范围内。
WonderTrader的需求就从大规模产品管理中来,一开始的设计目标也是要满足大规模产品管理的需求。而1+N执行架构正是针对这样的需求的核心机制。

结束语

  本文对WonderTrader的信号执行机制的介绍就到此结束了,相信通过本文,各位读者能够对WonderTrader1+N执行架构有一个更深入的了解,也希望本文能够在各位读者在遇到类似问题的的时候,对大家有所启发。笔者水平有限,难免有错漏之处,还请各位朋友多多包涵指正。下一篇,笔者将围绕平台如何兼容不同的策略,来介绍WonderTrader不同的策略引擎的底层逻辑,望各位读者届时多多捧场。

  最后再安利一下WonderTrader
  WonderTrader旨在给各位量化从业人员提供更好的轮子,将技术相关的东西都封装在平台中,力求给策略研发带来更好的策略开发体验。

WonderTradergithub地址:https://github.com/wondertrad...

WonderTrader官网地址:https://wondertrader.github.io

wtpygithub地址:https://github.com/wondertrad...


市场有风险,投资需谨慎。以上陈述仅作为对于历史事件的回顾,不代表对未来的观点,同时不作为任何投资建议。


WonderTrader
31 声望23 粉丝