🚀 AI 一键生成 joinquant 策略代码

JoinQuant `set_benchmark` 教程:如何设置自定义组合为回测基准?

joinquant | 发布时间: 2025/12/3
以下内容由 EasyQuant 生成。

问题描述

怎么把一个股票组合设置成回测的业绩基准?

解决方案

在聚宽(JoinQuant)平台中,将一个自定义的股票组合设置为回测的业绩基准,需要使用 set_benchmark 函数。

设置方法

你可以向 set_benchmark 函数传入一个字典(dict),其中:

  • Key(键):为股票、指数或 ETF 的代码(字符串格式)。
  • Value(值):为该标的在基准组合中的权重(浮点数)。

代码示例

以下代码展示了如何在 initialize 函数中,将基准设置为由 50% 平安银行50% 万科A 组成的投资组合:

# -*- coding: utf-8 -*-
def initialize(context):
    # 定义股票组合及其权重
    # 权重之和建议等于 1.0
    custom_benchmark = {
        '000001.XSHE': 0.5,  # 平安银行 50%
        '000002.XSHE': 0.5   # 万科A 50%
    }
    
    # 设置该组合为业绩基准
    set_benchmark(custom_benchmark)
    
    # 其他初始化代码...
    g.security = '000001.XSHE'
    set_option('use_real_price', True)

def handle_data(context, data):
    pass

注意事项

  1. 权重总和:字典中所有 Value(权重)相加通常应等于 1.0。如果小于 1.0,剩余部分将被视为持有现金(收益率为 0)。
  2. 标的类型:组合中可以混合包含股票、指数和 ETF。
  3. 调用位置:通常在 initialize 函数中调用一次即可。

Q&A

Q: 如果我的基准组合权重加起来超过 1.0 会怎么样?
A: 系统通常要求权重之和小于等于 1.0。如果超过 1.0,可能会导致基准计算逻辑不符合预期或报错,建议严格控制权重之和为 1。

Q: 能否在回测过程中动态修改基准?
A: set_benchmark 通常在 initialize 中设置一次。如果在回测中途再次调用,会重置后续日期的基准,但为了保证回测结果的可解释性,通常不建议在运行过程中频繁变更基准。

Q: 如果我想用某一只特定的指数(如中证500)做基准,怎么写?
A: 直接传入指数代码字符串即可,无需使用字典。例如:set_benchmark('000905.XSHG')