实现alpha 101因子 Alpha#
由 jliang创建,
- 实现alpha 101因子 Alpha#14: ((-1 rank(delta(returns, 3))) correlation(open, volume, 10)) 。
其中 returns 可用通过close计算 - 要实现 Alpha#14 因子,我们可以按照以下步骤进行计算:
- 计算收益率 (returns):使用
close
价格计算收益率,公式为close / mlag(close, 1) - 1
。
2. 计算收益率的 3 期差分 (delta(returns, 3)):使用mdelta
函数计算收益率的 3 期差分。- 对差分结果进行排名 (rank(delta(returns, 3))):使用
crank
函数对差分结果进行截面排名。
4. 计算开盘价与成交量的 10 期相关性 (correlation(open, volume, 10)):使用mcorr
函数计算开盘价与成交量的 10 期相关性。- 组合计算结果:将排名结果与相关性结果相乘,并乘以 -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
cnstockbar1d
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))
:对差分结果进行截面排名。
-mcorr(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 因子值。 - 计算收益率 (returns):使用