【问题标题】:xbbg intraday bar requests raises error for fixed incomexbbg 盘中 bar 请求引发固定收益错误
【发布时间】:2023-01-29 22:17:49
【问题描述】:

我正在使用这个很棒的包 xbbg,本质上是一个围绕 blpapi 的包装器,为您处理所有令人讨厌的连接问题并以 pandas dfs 的形式检索数据。

为了获得日内数据,您必须首先将工具添加到 .yml 文件中。这些示例仅包含 Index、Comdty、Equity 和 Curncy 数据,但我需要固定收益数据。我在 xbbg(运行 v0.7)的 assets.yml 文件中添加了 Corp,编写如下:

Corp:
  - tickers: [IT0005425233]
    exch: MIL

但是,我仍然收到错误消息“无法很好地交换信息”。

MIL 在 exchange.yml 文件中正确添加:

MIL:
  tz: Europe/Rome
  allday: [800, 2200]

我还尝试在 .yml 文件中插入 des (BTPS 1.7 09/01/51) 而不是 ISIN,问题仍然存在。这里有人有同样的问题吗?如果是,你是如何解决的?

我知道有一个解决方法,您可以在其中提供 ref= kwarg,但是如果您尝试获取不同资产类别和不同交易所的数据,它会变得混乱,我想从 .yml 文件中找到问题的根源。

【问题讨论】:

    标签: bloomberg


    【解决方案1】:

    与大多数事情一样,有一个简短的答案和一个长的答案。

    简答xbbg.bdib()函数目前不处理债券(使用 CorpGovt黄键).它只识别EquityComdtyCurncyIndex。 OP 在设置 assets.ymlexch.yml 方面做得很好,但是 xbbg 包中的 const.py 中的代码有一个硬编码的黄色键列表和每个的代码/交换逻辑.

    因此,解决方法是执行您自己的 Ticker -> Exchange 映射,并将 ref= 参数用于 bdib(),如 OP 所述。 bdib() 函数每次调用只需要一个代码(因此只有一个交换),因此您可以在那里插入自己的逻辑(例如,将 ISIN 的 IT 部分用于 ref='MIL',或使用描述性名称和代码BTPS)。

    长答案//blp/refdata 服务(Bloomberg reference,第 82 页开始)的底层 DAPI IntradayBarRequest 对交换一无所知。它的参数是开始和结束日期时间范围(UTC 时间)。这个范围可以跨越多天(不像 bdib() 只适用于一天)。

    xbbg 正试图帮助将本地交易时段转换为这些 UTC 时间,这不是一项微不足道的任务。对于股票、指数、商品和外汇代码来说,这要容易一些,因为它们具有相对可靠的代码结构。考虑到可以识别债券的方式范围(例如 ISIN、Cusip、SEDOL、Bbg ID、Wertpapier Id、{Ticker Coupon Maturity} 等),债券要困难得多,所以 xbbg 回避这个问题也就不足为奇了。

    此外,债券不交易所交易因此,债券交易是双边协议(尽管通常两者之间有一个更明确的协议)。比如伦敦的交易商愿意在凌晨2点对BTPS进行报价,那么我们在米兰就可以不管什么时间进行交易。更重要的是,交易商间经纪商 (IDB) 平台(例如意大利纸币的 MTS)仅在特定时间开放,供交易商进行对冲,而在这些时间段之外流动性很差(你有没有试过在 4 天后询问金边债券的价格:伦敦时间下午 15 点?)。

    如果你够冒险(并且有一个可靠的算法从证券代码/代码到交易所名称)你可以进入xbbg代码本身并编辑const.py

    具体来说,您需要在ASSET_INFO 字典中添加另一行:

    ASSET_INFO = {
        'Index': ['tickers'],
        'Comdty': ['tickers', 'key_month'],
        'Curncy': ['tickers'],
        'Equity': ['exch_codes'],
        'Govt': ['tickers'],
    }
    

    并修改market_info()函数定义。

    if (not exch_only) and (t_info[-1] not in ['Equity', 'Comdty', 'Curncy', 'Index','Govt']):
            return pd.Series(dtype=object)
    

    这样Govt 代码就不会被丢弃。

    然后你可以在assets.yml中输入一个条目,例如:

    Govt:
      - tickers: [IT0005425233]
        exch: MIL
    

    对于每个债券,或设置 tickers:[IT] 并将逻辑放入 market_info 函数中以检测 Govt 代码并搜索 ISIN 的前两个字符。或者使用 BTPS 并仅提供 id 的 ticker-coupon-maturity。

    注意事项.这种方法的问题在于,如果您升级xbbg 包,那么您的更改将会丢失!

    最后,您仍然可以利用 xbbg 对“为您解决所有令人讨厌的连接问题并以 pandas dfs 的形式检索数据“通过编写您自己的 bdib() 函数版本,并传递您自己的显式开始和结束 UTC 时间......

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-08-30
      • 1970-01-01
      • 2017-01-29
      • 2019-01-30
      • 1970-01-01
      • 2022-07-26
      • 1970-01-01
      相关资源
      最近更新 更多