微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在bloomberg api上获取商品指数期货价格

如何解决在bloomberg api上获取商品指数期货价格

我需要从bloomberg api获取CL1、S 1、C1等商品的开盘价、最高价、最低价、收盘价和成交量数据...

现在,我在做

from xbbg import blp
blp.bdib(ticker="CL1 COMB Comdty",dt="2021-06-01",exch="cme")

这适用于 CL1,但当我尝试其他任何方法时它不起作用。例如。运行

blp.bdib(ticker="S 1 COMB Comdty",exch="cme")

给我一​​个 KeyError:'找不到 S1 COMB Comdty 的交换信息'

关于如何解决这个问题的任何线索?

解决方法

Xbbg 使用“交换”纯粹作为计算底层彭博 API 调用的时区和交易时间的方法(因为 API 只需要开始和结束 UTC 日期/时间)。

“CL1”有效而“S 1”无效的原因是前一个代码列在默认的 xbbg assets.yml 文件中。该文件提供了常见代码的查找,以识别其交易时间/TZ。 exch.yml 中列出了“交易所”。

用于不在 assets.yml 中指定 CME 的代码的参数名称是“ref”:

df = blp.bdib(ticker="S 1 COMB Comdty",dt="2021-06-01",ref="CME")
print(df.tail())

给出:

                          S 1 COMB Comdty           ...                    
                                     open     high  ... num_trds      value
2021-06-01 14:15:00-04:00         1548.75  1550.00  ...      105  365683.75
2021-06-01 14:16:00-04:00         1549.75  1550.00  ...       45  161172.75
2021-06-01 14:17:00-04:00         1549.50  1549.50  ...       29  139409.25
2021-06-01 14:18:00-04:00         1548.50  1549.00  ...       24  168826.25
2021-06-01 14:19:00-04:00         1548.25  1548.75  ...       43  247673.00

或者,您可以在 assets.yml 文件中添加一个条目(在路径 \Lib\site-packages\xbbg\markets\assets.yml 上):

Comdty:
  ...
  - tickers: [S]
    exch: CME
    freq: M
    is_fut: True
  ...

然后你可以调用:

df = blp.bdib(ticker="S 1 COMB Comdty",dt="2021-06-01")

CME 的 exch.yml 条目是:

CME:
  tz: America/New_York
  allday: [1800,1700]
  day: [800,1700]

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。