第四章:北向资金与大盘指数的联动——沪深300与北向资金净流入的滚动相关性分析、领先滞后关系检验
各位同学,今天我们来聊一个实战中特别关键的问题:北向资金到底能不能带着大盘走?还是说大盘涨了,北向才跟着买?
这个问题,说白了就是「领先滞后关系」。我做了这么多年量化,见过太多人一看到北向资金流入就喊「明天大涨」,结果第二天被市场打脸。嗯,这里面的门道,我们今天用数据把它拆清楚。
4.1 滚动相关性:不是所有时候都「同涨同跌」
先问大家一个问题:北向资金净流入和沪深300指数,它们的相关系数是多少?
如果你直接算全样本的相关系数,大概在0.3到0.5之间。但这玩意儿有个大坑——相关性是随时间变化的。
我2019年刚入行时,拿2017-2019的数据算了个0.6的相关系数,觉得稳了。结果2020年3月全球暴跌那会儿,相关系数直接掉到0.1以下。为什么?因为那时候外资在无差别抛售,跟A股基本面没关系。
所以我们要用滚动窗口来计算动态相关性。我个人习惯用60个交易日(约一个季度)的窗口。
核心结论:滚动相关系数通常在0.2~0.6之间波动。当市场处于趋势行情时,相关性偏高;当市场震荡或出现极端事件时,相关性会骤降。
来看一段Python代码,怎么算这个滚动相关系数:
import pandas as pd
import numpy as np
# 假设 df 包含两列:'hs300' 和 'north_flow'
# hs300 是沪深300日收益率,north_flow 是北向资金净流入(亿元)
window = 60
df['rolling_corr'] = df['hs300'].rolling(window).corr(df['north_flow'])
# 画个图看看
import matplotlib.pyplot as plt
plt.figure(figsize=(12,6))
plt.plot(df.index, df['rolling_corr'], label='60日滚动相关系数')
plt.axhline(y=0, color='r', linestyle='--')
plt.legend()
plt.show()
你想想看,这个滚动相关系数如果突然从0.5掉到0.1,意味着什么?意味着北向资金和指数的联动关系「断开了」。这时候你再按原来的逻辑去交易,大概率要吃亏。
4.2 领先滞后关系:到底谁跟着谁走?
这是今天最核心的内容。我们要回答三个问题:
- 北向资金净流入能否预测明天的沪深300涨跌?
- 沪深300涨跌能否预测明天的北向资金流向?
- 这种关系是稳定的吗?
检验方法很简单——交叉相关分析(Cross-Correlation)。说白了就是把一个序列往前或往后平移,看看哪个方向的相关性最强。
我的经验:在实际项目中,我一般看滞后1到5天的数据。太长的滞后意义不大,因为资金流向的传导效应通常在一周内完成。
代码实现如下:
from statsmodels.tsa.stattools import ccf
# 计算交叉相关
# 正滞后表示:北向资金领先沪深300
# 负滞后表示:沪深300领先北向资金
lags = range(-10, 11)
ccf_values = ccf(df['north_flow'], df['hs300'])
# 只看前10个滞后
for lag in range(1, 11):
print(f"北向领先{lag}天: {ccf_values[lag]:.3f}")
print(f"沪深300领先{lag}天: {ccf_values[-lag]:.3f}")
根据我多年的回测经验,A股市场有一个比较明显的规律:
| 滞后方向 | 典型相关系数 | 解读 |
|---|---|---|
| 北向领先1天 | 0.08~0.15 | 有一定预测能力,但不强 |
| 北向领先2~3天 | 0.05~0.10 | 预测能力减弱 |
| 沪深300领先1天 | 0.12~0.20 | 指数涨跌对北向有较强引导 |
| 沪深300领先2~3天 | 0.06~0.12 | 仍有影响 |
看到了吗?沪深300对北向资金的引导作用,反而比北向对沪深300的引导更强。这跟很多散户的直觉是相反的。
注意:这个结论在2018年之前可能不成立。2017年北向资金刚开通时,确实有明显的领先效应。但随着外资占比提升,市场变得更有效率,领先效应在减弱。
4.3 实战中的「避坑指南」
我曾经犯过一个错误:看到北向资金连续3天净流入超过100亿,就重仓买入。结果第四天市场暴跌,北向资金也跑了。为什么?因为那三天是MSCI调仓,被动资金买入,跟主动交易无关。
所以这里有几个坑,大家一定要避开:
- 不要只看单日数据。单日净流入可能受指数调仓、汇率波动等非交易因素影响。我建议至少看5日移动平均。
- 区分主动和被动资金。MSCI、富时罗素调仓日,北向资金会大幅流入,但这不代表外资看好A股。你可以用「剔除调仓日」的数据做分析。
- 注意市场环境。在单边上涨行情中,北向资金和指数的相关性会很高,但这不代表因果关系。说白了,大家都在买,谁跟谁走说不清楚。
- 警惕「伪领先」。有时候北向资金确实领先了,但领先的幅度很小,而且不稳定。你按这个信号去交易,手续费都不够。
4.4 知识体系框架
下面这张图,我把本章的核心逻辑画出来了。你可以保存下来,以后做分析时对照着看:
4.5 总结一下今天的核心要点
- 滚动相关性比固定相关性更有用,因为它能捕捉市场结构的变化。
- 北向资金对沪深300有一定领先性,但效果有限,而且不稳定。
- 沪深300对北向资金的引导作用更强——说白了,指数涨了,外资才敢买。
- 实战中要剔除调仓日等噪音,用移动平均平滑数据。
嗯,今天就讲到这里。下一章我们会深入讨论北向资金的「聪明钱」属性——它到底是不是真的聪明?我们拿数据说话。
公众号:蓝海资料掘金营,微信deep3321