aboutsummaryrefslogtreecommitdiffstats
path: root/python/bbg_cds_quotes.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/bbg_cds_quotes.py')
-rw-r--r--python/bbg_cds_quotes.py41
1 files changed, 41 insertions, 0 deletions
diff --git a/python/bbg_cds_quotes.py b/python/bbg_cds_quotes.py
new file mode 100644
index 00000000..c9de3c58
--- /dev/null
+++ b/python/bbg_cds_quotes.py
@@ -0,0 +1,41 @@
+import datetime
+import logging
+
+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
+
+logger = logging.getLogger('bbg_quotes')
+fh = logging.FileHandler(filename=os.path.join(os.environ['LOG_DIR'], 'bbg_quotes.log'))
+formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
+fh.setFormatter(formatter)
+logger.addHandler(fh)
+logger.setLevel(logging.INFO)
+
+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))
+logger.info("got bbg tickers")
+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']:
+ logger.info(f"Retrieving quotes for {pcs}")
+ 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']:
+ logger.info(f"Retrieving quotes for {pcs}")
+ with serenitasdb.cursor() as c:
+ c.executemany(sql_str, [build_tuple(k, v, workdate, pcs) for k, v in r[pcs].items()])
+ serenitasdb.commit()