diff options
| -rw-r--r-- | python/Dawn/views.py | 4 | ||||
| -rw-r--r-- | sql/dawn.sql | 48 |
2 files changed, 51 insertions, 1 deletions
diff --git a/python/Dawn/views.py b/python/Dawn/views.py index dc37640b..d204ef8a 100644 --- a/python/Dawn/views.py +++ b/python/Dawn/views.py @@ -154,6 +154,10 @@ def list_cds_trades(): trade_list = CDSDeal.query.order_by(CDSDeal.trade_date.desc(), CDSDeal.id.desc()) return render_template('cds_blotter.html', trades=trade_list.all()) +@app.route('/repoblotter') +def list_repo_trades(): + trade_list = RepoDeal.query.order_by(RepoDeal.trade_date.desc(), RepoDeal.id.desc()) + return render_template('repo_blotter.html', trades=trade_list.all()) @app.route('/tickets/<int:tradeid>') def download_ticket(tradeid): 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), |
