问题描述
解决方案
在聚宽(JoinQuant)平台中,可以直接调用 jqlib 库来获取 WorldQuant Alpha 101 因子中的 Alpha 001。
以下是具体的使用方法和代码示例:
使用方法
- 导入库:需要引入
jqlib.alpha101模块。 - 调用函数:直接使用
alpha_001函数。 - 参数说明:
enddate:查询日期(字符串格式,如 '2023-01-01')。index:股票池,可以是指数代码(如 '000300.XSHG')或者股票代码的列表(list)。
代码示例
以下代码展示了如何在研究环境或回测中获取沪深300成分股的 Alpha 001 因子值:
# -*- coding: utf-8 -*-
from jqlib.alpha101 import *
# 方法1:获取特定指数(如沪深300)成分股的 Alpha 001 因子值
# enddate: 查询日期
# index: 指数代码
factor_data_index = alpha_001(enddate='2023-06-01', index='000300.XSHG')
print("--- 基于沪深300指数的 Alpha 001 ---")
print(factor_data_index.head())
# 方法2:获取自定义股票列表的 Alpha 001 因子值
stock_list = ['000001.XSHE', '000002.XSHE', '600000.XSHG']
factor_data_list = alpha_001(enddate='2023-06-01', index=stock_list)
print("\n--- 基于自定义股票列表的 Alpha 001 ---")
print(factor_data_list)
Alpha 001 公式说明
根据 WorldQuant 的定义,Alpha 001 的计算公式为:
$$Rank(Ts_ArgMax(SignedPower((Returns < 0 ? StdDev(Returns, 20) : Close), 2.), 5)) - 0.5$$
但在聚宽 jqlib.alpha101 的实现中,为了方便使用,通常采用简化或特定的实现版本(具体视库内部实现而定,部分文档显示公式可能为 (close - open) / ((high - low) + 0.001) 或其他变体,建议通过 alpha_001? 在研究环境中查看具体的文档字符串说明)。
Q&A
Q: Alpha 001 因子可以直接在回测中使用吗?
A: 可以。在回测策略的 handle_data 或定时运行函数中,导入 jqlib.alpha101 并调用 alpha_001 即可获取当天的因子值。注意避免使用未来数据,查询日期应为 context.current_dt 或其前一天。
Q: jqlib 中还包含其他因子吗?
A: 是的,jqlib 不仅包含 WorldQuant 的 Alpha 101 因子(jqlib.alpha101),还包含国泰君安的 Alpha 191 因子(jqlib.alpha191)以及常用的技术分析指标(jqlib.technical_analysis)。
Q: 调用 alpha_001 返回的数据类型是什么?
A: 返回的是一个 pandas.Series 对象,索引(index)是股票代码,值(value)是计算出的因子值。