研究背景
在港股相关量化策略研发过程中,行情数据的时效性直接决定回测有效性与实盘信号的可信度。不少策略研究者在项目初期,会采用 HTTP 定时轮询的方式拉取港股行情快照。当观测标的数量有限时,该方式可以满足基础演示需求。
但随着策略覆盖标的扩容,同时对数据同步精度提出更高要求,轮询方案的固有缺陷便会暴露。港股交易时段内,成交价、成交体量持续发生变动,一旦行情数据流存在同步延迟,会直接造成盘口指标计算偏差,进而干扰回测结果,对策略有效性评估形成误导。本文结合项目研发沉淀,围绕港股 API 的实时行情接入方案,梳理选型逻辑、隐性风险以及面向回测与策略建模的数据处理要点。
实时行情接入过程中的典型数据问题
从实际项目复盘来看,港股行情管线的故障很少源于接口握手失败,更多集中在数据接收完成之后的处理环节,这类问题大多不会抛出崩溃级报错,容易在策略回测阶段才被发现。
- 时间格式异构带来时序偏移 不同行情数据源输出的时间字段格式并不统一,部分返回时间字符串,部分直接输出时间戳。如果没有执行全局归一化处理,在构建 1 分钟 K 线、小时 K 线数据集时,会发生样本点位错位,破坏时间序列连续性,直接影响因子计算与回测统计。
- WebSocket 长连接静默断连 网络波动、服务实例重启都会造成 WebSocket 会话意外终止。若策略代码没有配套自动重连与状态校验逻辑,程序会持续使用过期行情快照,无明显告警输出,研究者很难及时感知数据流已经中断。
- 高频 Tick 推送引发计算过载 港股 Tick 推送密度较高,如果每接收一条报文就立刻执行因子运算、条件判断等重型业务逻辑,在行情剧烈波动的时段,海量报文集中涌入,会抬高服务器负载,造成任务阻塞,影响整套策略管线稳定运行。工程上更推荐先完成数据缓存,再按照业务周期批量处理。
行情接入方案选型与核心报文字段
通过港股 API 获取市场数据,主流分为 HTTP 短请求与 WebSocket 长连接两种实现路径,二者适配不同的量化研究场景。
- HTTP 接口:实现逻辑简单,适合历史行情查询、标的基础档案读取、日线与历史成交记录获取等低频业务,单次请求即可获取完整返回结果,并不适合盘中高频实时同步。
- WebSocket 长连接:更适配实时行情采集场景。会话建立后由服务端主动持续推送增量行情,客户端无需反复发起请求。在同时观测多只港股标的的场景下,能够减少无效网络开销,保障盘中行情持续同步。
解析 Tick 报文时,需要重点关注 4 个关键字段,也是后续建模、回测的基础原始素材:
symbol:股票代码price:最新成交价volume:成交数量timestamp:行情时间戳
上述字段既可以用于盘口指标实时计算,也可以持久化存储,为 K 线合成、样本数据集构建、策略回测提供原始输入。
本次方案验证工作使用作为港股 Tick 行情数据源,接口返回报文自带完整基础字段,便于开展报文校验与预处理流程。
# WebSocket港股Tick基础订阅演示代码
import websocket
import json
def on_message(ws, message):
data = json.loads(message)
symbol = data.get("symbol")
price = data.get("price")
volume = data.get("volume")
timestamp = data.get("timestamp")
print(f"{symbol} price:{price} volume:{volume} time:{timestamp}")
def on_open(ws):
sub_payload = json.dumps({"action":"subscribe","symbol":"00700","type":"tick","id":1})
ws.send(sub_payload)
def on_error(ws, error):
print("error:", error)
def on_close(ws, close_code, close_msg):
print("connection closed")
if __name__ == "__main__":
ws_app = websocket.WebSocketApp("wss://api.alltick.co/ws",
on_open=on_open,
on_message=on_message,
on_error=on_error,
on_close=on_close)
ws_app.run_forever()
说明:该片段仅为基础订阅演示。面向策略研究、回测仿真的运行环境,需要自行实现断线重连、内存缓冲队列、异常报文检测等逻辑,保障数据流长期稳定输出。
面向量化研究的数据质量优化要点
仅完成行情报文接收,只能实现基础的价格读取。如果用于因子建模、策略回测,对数据集质量会有更高标准,结合研发实践,可以从四个方向做优化:
- 统一时间体系 对全部流入系统的港股行情做时间格式归一,规避多源数据混合引入的时序偏移,保证回测数据集时间基准统一。
- 异常、缺失样本识别 增加检测逻辑,识别异常报价与数据缺口,对异常样本做标记或者过滤,减少脏样本对模型训练、回测统计的干扰。
- 分层持久化存储 根据研究需求,选择性保存不同时间粒度的行情数据,避免无差别全量存储,合理控制存储资源开销。
- 实时‑历史数据结构对齐 保持实时推送 Tick 与离线历史数据集字段结构一致,降低策略代码在实盘、回测两套环境下的适配成本。
研究小结:港股 API 只是原始行情的获取入口。港股市场行情变化迅速,策略的可靠性取决于数据接收、预处理、持久存储的整条链路。只有把每一个环节处理到位,才能够支撑指标建模、样本回测、实盘仿真等量化研究工作。
研究交流
各位策略研究者在搭建港股实时行情管线的过程中,在 API 选型、时间归一处理、WebSocket 断线容错方面遇到过哪些问题?在回测数据集清洗方面有哪些实践思路,欢迎在评论区分享工程经验与调优方案。

