aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/analytics/index_data.py7
-rw-r--r--sql/serenitasdb.sql8
2 files changed, 8 insertions, 7 deletions
diff --git a/python/analytics/index_data.py b/python/analytics/index_data.py
index 8c769a03..9fcdfea3 100644
--- a/python/analytics/index_data.py
+++ b/python/analytics/index_data.py
@@ -152,13 +152,13 @@ def get_singlenames_quotes(indexname, date, tenors):
return list(r)
-def build_curve(r, tenors, currency="USD"):
+def build_curve(r, tenors):
if r['date'] is None:
raise ValueError(f"Curve for {r['cds_ticker']} is missing")
spread_curve = 1e-4 * np.array(r['spread_curve'], dtype='float')
upfront_curve = 1e-2 * np.array(r['upfront_curve'], dtype='float')
recovery_curve = np.array(r['recovery_curve'], dtype='float')
- yc = get_curve(r['date'], currency)
+ yc = get_curve(r['date'], r['currency'])
try:
sc = SpreadCurve(r['date'], yc, None, None, None,
tenors, spread_curve, upfront_curve, recovery_curve,
@@ -186,8 +186,7 @@ def build_curves_dist(quotes, args, workers=4):
def _get_singlenames_curves(index_type, series, trade_date, tenors):
sn_quotes = get_singlenames_quotes(f"{index_type.lower()}{series}",
trade_date, tenors)
- currency = "EUR" if index_type in ["XO", "EU"] else "USD"
- args = (np.array(tenors), currency)
+ args = (np.array(tenors),)
return build_curves_dist(sn_quotes, args)
diff --git a/sql/serenitasdb.sql b/sql/serenitasdb.sql
index 45ddaa36..37f44135 100644
--- a/sql/serenitasdb.sql
+++ b/sql/serenitasdb.sql
@@ -475,19 +475,21 @@ CREATE OR REPLACE FUNCTION curve_quotes2(
float[] DEFAULT '{0.5, 1, 2, 3, 4, 5, 7, 10}'::float[],
bbgsource DEFAULT 'MKIT'::bbgsource) RETURNS
TABLE(cds_ticker text, date date, spread_curve float[],
- upfront_curve float[], recovery_curve float[], event_date date) AS $$
+ upfront_curve float[], recovery_curve float[], currency curr,
+ event_date date) AS $$
BEGIN
RETURN QUERY SELECT max(markit_ticker) AS t, max(a.date),
array_agg((a.runningbid + a.runningask)/2 ORDER BY tenor),
array_agg((a.upfrontbid + a.upfrontask)/2 ORDER BY tenor),
array_agg(a.Recovery ORDER BY tenor),
- max(b.event_date) FROM historical_cds_quotes($2, $4) a
+ max(b.currency), max(b.event_date) FROM historical_cds_quotes($2, $4) a
RIGHT JOIN
- (SELECT curve_ticker, markit_ticker, company_id, c.event_date, tenor FROM
+ (SELECT curve_ticker, markit_ticker, company_id, c.event_date, c.currency, tenor FROM
(SELECT unnest('{0.5, 1, 2, 3, 4, 5, 7, 10}'::float[]) AS tenor,
unnest(cds_curve) AS curve_ticker,
markit_ticker,
company_id,
+ d.currency,
d.event_date
FROM index_members($1, $2) d) c
WHERE tenor=Any($3)) b