🚀 AI 一键生成 joinquant 策略代码

聚宽研究环境中报 "name 'finance' is not defined" 错误怎么解决?

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

问题描述

技术问题需要请教各位大佬!

技术问题需要请教各位大佬!
为什么我使用官方API文档中查阅一些数据时,报name 'finance' is not defined,我是复制官方例子在研究环境中使用的。难道finance这个库改名字了吗?
情况如下:

指定查询对象为万科(000002.XSHE)的股东户数情况,返回条数为10条
q=query(finance.STK_HOLDER_NUM).filter(finance.STK_HOLDER_NUM.code=='000002.XSHE',finance.STK_HOLDER_NUM.pub_date>'2015-01-01').limit(10)
df=finance.run_query(q)

print(df)
NameError Traceback (most recent call last)
< ipython-input-7-538bef43be14> in < module>
1 #指定查询对象为万科(000002.XSHE)的股东户数情况,返回条数为10条
----> 2 q=query(finance.STK_HOLDER_NUM).filter(finance.STK_HOLDER_NUM.code=='000002.XSHE',finance.STK_HOLDER_NUM.pub_date>'2015-01-01').limit(10)
3 df=finance.run_query(q)
4 print(df)

NameError: name 'finance' is not defined

解决方案

你好!出现 NameError: name 'finance' is not defined 这个报错,并不是因为 finance 库改名字了,而是因为在研究环境(Jupyter Notebook)中,你需要显式地导入聚宽的数据包才能使用相关的模块。

在官方文档的示例中,通常会默认你已经导入了基础库。要解决这个问题,你只需要在代码的最上方加上一行导入语句:

from jqdata import *

正确的完整代码如下:

# 1. 必须先导入 jqdata 库
from jqdata import *

# 2. 指定查询对象为万科(000002.XSHE)的股东户数情况,返回条数为10条
q = query(finance.STK_HOLDER_NUM).filter(
    finance.STK_HOLDER_NUM.code=='000002.XSHE',
    finance.STK_HOLDER_NUM.pub_date>'2015-01-01'
).limit(10)

# 3. 运行查询
df = finance.run_query(q)

# 4. 打印结果
print(df)

💡 扩展提示:

不仅是 finance 模块,如果你在研究环境中需要使用 macro(宏观经济数据)、opt(期权数据)或者 get_priceget_fundamentals 等聚宽特有的 API,都需要确保在当前 Notebook 的第一个运行单元格中执行了 from jqdata import *。回测环境中系统通常会在底层自动加载部分环境,但在研究环境中必须手动导入。