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

JoinQuant 因子选股教程:如何在策略中直接调用 WorldQuant Alpha101 因子

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: joinquant 因子选股教程:调用 jqlib.alpha101 快速构建因子策略

Question: 请展示如何在策略中直接调用 WorldQuant Alpha101 因子进行选股

解决方案

JoinQuant 因子选股教程:调用 jqlib.alpha101 快速构建因子策略

在聚宽(JoinQuant)平台中,开发者无需手动实现复杂的数学公式,即可通过内置的 jqlib.alpha101 模块直接调用 WorldQuant 提出的 101 个 Alpha 因子。本文将详细介绍 Alpha101 因子的调用方法,并提供一个完整的选股策略示例。


1. 导入与基础调用方式

在策略代码顶部导入 jqlib.alpha101 模块后,即可直接传入日期与股票池/指数代码调用因子函数:

# 导入 Alpha101 库
from jqlib.alpha101 import *

# 获取沪深300成分股在指定日期的 alpha_001 因子值
factor_df = alpha_001('2023-01-01', '000300.XSHG')

2. 完整策略代码示例

以下策略展示了如何在每个月第一个交易日调用 alpha_001 因子,选取因子值最高的前 10 只股票进行调仓建仓:

import pandas as pd
from jqdata import *
from jqlib.alpha101 import *

def initialize(context):
    # 设置沪深300作为基准
    set_benchmark('000300.XSHG')
    # 开启动态复权模式(真实价格)
    set_option('use_real_price', True)
    # 设置交易手续费:买入万三,卖出万三加千一印花税,最低5元
    set_order_cost(OrderCost(close_tax=0.001, open_commission=0.0003, close_commission=0.0003, min_commission=5), type='stock')
    
    # 每月第一个交易日开盘前进行因子选股与调仓
    run_monthly(rebalance, monthday=1, time='09:30', reference_security='000300.XSHG')

def rebalance(context):
    # 1. 获取沪深300成分股作为目标股票池
    stocks = get_index_stocks('000300.XSHG')
    
    # 2. 调用 alpha_001 因子计算股票池中所有股票的因子值
    # alpha_001 返回一个 Series,Index 为股票代码,值为因子值
    calc_date = str(context.previous_date)
    alpha_scores = alpha_001(calc_date, '000300.XSHG')
    
    # 3. 过滤无效值并按因子值降序排序,选取前 10 只股票
    valid_scores = alpha_scores.dropna()
    top_stocks = list(valid_scores.sort_values(ascending=False).head(10).index)
    
    # 4. 卖出不再持仓列表中的股票
    for stock in list(context.portfolio.positions.keys()):
        if stock not in top_stocks:
            order_target(stock, 0)
            log.info("卖出剔除股: %s" % stock)
            
    # 5. 等权重买入目标股票
    if len(top_stocks) > 0:
        target_value = context.portfolio.total_value / len(top_stocks)
        for stock in top_stocks:
            order_target_value(stock, target_value)
            log.info("调仓买入: %s" % stock)

3. 注意事项

  1. 参照标的与动态复权:建议在 initialize 中开启 set_option('use_real_price', True) 动态复权模式,以保证历史交易撮合的准确性。
  2. 因子计算耗时:部分复杂 Alpha101 因子的计算可能耗时较长,建议在按月/按周调仓(如 run_monthly / run_weekly)中使用,避免按日或按分钟高频调用。
  3. 空值处理:停牌或新上市股票在计算因子时可能返回 NaN,在选股前务必使用 .dropna() 清理无效数据。