aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/bbg_helpers.py8
-rw-r--r--python/markit/import_quotes.py9
-rw-r--r--python/test_bbg_cds_quotes.py30
3 files changed, 45 insertions, 2 deletions
diff --git a/python/bbg_helpers.py b/python/bbg_helpers.py
index c63b0730..6c524aae 100644
--- a/python/bbg_helpers.py
+++ b/python/bbg_helpers.py
@@ -58,7 +58,11 @@ def event_loop(session, request):
def get_pythonvalue(e):
if e.datatype() in [blpapi.DataType.DATE, blpapi.DataType.DATETIME]:
- return pd.to_datetime(e.getValue())
+ t = e.getValue()
+ if isinstance(t, datetime.time):
+ return t
+ else:
+ return pd.to_datetime(t)
elif e.datatype() == blpapi.DataType.ENUMERATION:
return e.getValueAsString()
else:
@@ -136,7 +140,7 @@ def retrieve_data(session, securities, fields=[], overrides={},
else:
request.set("security", securities)
else:
- if isinstance(securities, list):
+ if hasattr(securities, '__iter__'):
for security in securities:
request.append("securities", security)
else:
diff --git a/python/markit/import_quotes.py b/python/markit/import_quotes.py
index 2b7ef57c..560d683c 100644
--- a/python/markit/import_quotes.py
+++ b/python/markit/import_quotes.py
@@ -6,6 +6,7 @@ import pandas as pd
import os
from collections import defaultdict
+from itertools import chain
from pandas.tseries.offsets import BDay
logger = logging.getLogger(__name__)
@@ -58,6 +59,14 @@ def get_markit_bbg_mapping(database, basketid_list, workdate):
database.commit()
return (all_tickers, markit_bbg_mapping)
+def get_bbg_tickers(database, basketid_list, workdate):
+ with database.cursor() as c:
+ c.execute("SELECT cds_curve FROM historical_cds_issuers(%s) " \
+ "WHERE index_list && %s",
+ (workdate, list(basketid_list)))
+ yield from chain.from_iterable(e[0] for e in c)
+ database.commit()
+
def get_basketids(database, index_list, workdate):
with database.cursor() as c:
for index in index_list:
diff --git a/python/test_bbg_cds_quotes.py b/python/test_bbg_cds_quotes.py
new file mode 100644
index 00000000..74cd1aeb
--- /dev/null
+++ b/python/test_bbg_cds_quotes.py
@@ -0,0 +1,30 @@
+from bbg_helpers import BBG_IP, init_bbg_session, retrieve_data
+from markit.import_quotes import get_index_list, get_basketids, get_bbg_tickers
+from db import dbconn
+import datetime
+
+workdate = datetime.date.today()
+serenitasdb = dbconn('serenitasdb')
+index_list = get_index_list(serenitasdb, workdate)
+basket_ids = get_basketids(serenitasdb, index_list, workdate)
+bbg_tickers = set(get_bbg_tickers(serenitasdb, basket_ids, workdate))
+
+securities = [f'{ticker} Curncy' for ticker in bbg_tickers]
+fields = ['UPFRONT_RUNNING_SPREAD', 'UPFRONT_BID', 'UPFRONT_ASK', 'CDS_RECOVERY_RT']
+
+r = {}
+with init_bbg_session(BBG_IP) as session:
+ for pcs in ['CBGN', 'CMAN']: #, 'CMAN', 'MSG1']:
+ r[pcs] = retrieve_data(session, securities, fields, overrides={'PRICING_SOURCE': pcs})
+
+sql_str = f"INSERT INTO cds_quotes VALUES({','.join(['%s'] * 8)})"
+
+def build_tuple(k, v, workdate, source):
+ return (workdate, k.split()[0], v.get('UPFRONT_BID'),
+ v.get('UPFRONT_ASK'), v.get('UPFRONT_RUNNING_SPREAD'),
+ v.get('UPFRONT_RUNNING_SPREAD'), source, v.get('CDS_RECOVERY_RT'))
+
+for pcs in ['CBGN', 'CMAN']:
+ with serenitasdb.cursor() as c:
+ c.executemany(sql_str, [build_tuple(k, v, workdate, pcs) for k, v in r[pcs].items()])
+ serenitasdb.commit()