资源加载中... loading...

浅谈商品期货中的高频交易(一):认识订单薄数据

Author: ianzeng123, Created: 2024-02-08 16:21:02, Updated: 2024-02-28 21:43:45

img

温馨提醒:本篇为量化基础知识讲解,各位量化大佬可选择跳过~~

引言

如果说量化交易有两座高峰,一座是“多因子模型”,那么另一座更高的山峰无疑就是“高频策略”。多因子模型我们前面花了一个月左右的时间尝试从0开始构建了出来[附注(1)],现在我们把目光投向另一座高峰,高频交易。

我们前面的课程试图讲了高频策略的应用模版[附注(2)],但是很遗憾的是,并没有涉及到高频策略的核心。因此,本系列的课程我们将试图以更深入的角度,了解高频策略背后的交易原理和机制,这里会涉及到大量的数理统计和编程知识,我们呢还是从0开始,一步步搭建属于我们自己的高频策略。需要注意的是,并不存在一个可以永远正收益的模型,就像一个优秀的alpha因子也会逐渐转换为风格因子,以致最后的风险因子。所以,我们的课程宗旨也并不是,一定要开发出来一个可以瞬间暴富的策略。我们的重点将在于怎样去认识高频交易机制,怎么去分析高频数据,以及最后的怎样开发一个高频策略。

首先,让我们尝试定义一下高频策略。在之前的课程中,我们对高频策略进行了分类,认为只有符合特定类型的策略才能被视为高频策略。实际上,高频交易策略非常多样化,没有固定的模式或设计思路。任何能够在高频交易环境下实现盈利的策略,都可以被视为高频交易策略。因此,高频交易并不是策略研发的起点或目标,而是策略成功后的表现形式。当一个新的策略在高频交易环境下能够实现显著的盈利时,它自然就成为了一个高频交易策略。这意味着,高频交易是策略研发成功后的一种结果,而不是预先设定的目标。在理解高频策略时,我们需要认识到它的多样性和灵活性。不同的设计思路和方法都可以应用于高频交易,而成功的关键在于策略是否能够在高频环境下实现稳定且可观的盈利。同时,我们也需要认识到高频交易的风险和局限性,包括市场波动、技术故障、交易成本,策略寿命等方面的因素。

本系列第一篇文章我们的课程重点是认识高频数据–订单薄数据。高频策略离不开对高频数据的分析,也许我们在期货软件上,每次观察的只有具体价格的跳动,关心盈利价格的红绿转换。实际上,一个点位的价格跳动是毫秒之间无数笔交易汇总而成的结果。所以本篇文章我们将从了解高频数据开始,从感受每一个盘口跳动开始,我们来认识一下价格变动背后的具体机制。

订单薄数据结构

在股票、期货和货币等不同金融市场,订单簿是不同资产买卖限价订单的列表。订单簿分为两个部分:买(bid)和卖(ask)。所有的买单显示在买方,而所有的卖单显示在卖方。订单簿还显示每个价格水平上买卖订单的总量。它显示买家和卖家愿意协商的价格,以及每个价格上可用的订单总数。订单簿是每个交易品种的必要组成部分,因为它提供了当前市场状况的快照,资产价格和市场流动性的信息。因此,对于希望在入场或出场时做出明智决策的交易者来说,订单簿是一个至关重要的工具。需要注意的是,商品期货不同交易所返回的订单深度是不同的[附注4]。

优宽交易终端订单薄数据展示

image

上面的图片显示,螺纹钢品种实时的五档数据。订单簿的“买”和“卖”两部分可以并列显示或上下显示,卖方(绿色)显示在买方(红色)上方,因为卖出限价订单的价格限制始终高于买入限价订单的价格限制。

在典型的订单簿中,买方按降序排列,意味着最高的买单(即,具有最高买价的订单)首先列出,然后是较低的买单,按价格降序排列。订单簿中最高的买单代表最佳买价,即任何买家当前愿意为该资产支付的最高价格。在订单簿的另一侧,卖方按升序排列,最低的卖单(即,具有最低卖价的订单)首先列出,然后是较高的卖单,按价格升序排列。订单簿中最低的卖单代表最佳卖价,即任何卖家当前愿意接受的最低价格。订单簿的这种数据结构使得交易者能够看到当前市场深度以及资产的最佳买卖价。当以最佳卖价执行买单或以最佳买价执行卖单时,订单簿会实时更新以反映新的市场深度和新的最佳买卖价。

在量化交易中,对于订单薄数据通过接口我们获取到的是Json格式的Depth数据。在优宽平台,可以通过下面的函数代码进行获取:

function main() {
    exchange.SetContractType('rb888') //设置合约为螺纹钢主力合约
    t = exchange.GetDepth() //获取订单薄数据
    Log(t) //打印订单薄数据
}

对获取的数据经过整理,可以看到,一共包含下列属性。这里订阅的品种是螺纹钢(上期所),所以返回5档的数据,包括买单(Bid)和卖单(Ask),相对应不同档位的价格(Price)和数量(Volume)。我们后续对订单薄数据的建模就是基于这个数据结构。

InstrumentID: "rb888"
TradingDay: "20240208"
ActionDay: "20240208"
UpdateTime: "10:31:44"
UpdateMillisec: 500
ExchangeID: ""
ExchangeInstID: ""
LastPrice: 3853
PreSettlementPrice: 3827
PreClosePrice: 3840
PreOpenInterest: 1670548
OpenPrice: 3841
HighestPrice: 3865
LowestPrice: 3833.0000000000005
ClosePrice: 1.7976931348623157e+308
SettlementPrice: 1.7976931348623157e+308
CurrDelta: 1.7976931348623157e+308
Volume: 415793
Turnover: 16007407870
OpenInterest: 1621412
BidPrice1: 3852
BidVolume1: 1002
AskPrice1: 3853
AskVolume1: 377
BidPrice2: 3851
BidVolume2: 1656
AskPrice2: 3854
AskVolume2: 706
BidPrice3: 3850
BidVolume3: 1808
AskPrice3: 3855
AskVolume3: 532
BidPrice4: 3849
BidVolume4: 465
AskPrice4: 3856
AskVolume4: 120
BidPrice5: 3848
BidVolume5: 670
AskPrice5: 3857
AskVolume5: 502
AveragePrice: 38498.50254814295
HighestPrice: 3865
LowestPrice: 3833.0000000000005
ClosePrice: 1.7976931348623157e+308

订单薄和价格的关系

为了了解订单薄和价格的关系。我们需要了解两个概念,限价单和市价单。在期货交易中,我们可以采用限价单(挂单)和市价单(吃单)进行交易。限价单就是目前盘口的价格不是我们心理的价位,我们希望比目前价格更高或者更低的位置进行入场,所以进行挂单,这也是订单薄的来历。这样呢,可以为市场提供流动性。而吃单则是随行就市,如果大家感到价格会呈现单边的趋势,每一秒的犹豫都是利润的损失,我们希望立即入场,这时候会根据盘口的价格进行入场,这个时候吃单就是减少流动性。所以根据挂单和吃单情况,我们经常可以看到盘口的挂单数字在不断地变动,对应的盘口价格也在不断变化。

我们举个例子来说明一下。这里我们展示了三挡的卖单买单的价格和数量。什么时候会产生价格变动呢,第一种情况是任一方发生市价单进行吃单,例如发出市价单买入100手,这时候价位9挂单的70手会全部吃掉,价位10挂单的30手会被吃掉,卖单的价格从9会上升到10。第二种情况是发出匹配的限价单,当看到卖出的最低价是9,数量是70手,那么发出一个70手价格为9的买入限价单,正好可以匹配交易,这样卖单的价格也会从9上升到10。

image

所以当我们想要预测价格变动趋势的时候,我们可以看一下订单薄,看一下双方力量的悬殊对比。在卖方挂单数量远远大于买方挂单数量的时候,那么价格上升的阻力就比较大;而当买方挂单数量小于卖方挂单数量的时候,价格下跌的阻力就比较大。

订单薄数据推送机制

由于我国没有做市商制度,交易报单撮合在单一交易所统一进行,信息发布时间对全市场公平。国内交易所发布订单薄数据的频率通常为每秒钟2笔,交易者无论利用什么软件,行情发送频率都是一定的。因此不会存在国际市场上所谓的“闪电交易”[附注3],最多也就是高速程序化交易。这种制度设计有助于确保市场的公平性和稳定性。在单一交易所进行交易报单撮合,可以减少市场分割和信息不对称,提高市场的透明度和公平性。同时,信息发布时间的统一也有助于减少市场操纵和信息泄露的可能性。

image

订单簿在交易中的作用

期货交易有时被比喻为一场赌博,而订单簿数据则相当于提前揭示了市场的底牌。尽管有时会存在欺骗行为(如频繁的申报和撤单),但在一定程度上,订单簿为我们判断未来走势提供了一些线索。订单簿数据不仅有助于深入了解市场情绪和交易机会,而且可以用于多方面的优势。首先,交易者可以利用买卖价差来评估资产的流动性,检查订单簿深度以了解资产的买卖兴趣水平。这有助于判断市场情绪并识别潜在的交易机会。其次,订单簿数据可用于更有效地管理风险。通过识别支撑和阻力区域,交易者可以设置止损和获利目标,提高风险管理能力。最后,订单簿数据还可用于识别潜在的交易信号。通过分析买卖压力区域,交易者可以确定进入和退出交易的时机。

总体而言,订单簿在交易中扮演着重要角色,充当市场的晴雨表,实时提供关于资产供需的信息,同时也反映了交易者对市场的情绪和态度。订单簿的数据提供了多方面的信息,使交易者能够更全面地了解市场状况和制定相应的交易策略。

课程预览

下一篇文章,我们将对盘口数据特征,包括市场价差,市场广度,市场深度,订单不平衡、深度不平衡、宽度不平衡和买卖压力等,进行盘口因子的构建和分析,我们下篇文章再聊~

附注: (1)商品期货多因子模型搭建教程:在优宽平台搭建多因子模型 (2)商品期货伪高频策略初探:伪高频策略初探 (3)“闪电交易”是一种在国外做市商制度下存在的交易模式,它利用做市商提前掌握到的自身客户报单信息或某些交易所内部尚未向市场公开的报单信息,利用这些私有信息的短暂时间优势,在市场中发现可交易机会并获得收益的“抢先交易”模式。 (4)上期所和上能源返回5档的深度数据,其他四个交易所仅返回1档的深度数据。另外,如果在N视界仿真平台,获取到其他四个交易所品种的五档数据,请注意这并不是真实的5档数据。

本系列课程旨在为大家介绍高频交易在商品期货量化交易中的应用,其他相关文章请点击下面链接:


更多内容