问题描述
get_industry() got an unexpected keyword argument 'date'
刚刚好像平台崩了,然后get_industry等函数怎么突然不能用了?请问有人有类似情况嘛?谢谢。
解决方案
遇到 get_industry() got an unexpected keyword argument 'date' 这个错误,通常是因为当前运行环境加载的 API 库版本与官方最新文档不一致导致的。结合您提到“刚刚平台崩了”,这大概率是平台后端的临时故障或环境回滚引起的。
问题原因分析
根据 JoinQuant 官方 API 文档,get_industry 函数的标准签名确实包含 date 参数:
get_industry(security, date=None)
- security:标的代码。
- date:查询的日期。默认值为 None(研究中默认值为当天,回测中默认值等于
context.current_dt)。
如果系统提示 unexpected keyword argument 'date',说明底层执行的 Python 环境中,该函数的定义被替换成了旧版本(旧版本可能不支持传入历史日期),这通常发生在平台服务器崩溃重启后,加载了旧版的 Docker 镜像或缓存。
解决方法与建议
1. 临时去掉 date 参数(应急方案)
如果您急需让策略跑通,且您的策略逻辑允许获取当前默认时间的行业数据,可以临时将 date 参数移除:
# 修改前(报错代码)
res = get_industry(security=['000001.XSHE'], date="2018-06-01")
# 修改后(临时应急代码)
res = get_industry(security=['000001.XSHE'])
注意:在回测中,不传 date 默认获取的是 context.current_dt 的数据,这在大多数情况下是符合逻辑且不会引入未来函数的。
2. 重启研究环境或重新编译回测
- 研究环境:如果您是在 Jupyter Notebook(研究环境)中遇到此问题,尝试点击菜单栏的
Kernel->Restart & Clear Output,重新加载底层环境。 - 回测环境:尝试在代码编辑页面点击“编译运行”或刷新页面,强制系统为您分配一个新的运行容器。
3. 关注官方修复进度
既然是平台崩溃后出现的群体性问题,聚宽官方的运维团队通常会很快介入修复。建议您:
- 在聚宽社区的“问题反馈”板块发帖,或者查看是否有置顶的故障公告。
- 稍等片刻(如半小时到一小时)后再次尝试运行原代码。
4. 替代方案:使用其他 API 交叉验证
如果必须获取特定日期的行业信息,且 get_industry 持续不可用,可以尝试反向查询,即使用 get_industry_stocks(industry_code, date) 获取某行业在特定日期的所有股票,然后判断您的目标股票是否在该列表中(此方法效率较低,仅作极端情况下的备选)。