aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/markit/import_quotes.py39
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.