XBBG 适用于政府债券的历史数据,但不适用于盘中数据

问题描述

我正在使用 xbbg 库下载 Bloomberg 数据,只要我坚持使用股票和/或日终数据,一切都会好起来的。但是,如果我尝试获取政府债券的日内数据,则无法找到交易所。

blp.bdib(ticker='US912810SM18 Corp',dt='2020-10-17').tail()

将产生以下内容

KeyError: 'Cannot find exchange info for US912810SM18 Corp'

但是,如果我使用 blp.bdh 作为一天结束日期,它会发现它没有任何故障。

我应该如何修改 assets.yml 和 exch.yml 文件以使其工作?

解决方法

原始的 BLP API Interface(第 85 页)本身不使用“交换”。该界面仅采用开始和结束日期时间 (UTC),因此由用户决定任何时区调整。

查看 python 源代码,xbbg 会为您进行时区调整(如果可以的话)。它首先检查 assets.yml 中的股票代码,看看它是否可以执行某种匹配,以找到交换代码。交换代码在 exch.yml 中查找,给出时区 (tz)。

我(默认?)assets.yml 中的这个部分有一个条目:

  - tickers: [
      USGG2YR,USGG10YR,USYC2Y10,USYC1030,USGG30YR
    ]
    exch: IndexUS

这是 exch.yml 中的条目,它给出了交易日的时间:

IndexUS:
  tz: America/New_York
  allday: [930,1600]

资产查找的替代方法是自己提供交易所名称。由于您的股票代码是 TIPS 债券,它的交易时间可能与 USGG2YR(2 年通用财政部)相同,因此我们可以使用“IndexUS”作为交易所。 'ref' 参数可用于指定交换。

blp.bdib(ticker='US912810SM18 Corp',dt='2021-04-16',ref='IndexUS').tail()

给出结果:

                          US912810SM18 Corp              ...
                                       open        high  ... num_trds value
2021-04-16 15:55:00-04:00        106.632812  106.671875  ...       34   0.0
2021-04-16 15:56:00-04:00        106.640625  106.656250  ...       34   0.0
2021-04-16 15:57:00-04:00        106.625000  106.625000  ...       31   0.0
2021-04-16 15:58:00-04:00        106.617188  106.757812  ...       33   0.0
2021-04-16 15:59:00-04:00        106.710938  106.757812  ...       32   0.0

[5 rows x 7 columns]

注意。 2020 年 10 月 17 日是星期六(没有数据),无论如何 API 说 Bloomi 只存储过去 140 个工作日的逐笔报价数据(即 6 个月)。

当然,如果您想要定制交易时间,您可以在 exch.yml 中添加您自己的条目,然后引用该名称。

顺便说一句,如果您不需要 OHLC 数据,还有一个 blp.bdtick() 函数(我认为)可以拉回原始刻度数据,而不是柱线。

[编辑] 为了解释为什么它适用于股票,assets.yml 文件列出了更多的股票可能性。政府债券在交易所的交易方式不同,交易时间更符合惯例。与日终价格不同,BDH 只使用彭博为该资产定义的任何收盘时间。