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

JoinQuant 因子看板函数 get_factor_kanban_values 回测使用详解

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

问题描述

关于get_factor_kanban_values

请问get_factor_kanban_values可以在回测中使用吗,是不是只能取最新数据?

解决方案

您好!关于 get_factor_kanban_values 函数的使用,解答如下:

1. 是否只能取最新数据?

是的。 get_factor_kanban_values 函数主要用于获取因子看板的综合评估数据。从 API 的参数设计可以看出,它并没有提供 datestart_dateend_date 等用于指定历史时间的参数。因此,每次调用该函数时,返回的都是系统最新计算好的因子看板数据(返回的 DataFrame 中包含 date 列,表示数据的更新日期)。

2. 可以在回测中使用吗?

强烈不建议在回测中使用。
由于该函数只能获取最新数据,如果您在回测中调用它,无论您的回测逻辑时间(context.current_dt)运行到历史的哪一天,它返回的始终是现实世界中最新的数据。这会导致严重的未来函数问题(即在历史时刻使用了未来的信息),从而使得回测结果完全失真,没有任何参考价值。

3. 回测中获取因子数据的正确替代方案

如果您需要在回测策略中根据历史的因子值进行选股或调仓,请使用 get_factor_values 函数。

get_factor_values 支持传入时间参数,可以严格按照回测的当前时间获取历史因子数据,完美避免未来函数。使用示例如下:

from jqfactor import get_factor_values

def handle_data(context, data):
    # 获取沪深300成分股
    stocks = get_index_stocks('000300.XSHG', date=context.current_dt)
    
    # 获取过去1天的因子值,严格使用 context.previous_date 避免未来数据
    factor_data = get_factor_values(
        securities=stocks, 
        factors=['Skewness60', 'DEGM'], 
        end_date=context.previous_date, 
        count=1
    )
    
    # 提取具体的因子值进行后续逻辑处理
    skewness_df = factor_data['Skewness60']
    # ... 您的选股逻辑 ...

总结: get_factor_kanban_values 适合在研究环境中用于因子分析、筛选和策略前期的评估;而在回测和模拟交易的代码中,请务必使用 get_factor_values 来获取截面或时间序列的因子数据。