- Published on
FunctionLinearRegression
- Authors

- Name
- CoresightQuant
NOTE
本文为公开交易策略的技战术复盘,聚焦方法逻辑、交易场景与风险边界。
线性回归是量化交易中最基础也最强大的统计工具之一。它通过一条直线描述价格与时间的关系,帮助交易者识别趋势、衡量偏离程度并构建动态通道。本文将以一个名为 FunctionLinearRegression 的公开脚本为切入点,深入解析其设计逻辑、交易应用场景,并在此基础上探讨如何进一步完善和扩展。
策略解读
上述英文描述来自一位交易社区作者的分享。它没有给出完整的实现代码,但清晰描述了核心函数的功能:传入 X、Y 两组样本数组,返回预测值、最大偏差、最小偏差和平均偏差。这样一种设计非常契合量化交易中“数据驱动”的思想——我们只需要把时间序列和价格序列准备好,交给回归函数,就能得到一组拟合曲线和统计边界。
为什么线性回归在交易中如此重要?因为金融市场中的价格趋势,在短中期往往表现出近似线性的特征。比如一笔上升趋势的行情,如果时间窗口取得合理,价格点大致围绕一条斜向上的直线波动。线性回归的本质就是在这些价格点中找到一条“最合适”的直线,使每个点到直线的垂直距离平方和最小。这条直线不仅揭示了趋势的方向和斜率,还能通过拟合值构造出动态的支撑位和阻力位。而 _max_dev、_min_dev、_stdev 这些输出,则进一步描述了价格围绕这条直线的波动情况,让交易者可以量化趋势中的“正常波动范围”和“极端偏离程度”。
从应用上看,这个函数库的价值在于把统计计算封装成黑盒。使用者不需要每天手动计算最小二乘法,只需维护好样本数组,就能在任何时点快速获取回归结果。更重要的是,它输出的偏差量可以用于构建线性回归通道,通道的宽度随价格波动自动变化,从而形成一套动态的买卖边界。
名词解释
为了帮助读者理解,下面解释本文涉及的几个核心术语。
- 线性回归:一种统计建模方法,它试图用一条直线来描述因变量 Y 与自变量 X 之间的线性关系。在金融中通常用价格对时间做回归,得到趋势直线。
- 最小二乘法:线性回归中求取最佳拟合直线的经典算法。它要求所有样本点到回归直线的垂直距离平方和最小,由此解出直线的斜率和截距。
- 样本点:由一对 (X, Y) 构成的数据单位。例如在第 1 分钟的价格、第 2 分钟的价格,其中分钟序号是 X,价格是 Y。
- 数组:一种按顺序存放多个相同类型数据的容器。在这个函数库中,sample_x 和 sample_y 分别存放所有 X 和 Y 的数值,数组长度代表样本数量。
- 拟合值(预测值):将自变量 X 代入回归方程后计算得到的 Y 的估计值。它代表了回归线在该 X 位置上的“预测”高度,也常用于构造趋势线。
- 偏差:实际观测值与某个参考值(如均值或回归预测值)之间的差异。本函数中的 _max_dev 和 _min_dev 指样本点相对均值的最大和最小偏离。
- 标准差:衡量一组数据相对于均值分散程度的统计量。回归残差的标准差越小,说明该直线对数据的解释力越强。
- 元组:编程中一种可以同时包含多个元素的数据结构。这里表示 linreg 函数一次性返回多个结果,调用者可以分别取出预测数组、最大偏差等。
策略思路讲解
基于这个线性回归函数库,可以构建多种实用的交易策略。以下从趋势识别、通道交易、斜率动量和回归残差四个维度展开。
趋势识别:最朴素的做法是把时间序号作为 X,把收盘价作为 Y,计算线性回归。回归线的斜率就是单位时间内的平均价格变化。如果斜率为正且绝对值较大,说明市场处于上升趋势;斜率为负则对应下跌趋势。相比简单移动平均线,线性回归线对价格的响应更加及时,因为它考虑了价格变化的整体线性趋势,而不是纯粹求平均。
回归通道交易:利用返回的 _max_dev 和 _min_dev,可以构造一条“回归通道”。上轨等于回归拟合值加上最大正向偏差,下轨等于回归拟合值加上最小负向偏差(即减去一个绝对值)。在趋势市中,价格通常沿着回归通道运行:当价格触及上轨时,可能短期超买;触及下轨时,可能短期超卖。但要注意,在强单边趋势中,通道上轨不一定是有效的卖出信号,因为价格可以长期贴住上轨运行。所以更稳妥的做法是结合趋势方向过滤:只在下轨买入、上轨卖出,或者反过来。
斜率动量策略:回归直线的斜率可以进一步计算变化率。如果斜率从正值变大,说明上升趋势在加速;如果斜率由正转负,说明趋势可能发生反转。我们把斜率视为“趋势的加速度”,观察斜率的移动平均与当前值的关系,可以构造类似 MACD 的动量指标,但这里的底层是线性回归,而不是指数均线。
回归残差策略:函数库中的 _stdev/_sizeX 对应残差波动水平。我们可以把当前价格与回归预测值之差除以标准差,得到类似 Z 分数的值。当 Z 分数超过 2 或低于 -2 时,意味着价格严重偏离统计均值,存在回归到趋势线的内在动力。这种策略适合震荡市,但需要引入波动率过滤器,防止在单边行情中过早反向开仓。
多周期共振:用不同长度的时间窗口做多次线性回归,比如短周期 20 根 K 线和长周期 100 根 K 线。当两个周期的回归线斜率同向时,趋势可靠性更高;当背离时,市场可能处于调整阶段。这种做法本质上是把线性回归当成趋势过滤器,提高胜率。
优点
第一,计算效率高。线性回归只需要维护若干累加量(如 X、Y、XY、X²)即可通过公式求出斜率和截距,不需要迭代优化,非常适合实时计算。即使在样本数量很大的情况下,也能在极短时间内完成一次拟合。
第二,对趋势的识别比传统均线更敏锐。移动平均线是滞后指标,而线性回归线通过最小二乘法“回顾”了整个窗口内的数据,能在一定程度上抵消单根 K 线的噪声,并更快反映趋势方向的潜在变化。
第三,输出信息丰富。不同于简单均线只给出一条线,linreg 函数一次性返回预测数组、最大最小偏差和平均偏差,使得开发者能够直接组装通道、波动带、残差信号等各类工具,灵活性很强。
第四,输入设计通用。它接受任意数组作为样本点,因此既可以用于时间序列分析,也可以用于两个不同指标之间的回归(如价格对成交量),甚至能处理非等间隔采样的情况,扩大了应用范围。
第五,易于扩展。由于函数返回的是元组,使用者可以轻松地从中提取所需字段,与其它指标结合,形成多因素交易模型。
缺点
第一,对异常值特别敏感。最小二乘法赋予离群点很大的平方权重,一个极端价格——比如黑天鹅事件中的闪崩或冲高——会严重拉偏回归线,导致预测值和偏差统计失真。
第二,假设关系是线性的。金融市场中的趋势往往由多个周期嵌套组成,大的指数级趋势或抛物线形走势并不能被直线很好描述。如果市场处于加速上涨或下跌阶段,线性回归会持续“滞后”于实际价格。
第三,存在固有滞后。虽然它比均线快一些,但仍然基于一个固定窗口的过去数据。窗口越长,对当前点位的响应越迟钝;窗口越短,噪声越大。没有一种参数能同时兼顾平滑性和及时性。
第四,最大/最小偏差统计稳定性差。_max_dev 和 _min_dev 只是样本窗口内的极值,而不是基于概率分布的稳健分位数。在样本窗口内只要出现一个极值,通道宽度就会被急剧放大,使得通道失去实际指导意义。
第五,参数选择困难。样本窗口长度直接决定策略表现,但不同的行情状态对应最优窗口不同。固定窗口参数很难适应趋势、震荡、高波动、低波动等不同市场环境的切换。
起源年份考证
需要说明的是,这里考证的对象是“线性回归方法”和“线性回归类交易指标”的起源,而非该具体脚本的编写时间——后者无法从公开信息中准确考证。时间线大致如下:
- 1805年,法国数学家勒让德(Adrien-Marie Legendre)正式发表了最小二乘法,用于从观测数据中估计行星轨道。1809年,高斯(Carl Friedrich Gauss)也独立提出了类似方法,并引入了正态分布误差理论。这是线性回归的数学源头。
- 19世纪末到20世纪初,回归分析从统计学走向生物学、经济学,成为实证研究的基本工具。皮尔逊(Karl Pearson)等学者完善了相关与回归理论。
- 20世纪60年代,随着计算机的出现,金融研究者开始尝试用统计方法分析证券价格。早期量化交易系统大量使用线性回归进行套利定价和因子分析。
- 20世纪80年代至90年代,个人电脑普及后,技术分析领域出现了“线性回归线”和“线性回归通道”这类图表指标。它们通常展示一条穿越价格中心的趋势线,以及上下等距的平行轨道。这种做法与本文介绍的“最大/最小偏差通道”一脉相承。
- 21世纪初至今,各种交易平台和编程社区涌现出大量封装好的线性回归函数库。像 FunctionLinearRegression 这样的库多是为方便量化爱好者调用而设计,具体作者的发布年份无法考证,但可以归为“该类方法在现代社区中的开源实现”。
改进建议
虽然该函数库结构清晰,但直接用它做交易策略的胜率很难保证。我们可以在不改变核心回归思想的前提下,从以下方向进行改进。
第一,引入稳健回归。用最小绝对偏差回归(LAD)或 Huber 回归替代普通最小二乘,降低异常值对回归线的干扰。这样即使出现瞬间的极端价格,预测值也不会被过度拉偏。
第二,实现自适应窗口。基于市场波动率(如 ATR)或趋势强度(如 ADX)动态调整回归样本数量。波动大时延长时间窗口以平滑噪声,波动小时缩短窗口以捕捉趋势变化。
第三,加入加权机制。在回归计算时给近期样本更高权重,形成“指数加权线性回归”。这样回归线会更快地跟随当前价格,同时保留足够的平滑性。
第四,补充拟合质量指标。在返回元组中加入 R 方(决定系数)或回归残差的自相关性统计量。当 R 方过小时,说明价格呈非线性或无序运动,此时应该放弃趋势信号。
第五,结合滤波和确认模块。用线性回归的斜率方向作为趋势过滤器,配合价格突破或均线交叉等确认信号,避免在震荡市中开仓。例如只在回归斜率大于某个阈值时做多,并且要求价格回踩回归预测值后企稳再入场。
第六,改进通道边界。用分位数(如 5% 和 95% 分位数)替代最大、最小偏差,或者用标准差倍数(类似布林带)构建通道。这样通道宽度对极端值不敏感,更适合统计套利。
第七,多尺度融合。同时计算短、中、长三组线性回归,将它们的信号加权合并。当三条回归线方向一致时,系统给予高仓位;方向不一致时,降低仓位或空仓。
第八,增加监控和预警。将回归斜率与截距的变化率存储为时间序列,当二者出现异常收敛或发散时,触发预警。这本质上是在监控市场状态的转移。
总结
FunctionLinearRegression 是一个典型的轻量级统计函数库。它用最简短的方式实现了线性回归的核心计算,并输出预测值和偏差指标。在线性回归的世界里,输入和输出的关系一目了然:请给我两组数组,我告诉你趋势的方向、强度以及价格偏离的程度。
从交易应用看,线性回归可以是一条更聪明的趋势线,可以是一个自动缩放的价格通道,也可以是一个统计套利信号发生器。然而,工具本身没有好坏,关键取决于如何使用。我们必须清醒地认识到,线性回归是统计模型,不是水晶球。它在趋势明显的行情中如鱼得水,在震荡行情中则可能连吃败仗。因此,实用主义者通常会把它和动量策略、均值回归以及严格的风险管理结合起来使用。
最后,本函数库没有提供更高级的统计指标,比如置信区间和显著性检验,这为后续改进留下了充分空间。如果你正在寻找一个简单、可扩展的趋势分析底子,那么理解并善用线性回归,将是构建量化体系的一步好棋。