Запрос API Bloomberg с Python; тикеры ничего не возвращают
Я новичок в терминалах Bloomberg, но я пытаюсь получить данные из Bloomberg с помощью API Python. Базовый C++ SDK, кажется, работает, так как я установил pip следующие библиотеки Python:
blpapi
pdblp
Я могу подключиться к терминалу и запустить пример данных, которые идут с пакетами:
con = pdblp.BCon(debug=False, port=8194, timeout=5000)
con.start()
# print some data
con.bdh('SPY US Equity', ['PX_LAST', 'VOLUME'],'20150629', '20150630')
Это возвращает следующее:
ticker SPY US Equity
field PX_LAST VOLUME
date
2015-06-29 205.42 202621332.0
2015-06-30 205.85 182925106.0
Так что, кажется, все работает. Проблема в том, что если я хочу попробовать поискать определенные тикеры, он просто возвращает пустое datafame:
con.bsrch('COH9') #returns []
con.bsrch("COMDTY:COH9")
con.bsrch('COH9 Comdty')
con.bsrch("COMDTY")
con.bsrch('CL1 Comdty')
con.bsrch('CO1 Comdty')
Все они возвращаются []. метод 'bsrch' должен работать, потому что следующий пример, предоставленный в readme, работает и выбирает данные:
con.bsrch("COMDTY:NGFLOW")
Проблема в том, что каждая из этих строк возвращает что-то в терминале Bloomberg, но ничего не возвращает с этим API. Зачем? Документы говорят, что это функция поиска?
Я пробовал другие команды, такие как:
con.bdib('CL1 Comdty', start_datetime='20190127', end_datetime='20190128', event_type='BID', interval=1)
который также выдает ошибку:
Traceback (most recent call last):
File "bloomberg_api_test.py", line 56, in <module>
bloomberg_api_test()
File "bloomberg_api_test.py", line 38, in bloomberg_api_test
print(con.bdib('CL1 Comdty', start_datetime='20190127', end_datetime='20190128', event_type='BID', interval=1))
File "C:\Users\svc_tradingops\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pdblp\pdblp.py", line 681, in bdib
data = pd.DataFrame(data).set_index('time').sort_index().loc[:, flds]
File "C:\Users\svc_tradingops\AppData\Local\Programs\Python\Python37-32\lib\site-packages\pandas\core\frame.py", line 4156, in set_index
raise KeyError('{}'.format(missing))
KeyError: "['time']"
В документах нет четких указаний о том, как использовать эти методы, если я что-то пропустил?
1 ответ
По общему признанию bsrch
не очень хорошо документированная особенность библиотеки. Одна из проблем вокруг этого заключается в том, что bsrch
использует делает ExcelGetGridRequest
через базовый blpapi
библиотека и этот сервис не задокументированы Bloomberg. По состоянию на последний раз, когда я проверял, нет никакой информации в Services & schemas reference guide
или Core developer guide
из Bloomberg о ExcelGetGridRequest
, Один из способов выяснить, является ли это проблемой с blpapi
обслуживание или некоторая обработка через pdblp
это установить debug=True
, который будет печатать базовые ответные сообщения. например
import pdblp
con = pdblp.BCon(debug=True).start()
con.bsrch("COMDTY:COH9")
Представленное ниже сообщение указывает на то, что это неверный домен. Как уже упоминалось выше, документации о том, что это значит, не так много, поскольку ExcelGetGridRequest
служба недостаточно документирована, но служба поддержки Bloomberg может пролить больше света на эту услугу.
pdblp.pdblp:INFO:Sending Request:
ExcelGetGridRequest = {
Domain = "COMDTY:COH9"
}
pdblp.pdblp:INFO:Event Type: 'RESPONSE'
pdblp.pdblp:INFO:Message Received:
GridResponse = {
NumOfFields = 0
NumOfRecords = 0
ColumnTitles[] = {
}
DataRecords[] = {
}
ReachMax = false
Error = "The domain entered: COMDTY:COH9 is not valid."
SequenceNumber = 0
}
За bdib
согласно документам start_datetime
а также end_datetime
формат должен быть YYYY-mm-ddTHH:MM:SS
, но по общему признанию ошибка, которая возникает, когда это не удовлетворяется, немного вводит в заблуждение. Например
con.bdib('CL1 Comdty', start_datetime='2019-01-28T10:00:00',
end_datetime='2019-01-28T10:05:00', event_type='BID', interval=1)
open high low close volume numEvents
time
2019-01-28 10:00:00 52.62 52.67 52.62 52.66 10147 700
2019-01-28 10:01:00 52.66 52.69 52.64 52.69 9181 608
2019-01-28 10:02:00 52.69 52.70 52.68 52.69 12349 732
2019-01-28 10:03:00 52.69 52.71 52.68 52.70 11816 631
2019-01-28 10:04:00 52.70 52.70 52.67 52.69 8629 523