如何从 Bloomberg Python API 获取数据?

How to get data from Bloomberg Python API?

如何通过Python获得特别现金? 在 BLQ 中它适用于

=BQL("6592 JP Equity","dropna(CASH_DIVS(DIVIDEND_TYPE=SPECIAL))","dates=range(1y,0d)","showdates=y")

目前 Excel 中的 BQL 接口无法通过 Python 直接使用。有一些笨拙的解决方法(从 Python 驱动 Excel 和 运行 电子表格中的函数),但在这种情况下,可以通过 'old school' 数据 API,使用批量数据(与 Excel 中的 =BDS(...) 函数相同的方式)。

DAPI 的第一个障碍是确定所需字段的名称(因为它们不一定与 BQL 使用的字段匹配),以及任何覆盖的名称。在彭博终端 window 中键入 6592 JP Equity FLDS Go 以查看所有可用的数据字段,然后可以搜索这些字段:

股息历史字段 - 现金是 DVD_HIST

如果单击 DVD_HIST,您将获得该字段的完整说明,以及可以应用的任何覆盖。在这种情况下,需要的覆盖是 DVD_START_DT.

有了这些信息,您就可以使用您喜欢的任何 Python 软件包来访问彭博数据。我的偏好是 xbbg,但也可以使用其他软件包。如果您还没有安装 Bloomberg API,请先从 here 安装它。

Bloomberg DAPI 不提供 dividend_type 的覆盖,因此您必须拉回所有行并自行过滤:

from xbbg import blp
from datetime import datetime,timedelta

#Find start date 
dt = datetime.today() - timedelta(days=365)

#Get all cash dividends after DVD_START_DT in a DataFrame
dfAll = blp.bds('6592 JP Equity','DVD_HIST',DVD_START_DT=dt.strftime('%Y%m%d'))

#Filter DataFrame for rows with dividend_type=='Special Cash'
dfSpecial = dfAll[dfAll['dividend_type'] == 'Special Cash']

print(dfSpecial)

哪个returns:

               declared_date     ex_date record_date payable_date  dividend_amount dividend_frequency dividend_type
6592 JP Equity    2021-02-12  2021-12-29  2021-12-31         None             43.0           Semi-Anl  Special Cash
6592 JP Equity    2021-02-12  2021-06-29  2021-06-30   2021-09-13             42.0           Semi-Anl  Special Cash
6592 JP Equity    2020-02-13  2020-12-29  2020-12-31   2021-03-31             53.0           Semi-Anl  Special Cash