aboutsummaryrefslogtreecommitdiffstats
path: root/sql/dawn.sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql/dawn.sql')
-rw-r--r--sql/dawn.sql148
1 files changed, 23 insertions, 125 deletions
diff --git a/sql/dawn.sql b/sql/dawn.sql
index 08150f01..3563b344 100644
--- a/sql/dawn.sql
+++ b/sql/dawn.sql
@@ -2163,112 +2163,10 @@ BEGIN
END;
$$ LANGUAGE plpgsql;
--- Not sure how to map enums so use text for now
-CREATE FOREIGN TABLE priced(
- model_id_sub smallint,
- cusip varchar(9),
- model_version smallint,
- normalization text,
- timestamp timestamp,
- pv float,
- pv_RnW float,
- pv_FB float,
- pv_io float,
- pv_po float,
- modDur float,
- modDur_io float,
- modDur_po float,
- wal float,
- wal_width float,
- wal_io float,
- wal_po float,
- delta_hpi float,
- delta_ir float,
- delta_ir_io float,
- delta_ir_po float,
- delta_mult float,
- delta_yield float,
- delta_quantile float,
- delta_RnW float,
- tot_gamma_hpi float,
- tot_gamma_ir float,
- tot_gamma float)
- SERVER mysql_server
- OPTIONS (dbname 'rmbs_model');
-
--- We want to use INHERITS here, but will only be available on 9.5
-CREATE FOREIGN TABLE priced_orig_ntl(
- model_id_sub smallint,
- cusip varchar(9),
- model_version smallint,
- normalization text,
- timestamp timestamp,
- pv float,
- pv_RnW float,
- pv_FB float,
- pv_io float,
- pv_po float,
- modDur float,
- modDur_io float,
- modDur_po float,
- wal float,
- wal_width float,
- wal_io float,
- wal_po float,
- delta_hpi float,
- delta_ir float,
- delta_ir_io float,
- delta_ir_po float,
- delta_mult float,
- delta_yield float,
- delta_quantile float,
- delta_RnW float,
- tot_gamma_hpi float,
- tot_gamma_ir float,
- tot_gamma float)
- SERVER mysql_server
- OPTIONS (dbname 'rmbs_model');
-
-CREATE FOREIGN TABLE priced_percentiles(
- model_id_sub smallint,
- cusip varchar(9),
- model_version smallint,
- percentile float,
- normalization text,
- timestamp timestamp,
- pv float,
- pv_io float,
- pv_po float,
- modDur float,
- modDur_io float,
- modDur_po float,
- wal float,
- wal_width float,
- wal_io float,
- wal_po float)
- SERVER mysql_server
- OPTIONS (dbname 'rmbs_model');
-
-CREATE FOREIGN TABLE priced_percentiles_orig_ntl(
- model_id_sub smallint,
- cusip varchar(9),
- model_version smallint,
- percentile float,
- normalization text,
- timestamp timestamp,
- pv float,
- pv_io float,
- pv_po float,
- modDur float,
- modDur_io float,
- modDur_po float,
- wal float,
- wal_width float,
- wal_io float,
- wal_po float)
- SERVER mysql_server
- OPTIONS (dbname 'rmbs_model');
-
+IMPORT FOREIGN SCHEMA rmbs_model
+LIMIT TO (priced, priced_percentiles, priced_orig_ntl, priced_percentiles_orig_ntl)
+FROM SERVER mysql_server INTO public
+OPTIONS (import_enum_as_text 'true');
CREATE TYPE INDEXFAMILY AS ENUM('ITRAXX-Asian', 'LCDXNA', 'MCDXNA',
'ITRAXX-SOVX', 'ITRAXX-SDI', 'ITRAXX-L', 'CDX', 'ITRAXX-European');
CREATE TYPE curr AS ENUM('USD', 'EUR', 'JPY', 'GBP', 'CAD');
@@ -2331,10 +2229,10 @@ CREATE FOREIGN TABLE bond_types(
-- refresh materialized view factors_history;
CREATE OR REPLACE function list_subprime_data(p_date date, orig_flag bool, VARIADIC p_cusip varchar(9)[])
-RETURNS TABLE(v1 float, v2 float, v3 float, duration float, percentile5 float, percentile25 float,
- percentile50 float, percentile75 float, percentile95 float, yield_delta float, wal float,
- io_pv float, po_pv float, rnw float, ir_io_delta float, ir_po_delta float, hpi_delta float, delta_rnw float, delta_mult float,
- v1pv_RnW float, v1_lsdel float, v1_hpidel float, v1_irdel float, pv_FB float) AS $$
+RETURNS TABLE(v1 float4, v2 float4, v3 float4, duration float4, percentile5 float4, percentile25 float4,
+ percentile50 float4, percentile75 float4, percentile95 float4, yield_delta float4, wal float4,
+ io_pv float4, po_pv float4, rnw float4, ir_io_delta float4, ir_po_delta float4, hpi_delta float4, delta_rnw float4, delta_mult float4,
+ v1pv_RnW float4, v1_lsdel float4, v1_hpidel float4, v1_irdel float4, pv_FB float4) AS $$
DECLARE
query text;
opt_constraint text;
@@ -2346,30 +2244,30 @@ ELSE
END IF;
query:=
'WITH left_table AS (
- WITH temp AS (SELECT cusip, model_version, pv, modDur, delta_yield,
- wal, pv_io, pv_po, pv_RnW, delta_ir_io, delta_ir_po,
- delta_hpi, delta_RnW, delta_mult, delta_ir, pv_FB
+ WITH temp AS (SELECT cusip, model_version, pv, "modDur", delta_yield,
+ wal, pv_io, pv_po, "pv_RnW", delta_ir_io, delta_ir_po,
+ delta_hpi, "delta_RnW", delta_mult, delta_ir, "pv_FB"
FROM %I
WHERE timestamp BETWEEN $1 AND $1 + INTERVAL ''1 day''
AND model_id_sub=$3 ' || opt_constraint || ')
- SELECT a.cusip, a.pv as v1, b.pv as v2, c.pv AS v3, a.modDur, c.delta_yield,
- c.wal, c.pv_io, c.pv_po, c.pv_RnW, c.delta_ir_io, c.delta_ir_po,
- c.delta_hpi, c.delta_RnW, c.delta_mult, a.pv_RnW as v1pv_RnW,
- a.delta_mult as v1_lsdel, a.delta_hpi as v1_hpidel, a.delta_ir as v1_irdel, c.pv_FB
+ SELECT a.cusip, a.pv as v1, b.pv as v2, c.pv AS v3, a."modDur", c.delta_yield,
+ c.wal, c.pv_io, c.pv_po, c."pv_RnW", c.delta_ir_io, c.delta_ir_po,
+ c.delta_hpi, c."delta_RnW", c.delta_mult, a."pv_RnW" as "v1pv_RnW",
+ a.delta_mult as v1_lsdel, a.delta_hpi as v1_hpidel, a.delta_ir as v1_irdel, c."pv_FB"
FROM (SELECT * FROM temp WHERE model_version=1) a,
(SELECT * FROM temp WHERE model_version=2) b,
(SELECT * FROM temp WHERE model_version=3) c
WHERE a.cusip = b.cusip AND a.cusip=c.cusip),
right_table AS (
WITH temp AS(
- SELECT cusip, PV, percentile
+ SELECT cusip, pv, percentile
FROM %I
WHERE timestamp BETWEEN $1 AND $1 + INTERVAL ''1 day''
AND model_version=3
AND model_id_sub=$3
- AND percentile in (5, 25, 50, 75, 95)' || opt_constraint
+ AND percentile in (5::float4, 25::float4, 50::float4, 75::float4, 95::float4)' || opt_constraint
||')
- SELECT a.cusip, a.PV AS pv5, b.PV AS pv25, c.PV AS pv50, d.PV AS pv75, e.PV AS pv95
+ SELECT a.cusip, a.pv AS pv5, b.pv AS pv25, c.pv AS pv50, d.pv AS pv75, e.pv AS pv95
FROM (SELECT cusip, PV FROM temp WHERE percentile=5) a,
(SELECT cusip, PV FROM temp WHERE percentile=25) b,
(SELECT cusip, PV FROM temp WHERE percentile=50) c,
@@ -2377,10 +2275,10 @@ query:=
(SELECT cusip, PV FROM temp WHERE percentile=95) e
WHERE a.cusip=b.cusip AND b.cusip=c.cusip and c.cusip=d.cusip and d.cusip=e.cusip and e.cusip=a.cusip)
SELECT left_table.v1, left_table.v2, left_table.v3,
- left_table.moddur, right_table.pv5, right_table.pv25, right_table.pv50, right_table.pv75, right_table.pv95,
- left_table.delta_yield, left_table.wal, left_table.pv_io, left_table.pv_po, left_table.pv_RnW,
- left_table.delta_ir_io, left_table.delta_ir_po, left_table.delta_hpi, left_table.delta_RnW, left_table.delta_mult,
- left_table.v1pv_RnW, left_table.v1_lsdel, left_table.v1_hpidel, left_table.v1_irdel, left_table.pv_FB
+ left_table."modDur", right_table.pv5, right_table.pv25, right_table.pv50, right_table.pv75, right_table.pv95,
+ left_table.delta_yield, left_table.wal, left_table.pv_io, left_table.pv_po, left_table."pv_RnW",
+ left_table.delta_ir_io, left_table.delta_ir_po, left_table.delta_hpi, left_table."delta_RnW", left_table.delta_mult,
+ left_table."v1pv_RnW", left_table.v1_lsdel, left_table.v1_hpidel, left_table.v1_irdel, left_table."pv_FB"
FROM (SELECT unnest($2) AS cusip) l
LEFT JOIN left_table ON left_table.cusip=l.cusip
LEFT JOIN right_table ON left_table.cusip=right_table.cusip';
@@ -2390,7 +2288,7 @@ ELSE
query := format(query, 'priced', 'priced_percentiles');
END IF;
SET enable_nestloop = off;
-RETURN QUERY EXECUTE query USING p_date, p_cusip, latest_sim(p_date);
+RETURN QUERY EXECUTE query USING p_date::timestamp, p_cusip, latest_sim(p_date::timestamp);
SET enable_nestloop = on;
END
$$ LANGUAGE plpgsql;