两样本Kolmogorov-Smirnov检验作为时间序列非平稳性的指标(基础篇)
📘

两样本Kolmogorov-Smirnov检验作为时间序列非平稳性的指标(基础篇)

第 1/2 篇

「用 KS 双样本检验盯住行情非平稳切换」

两样本 Kolmogorov-Smirnov 检验(KS 检验)原本用于判断两组样本是否来自同一分布。把它搬进 MT5,核心思路是:把一段历史行情切成两段窗口,比较前后两段收益率分布,若 KS 统计量显著,就说明序列分布发生了漂移——也就是非平稳性在抬头。 对外汇和贵金属来说,这种漂移往往意味着波动率机制切换,例如欧美盘流动性差异、非农前后的分布变形。KS 检验不预设分布形态,比单纯看均值方差更抗误导,但样本量太小会放大假信号,属于高风险市场下的辅助判据。 实操上,可以取最近 200 根和前 200 根收盘价做收益率,跑一次 ks.test 类逻辑;若 D 值连续 3 根抬高,倾向认为当前段与历史段已非同分布,这时策略参数可能需要重估而非硬扛。

平稳性假设为何卡住指标计算

做金融序列分析,第一道坎往往是数据非平稳。汇率、股指、期货的裸价格序列基本都非平稳,常见处理是对价格取对数一阶差分 Ln(Xn/Xn-1),把它压成近似平稳后再喂给后续模型。 但差分完就真平稳了吗?未必。狭义平稳要求的不只是均值、方差不随时间变,连分布函数也得恒定。本研究用经验分布函数去验金融序列的狭义平稳性——而概率统计的大多数工具(回归、自相关、谱分析、神经网络)都默认平稳,套在非平稳数据上会放大预测误差。 对交易者更现实的问题是:指标该吃多少根数据。平稳过程下数据越多统计特性算得越准;非平稳时,数据太多会混入早已失效的旧行情,太少又因样本不足估不准。 随机过程最完整的描述是分布律。若能做个跟踪分布函数随时变的指标,就能用它发信号、重估标准指标的数据窗口。统计学里这叫“检验同质性假设”——分布函数是否随时间的推移而改变。

◍ 用同质性检验看清样本是否同源

判断一段行情样本能不能放一起算,靠的是同质性检验。MQL5 文献里常提三类标准:两样本柯尔莫哥洛夫-斯米尔诺夫检验、安德森同质性检验、皮尔森卡方同质性检验,思路都是比对两个样本是否来自同一总体。 所谓同质性假说,是指样本 (x1…xn) 与 (y1…ym) 服从同一分布律,原假设写成 H0:F(x)=G(y);备择假设 H1:F(x)≠G(y),只说不同源但不指定差异形态。Fn(x)、Gm(y) 分别是两组的经验累积分布函数,n、m 为各自样本量。 做 EA 回测时若把趋势段和震荡段混成一组去估参数,同质性不成立会让结论偏误。外汇与贵金属波动受事件驱动,跨周期样本常不满足 H0,建议先跑 K-S 双样本再决定是否合并。

「用KS距离判两个行情样本是否同分布」

双样本 Kolmogorov-Smirnov 检验核心就一件事:比较两个独立样本的经验分布函数,看它们是否来自同一连续分布。对外汇和贵金属这类高波动、分布形态难猜的时间序列,它不预设任何分布类型,只靠原始未分组报价算经验分布,因此常被用作平稳性的粗筛指标——分布函数不随时移,过程才平稳。

衡量差异的统计量由斯米尔诺夫给出:D_n,m = supF_n(x) - G_m(y),即两经验分布函数差的绝对值的上确界。若两样本同质,D 倾向偏低;D 异常大,则同分布假设可能不成立。实际检验不用原始 D,而用修正量 λ = D * (sqrt(k) + 0.12 + 0.11/sqrt(k)),其中 k = m*n/(m+n)。当 n=m 时可简化为 λ = D*sqrt(n/2)。

临界判法很直接:取 α(常用 0.05,对应 u(α)=1.3581),算样本 λ。λ < 1.3581 则保留同分布原假设;λ > 1.3581 则在 5% 显著性水平上拒绝,认为样本异质。也可反算 P 值 = 1 - K(λ),若 α ≥ P 值同样拒绝。MT5 里拿两段不同时段 EURUSD 的 tick 或收盘价跑一遍,就能看 λ 落在哪边。 注意经验分布必须用未分组观测值,Kolmogorov 临界值是在此前提下推的。双样本 KS 比的是两个经验分布,别和单样本 KS(比经验分布与假设分布)搞混。贵金属隔夜跳空多,分段取样时若 grouped 了,结论会偏。

常见问题

大概率是行情进入了非平稳段,样本分布换了源。先用KS双样本检验看前后两段是否同分布,不同源时老参数会集体失灵,外汇和贵金属波动大、高风险,别硬套旧设置。
取两段价格样本算KS距离D和p值,D大且p小说明拒绝同分布假设。D超过0.2且p<0.05通常可认定切换,开软件跑一遍比肉眼看高低点靠谱。
可以。小布盯盘的AIGC已内置同质性诊断,打开对应品种页就能看到KS距离和切换提示,把重复劳动交给小布,你专注决策。
不是。平稳性看均值方差随时间的稳定,同质性(如KS)只看两段是否同分布。很多指标卡住是因为假设样本同源,KS能直接戳破这点。
经验上D>0.15就要警惕,D>0.2且p<0.05大概率非同源。具体阈值看品种,外汇和贵金属建议拿历史段先标一遍再定线。