3 分钟快速生成代码
输入想法,AI 即刻生成可运行代码
在 JoinQuant(聚宽)平台中,如果您希望将回测的基准(Benchmark)设置为由几只股票或指数按不同权重组成的自定义组合,可以使用 set_benchmark 函数,并传入一个**字典(dict)**作为参数。
以下是具体的实现方法和代码示例。
您需要在策略的 initialize(context) 函数中调用 set_benchmark。
# -*- coding: utf-8 -*-
def initialize(context):
# 设定自定义组合作为基准
# 格式为 {'标的代码': 权重, ...}
# 示例:50%的平安银行,30%的沪深300指数,20%的浦发银行
custom_benchmark = {
'000001.XSHE': 0.5, # 平安银行
'000300.XSHG': 0.3, # 沪深300
'600000.XSHG': 0.2 # 浦发银行
}
# 调用API设置基准
set_benchmark(custom_benchmark)
# 其他初始化代码...
set_option('use_real_price', True)
log.info("基准已设置为自定义组合")
def handle_data(context, data):
pass
set_benchmark 通常在 initialize 函数中调用,只需设置一次。'000001.XSHE'。Q: 如果我设置的权重之和小于1,剩余的部分怎么计算收益?
A: 如果权重之和小于1(例如0.8),剩余的0.2部分代表基准中这部分资金闲置(持有现金),其收益率为0。这意味着基准的波动率会降低,通常也会拉低基准在牛市中的表现。
Q: set_benchmark 可以动态调整吗?
A: set_benchmark 主要用于设定回测整体的参考标准,通常在 initialize 中设定一次。虽然技术上可以在运行过程中再次调用,但基准收益曲线的计算通常是基于初始设定的,中途修改可能会导致收益曲线计算逻辑混乱或不符合预期,因此建议仅在初始化时设定。
Q: 自定义基准支持期货合约吗?
A: 支持。您可以传入期货合约代码。如果在期货策略中不希望看到基准曲线,可以设置 set_benchmark({"000001.XSHG":0}),即权重为0,这样基准收益将一直为0。