🚀 AI 一键生成 joinquant 策略代码

JoinQuant研究环境如何进行单因子分析?(jqfactor使用指南)

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

问题描述

研究环境可以使用 jqfactor_analyzer 吗?

咨询一下:

能否在研究环境里使用 jqfactor_analyzer?

如果不能,不支持在研究环境使用的原因是啥呢?

解决方案

在 JoinQuant(聚宽)的研究环境中,是可以进行单因子分析的,但您需要使用的是聚宽官方内置的 jqfactor 模块,而不是外部开源的 jqfactor_analyzer 库。

为什么不直接使用 jqfactor_analyzer

jqfactor_analyzer 通常指的是聚宽之前开源在 GitHub 上的单因子分析工具包(类似于 Alphalens)。但在聚宽官方的线上研究环境中,官方已经将其深度集成并优化为内置的 jqfactor 模块。

使用内置 jqfactor 的优势在于:

  1. 数据无缝对接:直接与聚宽的底层数据库(行情、财务、因子库)打通,无需手动清洗和对齐数据。
  2. 性能优化:针对聚宽的服务器环境进行了底层优化,计算速度更快,且避免了内存超限问题。
  3. API 统一:与聚宽的其他 API(如 get_factor_values)完美兼容。

如何在研究环境中使用 jqfactor 进行因子分析?

在研究环境中,您可以通过引入 jqfactor 库中的 analyze_factor 函数来便捷地进行单因子分析。以下是两种常见的使用场景示例:

场景一:分析聚宽因子库中已有的因子

如果您想分析聚宽因子库中现成的因子(例如:60日偏度 Skewness60),可以直接获取因子值并传入分析函数:

# 导入需要的数据库
from jqfactor import analyze_factor
from jqfactor import get_factor_values
from jqdata import get_index_stocks

# 1. 获取因子值 (pandas.DataFrame 格式)
factor_data = get_factor_values(
    securities=get_index_stocks('000300.XSHG'), 
    factors=['Skewness60'],
    start_date='2018-01-01', 
    end_date='2018-03-01'
)['Skewness60']

# 2. 使用获取的因子值进行单因子分析
far = analyze_factor(
    factor=factor_data, 
    start_date='2018-01-01', 
    end_date='2018-03-01', 
    weight_method='mktcap', 
    industry='jq_l1', 
    quantiles=5, 
    periods=(1, 5, 20), 
    max_loss=0.2
)

# 3. 打印或绘制分析结果
# 获取按分位数分组加权平均因子收益
print(far.mean_return_std_by_quantile) 

# 绘制全部分析图表
far.create_full_tear_sheet()

场景二:分析自定义因子

如果您自己编写了一个因子逻辑,可以通过继承 Factor 类来定义,并直接传入 analyze_factor

# 导入需要的数据库
from jqfactor import analyze_factor
from jqfactor import Factor

# 1. 自定义因子的类 (例如:5日均线因子)
class MA5(Factor):
    name = 'ma5'
    max_window = 5
    dependencies = ['close']

    def calc(self, data):
        return data['close'][-5:].mean()

# 2. 使用自定义因子的类进行单因子分析
far = analyze_factor(
    factor=MA5, 
    start_date='2018-01-01', 
    end_date='2018-03-01', 
    weight_method='mktcap', 
    universe='000300.XSHG', 
    industry='jq_l1', 
    quantiles=5, 
    periods=(1, 5, 20)
)

# 3. 获取分析结果
# 查看月度信息系数 (IC)
print(far.ic_monthly)

# 绘制因子预测能力分析图
far.create_event_returns_tear_sheet()

总结

您完全可以在聚宽研究环境中进行专业的单因子分析,只需将代码中的 jqfactor_analyzer 替换为官方内置的 jqfactor 模块,并使用 analyze_factor 函数即可。这不仅能满足您的需求,还能获得更好的性能和数据支持。