diff options
Diffstat (limited to 'python/bbg_cds_quotes.py')
| -rw-r--r-- | python/bbg_cds_quotes.py | 41 |
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() |
