企业微信

Level2行情数据的基本构成

Level2行情数据超越了传统Level1仅提供买卖五档报价和最新成交的范畴,它深入到了市场订单簿的微观层面。核心内容包括所有个股的逐笔委托逐笔成交记录。每一笔委托的申报时间、价格、数量、买卖方向乃至订单编号(在某些接口中)都被详细记录。每一笔成交则由对应的买方委托和卖方委托匹配生成,记录了精确的成交时间、价格与数量。这种高颗粒度的数据为分析市场流动性、订单流动态以及大型资金动向提供了可能。

获取Level2数据的主要渠道

个人投资者和专业机构获取Level2数据接口的路径存在差异,主要依赖于以下几个来源。

Level2数据接口如何获取

官方授权金融数据服务商

上海证券交易所和深圳证券交易所并不直接向大多数终端用户提供Level2数据接口,而是授权给一批合格的金融信息服务商。这些服务商作为中间环节,负责数据的整合、转发与技术服务。国内主流的服务商包括恒生电子、顶点软件、东方财富Choice数据、同花顺iFinD、万得Wind等。通过它们提供的API或数据终端,用户可以获得相对标准化的Level2数据流。这种方式数据质量稳定、连续性高,但通常费用不菲,且对接流程涉及商务谈判与技术接入。

证券公司提供的API接口

部分证券公司为了服务其量化交易客户,会提供包含Level2行情数据的综合API接口。例如,通过券商的风控柜台系统或专门的量化交易网关,客户在开户并达到一定资产或交易量要求后,可能申请接入。这类接口的优势在于行情与交易通道整合紧密,便于实施低延迟的交易策略。数据格式和频率可能因券商而异,需要根据其提供的技术文档进行适配。

专业数据平台与云服务

随着量化投资的发展,一些云原生数据平台应运而生。它们将Level2历史数据进行清洗、规整后,以更易用的形式(如Parquet文件、数据库直连或Restful API)提供给用户。这类平台侧重于历史数据的深度分析与策略回测,对于实时数据的支持则各有不同。它们减轻了用户在海量数据存储、清洗和计算方面的基础设施负担。

网络开源社区与数据片段

在GitHub等开源社区,偶尔能找到针对特定数据供应商接口的逆向工程代码或数据抓取脚本。一些论坛或社群中可能分享有数据片段。这种方式极不稳定,法律风险高,数据质量、完整性和实时性无法保证,不适合严肃的量化研究与实盘交易。

接口技术形式与数据接入考量

获取接口后,面临的是技术层面的接入工作。常见的接口形式包括TCP推送、UDP组播、WebSocket以及文件推送。低延迟场景下,交易所组播方式速度最快,但对网络和系统要求极高。大多数服务商提供的是TCP或WebSocket API。

数据接入后,需处理一系列关键问题。原始数据流需要被实时解析,通常涉及特定的二进制协议。数据需要落地存储,考虑到Level2数据每日产生海量记录(单市场可达数百GB),数据库选型(如ClickHouse、DolphinDB等时序数据库)和存储架构设计至关重要。

历史数据回补是另一常见需求,服务商通常提供按日或按月的压缩历史数据包。网络连接的稳定性直接关系到数据连续性,需部署断线重连与数据补漏机制。与交易所时间的严格同步(通过NTP或硬件时间服务器)是保证数据分析时间戳准确性的基础。

Level2数据在量化策略中的应用维度

拥有Level2数据接口后,其应用价值体现在多个策略维度。

订单簿不平衡分析 通过实时计算买卖各档位的委托量差,可以预测短期的价格压力方向。例如,买一档堆积巨量买单而卖一档单薄,可能预示价格上涨动力。

大单追踪与资金流分析 通过设定阈值(如单笔委托金额超过100万元),过滤出大额委托单,追踪其行为模式。连续出现的大额买单流入常被视为积极信号。

交易成本测算 利用完整的订单簿数据,可以更精确地测算执行大额订单可能产生的市场冲击成本,为算法交易提供参数依据。

市场微观结构研究 分析订单流的时间分布、订单生命周期、成交价与报价的关系等,用于研究市场流动性、价格发现机制等学术与实务问题。

高频与低频策略增强 对于高频做市或套利策略,Level2数据是直接的生产资料。对于低频选股或择时策略,可以从Level2数据中提炼出日频或更低频的特征因子,例如每日的大单净买入比率、平均委托单规模等,用以增强模型预测能力。

数据清洗与因子计算的挑战

原始Level2数据直接使用存在噪声。常见的数据清洗步骤包括:异常值过滤(剔除价格或数量明显超出合理范围的记录),时间戳修复与对齐(确保成交与委托记录的时间逻辑一致),数据切片与重采样(将逐笔数据转换为特定时间间隔的切片数据,如500毫秒)。

在清洗后的数据基础上,计算因子面临计算效率的挑战。以下是一个简单的Python示例,展示如何从逐笔成交数据中快速计算每分钟的资金流入。


import pandas as pd

import numpy as np

# 假设trades_df是一个包含逐笔成交的DataFrame,列包括‘time‘, ‘price‘, ‘volume‘, ‘direction‘ (1为买,-1为卖)

trades_df[‘amount‘] = trades_df[‘price‘] * trades_df[‘volume‘] / 10000  # 计算成交额,单位转换为万

trades_df[‘buy_amount‘] = trades_df[‘amount‘] * (trades_df[‘direction‘] == 1)

trades_df[‘sell_amount‘] = trades_df[‘amount‘] * (trades_df[‘direction‘] == -1)

# 按分钟重采样

trades_df.set_index(‘time‘, inplace=True)

minute_flow = trades_df.resample(‘1T‘).agg({

    ‘buy_amount‘: ‘sum‘,

    ‘sell_amount‘: ‘sum‘

})

minute_flow[‘net_inflow‘] = minute_flow[‘buy_amount‘] - minute_flow[‘sell_amount‘]

这个简单例子触及了资金流因子的核心。实际生产中,需处理更复杂的时间窗口、滚动计算以及多股票并行处理。

合规使用与成本评估

使用Level2数据必须遵守数据服务商的相关协议,不得进行未经授权的转发、销售或用于非法活动。商业用途必须获得正式授权。成本是重要考量因素,通常包括一次性接入费、年度或月度数据订阅费以及根据用户数量或数据使用量收取的费用。机构用户需综合评估数据准确性、延迟、技术支持和总体拥有成本。

从免费且粗糙的数据片段,到每年耗费数十万乃至数百万的专业级数据服务,不同层级的Level2数据接口服务于不同需求的用户。对于致力于量化交易、高频策略或深度市场研究的个人与机构而言,投资于一个可靠、专业的Level2数据接口,是构建竞争优势不可或缺的一步。