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

为什么在 JoinQuant 中使用 get_extras 获取基金单位净值会返回 NaN?

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

问题描述

get_extras无法取到单位净值

net_value=get_extras('unit_net_value', '160142.XSHE', start_date='2021-08-27', end_date='2021-09-07')
net_value
输出


160142.XSHE
2021-08-27 1.1817
2021-08-30 1.1825
2021-08-31 1.1799
2021-09-01 1.1837
2021-09-02 NaN
2021-09-03 NaN
2021-09-06 NaN
2021-09-07 NaN
今天已经7号了,为啥还取不到9-2号的净值?

解决方案

在使用 JoinQuant 的 get_extras 函数获取基金的单位净值(unit_net_value)时,如果遇到最近几天的返回值为 NaN,通常是由以下几个原因造成的:

1. 基金公司披露延迟

基金的净值数据是由基金公司计算并对外披露的。不同类型的基金披露净值的时效性不同:

  • 普通开放式基金(股票型、混合型等):通常在 T 日收盘后计算,T+1 日公布。
  • QDII 基金或部分 FOF 基金:由于涉及海外市场或底层基金的净值确认,通常会延迟 T+2 甚至 T+3 日才能公布净值。

如果该基金(如 160142.XSHE)在特定时间段内基金公司尚未披露净值,聚宽的数据源自然也无法获取到,从而显示为 NaN

2. 节假日或非交易日影响

请检查缺失数据的日期是否包含周末或法定节假日。虽然您列出的 9-02 到 9-07 包含工作日,但如果遇到特殊情况(如海外市场节假日导致 QDII 暂停估值),也会导致净值缺失。

3. 平台数据同步延迟

聚宽的数据需要从各大交易所和数据供应商处同步。如果上游数据源出现短暂的延迟或异常,可能会导致最新几天的净值未能及时入库。通常聚宽会在发现问题后尽快修复并回填数据。

解决方法与排查建议

  1. 核实官方披露情况:您可以前往天天基金网、东方财富或该基金公司的官方网站,查询 160142 在 9月2日至9月7日期间的净值是否已经实际公布。如果官方也未公布,说明是基金本身的问题。
  2. 使用前值填充(向前填充):在量化策略中,为了防止 NaN 导致计算报错,通常会使用 Pandas 的 fillna(method='ffill') 方法,用最近一次的有效净值来填充缺失值。
    import pandas as pd
    net_value = get_extras('unit_net_value', '160142.XSHE', start_date='2021-08-27', end_date='2021-09-07')
    # 使用前一个有效值填充 NaN
    net_value = net_value.fillna(method='ffill')
    print(net_value)
    
  3. 联系聚宽客服:如果您确认基金公司早已披露了该时间段的净值,但聚宽平台上依然是 NaN,这可能是数据遗漏。建议您在聚宽社区发帖或联系客服,提供具体的代码和日期,工作人员会核实并修复数据。