aboutsummaryrefslogtreecommitdiffstats
path: root/sql/dawn.sql
diff options
context:
space:
mode:
Diffstat (limited to 'sql/dawn.sql')
-rw-r--r--sql/dawn.sql48
1 files changed, 47 insertions, 1 deletions
diff --git a/sql/dawn.sql b/sql/dawn.sql
index 8daeb159..86a3d64e 100644
--- a/sql/dawn.sql
+++ b/sql/dawn.sql
@@ -21,6 +21,9 @@ CREATE TYPE tenor AS ENUM('6mo', '1yr', '2yr', '3yr', '4yr', '5yr', '7yr', '10yr
CREATE TYPE swap_type AS ENUM('CD_INDEX', 'CD_INDEX_TRANCHE', 'CD_BASKET_TRANCHE', 'ABS_CDS');
CREATE type isda AS ENUM('ISDA2014', 'ISDA2003Cred');
CREATE type protection AS ENUM('Buyer', 'Seller');
+CREATE TYPE repo_type AS ENUM('REPO', 'REVERSE REPO');
+CREATE TYPE call_notice AS ENUM('24H', '48H', '3D', '4D', '5D', '6D',
+'1W', '8D', '9D', '10D', '2W', '1M', '2M');
CREATE TABLE counterparties(code varchar(12) primary key,
name text,
@@ -123,7 +126,50 @@ CREATE OR REPLACE FUNCTION auto_cds_dealid()
$$ language plpgsql;
CREATE TRIGGER cds_dealid AFTER INSERT ON cds
-FOR EACH ROW EXECUTE PROCEDURE mydealid();
+FOR EACH ROW EXECUTE PROCEDURE auto_cds_dealid();
+
+CREATE TABLE repo(id serial primary key,
+ dealid varchar(28),
+ lastupdate timestamp DEFAULT now(),
+ action action,
+ folder bond_strat NOT NULL,
+ custodian varchar(12) NOT NULL,
+ cashaccount varchar(10) NOT NULL,
+ cp_code varchar(12) NOT NULL REFERENCES counterparties(code),
+ trade_date date NOT NULL,
+ settle_date date NOT NULL,
+ cusip varchar(9),
+ isin varchar(12),
+ identifier varchar(12),
+ description varchar(32) NOT NULL,
+ transaction_indicator repo_type NOT NULL,
+ faceamount float NOT NULL,
+ price float NOT NULL,
+ currency currency NOT NULL,
+ expiration_date date,
+ weighted_amount float,
+ haircut float,
+ repo_rate float NOT NULL,
+ call_notice call_notice,
+ daycount day_count,
+ ticket text
+ CHECK ( (haircut is NOT NULL AND weighted_amount is NULL) OR
+ (haircut is NULL AND weighted_amount is NOT NULL) );
+ CHECK (cusip is NOT NULL OR isin is NOT NULL)
+);
+
+CREATE OR REPLACE FUNCTION auto_repo_dealid()
+ RETURNS TRIGGER AS $$
+ BEGIN
+ UPDATE cds SET dealid = 'SC_REP' ||id WHERE cds.id = NEW.id AND dealid is Null;
+ RETURN NEW;
+ END;
+ $$ language plpgsql;
+
+CREATE TRIGGER repo_dealid AFTER INSERT ON repo
+FOR EACH ROW EXECUTE PROCEDURE auto_repo_dealid();
+
+ALTER TABLE repo OWNER TO dawn_user;
CREATE TABLE securities(identifier varchar(12) PRIMARY KEY,
cusip varchar(9),