🚀 AI 一键生成 joinquant 策略代码
立即体验
👉 AI 生成代码 👈

JoinQuant 平台如何使用 Alpha191 因子及公用函数?

joinquant | 发布时间: 2026/6/4
以下内容由 EasyQuant 生成。

问题描述

公用函数如何使用

alpha191里面的公用函数,如STD(A, n)序列 A 过去 n 天标准差,应该如何引用,没有看到相关示例?是需要开通会员才能使用吗?

解决方案

JoinQuant Alpha191 因子库与公用函数解析

针对您提到的 alpha191 中的公用函数(如 STD(A, n)RANK()CORR() 等),在 JoinQuant 平台中的实际情况如下:

1. 公用函数是否可以直接引用?

不可以直接引用。
JoinQuant 提供的 jqlib.alpha191 库是已经封装好的最终因子计算结果。官方文档中列出的 STDRANK 等函数,是为了向用户解释该因子的底层计算公式(来源于国泰君安研报),而不是作为独立的 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)

2. 如果我想自己实现 STD(A, n) 怎么办?

如果您在编写自定义因子,想要计算过去 n 天的标准差,不需要依赖 alpha191 的内部函数,可以直接使用 Python 强大的数据处理库 pandas 或 JoinQuant 的内置方法:

  • 方法一:使用 Pandas(推荐)
    通过 historyget_price 获取历史数据 DataFrame 后,使用 rolling().std() 计算:
    df = attribute_history('000001.XSHE', 20, '1d', ['close'])
    # 计算过去 n 天的标准差
    std_n = df['close'].rolling(window=10).std()
    
  • 方法二:使用 JoinQuant 内置的 stddev 方法
    handle_data 中,可以通过 data[security].stddev(days) 直接获取:
    def handle_data(context, data):
        # 获取过去10天的收盘价标准差
        std_10 = data['000001.XSHE'].stddev(10)
    

3. 需要开通会员才能使用吗?

不需要。
jqlib.alpha191 库在 JoinQuant 的研究环境和回测环境中是免费开放给所有注册用户的。但是需要注意:

  • 单次请求的数据量过大(例如一次性请求全市场所有股票多年的因子值)可能会触发平台的内存或超时限制(1800秒)。
  • 如果您使用的是本地的 jqdatasdk 下载数据到本地,则受限于您账号的每日免费流量额度(通常免费版有每日调用条数限制,购买数据套餐可以提升额度)。但在官网网页端进行回测和研究是免费的。