每周学点——仓位管理模块
富善投资
来源:富善投资
仓位管理模块
在量化交易系统系列第一篇中,我们概述了一个量化交易系统一般需要哪些模块。其实严格意义上并非所有的量化交易系统都会包含所有这些模块,由于量化策略的多样性,可能会设计一些专门用来运行某些类型策略的系统,这些量化交易系统可能会做一些特殊的优化,只包含一部分我们提到的模块,同时增加一些单独设计的模块。
无论什么样的量化交易系统都会包含行情API,策略模块、交易API,但是仓位管理模块就不是所有的量化交易系统都会有。这里就涉及到一个问题,对于大部分的量化策略来说,策略计算出来的信号具体是指什么?对这个问题的不同理解,会使得交易系统在设计上有所不同。设想一下如下的两种情形:
情形1:
当前策略没有持仓,策略需要持仓1手多头
信号:多开1手 vs 目标持仓多头1手
情形2:
当前策略持仓1手空头,策略需要持仓1手多头
信号:多平1手,多开1手 vs 目标持仓多头1手
比较上面的两种情形,第一种的信号是具体的交易指令,这样的设计一般不同策略的信号相互独立。而第二种的信号指的是目标持仓。采用目标持仓的设计,一般交易系统就会包含仓位管理模块,主要功能就是汇总不同策略的目标持仓、记录当前已有持仓等。策略信号以目标持仓的方式,有以下几个优点:
1.每个策略只需要记录自己的目标持仓,而不涉及要发出的具体的交易指令,对于策略开发来说更方便。
2.当有多个策略时,这些策略的交易信号可以汇总,从而将一部分相反的信号冲销,只需要交易净头寸,即节约保证金,又可以减少交易成本。
例如:策略1目标持仓多头1手、策略2目标持仓多头1手、策略3目标持仓空头1手。那么在仓位管理模块中可以将策略1和策略3的头寸抵消,只需要开仓1手。
3.将负责报单管理的功能从策略中剥离出来,形成一个单独的组件,使得交易系统设计更加简洁,便于维护。
策略信号采用目标持仓的形式虽然比较方便,但不是对于所有策略都适用。对于绝大多数中低频的策略来说,一般只要策略出了交易信号都需要保证成交,这一类的策略可以采用目标持仓的方式。但是对于一些高频的策略,可能需要在某些价位上挂单,并不以保证成交为优先,对于这一类的策略就不适用目标持仓的方式,需要在策略中实现管理报撤单的逻辑。