本章主要是以微盘股择时方案实现实盘自动化输出信号交易为目标而展开描述的。
在过去的文章(市值风格切换方案:意外成为指数中性策略》、《深入剖析 微盘股“策略原理”及其“非线性择时方案”》、《量化策略择时效应:市值越小,择时越好》、《控制股票产品净值“最大回撤”的有效投资方案》和《微盘股的非线性择时方案:震荡延迟买,趋势马上跟!)中,有对择时模型的开发、使用和风控等多方位的剖析及应用。但多数都是在研究角度上的,今天我想展示择时的另外一面,也就是在实盘执行的过程,如何实现自动化输出信号,并导入QMT交易(这一步,有编程能力的伙伴可以自己实现;现在,因为我暂时不需要完全自动化交易,所以通过自动化输出信号导入QMT进行手动批量下单!)。
在微盘股择时实盘执行过程中,必然少不了量化选股策略或模型(深入剖析 微盘股“策略原理”及其“非线性择时方案”》,这篇文章中有更加深入剖析如何开发微盘股策略的阐述!);量化选股模型也不仅仅只是一个或少数几个就可以的,因为在资金规模更大的情况下,我们需要更多的量化选股策略,更多的股票去分摊资金。那么我们必然会遇到另外一个问题,那就是我们如何从策略库选择当前最合适的量化选股策略作为实盘持仓策略呢?总总问题,都需要我们在实盘执行过程中去解决。

第一部分:执行过程的总示意图
从总示意图可以看到,我们需要解决:子策略自动化开发、策略轮动、确定多空信号、微盘择时模型、下载数据、启动盘前程序、下单时间点等问题,并且每个问题都需要按时间序列执行的。虽然看起来,内容挺多的,但是总的来看就是两点,那就是策略研发过程和盘中股票交易过程两部分构成的。
所以下面我们将从分别从这两部分执行内容展开阐述。
图1:执行过程的总示意图

第二部分:策略研发执行过程
2.1 子策略自动化开发
这一步很重要,也是量化选股策略的子策略可以自动化批量开发;这一个问题,我之前在文章深度文章:市值风格轮动模型 如何有效地调用 策略库?当中有所涉略过,将量化选股模型设计成通用的模板,将因子库的所有因子按照因子组合的要求及子策略的收益回撤比等指标的要求后,借用机器学习算法的处理方式不断撮合和生产新的多因子组合选股策略,并且最终根据我设置的收益回撤比等指标过滤和排序后,输出我原先设置好的子策略数量,由此构建成一个同类型的子策略库。
比如我想开发微盘股策略,那么我输入需求条件:a、微盘股成分股;b、按照收益回撤比排序后优先选股前1000个子策略,那么这个自动化开发的模块就会生产我预设条件的微盘股策略库。这一步的实现过程,一般都是在自己开发自己想要的策略类型(如微盘股策略、中证1000增强、中证500增强、沪深300增强等类型策略)或迭代同条件策略库时,才会启动;启动的次数不定和频次不高,同时它可以在任何时间点启动,只要避开将要执行的策略库后,就不影响实盘股票交易过程。
图2:子策略自动化开发示意图
2.2 策略轮动:确定子策略
选中 子策略库 后,每个子策略库里面都有上千个同类型的子策略,那么我们必须要从中定期筛选当前最佳的子策略组合。为了解决这个问题,我们可以使用策略轮动模型(deepseek 高效辅助开发 策略轮动模型》文章有所提及解决方案!)去解决这个问题。如图3所示,在N个子策略的库中,可以根据实际的资金投资需求而确定股票持仓数量,确定股票持仓数量后,就可以计算出我们大概需要几个子策略,也就是我们策略轮动时,需要输入的条件之一。比如如果有一位投资者需要投入1000万,但是我们预期希望每只股票买入20万左右,股票数量应为1000/20=50只;又假如每个子策略的股票持仓数量固定为10只,那么我们转换成策略数量就是50/10=5个策略,那么我们策略输入条件为5,策略轮动模型将每日滚动选出最优5个子策略构成新策略组合,每天开盘前(我一般设置在8:30-9:00之间启动程序更新股票持仓),根据昨天最新的因子数据更新组合策略的最新股票持仓,以csv格式保存在指定的位置内。
图3:策略轮动示意图
2.3 微盘股择时模型
在过去的多篇文章中,都有对择时模型展开过阐述,这里就不多累赘了。
微盘股指数是我自己构建的,选取全市场市值最小的500只股票最为样本,每天收盘时,按照最新的市值排序更新市值最小的500只股票样本,每天采用均等权重统计当日涨跌幅作为指数当日的涨跌幅。因为择时需要实时的数据,所以我们采取实时读取QMT的盘中数据,每隔一段时间更新指数涨跌幅,由此可以实时知道择时信号。但是,由于我们的择时模型是固定时间点执行的,也就是说在这个时间点外,我们不执行最新的择时信号。我们常用的择时时间点是:14:00、14:30和14:55,为什么呢?因为我们经过研究分析,根据早盘的择时信号效果最差,因为早盘存在行情的逆转,也就是说择时信号早盘执行后,后面的盘中时间内,很可能存在逆转,并转变新的择时信号,而收盘价附近,行情很少存在逆转的行为。
只要在固定时间点,判断最新的择时信号,如果发生转变,那么我们将触发仓位管理;更加转多或转空去增加或减少仓位,重新计算仓位系数,并以此进行仓位交易。
图4:择时模型示意图
第三部分:盘中股票交易过程
3.1 盘前准备
盘前准备很重要,因为当天需要的因子数据都在盘前准备的,除了价格数据盘中实时读取外。数据包括:财务因子、量价因子、昨天股票价格数据及新衍生生产的财务因子等。
图5:下载数据示意图
3.2 启动盘前程序--负面清单
在实盘投资过程中,我们一定要过滤掉那些可能停牌退市高风险的股票,也就是我们成为负面清单,这个清单可以根据我们多个固定的指标值去进行判断,那么满足指标的,则列为我们的高风险退市股。
如果我们的最新组合策略股票持仓与负面清单的股票重叠,那么重叠的股票排除掉,不作为买入股票操作,将重叠的位置空下来,可以不需要新的股票去替补这个位置或仓位。
图6:负面清单示意图
3.3 下单时间点:实盘交易
盘前,已经通过策略轮动筛选最新的策略组合,策略组合输出最新的股票持仓,股票持仓根据负面清单过滤高风险股票,择时信号盘中实时更新并在指定时间点更新实盘持仓的仓位比例并执行交易。
而这个交易时间点,有两种情况:
第一种就是刚才提的,择时信号确认的时间点,一般优先选择14:00后的时间点,这个时间点最要是用于股票持仓的仓位管理,并对股票账号进行增减股票仓位的;
第二种就是子策略换股时间点,因为股票子策略每天都会在固定时间点进行换股操作,这个操作的时间点可能分布在盘中的任意时间点,我自己习惯都在半个小时的时间点上交易。为什么需要这样操作呢?主要原因是分散资金交易,这样可以减少在单个时间点上的集中太多资金交易,从而加大交易滑点。
图8:下单时间点示意图
第四部分、选中的择时模型结果表现
这是选中择时模型结果的表现,择时表现有两部分:
第一部分,就是微盘500_择时原始模型的表现,也就是根据构建的微盘500指数价格择时信号,买卖指数的累计收益表现;从表1可见,16年开始直至25年3月27日,只有17年时亏钱的,年度胜率为90%,总体来说比较平稳。从图9可以看到,年化收益率为31%左右,最大回撤在19%左右,明显比24年1-2月分急速杀跌时的最大回撤小,这也侧面证明了择时的有效性或风控能力。
第二部分,就是微盘500_择时策略效果的表现,这就是微盘股组合策略根据微盘500指数择时信号进行买卖后的累计收益表现;从表1可见,10年数据,只有23和24年是跑输了微盘500_择时原始模型,也就是说策略择时效果明显比择时原始模型要好。为什么呢?因为组合策略相对微盘500指数是存在明显超额收益的。从图10看,年化收益率为41%左右,最大回撤在14.4%左右,这表明超额收益不仅可以提高收益率,同时也可以在一定程度上改善最大回撤。
日期
微盘500_择时原模型
微盘500_择时策略效果
2016-12-31
0.418
0.575
2017-12-31
-0.106
-0.095
2018-12-31
0.010
0.312
2019-12-31
0.480
0.616
2020-12-31
0.170
0.411
2021-12-31
0.427
0.492
2022-12-31
0.343
0.394
2023-12-31
0.203
0.176
2024-12-31
0.972
0.791
2025-12-31
0.168
0.231
表1:统计微盘500不同择时效果,截止时间为2025年3月27日


图9:微盘500择时原始效果

图10:微盘500择时策略模型效果

非线性择时模型的开发系列文章: