比赛讨论

因子分享-成交量加权波动率因子

由bqtnziby创建,最终由bqtnziby 被浏览 5 用户

成交量加权波动因子通过成交量加权的方式,衡量了股票价格的波动幅度,反映了市场参与者对价格变化的敏感程度。

核心特征:

1.成交量加权:赋予高成交量时段更大权重

2.相对波动:基于开盘价计算波动幅度,消除绝对价格影响

其计算公式为:

因子值 = Σ[(当日最高价 - 当日最低价)/开盘价 × 成交量] / Σ[成交量]

核心部分代码如下:

    sql = f"""
        SELECT
            date::DATE::DATETIME AS date,
            instrument,
            -- 计算成交量加权波动率
            SUM((high - low) / open * volume) / SUM(volume) AS factor
        FROM {datasource}
        GROUP BY date::DATE, instrument
    """
    # Data is queried with a 10-day lookback buffer for rolling calculations
    lookback_days = 10
    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()

    # Final output is filtered to the exact date range requested
    df = df[df['date'].between(start_date, end_date)]

    return df

\

{link}