比赛讨论

因子分享-多维度量价因子

由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

\

标签

量价因子
{link}