问题描述
解决方案
在 JoinQuant 聚宽平台上,查询基金的累计净值数据主要使用 get_extras 函数。
核心函数说明
get_extras(info, security_list, start_date, end_date, df=True, count=None)
该函数用于获取多只标的在一段时间内的额外数据。要获取基金累计净值,需将 info 参数设置为 'acc_net_value'。
- info: 字符串,设置为
'acc_net_value'表示获取基金累计净值。 - security_list: 基金代码列表(如
['510300.XSHG'])。 - start_date / end_date: 查询的开始和结束日期。
- df: 布尔值,默认为
True,返回 pandas.DataFrame;设为False则返回字典。
代码示例
以下代码展示了如何获取 华泰柏瑞沪深300ETF (510300.XSHG) 在指定时间段内的累计净值数据:
# -*- coding: utf-8 -*-
from jqdata import *
def initialize(context):
# 设定要查询的基金代码
fund_list = ['510300.XSHG']
# 设定查询时间段
start_date = '2023-01-01'
end_date = '2023-02-01'
# 调用 get_extras 获取累计净值
# info 参数必须为 'acc_net_value'
acc_net_value_df = get_extras(
info='acc_net_value',
security_list=fund_list,
start_date=start_date,
end_date=end_date,
df=True
)
# 打印结果
print("基金累计净值数据:")
print(acc_net_value_df)
# 如果是在回测或模拟交易中,通常不需要运行后续逻辑,这里仅做演示
# 实际策略中可以在 handle_data 或定时函数中调用
返回数据格式
当 df=True(默认)时,返回的数据格式为 pandas.DataFrame:
- 索引 (Index): 日期 (
datetime.datetime对象)。 - 列名 (Columns): 基金代码。
- 值 (Values): 对应日期的累计净值。
Q&A
Q: get_extras 函数除了累计净值还能查询哪些基金数据?
A: 除了累计净值 (acc_net_value),get_extras 还可以查询基金的单位净值 (unit_net_value) 以及场外基金的复权净值 (adj_net_value)。
Q: 如果查询的日期是基金成立之前的日期,返回值是什么?
A: 如果查询日期早于基金上市或成立日期,返回的数据中对应的值通常为 NaN (Not a Number)。
Q: 如何同时查询多只基金的累计净值?
A: 只需将多个基金代码放入 security_list 列表中即可,例如 ['510300.XSHG', '159915.XSHE']。返回的 DataFrame 将包含多列,每一列对应一只基金。
Q: 这个函数可以在研究环境中使用吗?
A: 可以。get_extras 函数在回测环境、模拟交易环境以及研究环境(Notebook)中均可使用。