- Published on
Kalman Trend Filter
- Authors

- Name
- CoresightQuant
NOTE
本文为公开交易策略的技战术复盘,聚焦方法逻辑、交易场景与风险边界。
策略解读
在技术分析的世界里,趋势跟踪始终是交易者最依赖的策略方向之一。从最古老的简单移动平均线(SMA)到指数移动平均线(EMA),再到各种自适应均线,人们一直在同一个问题上挣扎:均线越平滑,滞后越严重;均线越敏感,噪声干扰越强。这个两难困境,本质上是因为传统均线采用了“固定窗口”的视角来看待市场——过去 N 根 K 线的价格被等权或按时间衰减地平均,而真实市场却是一个时变、非平稳、充满噪声的系统。
卡尔曼趋势过滤器提供了一种完全不同的哲学:它不再把趋势理解为“过去一段时间的平均值”,而是把趋势视为一个隐藏在价格噪声之下的“状态变量”。价格是我们能观测到的、被噪声污染的测量值;趋势则是我们无法直接看到、但可以通过递归估计来逼近的潜变量。这个过程不是对历史数据做一次性的平滑,而是每来一个新价格,就执行一次“预测—更新”的闭环反馈,从而让趋势估计能够自适应地跟随市场节奏。
更直白地说,传统均线像是一面“后视镜”,永远在描述刚刚走过的路;而卡尔曼趋势过滤器更像是一个“带噪声传感器的雷达”,它一边接收新的观测,一边修正自己对目标位置的判断。它不要求价格满足某个固定周期的假设,而是通过噪声方差和状态转移方差这两个参数,来动态平衡“相信新价格”与“相信旧趋势”之间的权重。当市场噪声大时,它自动减少对单根 K 线的依赖;当市场方向明确时,它又能快速跟上趋势的变化。
这种设计的核心价值在于:它把趋势识别问题转化为了一个经典的估计问题。而卡尔曼滤波正是解决这类问题最成熟的工具之一,自 20 世纪 60 年代在航天领域崭露头角以来,已经被广泛应用于机器人导航、自动驾驶、金融工程等多个领域。把它引入到价格趋势识别中,并不是一个复杂的新发明,而是一次跨领域的思想迁移——用处理物理信号的方法来处理金融价格序列。结果往往出人意料:一个只有少量参数的递归滤波器,就能在趋势跟踪表现上胜过许多复杂的均线系统。
名词解释
为了让读者更好地理解后文的策略逻辑,这里先解释几个关键术语。
卡尔曼滤波(Kalman Filter):一种利用线性系统状态方程,通过输入观测数据,对系统状态进行最优估计的递归算法。它不需要存储全部历史数据,只需保留上一时刻的状态估计和误差协方差,就能实时更新当前估计。其核心思想是在“预测值”和“观测值”之间寻找一个按方差加权的折中。
状态空间模型(State Space Model):一种将真实系统描述为“状态方程”和“观测方程”的建模框架。在趋势过滤器中,状态就是“真实趋势”,观测就是“价格”。状态方程描述趋势如何随时间演化,观测方程描述价格如何受趋势和噪声影响。
过程噪声方差(Process Noise Variance):表示状态转移过程中引入的不确定性。数值越大,说明系统认为趋势本身变化越剧烈,滤波器就会更积极地跟随新价格;数值越小,则认为趋势越稳定,滤波器会更平滑。
观测噪声方差(Observation Noise Variance):表示价格测量中的噪声强度,通俗地说就是“市场随机波动”的程度。该值越大,滤波器越不相信单根 K 线的价格,倾向于保持原有趋势估计;该值越小,则越相信最新价格。
自适应平滑(Adaptive Smoothing):一种随着市场条件变化自动调整平滑强度的技术。卡尔曼趋势过滤器的平滑程度不是固定的,而是由当前噪声估计与历史误差协方差动态决定,因此它能实现在震荡行情中自动变钝、在趋势行情中自动变锐的效果。
滞后效应(Lag Effect):所有趋势指标都会有的一个固有现象,即信号变化落后于价格实际变化。传统均线的滞后时间通常是固定的(与窗口长度相关),而卡尔曼趋势过滤器的滞后是动态的、可控的,这是它的一大优势。
递归(Recursion):指算法每一步的输出依赖于上一步的结果,而不是每次重新计算全部历史。卡尔曼滤波是典型的递归算法,计算量低、内存占用小,适合高频实时计算。
策略思路讲解
卡尔曼趋势过滤器的策略逻辑可以分为三个层次来理解:状态建模、递归估计、信号生成。
第一层:状态建模。 我们需要定义两个方程。第一个是状态方程,假设“真实趋势”在相邻两个时刻之间只发生缓慢变化,变化量受噪声扰动控制。第二个是观测方程,假设“价格”等于当前真实趋势加上一个随机噪声项。这两个方程合起来就构成了一个最简单的线性动态系统。
第二层:递归估计。 这是卡尔曼滤波的核心循环,整体可以拆解为五个步骤,虽然我们不讲公式,但需要理解其思想。
第一步是预测:根据上一时刻估计出的趋势值,预测当前时刻的趋势可能是多少。通常情况下,我们认为趋势会延续,所以预测值就等于上一时刻的趋势估计。
第二步是预测误差协方差:我们同时还要估计“当前预测的可靠程度”。如果过去积累的误差很大,那么这次预测的可信度就低;反之亦然。
第三步是计算卡尔曼增益:这是一个介于 0 和 1 之间的权重,它决定我们在多大程度上相信最新价格、多大程度上相信旧预测。卡尔曼增益的计算涉及两个噪声方差:如果观测噪声大,增益小,价格可信度低;如果过程噪声大,增益大,说明趋势变化快,需要更快地追随价格。
第四步是更新:把新收到的价格与预测值的差,乘以卡尔曼增益,加到预测值上,得到当前时刻的最优趋势估计。
第五步是更新误差协方差:根据本轮的增益更新对估计误差的认知,为下一轮的预测做准备。
整个过程在每一根 K 线上重复一次,没有固定的窗口,也没有加权平均,“平滑程度”完全由数据本身和两个噪声参数交互决定。
第三层:信号生成。 策略使用趋势估计值与价格本身的比较关系来产生交易信号。当价格位于趋势估计值之上时,视为多头状态;当价格位于趋势估计值之下时,视为空头状态。也可以使用趋势估计值的斜率变化,即本期估计值相对上期估计值的移动方向,作为更灵敏的信号。有些使用者还会结合价格穿越趋势线的金叉死叉来确认入场点,或者把趋势估计值作为动态止损/止盈的参照。
需要特别指出,卡尔曼趋势过滤器本身不规定任何固定出场规则。它更接近一个“趋势状态显示器”:告诉你当前市场最可能的真实趋势位置在哪。至于何时入场、何时出场,还需要配合均线交叉、动量确认或资金管理规则来形成完整的交易系统。一个常见的实战框架是:在卡尔曼趋势线上方只做多,在下方只做空,同时用趋势线本身的回撤作为移动止损。这样既享受趋势跟踪的利润,又避免在震荡行情中被来回打脸。
优点
第一,滞后性显著降低。传统均线的滞后是固定的,而卡尔曼趋势过滤器通过动态调整增益,在趋势启动初期能更快地反应。它不是简单地平均过去,而是根据噪声大小“选择性相信”新价格,因此在捕捉趋势拐点时往往比同参数的均线系统更早。
第二,自适应能力强。市场有趋势和震荡两种状态,传统均线只能用同一套参数应对所有行情。卡尔曼滤波器则天然地根据价格波动实时改变滤波强度:价格波动剧烈时,它认为观测噪声大,自动降低对单根 K 线的信任;价格稳定单边时,它认为观测噪声小,自动加快跟踪速度。这种特性让它在不同品种、不同时间周期上都具有相当的适应性。
第三,计算效率极高。由于采用递归方式,它不需要存储长窗口历史数据,每一根 K 线只做少量乘法和加法运算。即使运行在分钟级或 tick 级高频数据上,也不会造成计算瓶颈。
第四,参数少且语义清晰。相对于许多动辄十几个参数的自适应指标,卡尔曼趋势过滤器通常只需要调节两个核心参数:过程噪声方差和观测噪声方差。这两个参数不是抽象的数字,而是有明确物理意义的“趋势变化速度”和“噪声强度”,交易者可以根据品种波动特性直观地调整。
第五,与其他策略兼容性好。它可以作为过滤器、趋势判断模块或动态支撑阻力使用。既可以单独产生交叉信号,也可以叠加在动量策略、突破策略甚至均值回归策略之上,用来判断大方向是否允许开仓。这种“模块化”特性使它非常适合嵌入到复杂的交易系统中。
缺点
第一,需要估计噪声参数。卡尔曼滤波器的表现非常依赖两个噪声方差值的设定。如果观测噪声方差设得太小,滤波器会过度跟随价格波动,导致信号频繁;如果设得太大,又会变成一条几乎不动的曲线,失去趋势跟踪的意义。实际应用中,这两个参数往往需要根据历史数据进行优化调整,不存在一套“万能参数”。
第二,线性假设的局限。标准卡尔曼滤波器假设系统状态转移和观测关系都是线性的,且噪声服从高斯分布。然而金融市场的价格生成过程包含跳跃、肥尾、非线性转换等现象,这些都会降低最优估计的效果。虽然可以通过扩展版本(如无迹卡尔曼滤波)改善,但标准版的适用范围存在天花板。
第三,初始值敏感。在刚开始运行时,滤波器需要设定初始状态和初始误差协方差。如果初始值设置不合理,需要经过一段时间的递归更新才能逐渐收敛到合理区间,这会导致启动阶段信号质量较差,尤其对日线以下周期影响明显。
第四,信号噪声仍然存在。尽管卡尔曼滤波能滤除一部分噪声,但价格中的异常跳空、新闻冲击等极端事件仍会使趋势估计瞬间偏离,从而产生虚假信号。它并不比均线系统更“智能”,只不过是用不同的方式过滤噪声,遇到极端行情依然会失效。
第五,缺乏交易规则完整性。卡尔曼趋势过滤器只是一个估计器,不是完整的交易系统。使用者必须要自己设计入场确认、离场条件、仓位管理和风险控制,这增加了策略落地的复杂度。对于新手来说,可能会因为不清楚信号生成规则而误用。
起源年份考证
卡尔曼滤波算法本身是鲁道夫·卡尔曼(Rudolf E. Kálmán)于 1960 年提出的,这一年份在学术史上有明确记录。但需要说明的是,此处考证的是“卡尔曼滤波”这一数理方法的起源年份,并非“卡尔曼趋势过滤器”这一具体交易指标的出现年份。
将卡尔曼滤波应用于金融时间序列分析的尝试可以追溯到 20 世纪 70-80 年代,当时部分计量经济学家开始用状态空间模型处理非平稳时间序列,其中最具代表性的是 1976 年提出的“基本结构模型”(Basic Structural Model),该类模型使用卡尔曼滤波估计趋势与季节成分。因此,我们可以说“使用卡尔曼滤波进行价格趋势提取”这一方法类型的行业公认起源大约在 20 世纪 70 年代中后期。
进入 21 世纪以后,随着个人电脑算力提升与开源金融编程生态的发展,卡尔曼滤波开始被广泛引入到各类量化策略与公开交易社区中。到 2010 年前后,利用卡尔曼滤波构建自适应均线、动态配对交易以及趋势跟踪指标已经变成一种常见范式。近年来,许多公开交易社区中的“卡尔曼趋势过滤”类脚本,绝大多数是对几十年前学术方法的简化封装,其核心数学框架并未超出 1960 年卡尔曼和 1970 年代计量经济学的范围。
因此,这里给出一个时间线供读者参考:
- 1960 年:鲁道夫·卡尔曼正式发表著名的离散数据线性滤波递推算法,即卡尔曼滤波。
- 1970 年代中期:计量经济学家开始使用状态空间模型与卡尔曼滤波估计经济时间序列中的不可观测趋势。
- 1980 年代至 1990 年代:卡尔曼滤波逐步进入金融工程领域,主要用于利率建模、波动率估计与衍生品定价。
- 2000 年代:随着量化交易兴起,技术人员开始将卡尔曼滤波改造为交易指标,替代传统均线用于趋势识别。
- 2010 年至今:公开交易社区中大量出现以“卡尔曼趋势”命名的策略脚本,成为一种广为人知的自适应趋势工具。
需要强调的是,目前我们无法考证具体哪一天、哪个人第一次把卡尔曼滤波写成“Kalman Trend Filter”并公开发布。如果你在网上看到的某个脚本标注了具体作者,那只能说明该作者发布的是该平台的特定版本,并不代表这一方法由他首创。这种“同名指标百花齐放”的现象在交易社区中很常见,本质上是学术思想向工程应用扩散的自然结果。
改进建议
第一,对噪声参数进行自适应优化。可以引入滚动窗口的回报标准差或平均真实波幅(ATR)来动态调整观测噪声方差,例如用 ATR 的平方作为观测噪声的估计值。这样能减轻固定参数在不同波动环境下的失灵风险。具体做法是在每个周期计算当前波动率水平,将其映射为观测噪声方差,让滤波器自动适应“高波动期少信价格、低波动期多信价格”的规律。
第二,结合趋势斜率与价格穿越双重确认。单用价格与趋势线的关系容易产生频繁穿越。可以增加斜率条件:只有当趋势线本身也朝交易方向倾斜时,才触发信号。比如价格在趋势线上方且趋势线向上,才做多;价格在趋势线上方但趋势线向下,则说明可能处于反弹阶段,不做多等待回调。这样可以过滤掉许多震荡区间的假突破。
第三,引入第二次过滤器。在卡尔曼趋势线的基础上,再叠加一条更短周期的均线或另一个卡尔曼滤波器(使用不同参数),形成“快线+慢线”双线系统。信号仅在快线与慢线同向且价格同向时产生。这种方法相当于多加了一层确认机制,虽然会增加滞后,但能显著降低错误信号数量。
第四,设计动态离场规则。不要仅仅依赖价格跌破趋势线就离场,可以结合动态波动率止损。例如,当价格向不利方向移动超过当前波动率的一定倍数时立即离场;同时将卡尔曼趋势线本身作为移动止损轨道,如果趋势线走平或反向,则分批平仓。这样在急涨急跌的行情中能保住更多利润,在缓慢反转的行情中也不至于过早离场。
第五,针对不同品种分别校准参数。股票、加密货币、外汇的波动特征完全不同,建议先按品种采集过去数百根 K 线的数据,通过简单的网格搜索寻找使策略绩效最优的过程噪声方差与观测噪声方差组合。同时注意避免过度优化,可以采用滚动前推(walk-forward)方式验证参数的稳定性。
第六,考虑非线性扩展。对于价格中的跳空或突发事件,可以使用无迹卡尔曼滤波或粒子滤波代替标准线性卡尔曼滤波。不过此类方法在普通行情中提升有限,且计算复杂度较高。如果交易频率不高,可以尝试;如果是高频交易,标准版本仍是性价比之选。
第七,与市场状态分类器结合。先用波动率或分形维度识别市场处于趋势状态还是震荡状态,只在趋势状态下启用卡尔曼滤波信号,在震荡状态下切换为均值回归策略。这样能将不同策略的优势场景区分开,避免用一种工具应对所有市场。
总结
卡尔曼趋势过滤器的本质,是将控制论中经典的“最优状态估计”方法应用于价格趋势识别。它不像传统均线那样机械地平均历史价格,而是在每一根新 K 线上递归地权衡“预测”与“观测”之间的关系,从而得到一个随市场噪声变化而自动调节平滑程度的动态趋势线。
从使用体验上看,它确实比传统均线更快、更灵活,并且参数语义清晰,便于交易者理解和调整。但我们也必须清醒地看到,它并不能包治百病:标准版本有线性高斯假设的限制,对初始值敏感,且依然无法在震荡市中完全避免虚假信号。更重要的是,它只是一个“趋势判断模块”,不是完整的交易系统。把它的输出变成有效的交易决策,还需要搭配入场确认、风险控制和离场管理。
对于刚开始接触这个指标的交易者,建议先从日线级别、使用默认参数开始,观察它在一个完整牛熊周期中的表现,再逐步调整两个噪声参数,并用自己熟悉的品种做历史回测。把它视为一个“具有自适应能力的均线替代品”,而不是一个“必胜的信号发生器”,心态就会平稳许多。
归根结底,任何一种技术指标都是对市场的一种简化假设。卡尔曼滤波的优点在于它承认市场充满噪声,并且用一种严谨的数学方式来应对噪声。但再精妙的滤波器也无法完全消除不确定性——交易的本质本来就是与不确定性共舞,指标只是帮我们看得更清晰一点,手还是得由自己来控制。愿这篇介绍能帮助你理解卡尔曼趋势过滤器背后的思想,在实战中做出更明智的决策。