diff options
Diffstat (limited to 'sql/dawn.sql')
| -rw-r--r-- | sql/dawn.sql | 24 |
1 files changed, 14 insertions, 10 deletions
diff --git a/sql/dawn.sql b/sql/dawn.sql index 6b221da4..6de6957e 100644 --- a/sql/dawn.sql +++ b/sql/dawn.sql @@ -27,8 +27,8 @@ CREATE TYPE action AS ENUM('NEW', 'UPDATE', 'CANCEL'); CREATE TYPE currency AS ENUM('USD', 'CAD', 'EUR', 'YEN'); CREATE TYPE bbg_type AS ENUM('Mtge', 'Corp'); CREATE type day_count AS ENUM('ACT/360', 'ACT/ACT', '30/360', 'ACT/365'); -CREATE type bus_day_convention AS ENUM('Modified Following', 'Following', 'Modified Preceding', 'Preceding', - 'Second-Day-After', 'End-of-Month'); +CREATE type bus_day_convention AS ENUM('Modified Following', 'Following', + 'Modified Preceding', 'Preceding', 'Second-Day-After', 'End-of-Month'); CREATE type last_period_convention AS ENUM('Adjusted', 'Unadjusted'); CREATE type index_type AS ENUM('IG', 'HY', 'EU', 'LCDX', 'XO'); CREATE TYPE tenor AS ENUM('6mo', '1yr', '2yr', '3yr', '4yr', '5yr', '7yr', '10yr'); @@ -45,11 +45,12 @@ CREATE TYPE call_notice AS ENUM('24H', '48H', '3D', '4D', '5D', '6D', CREATE TABLE accounts( code varchar(5) PRIMARY KEY, + name text, custodian text, cash_account text, - counterparty text REFERENCES counterparties(code)) + counterparty varchar(12) REFERENCES counterparties(code)) -CREATE TABLE counterparties(code varchar(12) primary key, +CREATE TABLE counterparties(code varchar(12) PRIMARY KEY, name text, city text, state varchar(2), @@ -314,17 +315,19 @@ WHERE date<= p_date ORDER BY identifier, date DESC) b USING (identifier); END; $$ LANGUAGE plpgsql; -CREATE OR REPLACE function list_risk_numbers(p_date date, assetclass asset_class, include_unsettled boolean DEFAULT False) -RETURNS TABLE(identifier varchar(12), description varchar(32), mark float, delta float, index_delta index_type, duration float, wal float, -undiscounted_price float, model_price float) AS $$ +CREATE OR REPLACE function list_risk_numbers(p_date date, assetclass asset_class, + include_unsettled boolean DEFAULT False) +RETURNS TABLE(identifier varchar(12), description varchar(32), mark float, + delta float, index_delta index_type, duration float, wal float, + undiscounted_price float, model_price float) AS $$ BEGIN RETURN QUERY SELECT a.identifier, a.description, b.price, c.delta, c.index_delta, c.duration, c.wal, c.undiscounted_price, c.model_price FROM list_positions(p_date, assetclass, include_unsettled) a LEFT JOIN (SELECT DISTINCT ON (identifier) date, marks.identifier, marks.price FROM marks -WHERE date<= p_date ORDER BY identifier, date DESC) b USING (identifier) +WHERE date <= p_date ORDER BY identifier, date DESC) b USING (identifier) LEFT JOIN (SELECT DISTINCT ON (identifier) * FROM risk_numbers - WHERE date<=p_date ORDER BY identifier, date DESC) c USING (identifier); + WHERE date <=p_date ORDER BY identifier, date DESC) c USING (identifier); END; $$ LANGUAGE plpgsql; @@ -1111,7 +1114,8 @@ CREATE TABLE valuation_reports( periodenddate date NOT NULL, port portfolio, strat strategy, - row integer, + row integer NOT NULL, + counterparty varchar(12) REFERENCES counterparties(code), PRIMARY KEY(periodenddate, row) ); |
