美股和港股的量化笔记-从下载逐笔tick到合成分钟

做量化回测,选对数据源和数据类型真的太重要了,搞不好就是白忙活一场。今天就来聊聊我平时会用到的几种高频数据,主要是美股和港股的,看看它们里面到底有什么,应该怎么用。

先从最"重"的Tick数据说起

这玩意儿是硬盘杀手,真不是开玩笑的。Tick数据,也叫逐笔成交,就是交易所每发生一笔成交就记录一次。它记录的是最原始的交易行为。

我一般会关注这几个核心字段:

字段 说明(我自己的理解)
symbol 股票代码,这个不用多说。
time 成交时间,通常精确到毫秒甚至微秒。市场微观结构研究就靠这个了。
price 成交价格。
volume 成交数量。注意,这里是一笔的成交量,不是累计的。
turnover 成交金额,就是 price * volume。
bs_flag 买卖方向标识。这个很重要,能看出是主动性买盘还是卖盘推动的成交,分析资金流向的核心。

新手千万别一上来就怼着几年的Tick数据跑回测,光是数据清洗和存储就能劝退。我之前为了研究订单薄动态,尝试用免费的原始数据,结果光是处理停牌、除权除息这些脏活就花了一周。后来图省事,直接用了CMES金融数据库里已经清洗和复权好的版本,虽然要花点积分,但省下的时间成本更值。

十档行情(Level 2)

如果说Tick是"成交"的明细,那十档行情就是"挂单"的快照。它定时(比如每秒多次)拍下市场上最好的十个买价和卖价,以及每个价位上挂了多少手单子。

它最有价值的地方是能让你看到盘口深度,而不仅仅是买一卖一。比如,有时候股价在关键位置横盘,你看买一挂单量很大,以为是强支撑,但一看十档,发现卖二到卖五的累积压单更重,这可能就是个假象。

主要字段包括快照时间、十个买卖价位和对应的挂单量。很多短线策略,比如捕捉流动性瞬间消失,或者估算大单冲击成本,都离不开这个。

分钟线数据:回测的好朋友

对于大多数策略回测来说,分钟线是性价比最高的选择。它把Tick数据按分钟做了聚合,信息量大幅压缩,但保留了日内走势的关键细节。

一分钟K线通常包含:时间(哪一分钟)、开盘价、最高价、最低价、收盘价,以及这一分钟内的总成交量和成交额。

如果你想做日内趋势或者均值回复策略,用分钟线数据就足够了。比如,我之前想验证一个基于开盘后30分钟波动率的突破策略,就是调取了过去几年的港股分钟线,跑起来效率很高。

美股和港股有啥不同?

数据字段大同小异,但规则细节要注意。比如,美股没有涨跌停板,波动更连续,Tick数据会更密集。港股交易时段和规则也和A股不同,数据的时间戳处理要留意。

这里给个用Python接口获取数据的简单例子,接口文档在他们官网都能找到。用之前记得先pip install一下。

python 复制代码
# 示例:获取港股腾讯控股的分钟线数据
# 注意:需要先在CMES金融数据库官网获取API Key和Secret
import cmes_data

# 初始化客户端,注意替换成你自己的密钥
client = cmes_data.Client(api_key='你的API_KEY', api_secret='你的API_SECRET')

# 请求数据,注意参数别写错,频率别调太高,小心被限流
data = client.get_bar_data(
    symbol='00700.HK',  # 股票代码
    frequency='1m',     # 频率:1分钟
    start_time='2024-05-20 09:30:00',
    end_time='2024-05-20 16:00:00',
    adjust='qfq'        # 前复权
)

print(data.head())
# 通常返回DataFrame,包含时间、开高低收、成交量等字段

最后碎碎念几句

  1. 数据量:Tick > 十档 > 分钟线。选数据前先评估自己的硬件和需求。
  2. 数据质量:时间戳是否连续?是否有异常值(比如价格为零)?是否做了复权处理?这些直接影响回测结果。自己清洗很痛苦,所以我现在倾向于用现成的清洗好的数据源。
  3. 合规性:在公开平台分享策略时,注意只展示思路和逻辑,不要透露具体的数据接口密钥、原始数据切片等敏感信息,各平台对金融数据的分享都有审核规则。

大概就这些了。数据本身只是原料,关键还是看你的策略想法。不过,用好原料确实能少走很多弯路。如果大家对处理高频数据有什么心得,或者知道怎么高效压缩存储,欢迎聊聊,我最近正为这个头疼呢。

相关推荐
六点_dn2 小时前
Linux学习笔记-shell运算符
linux·笔记·学习
降临-max3 小时前
软件测试基础---项目实战
软件测试·笔记·功能测试·测试用例
Web3李李3 小时前
DApp核心安全漏洞与项目方全方位防护指南
web3·区块链·智能合约·软件开发·dapp开发·安全审计
鱼子星_4 小时前
【C++】内存管理:内存分布,new/delete的使用及细节处理,new/delete的底层,定位new表达式
开发语言·c++·笔记
愚昧之山绝望之谷开悟之坡4 小时前
回购逆回购
笔记
鱼子星_4 小时前
【C++】string(上):string的基本使用
c++·笔记·字符串
AOwhisky4 小时前
Python 学习笔记(第四期)——字符串:格式化、操作与文本处理——核心知识点自测与详解
开发语言·笔记·python·学习·列表·元组·字典
chnyi6_ya4 小时前
论文阅读笔记 | VIDEOPHY: Evaluating Physical Commonsense for Video Generation
论文阅读·笔记
AOwhisky5 小时前
Python 学习笔记(第六期)——函数:定义、参数传递与作用域
笔记·python·学习·云原生·运维开发·函数·参数传递
玖玥拾5 小时前
Unity 3D 基础(一)Unity基础架构、物理系统、视觉渲染、空间变换与对象查询
笔记·游戏·3d·unity·游戏引擎