запрос API Bloomberg с Python;тикеры ничего не возвращают - PullRequest
0 голосов
/ 31 января 2019

Я новичок в терминалах 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 Ответ

0 голосов
/ 31 января 2019

По общему признанию 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
...