问题描述
1、请问jqdata、jqlib、jqfactor这三个模块分别在什么时候需要导入啊?
2、jqdata模块是不是回测环境下会自动导入呢?
3、在研究环境下Import jqlib后发现jqlib.optimizer时显示jqlib无optimizer属性方法,但根据API文档计算组合优化时,import jqlib.optimizer 又可以导入了,请问这是什么情况啊?
4jqdata、jqlib、jqfactor三个模块详细使用文档
解决方案
1. jqdata、jqlib、jqfactor 模块的使用场景与导入时机
在 JoinQuant 聚宽平台上,这三个模块各自承担着不同的功能,具体导入场景如下:
-
jqdata模块:- 使用场景:当你需要获取基础的金融数据时使用。包括股票/基金/期货的行情数据(如
get_price,get_bars)、财务数据(如get_fundamentals)、宏观经济数据、行业概念板块数据、龙虎榜数据等。 - 导入时机:几乎在编写任何需要获取数据的策略或研究代码时,都需要在代码开头导入
import jqdata或from jqdata import *。
- 使用场景:当你需要获取基础的金融数据时使用。包括股票/基金/期货的行情数据(如
-
jqlib模块:- 使用场景:当你需要使用聚宽提供的扩展算法库时使用。主要包括:Alpha 101 因子 (
jqlib.alpha101)、Alpha 191 因子 (jqlib.alpha191)、技术分析指标 (jqlib.technical_analysis) 以及 投资组合优化器 (jqlib.optimizer)。 - 导入时机:当你的策略依赖于上述特定的扩展算法或需要进行组合权重优化时导入。
- 使用场景:当你需要使用聚宽提供的扩展算法库时使用。主要包括:Alpha 101 因子 (
-
jqfactor模块:- 使用场景:当你需要使用聚宽因子库相关功能时使用。包括获取数百个现成的因子数据 (
get_factor_values)、进行因子数据预处理(如去极值winsorize、标准化standardlize、中性化neutralize)、自定义因子计算 (Factor类) 以及进行单因子分析 (analyze_factor)。 - 导入时机:在进行多因子模型构建、因子有效性检验或需要直接调用聚宽因子库数据时导入。
- 使用场景:当你需要使用聚宽因子库相关功能时使用。包括获取数百个现成的因子数据 (
2. jqdata 模块在回测环境下是否会自动导入?
在早期的 JoinQuant 回测引擎中,部分基础 API 是作为全局函数直接注入的,可以直接调用。但是,为了代码的规范性、可读性以及与研究环境(Jupyter Notebook)的兼容性,强烈建议在所有策略代码的开头显式导入 import jqdata 或 from jqdata import *。显式导入可以避免很多不必要的 NameError,并且是目前官方推荐的标准写法。
3. 关于 import jqlib 与 import jqlib.optimizer 的问题
这是由 Python 的包(Package)导入机制 决定的。
- 在 Python 中,
jqlib是一个包(通常对应一个文件夹),而optimizer是这个包下的一个子模块(对应一个.py文件)。 - 当你仅仅执行
import jqlib时,Python 只加载了jqlib包的初始化文件(__init__.py)。如果官方在__init__.py中没有显式地把optimizer模块暴露出来(即没有写from . import optimizer),那么jqlib命名空间下就不会有optimizer这个属性。 - 因此,当你需要使用子模块时,必须明确地告诉 Python 去加载它,正确的写法是
import jqlib.optimizer或者from jqlib.optimizer import *。这不仅适用于聚宽的库,也是 Python 编程的通用规则。
4. 模块详细使用文档指引
这三个模块的详细使用说明均包含在 JoinQuant 的官方 API 文档中,你可以按照以下结构在文档中查找:
jqdata文档:请查阅 API 文档中的 “数据获取函数” 章节(包含get_price,get_fundamentals等)以及 “对象” 章节。jqlib文档:请查阅 API 文档中的 “jqlib” 章节(包含 Alpha101、Alpha191、技术分析指标)以及 “组合优化函数” 章节(包含portfolio_optimizer及各种约束条件)。jqfactor文档:请查阅 API 文档中的 “聚宽因子库” 章节。该章节详细介绍了如何获取因子值、因子数据处理函数(中性化、去极值等)、因子定义与计算方法,以及单因子分析(analyze_factor)的完整流程和图表绘制方法。