11.会员专属(499)

提升实盘的仓位管理策略 (副本)

由small_q创建,最终由small_q 被浏览 15 用户

作者:woshisilvio

导语

在以往的认知中我们认为一个量化策略的选股>择时>风控,但经过多次的实盘交易发现风控处理不当会导致我们牛市赚的少、熊市亏更多。因此提出一种次优解的风控思路:风控>择时>选股。根据人工择时的经验,设计执行的固定量化风控准则(交易纪律),可以决定我们收益的下限,以及回撤的上限。

在本次分享中,将从以下四个方面展开:

1.仓位管理的策略。同时,优化上期分享的超跌反弹策略。

2.常用来做优化的工具和方法

3.对抗过拟合的方法

4.彩蛋策略:资金流大单追涨策略。预告下一期meetup

仓位管理策略

一个完整的AI-量化模型由三部分组成:选股、择时、风控。


{w:70}{w:100}{w:100}

在进行风险量化之前,大部分投资者的排序是选股>择时>风控。选股的准确率决定了我们的收益上限,但整体市场环境的下行风险却很难通过选股来化解(俗称,弱势行情多做多错,怎么选都是错),由此导致在实盘中,无法在行情上涨的时候获取更多收益,行情退潮时回撤又持续扩大。对此,进行了归类总结发现三种情况:

  1. 选到了牛股,因为择时没有卖在最好时机,或者没有重仓,赚取零星的利润,在别的股票上亏掉了利润。
  2. 选到了牛股,因为没风控及时平仓,利润在震荡中磨损消失。
  3. 选到了牛股,因为风控和择时没有选择出最佳的持仓时间,导致无法获利。


{w:60}{w:100}{w:100}{w:100}{w:100}{w:100}


分析各种原因后发现大部分亏损的原因是风险控制没有处理好,根据我个人近几年实盘的量化选股模型来看,可以发现:

  1. 有风控的策略效果优于无风控的策略。无风控择时策略的回撤和波动大于择时策略,收益和夏普比低于带风控的策略。
  2. 有择时的策略并不总是优于不择时策略。T+1的操作机制让择时的困难大于选股的,个股的波动受到股票本身的特质收益率,或者说股性的影响,我们很难能每次都精准提前捕捉到每一天个股的所有波动。择时在短时间可以捕捉到行情的收益,但长时间看来,择时的策略可能比不择时的表现更差。
  3. 如果用人工对模型做择时的话,不如不择时。纯人工择时容易带有情绪影响和主观偏见,难以跑赢模型 。
  4. 多策略并行,并不能完全分散风险。多策略组合可以降低风险,但同时也容易忽略策略之间的高度相关性。比如有在同一时间段,策略同时回撤。特别是单只的量化策略,随机性太强,如果没有合理的风控机制,基本上就是对冲手续费

因此,在实盘上取得一个较为稳健的收益必须设计一个带有风险控制的系统,前面提到的三部分的重要顺序调整为:风控>择时>选股。 提出次优解的解决方案:根据人工择时的经验,设计一个可以便于执行的固定量化风控准则,也可以称为交易纪律,通过这种方式来规范模型的交易。通过此种方法可以决定我们收益的下限,以及回撤的上限。

假设模型多因子选股解决的是进攻问题,那么风控择时和仓位管理解决的就是防守问题。如何平衡两者之间的关系?


{w:60}{w:100}{w:100}{w:100}{w:100}{w:100}

\

仓位管理策略设计逻辑

结合前几期的分享,风控可以采用均线来描述趋势,同时跟踪指数涨跌的方向。为此,本次采用综合的均线追踪系统对风控准则进行平滑处理。

主要方法

通过股票或者指数的形态、涨跌幅、成交量进行综合打分,每天计算得分score,得分高的就加仓,得分低,甚至负分就减仓。灵活运用两种方式:

1.对指数来做仓位风控。

2.对模型本身的预测值做仓位风控。

加仓判断

风控参考标的可以依据策略风格进行选择。 比如,策略出的股票更偏向创业版300,则利用399664.HIX来作为我们用来做风控抽取的标的。

(一)假设:收盘后,当日 同花顺全A收盘指数-收盘价 > MA-3天均线

处理:增加10%仓位

(二) 假设:收盘后,当日同花顺全A收盘指数 MA-3天均线多头, 处理:增加10%仓位。

(三) 假设:收盘后,当日同花顺全A收盘指数-收盘价 > MA-10天均线 处理:增加20%仓位。

(四) 假设:收盘后 当日同花顺全A收盘指数 MA-10天均线多头,加2层仓。

处理:增加20%仓位,如果 指标钝化 则加10%仓位。

(五) 假设:收盘后,当日同花顺全A收盘指数-收盘价> -MA-20天均线 处理:增加20%仓位。 (六) 假设:收盘后,当日同花顺全A收盘指数 -MA-20天均线趋势多头, 处理:增加15%仓位。 如果指标钝化 则增加5%仓位。

(七) 假设:收盘后,当日同花顺全A收盘指数-收盘价 > MA-30天均线, 处理:增加10%仓位。 (八) 假设:收盘后,当日同花顺全A收盘指数涨幅>1%, 处理:增加30%仓位。

(九) 假设:收盘后,当日同花顺全A收盘指数-收盘价>当日-最低价1.5%,且abs(当日收盘价-当日同花顺全A收盘指数)的绝对值 相差3%, 处理:增加35%仓位。

减仓判断

假设:收盘后 如果过去4-5天内(包含当日收盘),统计存在 某日 涨幅<1.8%,。

处理:减少30%仓位。

仓位管理依据

1.根据每日ranker_prediction的数据计算得分排序买入


{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}2.每天计算score-大盘系数得分 通过这个得分来进行加减仓操作



{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}


3.在主函数中进行score得分计算并判断 当日总资金的仓位。

4.依据该仓位进行仓控交易。

stockranker模板策略

仓控的逻辑可以结合不同的指数或者策略进行,经检验测试,适用于大部分的市场状况,可以有效控制回撤,以BigQuant平台常见的stockranker模板策略为例:


stockranker的模板策略回测{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}



调整训练时间后:2005年-2016年(参考往期meetup){w:100}{w:100}{w:100}{w:100}{w:100}{w:100}



加入仓位管理逻辑后,最大回撤不超过20%{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}


完善了仓位管理的逻辑后,即使策略在走弱的情况下,都可以得到较为可观的超额收益。 如果上次分享的超跌反弹策略加入仓位管理之后,改策略的夏普比率是否能有提升?

超跌反弹策略



无风控的超跌反弹策略{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}



加入风控后的超跌反弹策略回测{w:100}{w:100}{w:100}{w:100}{w:100}{w:100}

实用的过滤方法

想要打造一个鲁棒性强的系统,需要仔细分析模型预测信号中的细节。否则会被回测曲线带偏,陷入主观上的过拟合。例如,我们通常会过于迷信回测,觉得曲线就是一切,又或者完全不信回测。为此, 在实盘之前需要进行检验处理,既可以增加策略实盘的信心,也可以防止盲目自信。

如何检验模型的信号是否过拟合?

本次分享采用做label标签的方法,查看在过去的时间窗口中,模型预测值与股票未来收益的相关系数 , 类似于检验模型信号的IC/IR值。

制作标签用score过滤信号

在回测模式中我们可以打印出我们模型预测score得分的ic 和ir。

例如:m30:合并后的ranker_ic_2:0.28132879794391147,ic_3:0.4099207593688827,数据总数:3510

还可以利用超惨搜索挖掘更多的score值

{w:100}{w:100}{w:100}{w:100}{w:100} {w:100}{w:100}{w:100}{w:100}{w:100} {w:100}{w:100}{w:100}{w:100}{w:100}制作方法

先在特征输入列表中读取未来2-3日的收益,并跟模型的预测值连接成一张表。

{w:100}{w:100}{w:100}{w:100}{w:100}

将模型的预测值得分score 和股票未来2-3天的收益,以及相关系数做一个描述性统计。 在把超跌反弹的策略模型信号的得分score-的收益ic_mean 汇总之后发现有部分区间收益是负数。

{w:100}{w:100}{w:100}{w:100}{w:100}

模型信号收益为正的预测,明显集中在某些预测分段。根据这一个发现,我们在检验模型信号,和优化策略择时信号的路上,可以从数据中总结到我们曾经忽视的信息。 例如: 一般模型选股只取top10,可以处理只看头部和尾部的股票收益。

  1. 模型预测每日最高得分前10 名(position)的股票 未来2-3日收益如何
  2. 模型预测每日最高得分最后10 名(position)的股票 未来2-3日收益如何
  3. 观察模型的rank_ic 2-3天的均值。如果均值都是负数的,那很大程度上可以反应其实模型在当下市场挖掘出来的平均股票收益 并不会很高。

分析:

  1. 如果发现模型的ndcg值高于0.7以上,说明训练良好,但模型的每日预测最高得分前10名或者后10名未来收益都不高,那证明模型很有可能发生了过拟合。(又或者挖掘到的规律是非线性的,模型并没有很好的学到其中的规律,样本外的泛化能力很弱)

    {w:100}{w:100}{w:100}{w:100}{w:100}

  2. 如果发现模型的预测值与未来收益的相关系数很低,那说明模型预测股票未来收益的效果并不好,模型并没有很好拟合到样本外的规律,过拟合。(rank_ic一般在+/- 0.3以上算是较为稳定和优秀的预测能力,+0.3我们可以正向运用模型,-0.3我们可以反向运用模型)

  3. 如果发现模型的每日预测最高得分仅有1-2只股票未来收益很高,其他排名靠后的股票收益都很低,那这样的模型信号很不稳定,有可能发生了过拟合,也可能是偶然性和运气成分居多。

  4. 如果发现 模型 score 的ic ir都很高,回测收益绩效也不错,但是总体股票样本数据仅几百,这样过拟合的概率非常高

在这里需要注意:训练时间短,回测区间小于半年的,回测曲线各种爆炸45度角往上的,出票数量少的模型(很多单股策略),基本上都存在过拟合的现象。 因为大部分回测都是拟合回测区间的行情,并没有遵照市场的事实依据,去让模型学习市场的规律,很多都是幸存者偏差,所以大部分策略都是没有办法直接应用于实盘的。

这就解释了投资者们经常遇到的一个问题:回测曲线各项指标表现都不错,但放入实盘后效果非常差。这正是在回测研究时,不自觉地在刻意拟合回测曲线,导致模型过拟合。因此,在回测研究时,不要为了追求曲线不断地尝试拟合测试集,而需要将关注点放在模型的特征因子。

还存在另外一种特殊情况。当模型预测score的排名最靠前或者最靠后(top1或者top2)的股票的相关系数很高,同时收益也较高,可以将策略的头部预测值保留下来(top1的股票)。同时也存在缺点,只取头部的模型信号不稳定,非常容易出现偶然性和过拟合。

从以上可以看出:一个优秀的模型,除了回测曲线表现较好以外,稳健性和一致性也很重要。 简单来说,模型选股逻辑足够缜密和优秀,或者模型股票池样本拥有较高的平均收益(高ic,ir)。

过滤总结

模型预测值每日得分在哪个区间胜率较高, 则在该score区间内就开仓;反之,如果score低于某个区间则不开仓。

检查过拟合现象

在stockranker策略模型中,会发现一种现象:ndcg很低,score_ic很低,但是回测曲线45°角往上的优质曲线,为什么会产生这样的矛盾现象? 在排除了未来函数的情况下,我们对模型进行拆解和细致检验, 发现部分策略存在过度拟合预测集现象。

回测:

{w:60}{w:100}{w:100}{w:100}{w:100}实盘:

{w:100}{w:100}{w:100}{w:100}{w:100}

当把模型的过滤条件删除,单靠模型的预测能力,根本没有泛化能力,选股也是杂乱无章,没有预测能力,而回测曲线中的超额alpha ,则主要靠后期拟合预测集,优化曲线本身带来的效果,属于后期人工调整的功劳。

为了检查过滤的条件是否过拟合,可以采用一些简单的过拟合检验方法。

过拟合和欠拟合

过拟合。训练的模型在训练集的股票样本中表现得过于优越,在过去的训练学习中自以为学习了一大堆牛股妖魔鬼怪股的特点,(表现过于自负)误以为这就是选股圣杯, 导致模型在后续在样本外的验证数据集以及测试数据集中表现不佳, 选不到在训练集中出现的牛股。

{w:100}{w:100}{w:100}{w:100}{w:100}欠拟合。模型没学习到几个选股的套路, 可能训练样本被提取的特征比较少,导致训练出来的模型不能很好地匹配,表现得很差,甚至样本本身都无法高效的识别。

如何检测过拟合和欠拟合

从训练集可以看出欠拟合。

{w:100}{w:100}{w:100}{w:100}{w:100} {w:100}{w:100}{w:100}{w:100}{w:100}

通过总结出好的模型和过拟合模型的特征,并进行分类:

  1. 模型训练集和预测集的部分样本数据中的ic均值表现,还有误差率。观察箱型图和ic的预测方向,如果训练集和预测集的预测反向相反,则表示有较大概率过拟合(可能是认为,也有可能是数据误差)

     训练集的箱型图{w:100}{w:100}{w:100}{w:100}{w:100} 预测集箱型图{w:100}{w:100}{w:100}{w:100}{w:100}

{w:100}{w:100}{w:100}{w:100}{w:100}

2.好的模型的训练集IC有明显的方向性,比如ic_mean>0.5或者-0.5然后预测集的ic_mean表现方向要相同。 如果训练的模型是做空的(ic为负数),预测集的ic_mean为正数,这是明显的过拟合。

3.一般过拟合的模型表现: (ic_mean均值低)靠近0且无明显方向性,回测曲线却很不错。

4.好的模型表现为:训练集和预测集的ic_mean值的绝对值一般大于0.3以上且相同方向,训练集的ic_mean越高越好,这样越能看出预测集是否过拟合。 而且误差率不能过大,一般两者误差不要超过30%比较合适,20%以下是最好的说明模型样本外拟合能力较强。

另外,当训练集的一部分数据中传入回测引擎中一同进行回测,交叉训练集和预测集的股票数据样本, 重点观察在训练集与预测集的分界点(样本内和样本外数据)。是否我们过滤了score之后,模型的绩效会崩塌?

假设2010-2020年是训练集,2020年之后是预测集。在2018年-2021年间训练集回测的情况,重点观察2018年-2021年训练集里面模型跑动的情况。

  1. 过滤之前,18-20年(样本内)绩效不错,20-21年(样本外)效果也不错,曲线比较平稳,说明暂时没有发现有过度拟合的情况,样本内和样本外的数据分布较为均匀,说明这是较好的过滤区间或者过滤条件,模型可以保留,未来可对比实盘是否过拟合。
  2. 过滤之后(添加了score区间过滤,或者过滤其他的特征因子数据),18年-20年(训练集样本内区间)的绩效反而变差了,而20-22年(预测集样本外区间)绩效是更好的。说明过滤的条件并没有遵循样本内模型学习的规律,也没有优化模式内的能力,属于是数据拟合和挖掘的结果,只能优化样本外曲线的数据,那这样的过滤条件, 极有可能是为了优化绩效曲线做出来的过拟合条件,未来实盘更容易失真,模型不可用。
  3. 过滤后,模型一年可能只交易几次,或者只有少量的股票数据传入回测引擎(比如一年就几十条,100条),说明模型在很大程度上是过拟合。
  4. 过滤条件更偏向与传统的量化方式,通过后期加工,人工的总结经验来精炼数据,有较大的主观偏向性,也存在过拟合风险。
  5. 模型绩效收益大部分都是被拟合出来的股票提供的,并不能体现模型整体选股的综合收益能力,也是传统量化投资人们将重点放在了回测曲线优化上,导致实盘收效甚微的重要原因。

过拟合检验总结

过度拟合数据容易发生过拟合,但幸运的是,在大量策略的检验过程中,如果能对score模型预测信号进行有效约束过滤。对比直接的形态特征和粗暴的进行个股筛除的方式,score模型预测信号效果更好,也不容易过拟合。

资金流大单追涨策略

该策略是资金流大单风格追涨,同属于《天蝎座0.6》一个类型的牛市追涨策略,模型原名为《射手座》。

近几年,通过对各类型策略的数据的观察,总结发现:

  1. 实盘平稳的策略,最少要经过半年甚至1-2年较为稳定的回测,实盘中能继续能走下去的概率会更高,模型修复力更强,鲁棒性也更好。

  2. 天出多个股票的策略(2-3个或者5个),风格也较为稳定,较为适合做长期跟踪投资用,单股策略,可能更适合用来娱乐,当然很多时候也有很惊喜的表现。

  3. 优化模型的时候,如果能遵循元数据(样本内数据-训练集)拟合出来的模型,就是比如stockranker,-ndcg0.8以上,训练集回测和预测集回测都比较平稳的模型,实盘效果更好。


    在策略研究的过程中,不要拟合测试集的数据,重点关注前面(训练模型的特征数据)拟合,得到的模型更纯粹,样本外数据,实盘中的泛化能力也更强。

视频讲解

/wiki/static/upload/b5/b59aa2c8-f904-4083-9d83-e13d607fd2f7.mp4

\

{link}