You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何正确处理Bloomberg API批量字段DVD_HIST_ALL返回的报错问题

彭博API拉取DVD_HIST_ALL等批量字段的正确方法

错误原因

你调用的接口与字段类型不匹配:

  • bdp() 全称为 Bloomberg Data Point,是单值点查询接口,仅支持返回单个值的静态字段(比如你之前使用的DVD_CRNCY返回单一的分红货币代码),因此可以正常运行
  • DVD_HIST_ALL属于结构化数据集字段,返回多组历史分红的多行列数据,无法通过bdp()接口解析,因此会触发报错

正确解决方案

这类批量数据集字段需要调用bds()(Bloomberg Data Set)接口拉取,以下是不同常用彭博Python封装库的实现代码:

xbbg 库写法(最常用)

import pandas as pd
from xbbg import blp

# 拉取全量历史分红数据
df_div = blp.bds(
    tickers='AAPL US Equity',
    flds=['DVD_HIST_ALL']
)

df_div.head()

如果需要限定拉取的时间范围,可以添加时间参数:

# 拉取2010年至2023年的历史分红数据
df_div = blp.bds(
    tickers='AAPL US Equity',
    flds=['DVD_HIST_ALL'],
    start_date='2010-01-01',
    end_date='2023-12-31'
)

pdblp 库写法

import pandas as pd
import pdblp

# 初始化连接,确保彭博终端已登录
con = pdblp.BCon(debug=False, port=8194, timeout=5000)
con.start()

df_div = con.bds('AAPL US Equity', 'DVD_HIST_ALL')
df_div.head()

注意事项

  • 所有返回多行列的非单值字段(比如历史收益HIST_TRR_MONTHLY、股东变化OWNERSHIP_HISTORY、持仓明细类字段等),都需要使用bds()接口拉取
  • 拉取前需确认彭博终端处于登录状态,本地API默认端口8194未被其他程序占用

内容的提问来源于stack exchange,提问作者ArthurV

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.09 23:06:03