Pharos
TAStatistics

TA.CORREL() - 皮尔逊相关系数

皮尔逊相关系数 (Pearson's Correlation Coefficient)

计算两个数据序列的线性相关性,用于配对交易和套利策略。

返回统计函数目录


语法

python
TA.CORREL(high, low, timeperiod=30)

参数

参数名类型必选默认值说明
highany-第一个数据序列
lowany-第二个数据序列
timeperiodany-计算周期,默认 30

返回值

返回相关系数数组,范围 -1 到 +1:

  • +1:完全正相关
  • 0:无相关
  • -1:完全负相关

计算方法

plaintext
r = Σ((x - x̄)(y - ȳ)) / √(Σ(x - x̄)² × Σ(y - ȳ)²)

其中:
x, y = 两个数据序列
x̄, ȳ = 平均值

信号解读

相关系数关系应用
0.8 ~ 1.0强正相关配对交易、套利
0.5 ~ 0.8中等正相关组合优化
-0.5 ~ 0.5弱相关/无关分散投资
-0.8 ~ -0.5中等负相关对冲策略
-1.0 ~ -0.8强负相关反向套利

基础示例

双资产相关性分析

python
def main():
    while True:
        # 获取BTC数据
        records_btc = exchange.GetRecords()
        
        # 切换到ETH
        exchange.IO("currency", "ETH_USDT")
        records_eth = exchange.GetRecords()
        exchange.IO("currency", "BTC_USDT")
        
        if len(records_btc) < 50 or len(records_eth) < 50:
            Sleep(1000)
            continue
        
        btc_close = [r['Close'] for r in records_btc]
        eth_close = [r['Close'] for r in records_eth]
        
        # 计算30周期相关性
        correl = TA.CORREL(btc_close, eth_close, 30)
        
        Log(f"BTC-ETH 相关系数: {correl[-1]:.3f}")
        
        if correl[-1] > 0.8:
            Log("✅ 强正相关,适合配对交易")
        elif correl[-1] > 0.5:
            Log("📊 中等正相关")
        elif correl[-1] < -0.5:
            Log("⚠️ 负相关,可能对冲")
        else:
            Log("💤 弱相关或无关")
        
        Sleep(60000)

高级应用

配对交易策略

python
def main():
    while True:
        # 获取两个相关资产
        records_btc = exchange.GetRecords()
        exchange.IO("currency", "ETH_USDT")
        records_eth = exchange.GetRecords()
        exchange.IO("currency", "BTC_USDT")
        
        if len(records_btc) < 100 or len(records_eth) < 100:
            Sleep(1000)
            continue
        
        btc_close = [r['Close'] for r in records_btc]
        eth_close = [r['Close'] for r in records_eth]
        
        # 计算相关性
        correl = TA.CORREL(btc_close, eth_close, 30)
        
        # 只在高相关时交易
        if correl[-1] > 0.8:
            # 计算价格比率
            ratio = [btc_close[i] / eth_close[i] for i in range(len(btc_close))]
            ratio_ma = sum(ratio[-30:]) / 30
            ratio_std = TA.STDDEV(ratio, 30)[-1]
            
            # Z-score
            z_score = (ratio[-1] - ratio_ma) / ratio_std
            
            Log(f"相关性: {correl[-1]:.3f}")
            Log(f"比率 Z-score: {z_score:.2f}")
            
            # 交易信号
            if z_score > 2:
                Log("✅ BTC相对超买,做空BTC做多ETH")
            elif z_score < -2:
                Log("✅ BTC相对超卖,做多BTC做空ETH")
        
        Sleep(60000)

相关性变化监控

python
def main():
    while True:
        records_btc = exchange.GetRecords()
        exchange.IO("currency", "ETH_USDT")
        records_eth = exchange.GetRecords()
        exchange.IO("currency", "BTC_USDT")
        
        if len(records_btc) < 100:
            Sleep(1000)
            continue
        
        btc_close = [r['Close'] for r in records_btc]
        eth_close = [r['Close'] for r in records_eth]
        
        # 短期和长期相关性
        correl_short = TA.CORREL(btc_close, eth_close, 10)
        correl_long = TA.CORREL(btc_close, eth_close, 50)
        
        Log(f"短期相关性 (10): {correl_short[-1]:.3f}")
        Log(f"长期相关性 (50): {correl_long[-1]:.3f}")
        
        # 相关性变化
        if correl_short[-1] > correl_long[-1] + 0.2:
            Log("📈 相关性增强")
        elif correl_short[-1] < correl_long[-1] - 0.2:
            Log("📉 相关性减弱")
        
        Sleep(60000)

参数优化建议

周期推荐值适用场景
短期10-20短线配对交易
中期30-50波段套利
长期60-100组合优化

与其他指标配合

相关性 + 价格比率

python
correl = TA.CORREL(btc_close, eth_close, 30)
ratio = [btc_close[i] / eth_close[i] for i in range(len(btc_close))]

# 高相关 + 比率偏离
if correl[-1] > 0.8:
    # 计算比率偏离
    pass

相关性 + 标准差

python
correl = TA.CORREL(btc_close, eth_close, 30)
std_btc = TA.STDDEV(btc_close, 30)
std_eth = TA.STDDEV(eth_close, 30)

# 相关性 + 波动性分析

注意事项

  1. 非线性关系:CORREL只衡量线性相关,可能遗漏非线性关系
  2. 滞后性:相关性是历史统计,未来可能改变
  3. 虚假相关:相关不等于因果
  4. 周期敏感:不同周期相关性可能差异很大
  5. 极端值影响:异常值会显著影响相关系数
  6. 平稳性要求:最好在价格平稳序列上计算

相关指标

实战要点

配对交易条件

✅ 相关性 > 0.8(强正相关) ✅ 价格比率偏离均值 > 2σ ✅ 两资产流动性充足 ✅ 交易成本可控

风险控制

  • 相关性降低时及时止损
  • 设置比率偏离的最大容忍度
  • 监控相关性变化趋势
  • 避免在相关性不稳定时交易

返回统计函数目录 | 返回 TA 指标总目录