因子分享-多维度量价因子
由bqtnziby创建,最终由bqtnziby 被浏览 6 用户
该因子分为一下三个维度:
1. VWAP偏离度 - 衡量价格相对成交均价的位置
2. 量比强度 - 近期成交活跃度
3. 价格趋势 - 中期移动平均
因子构成:
1. VWAP偏离度: (avg(amount/volume, 10) / close - 1)
- 10日平均成交价 vs 当前价
- 正值表示价格被低估
2. 量比: volume / avg(volume, 20)
- 成交放大表示资金关注度提升
3. 价格动量: (close / avg(close, 20) - 1)
- 价格趋势方向
因子特征:
- 价格低于均价 + 放量 + 上涨趋势 → 高因子值
- 简单直观,经典有效
因子计算:VWAP偏离度*量比*价格动量
核心部分代码:
sql = f"""
WITH daily_bars AS (
SELECT
date::DATE AS trade_date,
instrument,
LAST(close) AS close,
SUM(volume) AS volume,
SUM(amount) AS amount
FROM {datasource}
WHERE volume > 0 AND close > 0 AND amount > 0
GROUP BY date::DATE, instrument
)
SELECT
trade_date::DATETIME AS date,
instrument,
(
(m_avg(amount / volume, 10) / close - 1) *
(volume / m_avg(volume, 20)) *
(close / m_avg(close, 20) - 1)
) AS factor
FROM daily_bars
QUALIFY m_avg(volume, 20) > 0
"""
lookback_days = 30
query_start_date = pd.to_datetime(start_date) - pd.Timedelta(days=lookback_days)
df = dai.query(sql, filters={'date': [query_start_date, end_date]}).df()
df = df[df['date'].between(start_date, end_date)]
df = df.dropna(subset=['factor'])
df = df[~df['factor'].isin([float('inf'), float('-inf')])]
return df
\