两样本Kolmogorov-Smirnov检验作为时间序列非平稳性的指标·进阶篇
📘

两样本Kolmogorov-Smirnov检验作为时间序列非平稳性的指标·进阶篇

第 2/2 篇

用弹珠排队理解 KS 检验的距离逻辑

把两个品种的历史报价样本想象成两袋弹珠,各自按数值从小到大排成一行。KS 检验干的事,就是逐位比对两行里相近数值所在的位置差。 比如 A 样本某个价位排第 5 位,B 样本相近价位排第 20 位,位置距离就是 15(20-5)。这个距离不是价格差,而是排序位次差,反映两个样本在分布形态上的错位程度。 遍历所有相近弹珠后取最大位置距离 D。临界值由样本量 n 决定,经验近似为 1.36/√n(95% 置信)。若 D 超过该值,两样本分布可能存在显著差异;若全程位次都贴得近,则倾向来自同一分布。 外汇与贵金属波动受杠杆和流动性影响,分布漂移频繁,KS 只能给概率性判断,不能直接当作方向信号。

◍ KS检验在相关与真实行情下的失真边界

先用独立增量的平稳过程打底:生成1000条各1440点的序列,分别取正态与均匀分布。在α=0.05下,两类样本拒绝同质性原假设的次数都不超50次(50/1000=0.05),其Smirnov距离的经验密度与Kolmogorov分布吻合,说明独立时检验标尺是准的。 换上相关过程就变样。逻辑映射 Xn=4*Xn-1*(1-Xn-1) 虽自相关近零却含非线性依赖,假阳性率升到58/1000=0.058;一阶自回归 AR_t=0.5*AR_t-1+e_t(e_t为标准高斯白噪)更夸张,误拒率250/1000=0.25,是允许水平的五倍。KS检验在这里把相关当成了非平稳。 真实分钟线进一步拉开差距。XAUUSD_M1 的 H1/样本=466/1000=0.46,EURUSD_M1 则到640/1000=0.64,密度函数明显偏离Kolmogorov形态。外汇与贵金属属高风险品种,即便做一阶差分,增量分布仍可能时变,KS的大偏离里混着依赖性与非平稳两块,实盘没法干净拆开。 对照实验摆了俩异质正态:N(0,1) 对 N(0.1,1.2),原假设被推翻980/1000=0.98。可见KS对分布参数微移极敏感——真有偏移时它够狠,但在相关或时变数据上,这把尺子量的是「非独立+非同质」的混合体,不能单读作趋势突变信号。

「用 iSmirnovDistance 抓日间的分布漂移」

iSmirnovDistance 不吃跨日重叠数据,只拿相邻两个交易日各自的 5 分钟序列做 Smirnov 检验,品种必须挂在日线周期上跑,底层却读同一品种的 M5。外汇对每天 M5 约 287 根,我设了 270 根的下限,哪天样本不够就直接把指标值置 0,避免拿残缺数据骗信号。 每个交易日开盘,指标给出的是前两个交易日算出的 Smirnov 统计量。唯一能调的参数是 α 显著性水平,这版写死 0.05。窗口里的蓝色虚线就是 u(α=0.05) 的临界距离,按 λ=D·√(n/2) 反推:Kolmogorov 分布 λ 临界值 1.3581,n=287,得 D=1.3581/√(287/2)=0.1133。实算值越线,说明两段分布结构可能质变;压在蓝线下方视为同质。 时间周期选错会废掉这个指标。M1 一天 1440 点,序列非平稳很强,同质假设被推翻得频繁;M5 只有 287 点,平稳得多,翻车频率明显下降。样本量从 287 涨到 1440,原假设被拒的概率跟着升,所以 M1 图表里同质性破功是常态。贵金属与外汇杠杆品种波动突变多,用这指标先开 MT5 挂日线验证自己品种的 M5 越线频率,再决定是否跟。

把工具请下神坛

对数价格增量的平稳性检验在分钟周期上已被数值计算否定,五分钟周期虽比分钟图更靠近平稳,但非平稳特征依旧存在。这意味着任何依赖固定样本量的指标逻辑,在外汇与贵金属这类高风险市场里都该打问号。 iSmirnovDistance 给出的答案是:计算所需数据量不是常数,而是两次推翻同质性原假设之间的动态窗口。原假设未被推翻前样本累积,推翻后旧数据废弃重算,这正贴合非平稳随机过程的性质。 作者与评论区也点明,从非平稳序列里剥出的平稳段往往只是历史回看,对实盘没有直接用处;利润才是终极判据,但利润本身不提供何时非平稳的信号。开 MT5 把 Script_SmirnovD.mq5 跑一遍 EURUSD 分钟数据,你能直接看到假设被推翻的频率,比读结论更实在。

常见问题

把两组样本想成两排弹珠,KS统计量就是两排累积占比曲线拉开最宽的那一下的间距,间距越大说明分布偏移越明显。
当品种间高度联动时,边缘分布形状相似但时序错位,KS只比静态分布会漏掉结构变化,失真边界通常在相关系数高于0.8时显著扩大。
小布可在对应品种页直接跑iSmirnovDistance类诊断,把日间分布距离画成曲线,你只需看阈值突破而不用手写代码。
实战中常用20~60根日线作滑动窗,窗太短噪声大、太长滞后高,可先以30日回看做基准再微调。
分布漂移领先或独立于价格突破,属概率预警而非买卖指令,外汇贵金属高风险下应等价格结构确认再动。