如何将 BDS excel-公式转换为 Python 的 XBBG API

How to translate a BDS excel-formula to XBBG API for Python

我有以下 Bloomberg BDS excel-公式: (由于excel设置不同,“;”被替换为“,”)

=@BSD(”TSLA US Equity”;”CHAIN_TICKERS”;”CHAIN_EXP_DT_OVRD=20210917”;”CHAIN_PUT_CALL_TYPE_OVRD=CALL”;”CHAIN_POINTS_OVRD=1000”)

在这种情况下,从这里我得到了代码的所有看涨期权代码的列表,TSLA 的到期日为 17/09/2021 (DDMMYYYY)。

在尝试将它翻译成彭博社的 XBBG API 时,我做了以下工作(根据之前 SO'er 的有用建议):

import xbbg as blp
df = blp.bds(['TSLA US Equity'],
['CHAIN_TICKERS'],
CHAIN_EXP_DT_OVRD='CHAIN_EXP_DT_OVRD=20210917',
CHAIN_PUT_CALL_TYPE_OVRD='CHAIN_PUT_CALL_TYPE_OVRD=CALL',
CHAIN_POINTS_OVRD='CHAIN_POINTS_OVRD=1000')

但我只返回了一个数据点,而不是整个列表。

我做错了什么?

您指定的参数不正确。该函数不理解 CHAIN_POINTS_OVRD 值,因此回退到默认值 1,这就是返回的数据帧只有一个值的原因。

使用 xbbg 您通常可以提供 Python 类型,覆盖名称成为 bds 调用中的参数名称(无引号)。所以在这种情况下,日期覆盖可以是一个 datetime 值,链点覆盖可以是一个数字。

from xbbg import blp
from datetime import datetime

df = blp.bds('TSLA US Equity',
             'CHAIN_TICKERS',
             CHAIN_EXP_DT_OVRD=datetime(2021,9,17),
             CHAIN_PUT_CALL_TYPE_OVRD='CALL',
             CHAIN_POINTS_OVRD=1000)

print(df)

输出:

                                ticker
TSLA US Equity     TSLA US 09/17/21 C1
TSLA US Equity     TSLA US 09/17/21 C2
TSLA US Equity     TSLA US 09/17/21 C3
TSLA US Equity     TSLA US 09/17/21 C4
TSLA US Equity     TSLA US 09/17/21 C5
...                                ...
TSLA US Equity  TSLA US 09/17/21 C1600
TSLA US Equity  TSLA US 09/17/21 C1625
TSLA US Equity  TSLA US 09/17/21 C1650
TSLA US Equity  TSLA US 09/17/21 C1675
TSLA US Equity  TSLA US 09/17/21 C1700

[334 rows x 1 columns]