每天早上打开行情软件,很多人会先看隔夜美股。
纳斯达克大涨,大家会期待 A 股科技股高开;恒生科技下跌,很多人会担心港股互联网和 A 股成长板块承压;美股半导体走强,又会有人去看 A 股芯片股。
这些判断听起来很合理,但问题是:它们到底有多可靠?
市场之间确实会互相影响,但影响不是一句“美股涨,A 股就涨”这么简单。不同市场有时同向,有时背离;有时隔夜影响明显,有时完全被本地政策和资金面覆盖。
这篇文章用 QuantDash 做一次跨市场相关性分析:把 A 股 ETF、美股 ETF、港股标的放到同一个 DataFrame 里,计算收益率相关性、滞后相关性和滚动相关性。我们不靠感觉判断市场联动,而是用数据看关系到底强不强。
一、 为什么要做跨市场分析
如果你只交易 A 股,为什么还要看美股和港股?
因为市场不是孤立的:
- 美股影响全球风险偏好;
- 港股和 A 股有大量共同行业和共同公司;
- 美元、利率、科技股、商品价格都会跨市场传导;
- ETF 和指数产品让资金流动更加全球化;
- 重大事件发生时,开盘时间更早的市场会先反映信息。
但跨市场分析最容易犯的错误是过度简化。例如:
| 美股大涨,A 股第二天会涨 | 哪个指数?多大涨幅?胜率多少? |
| 港股科技能预判 A 股科技 | 相关性稳定吗?有没有阶段失效? |
| A 股跟美股关系不大 | 是全市场不大,还是某些行业不大? |
| 全球市场越来越同步 | 同步性是长期提高,还是只在危机时提高? |
这些问题都可以用数据检验。
二、 QuantDash 为什么适合做这个实验
跨市场分析最麻烦的不是相关性公式,而是数据对齐。
你需要处理:
- A 股代码格式;
- 美股代码格式;
- 港股代码格式;
- 不同市场交易日不同(休市安排差异);
- 时区和收盘时间不同;
- 字段命名不同;
- 批量获取和复权方式。
QuantDash 的优势在于使用同一套 Python SDK 统一暴露 A 股、ETF、美股、港股数据。代码格式非常统一:
| A 股 ETF | 沪深 300 ETF | 510300.SH |
| A 股 ETF | 芯片 ETF | 159995.SZ |
| 港股 | 腾讯控股 | 00700.HK |
| 美股 | 纳斯达克 100 ETF | QQQ.US |
| 美股 | 标普 500 ETF | SPY.US |
更重要的是,使用 QuantDash 批量接口,可以一次把三地市场的数据拉取回来,并直接返回结构统一的 Pandas DataFrame。
三、 实战代码:获取跨市场数据并对齐
1. 环境准备
pip install quantdash pandas numpy matplotlib seaborn
2. 数据提取与清洗代码
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
from quantdash import QuantDash
# 1. 初始化 QuantDash SDK (可使用环境变量 QUANTDASH_API_KEY)
qd = QuantDash(api_key="your_api_key")
# 2. 定义分析标的列表 (涵盖 A股ETF、港股股票、美股指数ETF)
symbols = [
"510300.SH", # A股 沪深300 ETF
"159995.SZ", # A股 芯片 ETF
"00700.HK", # 港股 腾讯控股
"QQQ.US", # 美股 纳斯达克100 ETF
"SPY.US" # 美股 标普500 ETF
]
# 3. 批量拉取日 K 线数据
dfs = qd.klines.batch(
symbols=symbols,
period="1d",
count=500,
adjust="forward",
to_dataframe=True
)
# 4. 提取收盘价并合并为一个宽表 DataFrame
close_prices = {}
for sym, df in dfs.items():
if not df.empty:
# 使用 trade_date 作为索引
close_prices[sym] = df.set_index("trade_date")["close"]
data = pd.DataFrame(close_prices)
# 5. 跨市场交易日对齐(用前向填充 ffill 处理节假日差异,再删除全 NaN 行)
data = data.sort_index().ffill().dropna()
# 6. 计算每日对数收益率
returns = np.log(data / data.shift(1)).dropna()
print(">>> 清洗后的各市场收益率前 5 行:")
print(returns.head())
四、 跨市场相关性三大维度分析
1. 基础相关性矩阵 (Pearson Correlation)
计算收益率直接相关系数并绘制热力图:
# 计算 Pearson 相关性矩阵
corr_matrix = returns.corr()
# 绘制热力图
plt.figure(figsize=(8, 6))
sns.heatmap(corr_matrix, annot=True, cmap="coolwarm", vmin=–1, vmax=1, fmt=".2f")
plt.title("Cross-Market Return Correlation Matrix")
plt.show()
数据观察:
- 同市场/同属性资产:相关性极高(如 QQQ.US 与 SPY.US 相关系数往往大于 0.85);
- 港股:港股(00700.HK)与美股科技(QQQ.US)以及 A 股(510300.SH)均保持中度相关(0.4~0.6),充当了传导桥梁;
- A 股与美股:A 股宽基(510300.SH)与美股(SPY.US / QQQ.US)同日的直接收益率相关性并不高(常低于 0.3)。
2. 隔夜与滞后相关性 (Lag Correlation)
由于美股交易时间在夜间(北京时间),美股表现对第二天开盘的 A 股/港股是否有引导作用?我们需要计算滞后 1 阶(Lag-1)的相关系数。
# 计算美股 QQQ 收益率滞后 1 天与第二天 A股/港股收益率的相关性
returns_shifted = returns.copy()
returns_shifted["QQQ_lag1"] = returns["QQQ.US"].shift(1)
lag_corr = returns_shifted.corr()["QQQ_lag1"]
print(">>> 隔夜美股 QQQ 对各市场次日收益率的相关性:")
print(lag_corr[["510300.SH", "159995.SZ", "00700.HK"]])
实验结论:
- 美股隔夜(QQQ_lag1)对港股次日开盘影响更直接(滞后相关性高于 A 股);
- A 股芯片 ETF(159995.SZ)受到美股科技(QQQ_lag1)隔夜冲击略高于沪深 300,但依然受到国内资金面和开盘跳空高开/低开后的日内消化影响。
3. 滚动动态相关性 (Rolling Correlation)
相关性不是恒定的,在市场牛熊切换或危机时期(如市场暴跌),跨市场相关性会显著上升;而在平淡期,相关性会趋于归零或背离。
# 计算 60 日滚动相关性
rolling_corr = returns["510300.SH"].rolling(window=60).corr(returns["SPY.US"])
plt.figure(figsize=(10, 4))
plt.plot(rolling_corr, label="Rolling 60D Correlation: A-Share (510300.SH) vs US-Share (SPY.US)")
plt.axhline(0, color='red', linestyle='–')
plt.title("Dynamic Rolling Correlation Analysis")
plt.legend()
plt.show()
观察结论:
- A 股与美股的相关性在历史上多次在 -0.2 到 +0.6 之间大幅震荡;
- 这证明“美股跌 A 股必然跌”是过度简化的错误信念,单纯靠单日涨跌预测极易吃套。
五、 投资者得到的几点启发
1.不要盲目根据隔夜美股做 A 股日内追涨杀跌
隔夜美股影响主要体现在 A 股开盘前 15 分钟的跳空(Gap),开盘后走势往往由国内资金和博弈重新主导。追高极易吃套。
2. 港股是极佳的“传导桥梁”
港股兼具外资定价(与美股流动性紧密)和中国资产基本面(与 A 股企业盈利同步),其走势是跨市场资产配置的重要中枢。
3. 全局数据驱动胜过刻舟求剑
借助 QuantDash 统一的 Python SDK,投资者可以轻松对多市场资产建立动态监测,构建定量资产配置组合(如全局风险对冲/跨市场 ETF 轮动)。
网硕互联帮助中心




评论前必须登录!
注册