diff options
| -rw-r--r-- | sql/serenitasdb.sql | 23 |
1 files changed, 23 insertions, 0 deletions
diff --git a/sql/serenitasdb.sql b/sql/serenitasdb.sql index b78179d7..fec2e126 100644 --- a/sql/serenitasdb.sql +++ b/sql/serenitasdb.sql @@ -398,6 +398,29 @@ CREATE OR REPLACE FUNCTION curve_quotes(varchar(4), date, bbgSource DEFAULT 'MKI END;
$$ LANGUAGE plpgsql;
+CREATE OR REPLACE FUNCTION curve_quotes2(
+ varchar(4),
+ date,
+ float[] DEFAULT '{0.5, 1, 2, 3, 4, 5, 7, 10}'::float[],
+ bbgSource DEFAULT 'MKIT') RETURNS
+ TABLE(cds_ticker text, date date, spread_curve float[],
+ upfront_curve float[], recovery_curve float[]) 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) FROM historical_cds_quotes($2, $4) a RIGHT JOIN
+ (SELECT curve_ticker, markit_ticker, company_id 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
+ FROM index_members($1, $2)) a
+ WHERE tenor=Any($3)) b
+ ON b.curve_ticker = a.curve_ticker GROUP by company_id ORDER BY t;
+ END;
+$$ LANGUAGE plpgsql;
+
CREATE OR REPLACE FUNCTION curve_quotes_fmt(varchar(4), date, bbgSource DEFAULT 'MKIT') RETURNS
TABLE(cds_ticker text, date date, spread_curve text, upfront_curve text, recovery_curve text) AS $$
BEGIN
|
