技术分析,以及一些经典的技术指标,被投资者们广泛应用于对市场择时的研究之中。然而大量实证测试表明,完全机械地将这些经典技术指标“算法化”,构造出来的择时策略在A股市场上并没有很好的择时效果。本篇报告将从金融工程的角度,通过一个完整的技术择时指标构造流程为例,一一讨论研究者可能会在量化择时领域会遇到的疑难点,并最终提供一个金融工程视角下技术择时指标研究开发的范式。
◆ 摘要 ◆
金融工程视角下技术指标开发范式:扬长避短。
寻找适合量化实现的择时逻辑:绝大部分传统技术指标仅在特定的市场场景有效,主动投资者基于经验先判断场景,再选择是否利用指标。而量化模型较难对市场切换迅速反应,因此在思考择时逻辑时,寻找那些不依托于市场行情假设的择时逻辑,会更加适合后续量化应用。
指标的初步实现与拆解改进:站在模型构造的角度,将指标拆的越细越简单,逻辑的核心就越清晰。对于初步构建好的指标,从指标公式中不同元素的逻辑发挥与结构功能等多个角度,对原指标进行拆解、剖析与改进。往往能加深对指标细节的理解,同时进一步提升指标效果。
评估指标真实择时能力与适合标的:技术择时模型含有多个参数,而参数大多基于对历史数据回测优化而得,模型会有一定程度过拟合,展现的数据往往高估指标的实际择时能力。通过构建动态参数模型,验证技术指标真实择时能力与底层逻辑的普适性,从而评估指标在未来运用中的外推能力,以及更加适合在哪些标的上进行择时运用。
动态参数模型:绕开净值计算确认动态参数,减少路径依赖。
绕开净值计算的核心是找到一个能够直接描述指标择时预测能力的变量。我们定义区间未来收益率函数,构造指标值对应未来期望收益序列,计算出未来期望收益与指标值区间的相关系数。用相关系数表征指标择时能力,并通过优化该相关系数的方式来选取指标参数,可以一定程度上减少路径依赖带来的参数过拟合影响。
通过滚动调参的方式,动态设置不同时期模型的计算参数。在此基础上得到的择时净值更真实地反应了不依赖固定参数下,择时指标真实的择时能力。在多个不同指数标的下分别运用动态参数模型,得以更直观地验证指标底层择时逻辑的有效性与普适性。
QRS技术择时指标模型:择时效果优异。
沿循本文上述指标开发范式,基于阻力支撑相对强弱的择时逻辑,我们构建并优化了QRS技术指标。2007/8-2020/12期间,QRS技术择时模型在沪深300指数上的择时净值年化收益率为16.1%,夏普比率0.96,最大回撤46.2%,开仓胜率61.1%,平均盈亏比3.2。同期沪深300指数年化收益0.7%,夏普比率0.16,最大回撤72.3%。
运用动态参数模型,验证了QRS在上证50、沪深300、中证500等多个主流宽基指数上具有明显的择时效果。QRS择时逻辑具有显著的择时有效性与普适性。
◆ 正文 ◆
技术分析,作为不少市场投资者用以判断市场或个股涨跌的方法论,其最直白的运用方式即是利用量价数据构建技术指标,并基于此进行择时交易获利。均线、MACD、RSI、KDJ等都是大家耳熟能详的经典指标。然而大量的实证测试表明,完全机械地按照这些经典的技术指标构造的择时策略在A股市场上并没有带来显著收益。
我们分析造成上述现象的主要原因有以下两点:
1. 很多指标在逻辑上有预设的假设,例如MACD,均线等趋势策略,都需要市场处于趋势主导的行情;而一些反转技术指标则只能在震荡行情下有效。然而市场未来是趋势市还是震荡市,这些指标本身实际上无法提供任何信息。因此想要有效运用这些技术指标,需要投资者自己对市场格局具有较强的敏感性与经验,并基于主观判断选择是否利用这些指标的信号。若没有建立有效的场景判断机制,就直接运用量化方法把信号单纯程序化,效果往往会令人大失所望。
2. 支撑技术分析的有效性的重要假设:价格包含一切信息、以及历史会不断重复。在这一假设下,技术指标的构建目的是要将量价信息转化成需要表达逻辑的代理指标,然而很多经典的技术指标对于逻辑的刻画过于依赖参数的选取;而即使市场中有些底层逻辑的确会令“历史重复”,但市场投资者结构的变化与市场技术的不断提升等因素,也会使得体现在量价上的一些模式特征或周期产生变化。也就是说历史上合适的参数,未来未必会继续有效。
图表:技术择时效果较弱
资料来源:中金公司研究部
本篇报告,我们将通过一个完整的技术择时指标构造流程为例,一一讨论以下研究者可能会在量化择时领域会遇到的疑难点,并最终提供一个金融工程视角下技术择时指标研究开发的范式:
►如何寻找适合量化刻画的择时逻辑。
►代理指标构造与择时能力效果的评判。
►对已有代理指标的改进有哪些切入点。
► 如何判断指标择时效果的可持续性及适合的场景标的。
择时逻辑的构思与描述
构思适合量化刻画的择时逻辑
前文中,我们阐述了大量经典技术指标,其有效性依托于当前及未来的市场行情格局。因此当我们站在金融工程的角度,构思新的择时技术指标时。首先需要面对的问题是:如何处理市场行情风格变化对技术指标的影响。解决思路有两种:
► 一种方案是正面面对,构思一个逻辑,能在一定程度上预测未来市场是趋势行情还是震荡行情 。
► 另一种方案是绕开它,构造指标时,其背后择时逻辑并不依托于当前市场行情假设。
相比于正面预测未来市场风格,第二种方案的难度显然更低一些。因此我们这次构建的技术择时指标,也是从寻找一个在趋势市场与震荡市场都行得通的择时逻辑开始。
阻力支撑相对强度
阻力位与支撑位是经典的技术分析概念,他们在传统技术分析的运用思路非常灵活,基于不同场景即能用在趋势市中构造突破策略,即如果价格向上突破阻力位追涨做多,向下突破支撑位杀跌做空;也可用在震荡行情中构建反转策略,如果价格向上接近阻力位做空回调,向下接近支撑位做多反弹。
如果想把这样的逻辑转化为量化策略,需要实现两件事:其一,判断后市是趋势市与震荡市;其二,判断当下支撑位与阻力位的点位。这两点就目前而言,主动经验可能比量化刻画更加有优势。因此我们不妨换个角度构思择时逻辑。
阻力位与支撑位实质上反应了交易者对目前市场状态顶底的一种预期判断。从这个角度上说,无论是不是技术分析的投资者,实际上都会对市场有一个心里隐含的“阻力点位”与“支撑点位”。对任何一个投资者而言,当市场跌到某个点位时会令他/她想买入进场,这个点位就是他心里的隐含支撑位;反过来说当市场涨到一定程度,他忍不住想卖出持仓了解手中盈利时,这个点位就是他心里的隐含阻力位。不同投资者对市场状态的判断未必一样,每个投资者会有一个他自己心中认可的阻力位与支撑位。既然如此,我们完全可以把阻力位与支撑位这两个概念当成变量来看待。
是变量,自然就能衍生出它的两个主要概念——期望与方差。从期望的角度理解,它刻画了市场整体的阻力位与支撑位;而方差一定程度上反应的就是该阻力位与支撑位的强度大小。如果市场上投资者对于支撑或阻力的意见分歧很大,或极易变动,那么它作为变量的方差就会显得很大,表明当前市场支撑或阻力的强度小;反之,如果众多交易者对预期较为一致、或变动不大,那么它作为变量的方差就会较小,表明支撑位或阻力位强度高,有效性强。
而当我们能将阻力与支撑的强度进行比较,那么一个很容易想到的择时逻辑就是:如果当前市场支撑位强度大于阻力位的强度,那么市场未来更倾向于向牛市发展;反之若当前市场支撑位强度小于阻力位的强度,那么市场未来更倾向于向熊市发展。这个逻辑并不需要判断当下市场是上涨、震荡还是下跌,无论哪种行情下,它都能对应着一致的择时判断。这样的择时逻辑正是量化策略希望刻画的情景。
图表:不同市场状态下阻力支撑相对强弱的含义
资料来源:中金公司研究部
择时逻辑实现:代理指标构造
代理指标的原始构造
在确认了择时逻辑后,接下来要做的则是从量价数据中抽取信息构造有刻画能力的代理指标。
构造指标的第一步,重心放在对原始逻辑的实现。在量价数据中,最能表征支撑与阻力概念的是最高价与最低价。从最高价与最低价的形成机制出发,只要它们没有触碰到涨停或跌停价格,那它就是当日全体市场参与者通过交易行为投票出来的阻力与支撑。
由于我们并非用支撑位与阻力位作突破或反转交易的阈值,而是更关注市场参与者们对于阻力位与支撑位的定位一致性。因此一个简单想法是利用类似 Δhigh/Δlow 的值来描述支撑位与阻力位的相对强度,即最低价每变动1的时候,最高价变动的幅度。实际上,Δhigh/Δlow是连接高低价格平面上的两点 (low[0], high[0]) 与 (low[1], high[1]) 的斜率。由于市场量价本身噪音的存在,仅计算两点得到的斜率数据包含了太多的噪音。我们考虑通过最近N个 (low, high) 的数据点来得到信噪相对较高的最高最低价相对变化程度。
使用线性回归,建立如下般最高价与最低价之间的线性模型:
式中拟合出的β值即是用以刻画支撑与阻力强度对比的代理指标,表明最近一段时期,最低价每波动1个点位,最高价相应会波动β个点位。因此,β越大,表明支撑强度相比阻力强度越显著,市场越容易上行,牛市中大概率对应后市加速上涨的走势,熊市中则对应后市止跌企稳的走势;同理,β越小,表明阻力相对支撑的强度更甚,在牛市中可能预示着即将见顶,在熊市中则对应后市大概率加速深跌。
图表:牛市中 β 较 大 往往对应加速上涨(示例)
资料来源:万得资讯,中金公司研究部
图表:熊市中 β 较大往往对应止跌企稳(示例)
资料来源:万得资讯,中金公司研究部
图表:牛市中β较小往往对应见顶(示例)
资料来源:万得资讯,中金公司研究部
图表:熊市中β较小往往对应加速深跌(示例)
资料来源:万得资讯,中金公司研究部
检查历史上不同β值下指数后续的预期收益率。以N=20计算的β为例,我们以0.01为间隔将历史β值划分成不同子样本,计算每个子样本内β值对应的沪深300指数10日后收益率的均值,作为该β取值范围对应的未来指数预期收益率。
β取值与沪深300指数10天后预期收益率的相关系数为0.25。如果考虑到有些β的取值区间内样本数太少,我们可以只统计样本数量至少为5个的取值区间。在限定了样本数量后,β取值与沪深300指数10天后预期收益率的相关系数高达0.63。可见以β刻画的阻力支撑相对强度对后市收益率有一定的预示能力。
图表:以N=20 计算的β值分布
资料来源:万得资讯,中金公司研究部
图表:以N=20 计算的β不同取值对应的未来10日收益
资料来源:万得资讯,中金公司研究部
在确认了构建的技术指标有一定预测涨跌的能力之后,为了能利用它来构建量化择时策略,我们接下来还需要明确定义,指标值多大才算大,多小才算小。因此,需要对指标值进行标准化处理。标准化处理的方式一般有两种,正态标准化或分位数。从效果上来说,这两种方式都能达到标准化目的,效果大同小异。
本例中将采取正态标准化计算β的z_score值,标准化后能得到更加直观的指标值大小。同时需要意识到,在用线性回归模型计算β时,无论最高价与最低价序列是否有较好的线性关系,都能得到一个β值。但当最高价与最低价并无明显线性关系的时候,线性回归模型的有效性假设得不到满足,此时计算出的β值实际上是一个并无法有效表征择时逻辑的噪音值,如果这样的噪音被当作择时信号,那么技术指标的有效性就会大打折扣。因此我们希望在指标中加入一个惩罚机制,使得大部分的噪音指标能被过滤掉。在本次个例中,β值的有效性与线性回归拟合效果有明显正相关,因此可以用回归模型的决定系数 R平方 刻画技术指标的有效性。
因此最终的择时指标的构建表达式为:zscore(β) * R平方。其中zscore(β)为信号项,而R平方为惩罚项。
至此,我们初步完成了对择时逻辑的量化实现。同时基于该指标的择时模型构建也相应较为直观。
►阻力支撑相对强度择时技术指标QRS构建流程总结如下:
取最近N日最高价与同期最低价序列进行线性回归,记录回归模型的β值与R平方;
取最近M日所有的 β值作为样本,计算当日 β值的正态标准分zscore值;
Zscore值与R平方相乘即为最终指标值。
►利用QRS指标构建择时策略,测试其择时能力。择时模型策略为:
计算QRS指标值;
若指标值向上穿过开仓阈值S,则买入持有;
若指标值向下穿过平仓阈值-S,则卖出平仓;
其余时候维持仓位不变。
完整的QRS择时模型一共有三个参数。我们以2005/1/1到2016/12/31期间作为样本内,通过回测比较不同参数下模型净值表现来选取沪深300指数上QRS择时模型的参数。基于净值收益率与回撤的角度,我们选取(N=18, M=600, S=0.7)作为模型参数。
在该参数下,QRS择时模型在样本内年化收益14.0%,最大回撤49.5%,开仓胜率54.3%,平均盈亏比2.95;同期沪深300指数年化收益-3%,最大回撤达72.3%。样本外模型的择时效果依旧显著,年化收益11.1%,最大回撤仅13.7%,开仓胜率53.3%,平均盈亏比8.56;同期沪深300指数年化收益10%,最大回撤32.5%。
图表:沪深 300 指数 QRS 择时模型样本内外净值表现
资料来源:万得资讯,中金公司研究部注:样本内净值区间为 2007/8 2016 12 ;样本外净值区间为 2017/1 2020/12
图表:沪深300 指数 QRS 择时模型样本内外统计数据
资料来源:万得资讯,中金公司研究部;注:样本内净值区间为2007/8-2016-12;样本外净值区间为2017/1-2020/12
对原始指标构造的拆解与剖析
在上一小节基本完成对原始逻辑的实现与指标的测试,第二步我们将继续对原始指标进行拆解与改进。从模型的角度来说,将指标拆的越细越简单,逻辑的核心就越清晰,模型效果可能就越稳定。
观察QRS指标的构建中信号项(signal)部分:zscore(β),惩罚项(Regulation)部分R平方。实际上在普通线性回归里, β 有简单的解析解:β = std(y) / std(x) * corr(y,x);而R平方则为:corr(y,x)的平方。由此我们可以发现,整个指标实际上可以仅由三个简单数据决定:最高价序列的波动率、最低价序列的波动率、最高级与最低价的相关系数。而原始指标值可以转写为:
其中y是最高价序列,x是最低价序列。当我们将指标拆解到这一步时,一些指标改进的方向展现在眼前。
►首先,从结构简单的惩罚项这个角度,剖析构造的改进可能性。
惩罚力度如何控制比较好呢?虽然理论上一个相关系数的取值是可正可负的,但在现实中当 ????(ℎ??ℎ, ???) 的计算窗口在10天以上时,几乎不会出现负值,那么我们在以????(ℎ??ℎ, ???)为基础构建惩罚项时,一定要取2次方么,如果1次方会如何,3次方会如何,甚至0次方会是什么结果?我们分别测试以 ????(ℎ??ℎ, ???) 为基但幂数不同的构造下,指标择时的效果。
从结果可以看出当QRS指标构造中的惩罚项为R0次方或R1次方时,模型年化收益为13%,交易笔数在50次以上,胜率在57%-60%左右;而当惩罚项力度放大,为R2次方或R3次方时,模型年化收益为11%,交易笔数少于50次,胜率则在52%-58%左右。
图表:沪深300 指数 QRS 择时模型样本内外统计数据
资料来源:万得资讯,中金公司研究部;注:全样本区间为2007/8-2020/12
图表:QRS 指标在不同惩罚系数下沪深300 择时模型净值对比
资料来源:万得资讯,中金公司研究部;注:全样本净值区间为2007/8-2020/12,择时标的为沪深300 指数
这里与逻辑相违背的一点是,为什么指标在没有惩罚项(R0 次方)的时候,择时结果比有惩罚项时还要好?我们发现造成这一现象的原因很可能源于我们没有对惩罚项的量级进行调整。由于????(ℎ??ℎ, ???) 本身是一个小于1 的数字,因此幂数越大,最终的惩罚项的量级就越小,在维持开平仓阈值不变的情况下,量级变小的惩罚项实际上除了更大地过滤噪音,实际上也过度过滤了有效信息。交易笔数统计数据也验证了这一点,随着????(ℎ??ℎ, ???) 的次方数不断上升,全样本内的交易笔数从56 大幅减少至43 次。因此如果希望能有效对比不同幂数下惩罚项对指标择时能力的影响,对惩罚项进行量级归一是很有必要的。我们对指标构建的方式作如下改变:
指标值 = 信号项 *(惩罚项 / 惩罚项滚动时序样本内均值)
图表:若不对惩罚性进行量级调整,不同惩罚力度下指标值整体量级有明显差异
资料来源:万得资讯,中金公司研究部;注:全样本区间为2007/8-2020/12
在调整了指标构建结构后,可以看出不同惩罚力度下指标取值量级基本保持一致。此时重新测试比较不同惩罚项下的指标择时净值,结果也与逻辑较为相符。净值年化收益基本都在13%左右,开仓胜率在维持在60%附近,交易次数均不低于50次。整体上惩罚力度从R0次方逐步到R2次方的过程中,择时模型效果随惩罚力度增大而增强,之后继续加大惩罚力度模型效果反而有所削弱。因此我们维持R2次方的惩罚力度,同时也看出在对惩罚项进行量级归一调整后,模型择时能力整体有进一步提升。
图表:惩罚项量级归一后QRS 指标在不同惩罚系数下沪深300 择时模型统计数据
资料来源:万得资讯,中金公司研究部;注:全样本区间为2007/8-2020/12
图表:对惩罚系数量级进行调整后,择时效果进一步提升
资料来源:万得资讯,中金公司研究部;注:全样本净值区间为2007/8-2020/12,择时标的为沪深300 指数
► 其次,从信号项角度来看,其构造因素也有探讨改进的可能。
在信号项中 ???(ℎ??ℎ) 与 ???(???) 明显是符合择时逻辑的关键部分,???(ℎ??ℎ) 可以理解为阻力变量的波动,波动越大,说明投资者对阻力的分歧越大,阻力的强度越低;同理 ???(???) 则是支撑变量的波动,波动越大,说明支撑的强度越低。那么,在惩罚项起关键作用的 ????(ℎ??ℎ, ???) 在信息项中是否在信息项中也是必要成分?还是说可以将其删去以精简指标公式?我们不妨测试下把其删去对择时能力带来的影响。
在全样本净值测试中,精简指标择时模型整体的净值走势与原始模型有些相似,也有较显著的择时能力。在下表统计数据中,可以看出虽然在开仓胜率及最大回撤上稍有些改善,但整体择时效果相比原始指标择时策略还是有明显下滑。年化收益从原始指标16.1%降到12.6%;夏普比率从0.96 降至0.78;平均盈亏比从3.2 降至1.9。
图表:精简后的指标在择时模型上的效果弱于原指标
资料来源:万得资讯,中金公司研究部;注:全样本区间为2007/8-2020/12
图表:精简后的指标在择时模型上的效果弱于原指标
资料来源:万得资讯,中金公司研究部;注:全样本净值区间为2007/8-2020/12,择时标的为沪深300 指数
除了择时模型净值,指标与未来指数10 日收益的相关性测试结果也显示,在信息项中删去 ????(ℎ??ℎ, ???) 项后,指标的择时能力有所下滑。原指标与指数未来10 日收益相关系数为0.66,而精简指标与指数未来10 日收益的相关系数则为0.61。
为了确定该现象是否仅是该参数下的特殊情况,我们测算不同参数N 与M 参数下,精简指标与原指标,跟指数未来10 日收益率的相关系数之差。其中:
参数N 取值:[15, 25],间隔为1;
参数M 取值:[60, 720],间隔为60。
结果显示在整体上,原指标普遍比精简指标的择时预测能力更强,各参数样本下,原指标与指数未来收益的相关系数平均比精简指标高出0.06。同时,如果我们观察两种指标在预测能力相关系数的差值在参数上的分布情况,可以发现预测能力相关系数差值与参数N基本呈现倒U型的分布特征。当N取值处于17-22 之间时,原指标相比精简指标在预测能力上的优势更显著且更稳定;但在该取值范围之外,精简指标与原指标的预测能力差距不太明显,且波动显著增大。
图表:精简后的指标在择时模型上的效果弱于原指标
资料来源:万得资讯,中金公司研究部
出现这样倒U 型分布的原因,我们认为有以下两点原因:
当N 取值过小时,计算最高价序列与最低价序列的相关性所用的数据点太少,使得得到的值过于不稳定。这种不稳定性随着择时指标的计算流程传导到最终指标,从而影响到指标择时能力的稳定性;
而当N取值过大时,不同时点计算出的最高价序列与最低价序列的相关性差别很小。此时相关系数对于信号值的影响在时间序列上微乎其微,原始指标值与精简指标之间的信息愈发接近。最终难以显示出显著稳定的预测优势。
基于上述分析,在择时指标信息项的构建上我们继续保留 ????(ℎ??ℎ, ???) 不变。
图表:不同参数N 计算下的最高价最低价相关系数的标准差
资料来源:万得资讯,中金公司研究部;注:数据样本为2005/1-2020/12 期间沪深300 指数日度数据
综上所述,在分别针对信号项与惩罚项进行改进后,最后改进的QRS指标构造方式如下:
►改进后阻力支撑相对强度择时技术指标QRS构建流程:
用最近N日最高价与同期最低价序列进行线性回归,记录回归模型的 β 值与R平方;
以最近M日所有的 β 值作为样本,计算当日 β 值的正态标准分zscore值;
以最近M日所有的R平方值作为样本,计算R平方的样本均值;
Zscore值与R平方相乘,再除以R平方的样本均值,即为最终指标值。
改进后的QRS指标择时模型净值,对比改进前有明显提升。2007/8-2020/12全样本内,QRS技术择时模型年化收益率从之前13.2%上升至16.1%,夏普比率从0.81上升至0.96,最大回撤由之前49.5%稍降至46.2%,开仓胜率由53.1%升至61.1%。无论样本内外,改进后的择时指标在净值表现中均更为突出。
图表:改进前后QRS 指标择时模型统计数据对比
资料来源:万得资讯,中金公司研究部;注:全样本区间为2007/8-2020/12
图表:改进前后QRS 指标择时模型净值对比
资料来源:万得资讯,中金公司研究部;注:全样本净值区间为2007/8-2020/12
为了表述方便,若非特别指明,后文里的QRS 指标均指改进后版本。
估计择时指标在外推时的有效性
量化择时指标极易受过拟合以及市场变化的影响
在前文中我们也提过技术指标的有效性可能面对的一大挑战是:即使底层逻辑会“历史重复”,量价特征或量价模式也可能会失效。某种意义上来说,相信并运用基于一定参数计算而得的技术指标,实际上是相信并运用改参数下的“量价特征动量”或“技术模式动量”。这种动量会因为市场投资者的结构与认知变化而改变,也会因为市场技提升等其它原因而被破坏。那么我们基于历史数据拟合的参数,有可能就会是过拟合的产物,令我们错误判断模型的有效性,并在实际交易中带来意料之外的损失。
因此我们希望能用一种方式来检验技术指标在不同指数上,它的择时模型是否是参数过拟合的无效策略。以及是否能一定程度上减少策略对固定参数所表征的“技术模式动量”的依赖。
构建动态参数模型 直观估计指标外推有效性
检验或处理参数过拟合的方法在最近几年有不少发展方向。主流方法包括有:
►模拟路径:通过对底层标的指数收益率分布的统计刻画,生成大量该指数的模拟走势,通过在大量模拟走势上回测统计,来得到过拟合概率低的合适参数。
►样本拆分:通过对原始样本数据的拆分与重新拼凑,从而获得多个回测样本,用以估计过拟合的程度。例如传统统计模型中的交叉验证、Prado提出的组合分割交叉验证(CPCV)等。
第一种方法的难点在于刻画指数真实的收益率分布很难。实际指数收益率既不保证平稳性也不保证独立性,刻画难度很大。而模拟走势的有效性完全依赖于刻画出的收益率是否能真实反应出指数的底层特征。专门构建一个指数收益率模拟的算法并验证其合理性已然超过本文所要探讨的范围,因此这里我们会尝试构建一个更为简单直观的方法——动态参数模型,用以观察如果不依赖固定参数,该技术指标的择时效果如何,是否适合在该指数上运用。
动态参数模型的底层思想有些类似于交叉验证及其衍生方法,核心思路是每一段时期的择时指标参数由最优化前一段历史数据上的择时表现来决定。这个思路在很多模型研究中均有利用。例如多因子模型中通过滚动历史一段时期的ICIR最优化的方式来给当期因子权重配权;在以往的择时模型研究中,则是往往通过滚动历史一段时期中择时净值最高的参数作为后一期择时模型指标的计算参数。也有一些研究在这个基础上尝试将“净值最高”这个目标替换成“夏普比率”、“收益回撤比”等同时兼顾收益与风险的统计量,来使得优化出的动态参数有更全面的考量。
实际上,我们观察上述参数优化的流程:大量参数取值 –> 按不同参数计算择时指标 –> 基于指标计算相应净值 –> 通过净值测算目标统计量 –> 选择最优目标统计量对应的参数。容易发现,在这样的参数优化过程中有大量净值的计算。而净值计算本身就极易带来路径依赖的问题。这就使得即使是通过滚动来动态设置的参数,在未来一段时间内仍然可能因路径依赖而令模型效果极不稳定,从而一定程度上背离了使用动态参数的初衷。
因此,我们在本文将构造一种能够绕开净值计算的动态参数模型。
图表:直接通过指标预测能力挑选参数,能减少在净值计算上造成的路径依赖
资料来源:中金公司研究部
绕开净值计算的核心是找到一个能够直接描述指标择时预测能力的变量。我们可以通过构造 指标值对应未来期望收益序列 来达到这一目的。首先,我们定义一个名为 区间未来收益率 的函数,其输入为一个实数与正实数,输出为实数:
?(?,?): [ℝ,ℝ+] → ℝ
其中,s 表示指标取值, r 表示距离长度。s 与 r 共同决定了一个取值区间 [s-r, s+r],而函数值 ?(?,?) 的含义为:样本中所有取值在 [s-r, s+r] 区间内的指标值对应的未来10日收益率的均值。
如果我们将择时指标的取值范围按照固定长度切分成完全覆盖又互不重叠的各个小区间,那么我们就能得到一个给定样本里所有指标值数据构成的 指标值对应未来期望收益序列 。例如,如果样本里的指标值都是取值在 3.05 到 3.05 之间,按 0.1 为间隔分成一个个小区间,那么就可以计算形成如下序列:
?(−3.0,0.05),?(−2.9,0.05),⋯,?(0,0.05),⋯,?(2.9,0.05),?(3.0,0.05)
计算该函数序列与各个区间的中点值s 形成的序列之间的相关性,得到的相关系数即可表征该指标在这个样本中对未来 10 日走势的预测能力。为了后文方便引用,我们不妨将该相关系数称为 择时能力系数。
在拥有择时能力系数作为参数的优化目标后,动态参数模型的构建就摆脱了对净值计算的依赖。我们沿着技术择时模型整体流程的两个步骤:1.计算指标;2.将指标与开平仓阈值比较。依次优化相应的参数组:
►优化参与指标构建的参数。遍历指标计算涉及的参数取值范围,找到在滚动窗口期内,预测能力最强的指标对应的参数。其流程如下:
对每一组参数下(在本例中,有两个参数,分别是运用回归计算β的样本长度,与对β作标准化的窗口长度)计算出的择时指标,计算其指标取值与其对应标的10天后预期收益率的择时能力系数。
为了增加选取的参数的稳定性,对每一组参数,我们计算其邻域内所有参数对应择时能力系数的均值,作为择时指标在该组参数下的预测能力。
选取最大预测能力所对应的参数组作为计算择时指标的参数。以该组参数计算的择时指标记为“滚动最优指标”。
►优化决定持仓观点的参数。针对“滚动最优指标”,选择在滚动窗口期内,最合适的开平仓阈值,该部分的实现比确定“滚动最优指标”稍显复杂,其实现思路如下:
为了减少模型复杂度与过拟合概率,开平仓阈值仅需一个参数对称设置(例如开仓看多阈值是1倍标准差,那平仓或反向空仓的阈值就是-1倍标准差)。
考虑“滚动最优指标” 的指标值对应未来期望收益序列。若指标有效,我们预期能见到如下现象:当指标值大于0时,其未来10日预期收益也大于0,且有着随指标值变大而一同变高的趋势。同时,当指标值小于时,其未来10日预期收益也小于0,且有着随指标值变小而一同变低的趋势。
为了能同时综合考虑到指标在正数时的正向预测能力与指标为负时的负向预测能力。我们针对区间未来收益率函数f进行一些变形,构造其“对折”函数h:对于任意s>0与r>0,我们有
将滚动样本里的指标值按0.1为间隔分成一个个相互独立的小区间,并依次计算每个指标节点对应的“对折”函数h的值,形成“对折”取值序列。我们找到最小的节点x,使得对于所有大于x的节点s,其“对折”函数h(s)的值都大于0。我们取这样的节点x作为滚动样本期间开平仓阈值的最优参数。进一步,为了避免择时信号过于频繁的变动,我们规定开平仓阈值最小不能低于正负0.5倍标准差,因此最终开平仓阈值的最优参数为:max(x, 0.5)。
图表:从“对折”函数中挑选最优交易阈值参数 示例
资料来源:中金公司研究部
通过动态模型确认择时指标的真实择时能力与适合的标的场景
运用上述动态参数模型,回撤QRS择时模型在沪深300上的净值效果,从而估计QRS指标择时的过拟合程度与外推能力。动态参数择时模型的流程分两步:
1. 在每个年末,用滚动过去固定长度的一段历史时期作为样本,运用动态参数模型选取最优参数组;
2. 在接下来的一年里,用上年末确定的最优参数组作为参数,计算相应QRS指标并相应确定择时信号。
图表:动态参数模型测试设置
资料来源:中金公司研究部
通过比较不同滚动窗口下动态参数模型的净值统计,可以得出以下结论:
► QRS择时模型对沪深300的确拥有较好的择时能力。无论用来设置动态参数的滚动窗口是长是短,最终净值的收益率、夏普比率、最大回撤相比同期沪深300指数,都有明显优势。
► QRS择时模型未来择时表现(外推性)可能弱于当前回测展现出的效果。从动态参数模型的结果可以看出,所有滚动窗口下,动态模型净值的表现均弱于当前固定参数下的QRS择时模型。随着滚动窗口宽度不断增大,确定动态参数的样本更为稳定,参考意义更大一些。在滚动4年窗口及滚动5年窗口的动态模型中,模型净值的年化收益与夏普比率逐渐稳定在15%与1.0左右。我们认为该数据更为接近QRS指标在沪深300上的真实择时能力。
图表:QRS 择时模型在动态参数下的择时效果统计
资料来源:万得资讯,中金公司研究部;注:全样本净值区间为2012/1-2020/12
在确认QRS指标在沪深300指数上的择时能力后,我们将目光投向下一个业界择时研究领域的关注点。普遍上,我们说一个技术指标如果能有效实现一个底层普适择时逻辑,那么把它应用在各个不同的资产或标的上,都应该呈现出或多或少的有效性。
不同标的或指数的特征存在一定差异,例如投资者结构、成分股投资逻辑特征不同等。因此择时指标可能在有些特征匹配的指数上择时效果更强,而在另一些指数上的效果稍弱一些。
在多个不同指数上采用动态模型测试择时指标,有助于我们验证指标的择时逻辑普适性,同时对该指标在那些标的场景下更为适用,也给出了一定指导。我们分别在主流宽基指数:上证50、沪深300、中证500、上证综指,分别采用动态模型进行测试。这里没有放入创业板指及科创板指数,原因在于动态模型对于测试样本的长度有一定要求,创业板指自2010年,科创板指数自2019年才有编织,故数据量上难以满足运用动态模型进行稳定测试。
多指数动态模型测试结果显示,QRS指标各个主流宽基指数上均有明显的择时效果,验证了择时底层逻辑的普适通用性。测试统计数据主要体现出以下特征:
► 滚动窗宽较长的动态模型(4年、5年)效果普遍好于滚动窗宽较长的动态模型(2年、3年)。从稳定性角度来说窗宽较长的动态模型数据对QRS指标在各个指数上的真实择时能力有更真实的反映。
►QRS指标的有效性在不同指数间存在差异。整体上沪深300上择时能力最强,上证50与上证综指上择时能力也不错,超额收益与回撤控制上都有显著效果;相比之下中证500上择时能力相对稍弱。
图表:QRS 指标在各指数上均展现择时能力
资料来源:万得资讯,中金公司研究部 注:全样本净值区间为 2012/1 2020/12
总结
本篇报告从金融工程与量化的角度,探讨技术择时指标的开发范式。
►寻找适合量化实现的择时逻辑
绝大部分传统技术指标仅在特定的市场场景有效,主动投资者基于经验先判断场景,再选择是否利用指标。量化模型较难对市场切换迅速反应。不依托于市场行情假设的择时逻辑,更加适合量化实现。
►构造代理指标,实现择时逻辑
通过寻找合适的代理指标与算法模型,形成对择时逻辑的初步实现。测试初步指标对市场未来收益的预测能力,并以此构造相应择时模型。以择时净值与统计数据判断模型的择时效果。
► 指标构造的拆解、剖析与改进
站在模型构造的角度,将指标拆的越细越简单,逻辑的核心就越清晰。将指标拆解后,从逻辑与结构多个角度剖析,尝试对原指标进一步改进。
► 估计指标效果外推性 & 适用场景与标的
构造动态参数模型,估计指标更真实的择时能力与外推效果。基于动态参数模型测试不同择时标的下指标的择时效果,评估指标是否拥有普适的择时能力,并判断其更适合应用的标的场景。
图表:金融工程视角下的技术择时指标开发
资料来源:中金公司研究部
同时,本文基于该范式,构造了QRS技术指标及相应的择时模型。该指标在沪深300上择时效果优秀,在2007-2020年间,择时净值年化收益16.1%,夏普比率0.96,开仓胜率超6成。同期沪深300指数年化收益0.7%,夏普比率0.16。通过在多个主流宽基指数测试,亦进一步验证了该择时指标底层逻辑的普适性与有效性。
文章来源
本文摘自:2021年1月21日已经发布的《量化择时系列(1):金融工程视角下的技术择时艺术》
分析员 刘均伟 SAC 执业证书编号:S0080520120002
分析员 王汉锋 SAC 执业证书编号:S0080513080002 SFC CE Ref:AND454
法律声明
向上滑动参见完整法律声明及二维码
有话要说...