1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
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()
|