第二章:全球市场格局——主要交易所、交易品种与交易时间差异
做跨市场套利,第一件事不是写代码,而是搞清楚你面对的是哪些市场。
我见过不少新手,策略逻辑写得漂漂亮亮,一上线就亏钱。为什么?因为连伦敦和纽约的结算时间都没搞明白。嗯,这章我们就来把这些基础打扎实。
2.1 全球主要交易所一览
全球金融市场,说白了就是几个核心枢纽在转。我个人习惯把它们分成三大阵营:
- 北美阵营:NYSE、NASDAQ、CME Group
- 欧洲阵营:LSE、Eurex、Euronext
- 亚太阵营:HKEX、TSE、SGX、上期所、大商所
你想想看,这些交易所的交易时间互相错开,正好给我们留下了套利窗口。比如美股收盘后,亚太市场才开始活跃——这中间的价格差异,就是机会。
核心观点:跨市场套利的本质,是利用同一资产在不同市场的定价差异。而时间差,是最大的套利催化剂。
2.2 交易品种的差异与映射关系
同一个标的,在不同市场可能以不同形式存在。比如:
- 沪深300指数:国内有股指期货(IF),新加坡有A50期货
- 黄金:COMEX有黄金期货,上海金交所也有黄金T+D
- 原油:WTI在NYMEX,布伦特在ICE
我在项目中遇到过一个问题:同一时刻,A50期货和IF期货的价差突然拉大。表面看是套利机会,但仔细一查——A50是美元计价,IF是人民币计价,汇率波动直接把利润吃掉了。所以,品种映射必须考虑计价货币。
我的习惯:做跨市场套利前,先建一张映射表,把每个品种的交易所、计价货币、最小变动价位、交易时间都列清楚。这张表就是你的作战地图。
2.3 交易时间差异——套利的时间窗口
全球市场的时间差异,是套利策略的核心参数。我整理了一张常用表:
| 交易所 | 当地时间(开-收) | 北京时间(夏令时) | 备注 |
|---|---|---|---|
| NYSE/NASDAQ | 09:30 - 16:00 | 21:30 - 04:00 | 夏令时 |
| CME(股指期货) | 几乎24小时 | 06:00 - 次日05:00 | 有15分钟休市 |
| LSE | 08:00 - 16:30 | 15:00 - 23:30 | 夏令时 |
| HKEX | 09:30 - 16:00 | 09:30 - 16:00 | 无时差 |
| SGX | 08:30 - 17:15 | 08:30 - 17:15 | 无时差 |
| 上期所 | 09:00 - 15:00 | 09:00 - 15:00 | 有夜盘 |
为什么会这样?因为全球市场是接力赛。亚洲收盘后,欧洲开盘;欧洲收盘后,美洲开盘。这个接力过程中,信息传递有延迟,价格发现也有滞后。
我曾经踩过的坑:有一次做黄金跨市场套利,COMEX和上海金交所的价差看起来有0.5%。我直接下单了,结果发现上海金交所的夜盘交易时间比COMEX早收盘半小时。那半小时里,COMEX价格剧烈波动,我这边却无法平仓。嗯,从那以后,我每次都会把交易时间的重叠窗口精确到分钟。
2.4 知识体系结构图
下面这张图,是我自己梳理的全球跨市场套利的知识框架。你可以把它当作本章的总结:
2.5 实战中的时间管理
我个人习惯用UTC时间做统一基准。所有交易所的时间都转成UTC,这样就不会被夏令时搞晕。代码里我会这样写:
# 统一使用UTC时间做套利窗口判断
import pytz
from datetime import datetime
utc_now = datetime.now(pytz.UTC)
# 判断CME是否在交易时间
cme_open = utc_now.hour >= 11 or utc_now.hour < 4 # 夏令时简化版
if cme_open:
print("CME正在交易,可以执行套利策略")
else:
print("CME休市中,等待下一个窗口")
你想想看,如果不用UTC,光夏令时切换就能让你头大。我见过有人因为夏令时没调,策略提前一小时启动,结果市场还没开盘,白白浪费了交易次数。
避坑指南:我曾经在3月第二个周日吃过亏。那天美国进入夏令时,CME的开盘时间从北京时间22:30变成了21:30。我的策略没更新,结果错过了开盘那波最肥的套利机会。现在我的代码里都会写一个夏令时自动检测函数。
2.6 小结
全球市场格局,说白了就是一张时间地图。你要知道每个市场几点开门、卖什么东西、用什么货币结账。把这些基础打牢,后面的策略才能站得住脚。
嗯,这章就到这里。记住:套利不是比谁跑得快,而是比谁看得准。