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

joinquant 平台 get_fundamentals_continuously 函数获取多日财务数据指南

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

问题描述

请根据以下 SEO 主题生成完整页面内容:

Title: joinquant 连续财务数据查询:get_fundamentals_continuously 高效用法

Question: joinquant 如何使用 get_fundamentals_continuously 获取多日财务数据并避免 Panel 弃用问题?

解决方案

joinquant 平台 get_fundamentals_continuously 函数获取多日财务数据指南

在 JoinQuant(聚宽)量化交易平台中,get_fundamentals_continuously 函数用于查询多日的财务数据(如市盈率、换手率、每股收益等)。由于 Pandas 在 0.24 及后续版本中彻底废弃了 Panel 数据结构,直接使用默认参数可能会导致代码不兼容或报错。

本文将详细介绍 get_fundamentals_continuously 的参数说明、避免 Panel 弃用的最佳实践以及具体代码示例。


1. 函数语法与参数说明

API 签名

get_fundamentals_continuously(query_object, end_date=None, count=None, panel=True)

参数解析

  • query_object: SQLAlchemy 的 Query 对象,指定要查询的财务数据表及字段(如 valuationindicator 等)。
  • end_date: 查询的截止日期,支持字符串(格式为 'YYYY-MM-DD')或 datetime.date/datetime.datetime 对象。在回测中默认取 context.current_dt 的前一天。
  • count: 获取 end_date 之前 count 个交易日的数据。
  • panel: 布尔值,是否返回 pandas.Panel 对象。
    • True(默认): 返回 pandas.Panel 对象(Pandas 新版本中已弃用)。
    • False(推荐): 返回等效的 pandas.DataFrame,避免 Panel 废弃带来的兼容性问题。

注意:为了保证查询性能,平台限制返回总条数不超过 5000 条(即 查询的股票数量 × count < 5000)。


2. 避免 Panel 弃用的最佳实践

由于新版 Pandas 已移除 Panel,建议在调用 get_fundamentals_continuously 时明确设置 panel=False,以获取包含 MultiIndex 或标准结构的 DataFrame

示例代码:获取多日财务数据并转为 DataFrame

from jqdata import *

# 1. 构建 Query 查询对象
q = query(
    valuation.code,
    valuation.turnover_ratio, # 换手率
    valuation.market_cap,    # 总市值
    indicator.eps             # 每股收益
).filter(
    valuation.code.in_(['000001.XSHE', '600000.XSHG'])
)

# 2. 查询截止 2018-01-01 前 5 个交易日的财务数据,并设置 panel=False
df = get_fundamentals_continuously(q, end_date='2018-01-01', count=5, panel=False)

# 3. 查看返回的 DataFrame 数据结构
print(df)

3. 常见问题与注意事项

  1. 数据量限制:如果 股票数量 × count >= 5000,返回的数据会被截断或不完整。建议分批次或分时间段查询。
  2. 未来函数规避:在回测策略中,end_date 默认取 context.current_dt 的前一天,确保策略不会引入未来的财务数据。
  3. 多标的筛选:在定义 Query 时,针对多只股票筛选需使用 .in_([...]) 方法,例如 valuation.code.in_(['000001.XSHE', '600000.XSHG'])