- Published on
Smooth Theil-Sen
- Authors

- Name
- CoresightQuant
NOTE
本文为公开交易策略的技战术复盘,聚焦方法逻辑、交易场景与风险边界。
策略解读
在量化分析与技术指标研究中,如何从价格序列中提取稳定、可信的趋势方向,始终是核心课题。传统的线性回归(如普通最小二乘法)对离群值(即极端价格波动)非常敏感,一个异常K线就可能让拟合斜率产生明显漂移。为了克服这一弱点,统计学家们发展出多种稳健回归方法,其中Theil-Sen估计量以其独特的中位数配对策略而独树一帜。
原始Theil-Sen回归的核心思想是:对于一组含n个观测值的数据,从中任取两个点,计算它们之间的斜率。如此反复,一共可以得到n×(n−1)/2个斜率值,然后取全部斜率值的中位数作为整体的回归斜率。这个中位数斜率代表的是“大多数点对之间的典型变化幅度”,因此个别极端值的影响会被稀释到只剩一个数据点,而不会像普通回归那样被距离大小加权放大。
然而,在实际K线图上,价格数据并不遵循统计教科书中的标准分布。市场中有趋势、有震荡、有跳空,也有流动性枯竭,这种复杂性使得原始Theil-Sen估计量在直接应用时存在明显问题。正如原文作者所指出的那样,中位数操作本身是一种“离散选择”——它只取决于排序后位于最中间的那个数值,而不是所有数值的加权平均。当一个新K线加入,或者旧的K线退出计算窗口时,中位数可能会突然从某个斜率跳到另一个斜率,导致输出序列出现明显的台阶状跳变。这种跳变在普通线性回归中是比较少见的,因为均值具有连续响应特性,而中位数则表现出“滞后再跃迁”的行为。
因此,该策略作者的目标是构建一种“平滑的Theil-Sen估计器”。所谓“平滑”,包含两层含义:其一,让估计器能够在一个以上K线上运行,即采用滚动窗口或累积窗口的方式,使得每次计算都能充分利用多个数据点的信息;其二,对原始Theil-Sen的输出进行二次处理,例如对连续的中位数斜率再做移动平均、加权平滑或使用某种滤波机制,使最终呈现的指标曲线更符合交易者的视觉习惯,也更容易用于生成明确的交易信号。
本文接下来将从方法论、实际应用和改进方向等角度,对这一定位于“稳健且平滑”的趋势估计策略进行深入剖析。
名词解释
Theil-Sen估计量:由经济学家Henri Theil于1950年提出,后由Pranab K. Sen在1968年扩展的一种非参数回归方法。它通过计算所有样本点对之间斜率的中位数来估计回归直线,因对异常值不敏感而被广泛使用。
非参数方法:对数据分布不作严格假设的统计方法。Theil-Sen不要求误差项服从正态分布,也不要求方差同质性,具有很强的适应性。
中位数:将一组数据按大小顺序排列后处于中间位置的值。中位数对极端值具有天然抵抗力,但当数据变化导致位置移动时,会表现出不连续的跳跃特征。
斜率:两点之间的“纵坐标差除以横坐标差”,在价格序列中通常对应一定时间间隔内的价差变化,反映趋势的陡峭程度。
离群值(异常值):远离大部分观测值的极端数据点。在行情中,常见于突破性跳空、重大消息冲击或流动性瞬间枯竭等情况。
窗口(滚动窗口):一次计算所包含的连续K线数量。窗口大小决定了估计器能看到的“时间跨度”,窗口越小反应越快但越不稳定,窗口越大越稳定但越滞后。
(以上为名词解释部分,还包含隐含的“平滑”“离散跳跃”等概念,结合正文理解即可。)
策略思路讲解
Theil-Sen平滑改进策略的核心是解决两个问题:稳健地估计趋势和顺畅地输出趋势。
第一步,选定基础回归区间。在某些实现中,作者没有像传统趋势线那样只使用固定的起点和终点,而是让估计器在多个K线之间动态计算。常规的做法是设定一个固定长度的滑动窗口,例如最近20根K线,每根新K线出现时,窗口向前滚动,纳入最新数据并剔除最旧数据。
第二步,在该窗口内执行Theil-Sen回归。具体而言,对窗口内的所有价点两两配对,计算每一对的斜率。若窗口内有n个点,则得到n×(n−1)/2个斜率。随后,将这些斜率按大小排序,取中间值作为该窗口当前趋势的估计值。这一步保证了估计结果不容易被少数极端价格所绑架。
第三步,也是对原标准实现的关键修正——对输出序列进行平滑。由于中位数天然具有离散性,每个窗口内的中位数可能在不同取值之间跳动。例如,当连续两个K线使窗口内的斜率中位数从0.5跳变到0.8时,指标会瞬间出现一个陡峭变化。这种跳变在交易中可能引发虚假信号。因此,作者引入了一个平滑机制,可能是对连续窗口的中位数斜率计算再平均,也可能是采用指数移动平均等滤波技术。这样,最终输出就不是一个纯中位数,而是经过平滑的中位数趋势值。
第四步,将平滑后的趋势值作为交易判断的依据。当平滑斜率显著为正时,表明市场处于上行状态;显著为负时,表明处于下行状态;接近零时,则可能处于震荡或无趋势阶段。具体阈值可以根据品种波动率或历史分位数进行动态调整。
从交易理念上看,这种策略本质上是在“稳健统计”与“信号平滑性”之间寻找平衡。既希望回归线不被少数异常K线带动,又不愿意因为中位数的离散特性产生频繁无规律的转折。事实上,这一思路可以推广到任何基于中位数、分位数的指标上,例如用中位数绝对偏差代替标准差来计算波动率,同样能够获得更稳定的市场状态判断。
优点
第一,抗离群值能力强。Theil-Sen回归依赖中位数而非均值,因此即使窗口内出现极端的上下影线、涨跌停板或新闻冲击造成的价格尖峰,对斜率估算的影响也极其有限。相比普通线性回归,它天然免疫了“单点带偏全局”的问题。
第二,无需分布假设。Theil-Sen是非参数方法,不要求价格服从正态分布、误差项独立同分布等前提条件。面对金融数据常见的厚尾、尖峰、异方差特征,该估计量依然能保持合理的统计性质。
第三,平滑版本减少了信号抖动。原始中位数在滚动窗口中会产生台阶状突变,而经过二次平滑后,输出曲线更连续,生成的趋势信号更加稳定。交易者不必再为“指标突然拐头”而疲于应对,降低了误操作频率。
第四,对趋势方向有较高识别度。斜率中位数能够较好地区分上升趋势、下降趋势和震荡行情。当市场处于持续的单边走势时,Theil-Sen估计量给出的斜率符号非常稳定,可作为仓位方向的参考依据。
第五,可解释性强。中位数斜率直观地描述了样本中“最典型”的变化速率,比机器学习模型的输出更容易向交易者解释,也便于设定可理解的参数。
缺点
第一,计算量大。当窗口内K线数量较多时,所有点对组合的数量呈平方级增长。一个窗口有30根K线,就会产生435个斜率;若扩展到100根K线,则接近5000个斜率。虽然现代计算机能够轻松处理,但对于需要高频迭代的实时行情,逐根K线计算仍可能带来性能压力。
第二,中位数天然存在离散跳跃。即便对输出做了平滑处理,也无法完全消除跳变。在某些特殊时段——比如中位数恰好在两个候选值之间纠缠时——平滑后的斜率仍可能表现出阶梯状特征,只不过跳跃幅度被抑制了,但响应速度也随之减慢。
第三,存在滞后性。平滑处理本质上是一种低通滤波,它会过滤掉高频噪声,但同时也拉长了趋势变化的识别时间。当市场在拐点处反转时,平滑Theil-Sen指标往往要等几个K线之后才能给出反向信号,可能错失最佳入场点。
第四,对样本量敏感。在小窗口(例如少于10个K线)下,点对数量有限,中位数的稳定性不足。极端情况下,某一点的变化可能导致斜率中位数发生剧烈迁移。窗口过小,稳健性优势会被削弱;窗口过大,又会使指标反应迟钝。参数选择困难是实际应用中的一个硬伤。
第五,仅能估计线性趋势。Theil-Sen回归本质上是拟合一条直线,只能捕捉线性的、单调的趋势。对于波动率收敛后的形态变换、周期循环或非线性价格路径,该指标容易失效或给出错误提示。
起源年份考证
需要说明的是,Theil-Sen平滑估计器这一具体脚本并没有一个公开的明确发布时间,但Theil-Sen回归方法本身具有清晰的学术渊源。
- 1950年:荷兰经济学家Henri Theil在一篇关于稳健估计的论文中提出了利用所有点对斜率的中位数来估计线性回归参数的方法。这是该类方法的首次提出。
- 1968年:印度统计学家Pranab K. Sen将Theil的方法扩展到更一般的模型情境中,证明了其统计性质,并提出更完整的估计形式。因此该方法被后人称为“Theil-Sen估计量”。
- 20世纪80-90年代:随着计算机的普及,Theil-Sen估计量被广泛应用于水质趋势分析、环境监测等领域,成为稳健统计的经典教材内容。
- 21世纪初至今:量化交易兴起后,研究者开始将Theil-Sen引入金融时间序列分析,用于估计趋势线或作为技术指标的组成部分。而“平滑Theil-Sen”则是在这基础上针对K线数据进行的工程改进,具体年份难以考证,可视为近年来技术指标社区对经典方法的一次迭代优化。
综上,本文所谈的“平滑Theil-Sen”属于“Theil-Sen回归 + 时间序列平滑”的复合方法,其方法学根基可追溯至1950年,而面向金融市场的工程化改造则大致诞生于21世纪10年代以后,具体时间点无法精确考证。
改进建议
第一,采用加权Theil-Sen估计。不同时间距离对当前趋势的影响不同,可对近期的点对赋予更高的权重。例如,可以使用时间距离的倒数作为权重,再以加权分位数代替普通中位数。这样既保留了稳健性,又能增强对近期价格变化的敏感度。
第二,结合自适应窗口长度。不要使用固定的窗口大小,而是根据市场波动率动态调整。当波动率上升时缩短窗口,更快响应;波动率下降时拉长窗口,减少噪声。可利用真实波动幅度均值(ATR)或滚动标准差来触发窗口长度切换。
第三,引入去噪预滤波。在计算Theil-Sen斜率之前,先对价格序列进行Savitzky-Golay滤波或小波去噪,去除高频噪声和随机尖刺。这样得到的价格点更“干净”,点对斜率的中位数也会更稳定,从而减轻后续平滑的负担。
第四,使用分位数带而不是单一中位数。除了斜率中位数外,同时计算较低分位数(如25%)和较高分位数(如75%)的斜率,形成一个“斜率分位带”。当价格走势向上穿越带的上边界时确认多头,跌破下边界时确认空头,中间区域视为不确定区。这样可以避免在狭窄通道中反复触发信号。
第五,把平滑Theil-Sen与其他指标融合。例如,与趋势方向一致的移动平均线配合使用,当Theil-Sen斜率符号与价格在均线上的位置一致时才开仓。又如,可以通过平滑斜率的变化率(一阶差分)来识别趋势的加速或减速,从而提前预判拐点。
第六,优化计算方式。利用增量更新的数据结构来维护排序数组,当窗口滚动时,只删除旧斜率、添加新斜率,避免每次从零开始排序。对于超长窗口,可以进行随机抽样点对近似,即只从全部点对中随机抽取固定数量的样本计算中位数,以大幅降低计算量,同时保持较好的稳健性。
第七,对输出斜率进行后标准化。不同品种或不同时间周期的斜率绝对值没有可比性。可以将斜率除以同周期内典型价格水平或波动率,得到类似于“归一化趋势强度”的指标,便于设置统一的阈值。
总结
平滑Theil-Sen估计器是一次对经典稳健统计方法的现代交易化改造。它抓住了Theil-Sen回归对离群值“天然免疫”的优点,又通过二次平滑机制弥补了中位数输出不连续、不直观的缺陷。在实际交易中,这类指标更适合作为趋势过滤器或趋势强度衡量工具,而非单独生成所有交易信号的孤岛指标。
理解这一策略,关键在于认识到“稳健”与“平滑”之间存在相互制约的关系。越稳健,意味着对离群值的妥协越少,但随之而来的可能是信息的过多丢弃或反应的迟钝;越平滑,意味着信号越不容易受噪声干扰,但滞后也越严重。成功的定制化指标,往往是在这两者之间找到了适合特定市场、特定时间周期的平衡点。
对于使用该策略的交易者而言,不应盲目依赖作者给出的默认参数。应当结合自己的交易品种、K线周期和风险偏好,对窗口长度、平滑系数、阈值分位数等做系统性的回测优化。同时,要牢记任何技术指标都只是对价格行为的一种统计描述,真正的交易责任在于使用者如何解释信号、管理仓位和设置止损。稳健的统计方法可以让我们少犯错误,但决定盈亏的永远是我们对规则的执行力和对风险的敬畏心。