历史如何重演?——基于DTW算法的转债择时初探 西南证券研究发展中心固定收益团队2024年12月 核心观点 DTW算法简介:动态时间弯曲(DynamicTimeWarping,简称DTW)算法由学者Itakura在1960年代提出。算法基于动态规划原理,对时间序列进行有效的匹配,尽管用于比较的时间序列长度可能不一致。在DTW算法丰富的应用历史中,其被广泛应用于语音识别、气象信息、心电图记录和基因序列等。证券交易数据作为典型的时间序列数据,也适用于使用DTW模型进行匹配。不同于锁步度量方法(如欧氏距离)容易产生时间序列错误匹配或难以识别潜在模式,动态时间弯曲算法能够使得形态相似但时序上不能对齐的两段序列实现匹配,通过对序列进行缩放、平移,实现不同时点之间的对齐与错配,寻找在允许伸缩变形的条件下最为相似的片段,并根据设置的定义计算两者的相似程度度量。同时,DTW算法对时间序列进行匹配时,某些位置可能存在不合理的伸缩或错配,称作“病态匹配”。为了改进“病态匹配”问题,DTW算法从全局约束和局部约束两个维度致力于提升匹配的效果。 模型构建与参数选取:模型构建逻辑并不复杂。基于当前时点T,选取过去一段时间的市场走势作为“被比较期”,尝试预测未来一段时间的走势。从历史走势中寻找与其走势相似的时间段,并通过约定的算法衡量其“距离”被比较期的距离,对于满足阈值要求的历史片段,计算该时间段未来一段时间的历史走势。基于设定的阈值完成匹配后,以样本相对被比较期“距离”的倒数作为权重,加权汇总后得到对于预测期走势的预测。模型所涉及的参数数量较多,实测中主要需要通过充分的测算来调优。我们分别寻找主要变量令模型效果最优的取值,再进行汇总微调。 策略实测效果:我们基于中证转债指数表现,从三个层次来展示模型实测效果。从未经全局或局部约束的原始DTW模型来看,模型已经体现了可观的回撤控制效果,但超额收益获取不足;采用了全局约束控制“病态匹配”的两组模型,回测期内相对中证转债指数的超额收益分别为6.09%与14.33%,同时其最大回撤水平仍有明显的降低;而本文所摘录的、通过局部约束改进的4个策略分支,均进一步体现出相对原始模型的显著增强。其中,回测期内超额收益表现最优的TypeIIA模型相对中证转债指数获取21.49%的超额收益,最大回撤的逐年表现也有较大改善。 风险提示:政策不确定性;统计误差;模型失效。 1 目录 模型简介:DTW算法 模型训练:模型构建与参数选取 策略效果:实操效果 2 模型简介:DTW算法 本文将专注于从微观层面出发,利用技术指标(交易量价)来构建市场时机选择策略。 通过欧氏距离测度的锁步度量 通过动态时间弯曲距离的弹性度量 EuclideanDistance 概要:动态时间弯曲(DynamicTimeWarping,简称DTW)算法由学者Itakura在1960年代提出。算法基于动态规划原理,对时间序列进行有效的匹配,尽管用于比较的时间序列长度可能不一致。在DTW算法丰富的应用历史中,其被广泛应用于语音识别、气象信息、心电图记录和基因序列等。证券交易数据作为典型的时间序列数据,也适用于使用DTW模型进行匹配。 优势:不同于锁步度量方法(如欧氏距离)容易产生时间序列错误匹配或难以识别潜在模式,动态时间弯曲算法能够使得形态相似但时序上不能对齐的两段序列实现匹配,通过对序列进行缩放、平移,实现不同时点之间的对齐与错配,寻找在允许伸缩变形的条件下最为相似的片段,并根据设置的定义计算两者的相似程度度量。 DynamicTimeWarpingDistance 数据来源:MakingTime-seriesClassificationMoreAccurateUsingLearnedConstraints,西南证券整理 3 模型简介:DTW算法 锁步度量:计算两个序列的欧几里得距离,即计算两个序列各个对应的点之间的距离之和。 距离之和=|A(1)-B(1)|+|A(2)-B(2)|+|A(3)-B(3)|+ |A(4)-B(4)|+|A(5)-B(5)|+|A(6)-B(6)|=8 DTW算法:允许点与另一序列多个连续点相对应,计算对应点之间距离之和。如图,B(1)与A(1)、A(2)对应;B(2)与A(3)、A(4)对应,A(5)与B(3)、B(4)对应,A(6)与B(5)、B(6)对应。 距离之和=|A(1)-B(1)|+|A(2)-B(1)|+|A(3)-B(2)|+|A(4)- B(2)|+|A(5)-B(3)|+|A(5)-B(4)|+|A(6)-B(5)|+|A(6)-B(6)|=0 欧几里得距离 DTW算法计算距离 数据来源:西南证券整理数据来源:西南证券整理4 模型简介:DTW算法 将被比较的两条时间序列分别作为横、纵轴,建立点阵。算法将选取一条使得每步距离累加总和最低的路径,路径经过的点即为两段时间序列的最优匹配方式。同时,加总结果即为最优匹配状态下,两条被比较时间序列的距离指标(或者说相似度的反向指标)。 两段时间序列所构成的矩阵我们看到传统欧几里得距离里对应的点: A(1)——B(1) A(2)——B(2) A(3)——B(3) A(4)——B(4) A(5)——B(5) A(6)——B(6) 锁步度量匹配结果即为对角线,距离之和为8。在考虑DTW算法的情况下,匹配的组合为: A(1)/A(2)——B(1) A(3)/A(4)——B(2) A(5)——B(3)/B(4) A(6)——B(5)/B(6) 这些点描绘出的路径即为最优匹配方式,路径上距离加总即为两条序列最优匹配情况下的距离。 因此,DTW算法的步骤为: 1、根据给定的距离定义公式,计算两个序列各个点之间的距离矩阵。 2、寻找一条从矩阵左上角到右下角的路径,使得路径上的距离和最小。 数据来源:西南证券整理5 模型简介:DTW算法 DTW算法的病态匹配问题:算法对时间序列进行匹配时,某些位置可能存在不合理的伸缩或错配,称作“病态匹配”。 B展示了两个时间序列之间的合理对齐情况,而C作为DTW算法给出的匹配结果示例,在某些区域明显存在过度偏移现象。 全局约束和局部约束是基于传统DTW算法病态匹配问题的两类主要改进方法。二者从不同维度致力于提升匹配的效果。 传统DTW算法中的“病态匹配”问题 A BC 数据来源:《DerivativeDynamicTimeWarping》,西南证券整理 6 模型简介:DTW算法 全局约束:传统的DTW算法并不限制匹配路径生成的范围(也就是不限制匹配中的前后偏移程度)。作为改进,全局约束要求匹配路径只能在限定的区域内生成。 常用的全局约束方法包括Sakoe-ChibaConstraint和ItakuraParallelogram等,二者主要区别为对路径范围的限定方式不同。Sakoe-ChibaConstraint中需要设定窗口限制参数r,限制匹配路径须在距离点阵对角线距离为r的范围内。在实际使用时,仍需对于窗口限制参数r进行调整。如r过大以至于触及点阵边界,则全局约束失效;ItakuraParallelogram则以对角线的起终点以及斜率分别为2和0.5的线段确定唯一的平行四边形,将匹配路径限定在其范围内。 局部约束:顾名思义,指对路径形成的每一步进行约束。局 部约束的两种主要方法分别为约束每步的方向(步模式, Sakoe-ChibaConstraint 数据来源:《DynamicProgrammingAlgorithmOptimization forSpokenWordRecognition》、西南证券整理 ItakuraParallelogram 数据来源:《MinimumPredictionResidualPrinciple AppliedtoSpeechRecognition》、西南证券整理 StepPattern)和改变不同方向之间的距离计算权重(加权 方式,SlopeWeighting)。 步模式:传统DTW算法的路径只有横、纵、斜三个方向。当采用局部约束时,不同的步模式允许模型与不相邻的点匹配 。常见的步模式包括TypeI至IV、ItakuraConstraint等(如图)。 加权方式:在上述步模式的基础上,通过引入权重参数,改变不同方向距离的计算权重,可以进一步对于模型走向加以约束。 局部约束中5种常见的步模式 数据来源:《PerformanceTradeoffsinDynamicTimeWarpingAlgorithmsforIsolatedWordRecognition》,西南证券7 目录 模型简介:DTW算法 模型训练:模型构建与参数选取 策略效果:实操效果 8 模型训练:模型构建与参数选取 如何使用DTW算法进行择时? 基于当前时点T,选取过去一段时间的市场走势作为“被比较期”,尝试预测未来一段时间的走势。 从历史走势中寻找与其走势相似的时间段,并通过约定的算法衡量其“距离”被比较期的距离,对于满足阈值要求的历史片段,计算该时间段未来一段时间的历史走势。 基于设定的阈值完成匹配后,以样本相对被比较期“距离”的倒数作为权重,加权汇总后得到对于预测期走势的预测。 DTW模型流程示意图 今日 被比较期预测期 历史行情序列 涉及参数 参数名称 参数解释 调仓周期 进行匹配并调仓的时间周期 被比较期 将市场表现用于匹配的周期长度 预测期 尝试预测的周期长度 匹配阈值 衡量历史片段是否满足条件的阈值要求 历史数据范围 寻找历史片段的时间范围 历史数据更新跨度 连续两端历史片段之间的最短长度 片段1 片段2 片段3 片段4 片段5 r1 r2 rn DTW距离 计算各历史片段 DTW距离 rt 数据来源:西南证券整理数据来源:西南证券整理9 模型训练:模型构建与参数选取 前述的各模型参数如何设置? 主要需要通过充分的测算来调优。考虑到参数总数繁多,我们分别寻找主要变量令模型效果最优的取值,再进行汇总微调。 其中,调仓周期最易于理解,且考虑到调仓周期的长度不宜超过预测期,因此我们将调仓周期与预测期绑定。考虑到预测期过长可能带来的不确定性,我们将设置为5天。即考虑历史片段结束后5个交易日的市场走势。 被比较期的长度影响历史片段选取的效果与效率。我们以近15个交易日作为比较期,避免匹配到的历史片段相似度不足。 匹配阈值主要约束哪些历史片段会被选取。我们将计算出的DTW距离在30以下的历史片段纳入考虑。 历史数据范围可以避免引入过于久远的历史数据,以免其难以体现目前的交易模式。这里仅考虑近2000个交易日的历史情况。 历史数据更新跨度最可能受到忽视,其用途为限制模型在一段连续的时间范围内连续选取历史片段,以避免模型选入的历史片段因来自同 一段密集的时期。这里,我们限制连续两端历史片段必须相隔至少10个交易日。 参数设置及实际含义 一例被匹配期及对应匹配结果 410 390 370 350 参数名称 参数解释 调仓周期=5 每5个交易日重新匹配并对未来收益进行预测 被比较期=15 取最近15个交易日的市场走势用于匹配 预测期=5 尝试预测未来5个交易日的市场走势 匹配阈值=30 仅选取DTW距离在30以下的历史片段 历史数据范围=2000 仅考虑2000个交易日之内的历史片段 历史数据更新跨度=10 连续两端历史片段之间的最短长度 330 Day1Day2Day3Day4Day5Day6Day7Day8Day9Day10Day11Day12Day13Day14Day15 2024-08-272022-12-062021-05-31 2021-03-302020-05-062020-09-11 数据来源:西南证券整理数据来源:Wind,西南证券整理10 模型训练:模型构建与参数选取