行情快照数据的因子计算

3. 基于历史数据的批量因子计算
本章节介绍 DolphinDB 对 Level 2 行情数据的处理。DolphinDB 不仅提供了高速存取时序数据的基本功能,还内置了向量化的多范式编程语言和强大的计算引擎,可高效用于量化金融的因子开发,包括基于历史数据的批量高频因子计算和基于实时 Level 2 行情的流式计算。

本章基于 Level 2 历史行情数据中的行情快照、逐笔成交和逐笔委托中的几个高频因子,介绍 DolphinDB 向量化的多范式编程语言的强大功能。

3.1 快照数据的因子计算
Level 2 行情快照数据包含10档价位上的委卖价格、委托量和委托买卖总量等指标,主要用于分析订单簿所提供的信息。

行情快照中的大部分高频因子基于限价订单簿的静态指标,例如价差、深度、宽度、斜率、订单不平衡等,研究市场的交易行为,进而预测股票的短期价格走势。

本节介绍基于 Level 2 行情快照中十档买卖价格和买卖数量数据计算的时间加权订单斜率、十档平均委卖订单斜率、成交价加权净委买比例、十档委买增额和十档买卖委托均价线性回归斜率等高频因子。

以下是 Level 2 行情快照数据十档部分字段的样例:


3.1.1 时间加权订单斜率
订单斜率因子衡量订单价差对订单量差的敏感度。其计算公式如下:


logQuoteSlopet
 衡量 t 时刻的订单斜率。其中, bidt
 和 askt
 分别表示买一价和卖一价, bidQtyt
 和 askQtyt
 分别表示买一量和卖一量。

 @state
def timeWeightedOrderSlope(bid,bidQty,ask,askQty,lag=20){
   
	return (log(iif(ask==0,bid,ask))-log(iif(bid==0,ask,bid)))\(log(askQty)-log(bidQty)).ffill().mavg(lag, 1).nullFill(0)
}
使用函数 mavg 计算过去20行的移动平均时间加权订单斜率,其中 @state 表示用户自定义的状态函数。状态算子计算时需要用到历史状态,DolphinDB 在流式计算中对自定义状态函数,通过增量的方式实现,性能有很大的提升。

3.1.2 加权平均订单失衡率因子
订单失衡率(SOIR)因子衡量买卖委托量在总量中的不均衡程度。其计算公式如下:


表示 t
 时刻第 i 档的订单失衡率因子。其中 bidQtyi,t
, askQtyi,t
 表示第 i 档买方委托量和卖方委托量。为了充分利用各档数据信息,计算各档位加权和订单失衡率因子时,根据买卖压力的影响力赋予不同档位相应的权重。通常,靠近交易价格的档位被赋予更高的权重。计算公式如下:


SOIR 反应盘口各档综合的买卖委托量不均衡程度。如果 SOIR 为正,则说明市场买压大于卖压,未来价格趋势上涨的概率较高。此外,SOIR 值越大,上涨的概率越高,反之亦然。

@state
def wavgSOIR(bidQty,askQty,lag=20){
   
	imbalance= rowWavg((bidQty - askQty)\(bidQty + askQty), 10 9 8 7 6 5 4 3 2 1).ffill().nullFill(0)
	mean = mavg(prev(imbalance
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值