因子分享-加权价差订单薄不平衡度
由bqtnziby创建,最终由bqtnziby 被浏览 7 用户
因子逻辑:
1.订单薄不平衡度
(1)买方和卖方订单数量或总成交量之间的差异,本质是量化订单簿的即时供需力量对比,这是因子的基础
(2)基于1-5档委买/卖量的供需对比,更全面反映 潜在供需
(3)计算方法:
订单薄不平衡度=(买量-卖量)/(买量+卖量),其中买量为1-5档买量和,卖量同理
2.加权价差比例
(1)让因子从 “单纯供需” 升级为 “供需 + 预期” 的双重验证
(2)反映 “价差占当前价格水平的比例”
(3)加权价差比例计算方法:
加权价差=(加权卖价-加权买价)/((加权卖价+加权买价)/2),其中以加权卖价为例,1档卖价权重为5,2档卖价权重为4......5档卖价权重为1,加权买价同理
\
3.最终因子=订单簿不平衡度*加权价差比例
核心部分代码如下:
sql = f"""
WITH minute_level AS (
SELECT
date::DATE AS trade_date,
instrument,
-- 计算1-5档委买总量
bid_volume1 + bid_volume2 + bid_volume3 + bid_volume4 + bid_volume5 AS total_bid_vol,
-- 计算1-5档委卖总量
ask_volume1 + ask_volume2 + ask_volume3 + ask_volume4 + ask_volume5 AS total_ask_vol,
-- 计算加权买价(1档权重5,2档4...5档1,价格维度)
(bid_price1*5 + bid_price2*4 + bid_price3*3 + bid_price4*2 + bid_price5*1)
/ NULLIF(5+4+3+2+1, 0) AS weighted_bid_price,
-- 计算加权卖价(1档权重5,2档4...5档1,价格维度)
(ask_price1*5 + ask_price2*4 + ask_price3*3 + ask_price4*2 + ask_price5*1)
/ NULLIF(5+4+3+2+1, 0) AS weighted_ask_price
FROM {datasource}
),
daily_agg AS (
SELECT
trade_date,
instrument,
-- 日均量能不平衡度:(买量-卖量)/(买量+卖量)
(AVG(total_bid_vol) - AVG(total_ask_vol))
/ NULLIF(AVG(total_bid_vol) + AVG(total_ask_vol), 0) AS vol_imbalance,
-- 日均价差比例:(加权卖价-加权买价)/((加权卖价+加权买价)/2)
(AVG(weighted_ask_price) - AVG(weighted_bid_price))
/ NULLIF((AVG(weighted_ask_price) + AVG(weighted_bid_price)) / 2, 0) AS price_spread_pct
FROM minute_level
GROUP BY trade_date, instrument
)
SELECT
trade_date::DATETIME AS date,
instrument,
-- 复合因子:量能不平衡度 × 价格价差比例
vol_imbalance * price_spread_pct AS factor
FROM daily_agg
"""
\