两样本Kolmogorov-Smirnov检验作为时间序列非平稳性的指标·进阶篇
用弹珠排队理解 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 分钟数据,你能直接看到假设被推翻的频率,比读结论更实在。