模组是一个模型全自动运行平台。支持从信号下单开仓->持仓管理->头寸管理->平仓的全流程自动处理,实现“资金->持仓->资金”的业务流程自动化。
模组也是投资经理的管理平台,策略的运行、策略更新、资金管理、收益分析都可以在模组界面进行。
场景1:策略组合运行,进行头寸管理
策略组合调试好后,需要加载到后台运行下单,对于多合约、多周期、多模型组合运行,且需要通过头寸管理函数进行止损、风控管理的使用场景,需要借助模组运行下单,实现更高端、智能的资金管理和风险控制。
如下图,含有头寸管理函数的模型装入到模组中运行时,模组可为每个运行单元分配独立的资金,各单元独立计算盈亏、可用资金及权益变化,为机构多策略、多周期、多合约组合运行提供了有力的保障。
场景2:查看策略实际运行效果,定期维护管理
策略运行阶段,投资经理需要定期检查策略的运行效果,了解模型的信号执行情况、实盘下单收益,对失效策略进行更新维护等管理操作。
如下图,模组是的运行管理平台,列表式的管理界面,对各个模型的运行集中管理,每一个单元的总收益、当前的信号、下单、持仓、持仓盈亏等数据一目了然。
模组监控K线图中记录了每个模型实际下单的头寸、收益、收益曲线、信号以及历史交易记录,帮助投资经理直观了解自策略运行以来的真实交易结果。
投资经理结合策略实际收益,可以快速识别失效的策略。在编写平台上调整策略后,可以在模组监控K线图上一键更新策略,支持继承单元头寸,接续之前的资金和收益继续运行,免去重新建立运行单元的重复操作,保障策略收益的连续统计。
注:
如继承单元头寸,则更新公式后清除单元历史运行信号,但是保留单元的权益、收益、持仓,也保留历史的交易记录;
如果不继承单元头寸,则清除历史信号、历史信号记录和单元收益,从选择的信号计算起始时间重新开始运行。
模组的运行机制
1、模组的单元管理机制
的模组不是直接管理资金账户和持仓,而是通过独立的单元管理策略的资金和持仓。模组中每个运行的模型称为单元,每个单元分配独立的资金,各单元独立运行,自负盈亏。避免多策略运行时资金被其他策略占用无法下单、多模型管理同一个合约,当前模型出信号平了其他模型的持仓的问题,有效保障策略有序运行。
如下图,是模组的运行界面,多品种、多策略、多周期的策略组合在同一个分区下运行,每个单元独立运行,信号、持仓、资金互不干扰。
2、模组的单元资金和实盘账户资金关系
模组的单元资金和实盘账户资金是不同的。
单元的资金是投资经理配置策略组合时为每个模型分配的,和实盘账户资金没有直接关系。大多数情况下,各单元的资金之和不超过账户总资金数。
在给各单元配置资金时会参考实盘账户的总资金量,根据每个策略的特点、规模大小为各个单元合理分配资金。
3、模组的单元持仓和实盘账户持仓关系
单元的持仓与实盘账户的持仓也是不同的。
单元的持仓,是这个单元的模型出信号自动下单的结果。在用户不进行手动干预的情况下,各个单元持仓之和等于实盘账户的总持仓。
4、模组列表抬头名词解释
数据合约:加载模型计算信号的合约;
交易合约:模组出信号后实际交易的合约;
收益:模组单元创建以来累计的收益统计,是实际的收益(收益=平仓盈亏+浮动盈亏-手续费);
动态:显示单元最新一根K线的信号情况,有信号时显示具体信号,没有信号,显示为空白;
下单信号:最后确认、下单的信号(包括信号消失),不显示没有确认的可能变化的信号;
复核:显示模型是否需要复核。显示为--,表示最后信号不需要复核(K线走完确认信号下单/不进行信号复核的信号执行方式,为不需要复核的信号);
信号执行:建立模组后未出新信号,且有历史信号,显示带入;出信号并发出委托,未成交时显示正在执行;委托成交或撤单成功后显示执行完成;
信号手数:下单信号设置的手数或模型中写入的手数;
下单手数:模组单元运行过程中,实际的下单手数;
挂单:显示当前单元是否有挂单;
理论持仓:完全根据信号下单手数计算的理论持仓,即BKVOL;
单元持仓:模组当前单元的实际持仓手数;
浮动盈亏:模组当前单元持仓的浮盈,根据单元持仓价格计算;
平仓盈亏:模组当前单元本次打开后产生的累计的平仓盈亏,根据单元持仓的实际成交价格计算;
当日平仓盈亏:显示单元当前交易日的平仓盈亏;
滑点损耗:记录模组的滑点损耗成本,滑点是委托时的最新价与成交价的差值;
5、模组监控K线图的信号显示含义
彩色信号:信号计算起始位置以后的信号;
灰色信号:信号计算起始位置之前盘中运行出现过的、有实际交易的信号。
只要一次理论完整交易内有过成交(信号成交、加减仓成交等历史交易记录中的任何成交),就显示开仓信号和平仓信号。
注:灰色信号根据历史交易记录绘制,和模型计算没有关系。
6、模组监控K线图的收益曲线
模组监控K线图上的收益曲线为实际交易的收益曲线,从模组单元实际开始运行位置开始显示,绘制机制如下:
重新初始化运行单元不继承单元头寸,收益曲线重新开始统计;
重新初始化运行单元修改了指标计算起始时间,依然显示K线对应的实际收益曲线;
模组关闭再次打开,如果中间K线不接续出现了新K线,则未盘中运行的K线收益曲线显示为直线,延续关闭前最后一根K线的收益。
加载模型到模组中运行的方法:
1、新建
右上角菜单【量化】->策略运行模组,打开模组界面,按下列步骤新建运行单元。点击展开
2、回测后装入到模组中运行
主图回测后,点击鼠标右键->【装入到模组自动交易】;
批量回测和组合配置,在回测列表中点击鼠标右键->【装入运行模组自动交易】;
典型问题解答
1、如何理解模组、运行单元、分区的关系?
答:如果把模组比作一个工厂,那每个分区相当于一个产品车间,一个工厂可以有很多个车间同时运营不同类型的产品,每个车间又有很多的工人(单元)负责生产执行。产品与产品之间独立管理,单元与单元之间也是独立管理。
模组统计每个单元的收益进行风险管理和策略绩效考察,也可以统计每个产品的整体收益,作为后续资金分配和策略调整的依据。
2、数据合约与交易合约的区别?
答:一般情况下,数据合约和交易合约是一回事。只有一些特殊的用法,才有区别,典型场景举例:
(1)如果你用沪铜加权的k线图信号,交易沪铜2412这个月份合约,那么数据合约是沪铜加权,交易合约就是沪铜2412。
(2)如果你用沪深300现货指数的k线图信号,交易IF股指期货,那么数据合约是沪深300,交易合约就是IF股指期货。
3、模组新建运行单元指标计算起始时间、信号计算起始时间怎么设?
指标计算起始时间根据你模型里对历史k线数据的统计参数来定,例如你的模型用到了20日均线,那么指标计算起始时间就需要指定为1个月以前的日期(一个月22个交易日)即可。不适合把回测用到的很多年的k线数据都加载到模组的,那会影响模组运行速度。
信号计算起始时间,一般指定下一个交易日,因为你从下一个交易日开始做实盘交易,以前的历史信号对你没有用处的。
4、模组最多能加载多少个模型?
答:模组的运行单元数量上限与CPU线程数挂钩,每一个线程允许32个运行单元,最多可以加载256个运行单元。
5、模组里的手续费和保证金怎么设置?
答:右上角菜单【量化】->设置保证金/手续费的量化交易参数,这里根据实盘的标准来设置手续费和保证金。
这样回测和装入模组计算信号和下单手数,与实盘标准就是一致的。