Bloomberg multiple overrides

Viewed 23

I am trying to submit bulk data to convert yields to prices with bloomberg "yas_bond_px" field. However, when I have multiple overrides, such as yields and yld_convention, the query is not running. The only way is to use for i in list_x:, however, it takes long time as the loop sends query row by row. Is it any way to send the query for multiple overrides asynchronously or in parallel in order to not use for loop.

Here is my code:

def yas_calc(securities,overrideValue1,overrideValue2):
   sessionOptions = blpapi.SessionOptions()
   sessionOptions.setServerHost('localhost')
   sessionOptions.setServerPort(8194)

   
   session = blpapi.Session(sessionOptions)


   if not session.start():
      print("Failed to start session.")
      return

   try:
      # Open service to get Bloomberg data from
       if not session.openService("//blp/refdata"):
           print("Failed to open //blp/refdata")
           return

       service = session.getService(REFDATA_SERVICE)

       requestField = 'YAS_BOND_PX'
       overrideID1 = 'YAS_BOND_YLD'
       overrideID2 = 'YAS_YLD_CONV'

       refDataService = session.getService("//blp/refdata")
       request = refDataService.createRequest("ReferenceDataRequest")


       request.getElement("securities").appendValue(securities)
       request.getElement("fields").appendValue(requestField)
       overrides1 = request.getElement("overrides").appendElement()
       overrides1.setElement("fieldId", overrideID1)
       overrides1.setElement("value", overrideValue1)
       overrides2 = request.getElement("overrides").appendElement()
       overrides2.setElement("fieldId", overrideID2)
       overrides2.setElement("value", overrideValue2)

       session.sendRequest(request)

   

       while (True):
        # We provide timeout to give the chance for Ctrl+C handling:
          ev = session.nextEvent(500)
          for msg in ev:
              if msg.messageType() == "ReferenceDataResponse":
                  response_x = msg.getElement("securityData").getValueAsElement(0).getElement("fieldData").getElementAsString(
                    requestField)
                  print(response_x)


                  return msg.getElement("securityData").getValueAsElement(0).getElement("fieldData").getElementAsString(
                    requestField)

          if ev.eventType() == blpapi.Event.RESPONSE:
            # Response completely received, so we could exit
               break
    finally:# Stop the session
        session.stop()
0 Answers
Related