实现alpha 101因子 Alpha#

由 jliang创建,

  • 实现alpha 101因子 Alpha#14: ((-1 rank(delta(returns, 3))) correlation(open, volume, 10)) 。
    其中 returns 可用通过close计算
  • 要实现 Alpha#14 因子,我们可以按照以下步骤进行计算:
    1. 计算收益率 (returns):使用 close 价格计算收益率,公式为 close / mlag(close, 1) - 1

    2. 计算收益率的 3 期差分 (delta(returns, 3)):使用 m
    delta 函数计算收益率的 3 期差分。
    1. 对差分结果进行排名 (rank(delta(returns, 3))):使用 crank 函数对差分结果进行截面排名。

    4. 计算开盘价与成交量的 10 期相关性 (correlation(open, volume, 10)):使用 m
    corr 函数计算开盘价与成交量的 10 期相关性。
    1. 组合计算结果:将排名结果与相关性结果相乘,并乘以 -1。


    以下是实现该因子的 SQL 查询代码:

    import dai

    查询 Alpha#14 因子


    df = dai.query("""
    SELECT
    date,
    instrument,
    (-1 crank(mdelta(close / mlag(close, 1) - 1, 3))) mcorr(open, volume, 10) AS alpha14
    FROM
    cn
    stockbar1d
    WHERE
    date BETWEEN '2020-01-01' AND '2021-01-01'
    """, filters={"date": ["2020-01-01", "2021-01-01"]}).df()

    print(df)


    代码解释:

    • close / mlag(close, 1) - 1:计算每日收益率。

    - mdelta(close / mlag(close, 1) - 1, 3):计算收益率的 3 期差分。
    • crank(mdelta(close / mlag(close, 1) - 1, 3)):对差分结果进行截面排名。

    - m
    corr(open, volume, 10):计算开盘价与成交量的 10 期相关性。
    • (-1 crank(mdelta(close / mlag(close, 1) - 1, 3))) mcorr(open, volume, 10):组合计算结果,得到 Alpha#14 因子。


    注意事项:

    • 该查询会返回 2020 年 1 月 1 日至 2021 年 1 月 1 日期间的 Alpha#14 因子值。

    - 如果需要计算其他时间段的数据,可以调整 date BETWEEN 条件。
    • 如果需要计算特定股票的数据,可以在 WHERE 子句中添加 instrument 过滤条件。


    运行该代码后,df 将包含每个交易日每支股票的 Alpha#14 因子值。