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
行情快照数据的因子计算
最新推荐文章于 2024-07-29 14:19:19 发布