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

ptrade 平台 get_fundamentals 获取的财务数据不是最新的怎么办?

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

问题描述

get_fundamentals获取的财务数据是上一季度的,不是最新的怎么办?

/

解决方案

在 ptrade 量化平台中,使用 get_fundamentals 获取财务数据时,默认情况下为了防止未来函数(即在回测中使用了当时还未公布的数据),系统会返回首次发布的原始数据。如果上市公司后续对财务报表进行了修正或更新,默认参数下是获取不到这些最新修正数据的。

要获取最新的财务数据,您需要使用 merge_type 参数。

解决方法:设置 merge_type=1

在调用 get_fundamentals 接口时,将 merge_type 参数设置为 1,即可获取最新发布(修正后)的数据。这在研究场景实盘交易场景中非常有用。

参数说明:

  • merge_type=None (默认):获取首次发布的数据,即使实际数据发生变化,也只返回原样数据信息。回测场景为避免未来数据建议使用此模式。
  • merge_type=1:获取最新发布的数据,更新数据范围包括但不限于相关日期数据。研究场景或交易场景建议使用此模式。

代码示例

def initialize(context):
    g.security = ['600570.SS']
    set_universe(g.security)

def handle_data(context, data):
    # 默认情况:获取首次发布的原始数据(可能不是最新的修正数据)
    fields = ['total_assets', 'total_liability']
    df_original = get_fundamentals(g.security, 'balance_statement', fields, '20230628')
    log.info("原始财务数据:\n%s" % df_original)
    
    # 解决方法:设置 merge_type=1 获取最新发布的修正数据
    df_latest = get_fundamentals(g.security, 'balance_statement', fields, '20230628', merge_type=1)
    log.info("最新财务数据:\n%s" % df_latest)

补充说明:date_type 参数的影响

除了 merge_typedate_type 参数也会影响您获取到的数据所属的周期:

  • date_type=None (默认):返回**发布日期(publ_date)**在查询日期(date)之前的数据。这意味着如果一季报在4月公布,你在3月查询,只能查到去年的年报或三季报。
  • date_type=1:返回**会计周期(end_date)**在查询日期(date)之前的数据。如果未指定财报类型,则默认为查询日期最近季度会计周期的数据(如果该数据在查询日还未公布,则用 NaN 填充)。

总结:如果您在实盘或研究中发现数据不是最新的修正版,请加上 merge_type=1;如果您发现获取的季度不对,请检查 date_type 和查询日期 date 的设置。