diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/markit/import_quotes.py | 39 |
1 files changed, 15 insertions, 24 deletions
diff --git a/python/markit/import_quotes.py b/python/markit/import_quotes.py index edca4a03..1417892b 100644 --- a/python/markit/import_quotes.py +++ b/python/markit/import_quotes.py @@ -24,19 +24,6 @@ def convert(x): return np.nan -def get_index_list(database, workdate): - with database.cursor() as c: - c.execute( - "SELECT distinct index, series FROM index_maturity " - "WHERE issue_date IS NOT NULL and issue_date <= %s + 10 " - "AND maturity >= %s", - (workdate, workdate), - ) - for index, series in c: - yield index + str(series) - database.commit() - - DOC_CLAUSE_MAPPING14 = { "Full Restructuring": "MM14", "No Restructuring": "XR14", @@ -64,7 +51,7 @@ class CurveKey: def get_markit_bbg_mapping( - database, basketid_list, workdate + database, basketid_list: List[int], workdate: datetime.date ) -> Dict[CurveKey, Set[Tuple[Tuple[str], Tuple[int, Seniority]]]]: markit_bbg_mapping = defaultdict(set) with database.cursor() as c: @@ -73,7 +60,7 @@ def get_markit_bbg_mapping( " short_code, company_id, seniority FROM historical_cds_issuers(%s) " "JOIN basket_constituents USING (company_id, seniority) " "WHERE basketid=ANY(%s)", - (workdate, list(basketid_list)), + (workdate, basketid_list), ) for rec in c: key = CurveKey( @@ -100,27 +87,31 @@ def get_bbg_tickers(database, basketid_list: List[int], workdate: datetime.date) "SELECT distinct cds_curve FROM historical_cds_issuers(%s) " "JOIN basket_constituents USING(company_id, seniority) " "WHERE basketid=ANY(%s)", - (workdate, list(basketid_list)), + (workdate, basketid_list), ) yield from chain.from_iterable(e[0] for e in c) database.commit() -def get_basketids(database, index_list, workdate): +def get_basketids(database, workdate): + sql_str = ( + "SELECT DISTINCT ON (index, series) basketid FROM index_desc " + "WHERE issue_date IS NOT NULL AND issue_date <= %s + interval '10 days' " + "AND lastdate >=%s AND maturity >= %s ORDER BY index, series, lastdate" + ) with database.cursor() as c: - for index in index_list: - c.execute("SELECT * FROM nameToBasketID(%s, %s)", (index, workdate)) - yield c.fetchone()[0] + c.execute(sql_str, (workdate, workdate, workdate)) + l = [bid for (bid,) in c] database.commit() + return l def get_current_tickers(database, workdate): - index_list = get_index_list(database, workdate) - basketid_list = get_basketids(database, index_list, workdate) - return get_markit_bbg_mapping(database, basketid_list, workdate) + basketids = get_basketids(database, workdate) + return get_markit_bbg_mapping(database, basketids, workdate) -def insert_cds(database, workdate): +def insert_cds(database, workdate: datetime.date): """insert Markit index quotes into the database :param database: psycopg2 connection to the database. |
