aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/bbg_helpers.py38
1 files changed, 27 insertions, 11 deletions
diff --git a/python/bbg_helpers.py b/python/bbg_helpers.py
index 92d5a57c..818cee60 100644
--- a/python/bbg_helpers.py
+++ b/python/bbg_helpers.py
@@ -50,20 +50,36 @@ def retreive_data(session, securities, fields, settle_date=None):
session.stop()
return data
-def process_msgs(data, fields):
- newdata = []
+def process_msgs(data):
+ # return a dict whose keys are the bloomberg securities
+ # and whose values are a dict of bloomberg fields -> values
+ # the values can either be a scalar or a dataframe
+ newdata = {}
for msg in data:
if msg.messageType() == blpapi.Name("ReferenceDataResponse"):
securityDataArray = msg.getElement("securityData")
for securityData in securityDataArray.values():
securityName = securityData.getElementValue("security")
+ row = {}
fieldData = securityData.getElement("fieldData")
- row = {'security': securityName}
- for fieldName in fields:
- try:
- fieldValue = fieldData.getElementValue(fieldName)
- row[fieldName] = fieldValue
- except blpapi.NotFoundException:
- row[fieldName] = None
- newdata.append(row)
- return pd.DataFrame.from_dict(newdata)
+ for field in fieldData.elements():
+ if not field.isValid():
+ print "Invalid field: {0}".format(str(field))
+ elif field.isArray():
+ df = pd.DataFrame.from_dict(
+ [{str(e.name()): e.getValue() for e in f.elements()} \
+ for f in field.values()])
+ row[str(field.name())] = df.convert_objects(convert_dates='coerce') #to convert dates to timestamps
+ else:
+ row[str(field.name())] = field.getValue()
+ newdata[securityName] = row
+ return newdata
+
+
+if __name__=="__main__":
+ session = init_bbg_session('192.168.0.4', 8194)
+ fields = ['HIST_PRINCIPAL_DISTRIBUTED', 'HIST_LOSSES', 'MTG_HIST_FACT',
+ 'MTG_HIST_CPN', 'HIST_INTEREST_DISTRIBUTED']
+ sec = ['45254NMV6 Mtge']
+ data = retreive_data(session, sec, fields)
+ test = process_msgs(data)