摘要

引言

此前我写过一篇文章:《【择时研究】量化投资中的择时研究 网页链接》。在这篇文章所提出的策略回撤择时设计方案基础上,进一步需要解决的问题是:如何建立一套系统性的测试框架,用来寻找择时参数的相对最优解。

基于 AI 编程生成的代码程序,以及我此前整理的 1992—2006 年 A 股历史数据,我重新进行了一轮测试,尝试用一套更结构化的方法,对量化投资中的择时参数进行优化研究。

需要特别说明的是,如果沿用这一套基于策略回撤的择时设计方案,那么它本质上并不是一个“无损增强”系统,而是一种带有成本的风险控制机制。它的核心目标,主要是提升策略夏普率、降低最大回撤,而不是直接提高策略的年化收益率。换句话说,这种择时更像是为策略增加一层“保险”,让净值曲线更平滑、极端下跌时的损失更可控,而不是单纯追求收益最大化。在我看来,这类回撤择时最大的价值,不是让收益更高,而是让一个原本能赚钱但难持有的策略,变成更容易长期坚持的策略

(1)回撤择时的核心目标不是提高年化,而是改善夏普和控制最大回撤

(2)回撤阈值不能设得过浅,也不能设得过深,通常存在一个倒 U 形最优区间

(3)止损阈值应与策略自身波动率匹配,而不是统一使用固定数值

(4)最大回撤具有长尾特征,极端风险才是择时系统真正要防守的对象

(5)本文方法本质上是一种更强调收益保护和夏普保护的离散化 TIPP 思路

下面,我将以一个简单等权多因子策略为例,介绍这套择时优化的整体思路与实现方案。

回撤择时框架概述

目前的择时方法,可以概括为一句话:

在基础多因子组合净值之上,叠加一个三状态的回撤状态机,通过“止损阈值—恢复阈值—缓冲天数”来控制组合仓位。

更具体地说:

当前系统不是对指数做择时,也不是对个股逐只止损,而是对多因子选股策略生成出来的组合净值曲线做整体风控。也就是说,研究对象是“组合层面的回撤”,不是“个股层面的买卖”。

它的核心结构是一个三状态机

NORMAL:正常状态,满仓运行,仓位为 1.0

DEFENSIVE:防御状态,当组合回撤达到止损条件后降仓

RECOVERY:修复状态,当回撤有所修复后,不立即满仓,而是先用中间仓位过渡观察。

其中仓位不是简单的两挡切换,而是分层处理:

NORMAL 固定为 1.0

RECOVERY 固定为 0.75

DEFENSIVE 则不是固定值,而是根据此前一段时间的累计涨幅动态决定防御强度:

若过去涨幅超过 100%,防御仓位降到 0.3

若过去涨幅超过 50%,防御仓位为 0.5

否则防御仓位为 0.6。

这意味着,当前方法不是单纯看“跌了多少”,而是把:

当前回撤幅度 + 之前涨了多少

结合起来判断。

如果组合此前涨幅很大,那么同样一次回撤,会被视为更值得防守的风险事件。

在执行层面,系统采用的是T+1 口径

(1)用“昨日的回撤和昨日的涨幅”判断

(2)决定“今日的仓位”

这样可以避免前视偏差。

此外,这套方法还有一个很关键的设计,就是缓冲器,也就是 confirm_days。

它的含义是:

当组合从 DEFENSIVE 转入 RECOVERY 后,不会因为短期修复就立刻回到满仓,而是必须连续满足恢复条件若干天,才恢复到 NORMAL。当前候选缓冲天数是 5、7、10 天。

这个机制的作用,是防止“假修复”和仓位来回抖动。

缓冲器机制:从防抖到确认修复

缓冲器本质上是一个“反抖动机制”:

(1)回撤刚修复时,往往容易出现短期反弹

(2)如果一见修复就立刻满仓,容易追在假修复上

(3)连续观察几天,可以过滤掉部分短期噪音

也就是说,当前择时方法并不是追求最快反应,而是更强调:

先防守,再观察,确认修复后再逐步回归满仓。

所以如果要做一个简洁概述,可以写成:

当前择时方法是一套基于组合净值回撤的三状态仓位控制系统。它以基础多因子策略的净值曲线为输入,通过止损阈值、恢复阈值和缓冲天数控制 NORMAL—DEFENSIVE—RECOVERY 三种状态切换,并结合过去涨幅动态调整防御仓位,在 T+1 规则下实现组合层面的回撤风险控制。

回撤择时参数优化的基本思路

在当前因子表达式已经确定的前提下,什么样的择时参数设置更合理,通常可以从以下几个思路来理解:

(1)如果策略本身的夏普率较高,那么回撤择时进一步获得更高夏普率的概率也往往更大。

原因在于,高夏普策略本身的收益结构通常更平滑、噪音更少,因此在回撤修复过程中,相对不容易频繁出现“死猫跳”或短期假修复现象。也就是说,基础策略质量越好,回撤择时参数优化所得到的结果,往往越有参考价值。

(2)策略波动率越大,触发回撤择时的阈值通常也应当相应放宽,并且两者应当保持一定比例关系。

这是因为,波动率更大的策略,本身就意味着净值波动区间更宽、最大回撤的中枢更高。如果仍然使用过浅的止损阈值,就容易造成过度触发,使择时系统被正常波动反复扰动。因此,回撤阈值的设置应当与策略波动水平相匹配,而不是脱离波动特征孤立设定。

比如:基础波动 = 28.55%,对应波动率锚点 25.0%,候选止损阈值随之加深。

(3)当选股范围过小、样本数量不足时,不适合把该阶段作为择时和回撤分析的重要依据。

例如 1995 年之前的 A 股市场,整体股票数量不足 100 只,如果在这样的基础上再选取前 1% 或前 5% 的股票,最终形成的组合样本会非常有限,统计意义不足,也难以支撑稳定的回撤择时研究。

因此,从研究有效性的角度看,整体回测区间内的中位数选股数量应当至少大于 30 个,整体股市的股票数量也应该至少大于100个,否则相关结论应当保持谨慎。

择时参数优化的目标函数:多目标优化

不同使用者对择时系统的目标并不完全一致,但整体来看,通常可以归纳为三个方面:

(1)降低策略的最大回撤

(2)提高策略的夏普率

(3)尽量减少对年化收益率的损失

从本质上看,择时可以理解为给策略购买一层“保险”,其核心作用不是让收益上限大幅提高,而是让策略在最差情况下的表现不要过于糟糕。

为了同时兼顾这三个目标,可以引入综合评分机制,对不同参数方案进行统一评估。

综合评分 = 回撤改善(百分点)+ 年化变化(百分点)+ 夏普变化 × 100

具体说明如下:

(1)最大回撤每改善 1 个百分点,加 1 分

(2)年化收益每提高 1 个百分点,加 1 分;每下降 1 个百分点,减 1 分

(3)夏普率每提高 0.01,加 1 分;每下降 0.01,减 1 分

(4)每次 止损 默认额外计入 1% 的滑点损失,并先折算到调整后年化收益和调整后夏普率中,再纳入综合评分

这样的评分方案,本质上是在最大回撤、年化收益和夏普率三个目标之间做平衡,因此可以较好地反映择时参数的综合优劣。

当然,如果研究者的目标明显更偏重其中某一个方面,例如更重视回撤控制,或更重视收益保留,那么也应当相应提高该指标在综合评分中的权重,使评分体系更加贴合实际使用目标。

择时阈值的倒 U 形权衡:过早与过晚止损的代价

回撤择时中的一个关键问题,是何时开始触发回撤止损,也就是止损阈值应当如何设定。

如果这个止损点设得过浅,例如在 -10% 时就开始止损并降到 50% 仓位,那么系统虽然能够更早进入防御状态,但也可能因为触发过于频繁,导致夏普率和年化收益率受到较大损伤。

相反,如果止损点设得过深,例如到 -30% 才开始止损,那么虽然能够减少不必要的交易干扰,但往往又会使最大回撤的改善幅度明显不足。

因此,从本质上看,回撤择时并不是单纯追求“越早止损越好”或“越晚止损越好”,而是在夏普改善回撤改善之间寻找一个更合理的平衡点。

正如图中所展示的那样,随着止损阈值从过浅逐步调整到适中,再到过深,综合效果通常会先改善、后下降,最终形成一个典型的倒 U 形曲线

择时参数研究中的样本选择问题

如果仅选择 1995—2006 年的 A 股市场 作为测试区间,其实仍然存在一定偏差,主要体现在以下几个方面:

(1)没有覆盖极端系统性风险阶段。

例如,样本中并未包含 2008 年金融危机 这类典型情形。在那样的阶段里,大盘指数可能在一年左右的时间内下跌 70%,而回撤择时系统在这类极端环境下的表现,恰恰是最值得重点检验的。

(2)早期 A 股市场的样本结构本身存在局限。

当时 A 股整体股票数量相对较少,市场制度也尚不完善,整体波动水平更高,市场特征与后期成熟阶段存在明显差异。因此,仅基于这一阶段进行参数优化,可能会使结论更多反映早期市场环境,而不具备足够广泛的代表性。

(3)没有将成熟市场纳入比较范围。

如果只研究 A 股样本,而没有把美股这类相对成熟市场纳入分析,就难以判断某些择时参数究竟是适用于特定市场结构,还是具有更普遍的有效性。

因此,更合理的优化方式应当是:纳入更大范围的数据集合,并结合不同国家、不同市场阶段的样本进行对比研究,从而使所得出的参数结论和策略判断具有更强的稳健性与鲁棒性。

止损阈值设定:统计显著性与长尾风险的平衡

从量化研究的角度看,回撤止损阈值的设定,本质上是在统计显著性、噪音过滤能力与尾部风险防御能力之间做平衡。

一、止损阈值过深的问题

如果回撤止损点设得过深,那么整个样本期内真正触发择时的次数就会明显减少。

这会带来一个直接问题:事件数量不足,参数优劣缺乏足够的统计检验基础。

具体来说:

(1)只有少数极端回撤事件才会触发止损

(2)参数结果更容易被个别样本期主导

(3)回测表现可能更多反映“碰巧躲过了几次大跌”,而不是参数本身具有稳定有效性

(4)由于触发点太少,也更难判断该参数在未来是否具有可重复性

(5)触发止损的可能性太低,对培养投资者果断止损的心态不好

因此,止损阈值过深,往往意味着样本内结论更依赖长尾事件,显著性不足,解释力也会下降。

二、止损阈值过浅的问题

但反过来看,止损阈值也不能设得过浅。

如果阈值太小,系统就会对大量正常波动产生反应,从而引发过度交易和过度防守。

这通常表现为:

(1)择时触发次数显著增加

(2)正常波动被误判为风险信号

(3)系统容易在震荡区间频繁切换仓位

(4)滑点、交易摩擦和错误止损会侵蚀年化收益

(5)夏普率未必改善,甚至可能下降

(6)择时太过频繁,容易让投资者丧失信心,因为本身回撤择时是为了规避尾部风险,而不是短期的下跌。

因此,止损阈值过浅,问题不在于“没有风控”,而在于“对噪音过度风控”。

三、为什么要参考策略自身波动率

更合理的做法,是让止损阈值与策略自身的波动率相匹配。

因为波动率本身在一定程度上反映了策略未来正常回撤区间的宽度,也可以理解为对长期最大回撤中枢的一种先验刻画。

可以这样理解:

(1)波动率较低的策略,本身净值更平稳,正常回撤区间更窄,因此回撤阈值可以设得相对更浅

(2)波动率较高的策略,正常波动区间更宽,因此回撤阈值也应适当放宽

(3)如果不考虑波动率差异,而对所有策略统一使用同一条止损线,就容易造成参数失真

因此,回撤择时阈值不应当是一个绝对常数,而应当是与策略波动特征相对应的相对量

更进一步地说,当回撤已经明显超出策略波动率所能解释的正常范围时,本身就意味着组合可能不再处于一般波动状态,而是已经进入长尾风险事件主导的区间。

在这种情况下,回撤不再只是“正常噪音”,而更可能代表策略正在遭遇一次非线性的风险释放。此时及时、果断地进行止损,不只是交易层面的纪律问题,更是这类回撤择时策略在更高层面上的数据基础:

用波动率刻画正常波动边界,用超出边界的异常回撤去识别潜在的尾部事件。当然,这是一种 “近似参考”

四、为什么还要考虑最大回撤的长尾特征

就像是上文所说:当回撤已经明显超出策略波动率所能解释的正常范围时,本身就意味着组合可能不再处于一般波动状态,而是已经进入长尾风险事件主导的区间。这就是我们选择择时的主要原因。

进一步来看,最大回撤并不是一个接近正态分布的平稳指标,而更接近一种长尾分布下的极端结果。

这意味着:

(1)平时观察到的大多数回撤,并不能代表真正的尾部风险

(2)样本中没有出现极端回撤,并不等于未来不会出现

(3)即使历史回撤大多温和,也不能简单据此把止损线设得过浅

(4)极端行情中的一两次大回撤,往往就足以决定策略长期资金曲线的生死和这类策略能否被投资者长期坚持,也代表了投资者能否真正存活。

因此,回撤止损参数不能只围绕“平时大概会跌多少”来设定,还必须考虑长尾风险条件下策略的生存能力(同样重要)

从这个角度看,参考波动率并不是为了机械地把止损线和波动率做一一对应,而是为了先给出一个“正常波动区间”的基准;而研究最大回撤的长尾特征,则是在提醒我们:

真正需要择时系统发挥作用的,恰恰不是那些普通波动,而是那些超出正常波动解释范围的少数极端时刻。

也正因为如此,回撤择时策略的核心价值,并不在于频繁调整仓位,而在于当组合回撤已经脱离正常波动区间、呈现出长尾事件特征时,能够及时识别并果断防守,从而避免少数极端冲击对长期复利造成不可逆伤害。

从宏观风险视角出发,类似 2008 年金融危机或 1929 年大萧条这类极端系统性事件,应当被纳入策略风控边界之内,而不能将历史上的牛市阶段或平稳波动阶段误当作市场的常态分布。这里提到 2008 与 1929,并非意味着本文样本已覆盖这些阶段,而是为了说明:回撤择时系统的设计边界,必须面向极端系统性风险,而不能只围绕温和样本进行优化。

CPPI、TIPP 与本文回撤择时:有什么不同

这三种方法,本质上都是在回答同一个问题:策略遇到大跌时,应该怎样保护净值。

它们的共同点是,都不是单纯去预测市场顶部,而是希望在下跌阶段主动降低风险暴露,让策略在极端情况下不要跌得太惨。差别主要在于:它们是用连续调仓公式,还是用离散状态切换来实现风控。

第一,CPPI 更像一种“按安全垫连续调仓”的方法。

它会先设定一个安全底线,然后根据组合距离这条底线还有多少“安全垫”,决定风险资产该配多少。它的优点是逻辑清晰、保护底线的思路直接;缺点是对市场波动比较敏感,在震荡环境里容易频繁调仓,实际执行中的摩擦成本也可能更高。

第二,TIPP 可以理解为 CPPI 的升级版。

它和 CPPI 的核心思想相近,但多了一层“盈利保护”机制:当净值不断创新高时,保护线也会随之抬升。这样做的好处是,能把已经赚到的一部分收益尽量锁住;缺点是同样容易在波动市场中频繁调整仓位,对震荡环境不算特别友好。

第三,本文的回撤择时更像一个“三状态的仓位控制系统”。

它不是像 CPPI、TIPP 那样连续地按公式微调仓位,而是在组合回撤达到某个阈值后,才从正常状态切换到防御状态;当回撤修复后,也不会立刻回到满仓,而是先进入恢复观察阶段,确认几天之后再逐步恢复。它的优点是更直观、更容易解释,也更适合做组合层面的风险控制研究;缺点是没有 CPPI、TIPP 那种连续调仓模型那么细致,属于一种更规则化的风控方法。

从核心思想上看,本文的回撤择时其实与 TIPP 是比较接近的。

两者都不是为了追求收益最大化,而是更强调在净值已经积累一定成果之后,通过动态防守去控制回撤、保护已有收益。区别在于,TIPP 更偏向连续型的公式调仓,而本文方法则把这种思路离散化、状态机化了,因此在执行上更简单,也更容易和实际的策略研究框架结合。

相比之下,本文的回撤择时还有一个更突出的优势,就是通常更有利于保护收益率和夏普率。

因为它不是在每一次小波动中都连续调整仓位,而是只有当组合回撤真正达到一定阈值时才进入防御;修复之后也不是立刻满仓,而是通过缓冲期过滤掉一部分假修复和短期噪音。这样做的结果通常是:在尽量控制最大回撤的同时,也更有机会减少对年化收益率和夏普率的破坏。从这个角度看,它可以理解为一种更强调收益保护和夏普保护的、离散化的 TIPP 思路

简单来说:CPPI 和 TIPP 更像“连续型公式调仓”,而本文方法更像“离散型状态机风控”。

前两者的优势在于理论结构更完整、仓位调整更细,更偏向于净值保护;本文方法的优势则在于更易理解、更抗短期抖动,并且在很多场景下,更有利于兼顾最大回撤控制、收益率保护和夏普率改善。这是一种 “适配性优势”,而不是 “绝对性能优势”。

适用场景与不适用场景

更适合的策略

(1)本身已有正向 alpha 的多因子选股策略

(2)夏普率较高、净值曲线较平滑的策略

(3)波动较大、尾部风险较明显,但又不希望直接牺牲太多收益的策略

(4)组合层面管理优先于个股交易细节的策略

不太适合的策略

(1)本身没有稳定 alpha、Sharpe 很低的策略

(2)高频、超短周期、强依赖快速调仓的策略

(3)样本太薄、持股数太少的策略

(4)本身已经有强止损或强风控模块的策略