常见陷阱
1. 混淆naive datetime(无时区)和aware datetime(有时区)
2. 忽略夏令时调整
3. 跨时区交易时段计算错误
4. 回测数据与实盘数据时间对齐问题
金融市场数据基础
时间戳与时区处理是量化交易系统开发中的关键环节。 全球不同交易所使用不同的时区,错误的时间处理会导致策略失效和交易风险。 本节将详细介绍如何正确处理金融数据的时间戳与时区问题。
从1970年1月1日UTC时间00:00:00开始的秒数或毫秒数:
国际标准时间表示格式,人类可读性强:
| 市场 | 时区 | UTC偏移 | 交易时段 |
|---|---|---|---|
| 中国A股 | CST(北京) | UTC+8 | 09:30-11:30, 13:00-15:00 |
| 美股(NYSE) | EST/EDT | UTC-5/-4 | 09:30-16:00 |
| 伦敦(LSE) | GMT/BST | UTC+0/+1 | 08:00-16:30 |
| 东京(TSE) | JST | UTC+9 | 09:00-15:00 |
| 加密货币 | 全球7×24 | UTC | 无间断 |
import pytz
from datetime import datetime
# 创建时区对象
cst = pytz.timezone('Asia/Shanghai')
est = pytz.timezone('US/Eastern')
# 本地时间转为UTC
local_time = cst.localize(datetime(2024, 1, 1, 9, 30))
utc_time = local_time.astimezone(pytz.UTC)
# 时区转换
us_time = utc_time.astimezone(est)
import pandas as pd
# 创建带时区的时间序列
dates = pd.date_range('2024-01-01', periods=5, tz='Asia/Shanghai')
# 时区转换
dates_utc = dates.tz_convert('UTC')
# 去除时区信息
dates_naive = dates.tz_localize(None)
1. 混淆naive datetime(无时区)和aware datetime(有时区)
2. 忽略夏令时调整
3. 跨时区交易时段计算错误
4. 回测数据与实盘数据时间对齐问题