aboutsummaryrefslogtreecommitdiffstats
path: root/python/bbg_helpers.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/bbg_helpers.py')
-rw-r--r--python/bbg_helpers.py33
1 files changed, 24 insertions, 9 deletions
diff --git a/python/bbg_helpers.py b/python/bbg_helpers.py
index 840ecc33..9c34899c 100644
--- a/python/bbg_helpers.py
+++ b/python/bbg_helpers.py
@@ -28,9 +28,13 @@ def init_bbg_session(ipaddr, port=8194):
finally:
session.stop()
-def retreive_data(session, securities, fields, settle_date=None):
+def retreive_data(session, securities, fields, settle_date=None,
+ start_date=None, end_date=None):
refDataService = session.getService("//blp/refdata")
- request = refDataService.createRequest("ReferenceDataRequest")
+ if start_date:
+ request = refDataService.createRequest("HistoricalDataRequest")
+ else:
+ request = refDataService.createRequest("ReferenceDataRequest")
for security in securities:
request.append("securities", security)
for field in fields:
@@ -40,6 +44,9 @@ def retreive_data(session, securities, fields, settle_date=None):
o = overrides.appendElement()
o.setElement("fieldId", "SETTLE_DT")
o.setElement("value", "{0:%Y%m%d}".format(settle_date))
+ if start_date:
+ request.set("startDate", "{0:%Y%m%d}".format(start_date))
+ request.set("endDate", "{0:%Y%m%d}".format(end_date))
session.sendRequest(request)
data = []
@@ -69,7 +76,7 @@ def process_msgs(data):
fieldData = securityData.getElement("fieldData")
for field in fieldData.elements():
if not field.isValid():
- print "Invalid field: {0}".format(str(field))
+ logger.info("Invalid field: {0}".format(str(field)))
elif field.isArray():
df = pd.DataFrame.from_dict(
[{str(e.name()): e.getValue() for e in f.elements()} \
@@ -78,13 +85,21 @@ def process_msgs(data):
else:
row[str(field.name())] = field.getValue()
newdata[securityName] = row
+ if msg.messageType() == blpapi.Name("HistoricalDataResponse"):
+ securityData = msg.getElement("securityData")
+ securityName = securityData.getElementValue("security")
+ fieldData = securityData.getElement("fieldData")
+ df = pd.DataFrame.from_dict([{str(e.name()): e.getValue() for e in f.elements()} \
+ for f in fieldData.values()])
+ df.convert_objects(convert_dates='coerce')
+ newdata[securityName] = df
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)
+ startdate = pd.datetime(2013, 1, 1)
+ enddate = pd.datetime(2015, 8, 7)
+ securities = ['CADUSD Curncy', "EURUSD Curncy"]
+ fields = ['PX_LAST']
+ with init_bbg_session('192.168.0.4', 8194) as session:
+ data = retreive_data(session, securities, fields, start_date=startdate, end_date=enddate)
test = process_msgs(data)