3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
针对您提到的 alpha191 中的公用函数(如 STD(A, n)、RANK()、CORR() 等),在 JoinQuant 平台中的实际情况如下:
不可以直接引用。
JoinQuant 提供的 jqlib.alpha191 库是已经封装好的最终因子计算结果。官方文档中列出的 STD、RANK 等函数,是为了向用户解释该因子的底层计算公式(来源于国泰君安研报),而不是作为独立的 API 函数提供给用户调用的。
如果您想直接获取某个 Alpha 191 因子(例如 Alpha 001),只需直接调用对应的因子函数即可,无需自己用公用函数去拼装:
# 导入 Alpha191 库
from jqlib.alpha191 import *
# 获取指定股票池和日期的 alpha_001 因子值
code = ['000001.XSHE', '000002.XSHE']
end_date = '2023-10-01'
a = alpha_001(code, end_date)
print(a)
如果您在编写自定义因子,想要计算过去 n 天的标准差,不需要依赖 alpha191 的内部函数,可以直接使用 Python 强大的数据处理库 pandas 或 JoinQuant 的内置方法:
history 或 get_price 获取历史数据 DataFrame 后,使用 rolling().std() 计算:df = attribute_history('000001.XSHE', 20, '1d', ['close'])
# 计算过去 n 天的标准差
std_n = df['close'].rolling(window=10).std()
handle_data 中,可以通过 data[security].stddev(days) 直接获取:def handle_data(context, data):
# 获取过去10天的收盘价标准差
std_10 = data['000001.XSHE'].stddev(10)
不需要。
jqlib.alpha191 库在 JoinQuant 的研究环境和回测环境中是免费开放给所有注册用户的。但是需要注意:
jqdatasdk 下载数据到本地,则受限于您账号的每日免费流量额度(通常免费版有每日调用条数限制,购买数据套餐可以提升额度)。但在官网网页端进行回测和研究是免费的。