import datetime import logging import os 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 utils import SerenitasFileHandler from utils.db import dbconn logger = logging.getLogger('bbg_quotes') fh = SerenitasFileHandler("bbg_quotes.log") 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"Inserting 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()