如何将 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]
我有以下 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]