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

JoinQuant 聚宽 create_backtest 函数:code 参数与 algorithm_id 的作用与关系

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

问题描述

create_backtest函数的code是什么作用?

API中,create_backtest函数的示例二:“在研究中指定回测用策略代码:“,algorithm_id = "xxxx",此处的 "xxxx"应该用什么代替?用自己的策略ID吗?那上面的code=''''''''又是什么作用?这个例子不是用code=''''''''里面的代码来进行回测吗?为什么还要策略ID?

解决方案

在 JoinQuant (聚宽) 平台的 API 中,create_backtest 函数用于在研究环境(Jupyter Notebook)中动态创建并运行回测。针对您关于 codealgorithm_id 的疑问,以下是详细的解答:

1. code 参数的作用是什么?

code 参数允许您直接以字符串的形式传入策略的 Python 源代码

在没有 code 参数的情况下,create_backtest 会默认读取您在网页端策略编辑器中写好的代码来运行回测。但是,如果您在研究环境中进行因子测试或参数寻优,频繁去网页端修改代码会非常麻烦。通过 code 参数,您可以直接在研究环境中动态生成或修改策略代码,并立即提交回测,极大地提高了投研效率。

2. algorithm_id = "xxxx" 应该用什么代替?

是的,这里的 "xxxx" 应该替换为您自己在聚宽平台上创建的某个策略的真实 ID

您可以在聚宽网页端进入“我的策略”,点击任意一个策略进入编辑页面,查看浏览器地址栏的 URL。例如 URL 为 https://www.joinquant.com/algorithm/index/edit?algorithmId=1a2b3c4d5e,那么 1a2b3c4d5e 就是您的 algorithm_id

3. 既然用了 code 里的代码回测,为什么还要提供 algorithm_id

这是一个非常好的问题。原因在于聚宽平台的底层架构设计

  • 策略(Algorithm)作为容器:在聚宽的系统中,任何一个“回测(Backtest)”都不能孤立存在,它必须依附于一个“策略(Algorithm)”实体。algorithm_id 就是用来指定这个回测应该挂载到哪个策略名下。
  • 代码覆盖机制:当您同时传入 algorithm_idcode 时,系统的处理逻辑是:在指定的 algorithm_id 策略名下创建一个新的回测,但在执行时,忽略该策略原本保存在网页端的代码,转而强制执行您通过 code 参数传入的代码。

总结

  • algorithm_id:决定了回测结果保存在哪里(归属问题)。
  • code:决定了回测实际运行什么逻辑(执行问题)。

实际操作建议
为了保持环境整洁,建议您在网页端专门创建一个名为“研究环境专用回测”的空策略,获取其 algorithm_id。以后在研究环境中使用 create_backtest 并传入 code 时,统一使用这个 ID。这样所有的动态回测记录都会集中在这个策略下,方便管理和查看。