You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

识别近100%逆相关两交易标的同向涨跌K线的实现方法

高负相关交易对逆相关失效K线筛选实现

核心逻辑

两个接近100%逆相关的标的,正常波动下收盘价涨跌方向永远相反,只要出现同涨、同跌,就属于相关性失效的K线,筛选逻辑完全不需要复杂的统计计算,按方向匹配即可。

  • 前置数据准备
    先把两个交易标的同周期K线按时间戳完全对齐,剔除单边缺失的停牌、非交易时段数据,两个标的的价格复权规则必须统一(全用前复权/全用后复权/全用不复权,混着用结果必错),核心保留时间戳、收盘价两个字段就行。
  • 涨跌方向标记
    对每个标的,逐根K线对比当前收盘价和前一根K线的收盘价,打方向标签:
    • 收盘价高于前一根:标记为1(上涨)
    • 收盘价低于前一根:标记为-1(下跌)
    • 收盘价和前一根持平:标记为0(平盘)
  • 失效K线筛选规则
    正常逆相关场景下,两个标的同时间K线的方向标签乘积固定为-1(一涨一跌),不符合这个规则的就是目标K线:

    严格失效:两个标的方向标签乘积为1,即同涨(都为1)或同跌(都为-1)
    弱失效:任意一个标的方向标签为0(平盘),此时没有呈现严格的反向波动,可按需决定是否纳入统计

  • 结果校验
    因为两个标的接近100%逆相关,正常筛出来的严格失效K线占比应该在1%以内,如果结果占比过高,第一时间检查数据对齐逻辑、复权规则、时间周期是否匹配,90%以上的错误都是数据预处理环节没做到位导致的,比如混用复权规则、跨时区对齐K线、把不同周期的K线拼到一起,别上来就怀疑相关性逻辑。

参考实现代码(Pandas)

import pandas as pd

# df为预先对齐好的K线数据集,列名对应:时间戳ts、标的A收盘价close_ticker1、标的B收盘价close_ticker2
# 计算涨跌幅
df['pct_1'] = df['close_ticker1'].pct_change()
df['pct_2'] = df['close_ticker2'].pct_change()

# 生成涨跌方向标签
df['dir_1'] = df['pct_1'].map(lambda x: 1 if x > 0 else (-1 if x < 0 else 0))
df['dir_2'] = df['pct_2'].map(lambda x: 1 if x > 0 else (-1 if x < 0 else 0))

# 筛选严格失效的同涨同跌K线
strict_failure_bars = df[df['dir_1'] * df['dir_2'] == 1]
# 可选:筛选包含平盘场景的所有失效K线
all_failure_bars = df[df['dir_1'] * df['dir_2'] != -1]

内容的提问来源于stack exchange,提问作者Volreed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 12:31:42