diff options
| -rw-r--r-- | python/Dawn/models.py | 29 | ||||
| -rw-r--r-- | python/process_queue.py | 4 | ||||
| -rw-r--r-- | sql/dawn.sql | 101 |
3 files changed, 114 insertions, 20 deletions
diff --git a/python/Dawn/models.py b/python/Dawn/models.py index 45ea6a21..ae3e336e 100644 --- a/python/Dawn/models.py +++ b/python/Dawn/models.py @@ -36,6 +36,8 @@ class Accounts(db.Model): cash_account = db.Column(db.String) counterparty = db.Column(db.String(12), db.ForeignKey('counterparties.code')) +FUND = ENUM('SERCGMAST', 'BRINKER', name='fund') + PORTFOLIO = ENUM('OPTIONS', 'IR', 'MORTGAGES', 'IG', 'HY', 'CURVE', 'TRANCHE', 'CLO', 'HEDGE_MAC', 'STRUCTURED', name='portfolio') @@ -106,6 +108,7 @@ BEGIN_OR_END = ENUM('B', 'E', name='begin_or_end') class BondDeal(db.Model): __tablename__ = 'bonds' id = db.Column('id', db.Integer, primary_key=True) + fund = db.Column(FUND, nullable=False, default='SERCGMAST') dealid = db.Column(db.String(28)) lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now()) action = db.Column(ACTION, nullable=False) @@ -142,6 +145,7 @@ class BondDeal(db.Model): class CDSDeal(db.Model): __tablename__ = 'cds' id = db.Column('id', db.Integer, primary_key=True) + fund = db.Column(FUND, nullable=False, default='SERCGMAST') dealid = db.Column(db.String(28)) lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now()) action = db.Column(ACTION, nullable=False) @@ -200,8 +204,9 @@ class CDSDeal(db.Model): class RepoDeal(db.Model): __tablename__ = 'repo' id = db.Column('id', db.Integer, primary_key=True) + fund = db.Column(FUND, nullable=False, default='SERCGMAST') lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now()) - action = db.Column(ACTION) + action = db.Column(ACTION, nullable=False) folder = db.Column(CDS_STRAT, nullable=False) custodian = db.Column(db.String(12), default='SGFCM', nullable=False) cashaccount = db.Column(db.String(10), default='V0NSCLMAMB', nullable=False) @@ -238,10 +243,11 @@ class RepoDeal(db.Model): class SwaptionDeal(db.Model): __tablename__ = 'swaptions' id = db.Column('id', db.Integer, primary_key=True) - dealid = db.Column(db.String(28)) + fund = db.Column(FUND, nullable=False, default='SERCGMAST') + dealid = db.Column(db.String(28), nullable=False) lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now()) - action = db.Column(ACTION) - portfolio = db.Column(PORTFOLIO) + action = db.Column(ACTION, nullable=False) + portfolio = db.Column(PORTFOLIO, nullable=False) folder = db.Column(SWAPTION_STRAT, nullable=False) custodian = db.Column(db.String(12), default='NONE', nullable=False) cashaccount = db.Column(db.String(10), default='V0NSCLMAMB', nullable=False) @@ -279,9 +285,10 @@ class SwaptionDeal(db.Model): class FutureDeal(db.Model): __tablename__ = 'futures' id = db.Column('id', db.Integer, primary_key=True) - dealid = db.Column(db.String(28)) + fund = db.Column(FUND, nullable=False) + dealid = db.Column(db.String(28), nullable=False) lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now()) - action = db.Column(ACTION) + action = db.Column(ACTION, nullable=False) folder = db.Column(FUTURE_STRAT, nullable=False) custodian = db.Column(db.String(12), default='INTBR', nullable=False) cashaccount = db.Column(db.String(10), default='IANSCLMAFU', nullable=False) @@ -321,9 +328,10 @@ class CashFlowDeal(db.Model): class SpotDeal(db.Model): __tablename__ = "spots" id = db.Column('id', db.Integer, primary_key=True) - dealid = db.Column(db.String(28)) + fund = db.Column(FUND, nullable=False, default='SERCGMAST') + dealid = db.Column(db.String(28), nullable=False) lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now()) - action = db.Column(ACTION) + action = db.Column(ACTION, nullable=False) folder = db.Column(SPOT_STRAT, nullable=False) custodian = db.Column(db.String(12), default='INTBR', nullable=False) cashaccount = db.Column(db.String(10), default='IANSCLMAFU', nullable=False) @@ -344,9 +352,10 @@ class SpotDeal(db.Model): class CapFloorDeal(db.Model): __tablename__ = 'capfloors' id = db.Column('id', db.Integer, primary_key=True) - dealid = db.Column(db.String(28)) + fund = db.Column(FUND, nullable=False, default='SERCGMAST') + dealid = db.Column(db.String(28), nullable=False) lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now()) - action = db.Column(ACTION) + action = db.Column(ACTION, nullable=False) folder = db.Column(SWAPTION_STRAT, nullable=False) custodian = db.Column(db.String(12), default='NONE', nullable=False) cashaccount = db.Column(db.String(10), default='V0NSCLMAMB', nullable=False) diff --git a/python/process_queue.py b/python/process_queue.py index 5a76ce1a..3e639560 100644 --- a/python/process_queue.py +++ b/python/process_queue.py @@ -144,9 +144,9 @@ def build_termination(obj): def build_line(obj, queue_name='bond_trades'): obj['Client'] = 'Serenitas' - obj['Fund'] = 'SERCGMAST' obj['State'] = 'Valid' - rename_cols = {'action': 'Action', + rename_cols = {'fund': 'Fund', + 'action': 'Action', 'dealid': 'Deal Id', 'folder': 'Folder', 'custodian': 'Custodian', diff --git a/sql/dawn.sql b/sql/dawn.sql index a8a28141..f8d20507 100644 --- a/sql/dawn.sql +++ b/sql/dawn.sql @@ -80,9 +80,10 @@ CREATE TABLE counterparties(code varchar(12) PRIMARY KEY, CREATE INDEX ON counterparties(name); CREATE TABLE bonds(id serial primary key, - dealid varchar(28), + dealid varchar(28) UNIQUE, + fund fund NOT NULL DEFAULT 'SERCGMAST'; lastupdate timestamp DEFAULT now(), - action action, + action action NOT NULL, folder bond_strat NOT NULL, custodian varchar(12) NOT NULL, cashaccount varchar(10) NOT NULL, @@ -110,7 +111,8 @@ CREATE TRIGGER dealid CREATE TABLE cds(id serial primary key, - dealid varchar(28), + dealid varchar(28) UNIQUE, + fund fund NOT NULL DEFAULT 'SERCGMAST', lastupdate timestamptz DEFAULT now(), action action NOT NULL, portfolio portfolio NOT NULL, @@ -160,9 +162,10 @@ CREATE TRIGGER cds_dealid AFTER INSERT ON cds FOR EACH ROW EXECUTE PROCEDURE auto_dealid(); CREATE TABLE repo(id serial primary key, - dealid varchar(28), + dealid varchar(28) UNIQUE, + fund fund NOT NULL DEFAULT 'SERCGMAST', lastupdate timestamptz DEFAULT now(), - action action, + action action NOT NULL, folder bond_strat NOT NULL, custodian varchar(12) NOT NULL, cashaccount varchar(10) NOT NULL, @@ -196,8 +199,9 @@ ALTER TABLE repo OWNER TO dawn_user; CREATE TABLE swaptions(id serial PRIMARY KEY, dealid varchar(28) UNIQUE, + fund fund NOT NULL DEFAULT 'SERCGMAST', lastupdate timestamptz DEFAULT now(), - action action, + action action NOT NULL, portfolio portfolio NOT NULL, folder swaption_strat NOT NULL, custodian varchar(12) NOT NULL, @@ -223,11 +227,15 @@ CREATE TABLE swaptions(id serial PRIMARY KEY, termination_amount float, termination_cp varchar(12) REFERENCES counterparties(code) ON UPDATE CASCADE); +CREATE TRIGGER swaptions_dealid AFTER INSERT ON swaptions +FOR EACH ROW EXECUTE PROCEDURE auto_dealid(); + CREATE TABLE capfloors ( id serial PRIMARY KEY, - dealid varchar(28), + fund fund NOT NULL DEFAULT 'SERCGMAST', + dealid varchar(28) UNIQUE, lastupdate timestamp NULL DEFAULT now(), - "action" action, + "action" action NOT NULL, folder swaption_strat NOT NULL, custodian varchar(12) NOT NULL, cashaccount varchar(10) NOT NULL, @@ -260,6 +268,81 @@ CREATE TABLE capfloors ( termination_cp varchar(12) REFERENCES counterparties(code) ON UPDATE CASCADE, cpty_id text, ) +CREATE TRIGGER dealid AFTER INSERT ON capfloors +FOR EACH ROW EXECUTE PROCEDURE auto_dealid(); + +CREATE TABLE futures ( + id serial NOT NULL, + dealid varchar(28), + lastupdate timestamp NULL DEFAULT now(), + "action" action NOT NULL, + folder future_strat NOT NULL, + custodian varchar(12) NOT NULL, + cashaccount varchar(10) NOT NULL, + cp_code varchar(12) NOT NULL, + trade_date date NOT NULL, + settle_date date NOT NULL, + buysell bool NOT NULL, + bbg_ticker varchar(32) NOT NULL, + quantity float8 NOT NULL, + price float8 NOT NULL, + commission float8 NULL, + swap_type future_type NOT NULL, + security_desc varchar(32) NOT NULL, + maturity date NOT NULL, + currency currency NOT NULL, + exchange varchar(3) NOT NULL, + fund fund NOT NULL DEFAULT 'SERCGMAST'::fund, + CONSTRAINT futures_dealid_key UNIQUE (dealid), + CONSTRAINT futures_pkey PRIMARY KEY (id), + CONSTRAINT futures_cp_code_fkey FOREIGN KEY (cp_code) REFERENCES counterparties(code) +); +ALTER table futures OWNER TO dawn_user; +CREATE trigger dealid after insert on futures for each row execute procedure auto_dealid(); + +CREATE TABLE wires ( + id serial NOT NULL, + dealid varchar(28) NULL, + lastupdate timestamp NULL DEFAULT now(), + "action" action NOT NULL, + folder cash_strat NOT NULL, + code varchar(5) NOT NULL, + amount float8 NOT NULL, + currency currency NOT NULL, + trade_date date NOT NULL, + CONSTRAINT wires_pkey PRIMARY KEY (id), + CONSTRAINT wires_code_fkey FOREIGN KEY (code) REFERENCES accounts(code) +); +ALTER table wires OWNER TO dawn_user; +CREATE trigger dealid after insert on wires for each row execute procedure auto_dealid(); + +CREATE TABLE spots ( + id serial NOT NULL, + fund fund NOT NULL DEFAULT 'SERCGMAST'::fund, + dealid varchar(28) NULL, + lastupdate timestamp NULL DEFAULT now(), + "action" action NOT NULL, + folder spot_strat NOT NULL, + custodian varchar(12) NOT NULL, + cashaccount varchar(10) NOT NULL, + cp_code varchar(12) NOT NULL, + trade_date date NOT NULL, + settle_date date NOT NULL, + spot_rate float8 NOT NULL, + buy_currency currency NOT NULL, + buy_amount float8 NOT NULL, + sell_currency currency NOT NULL, + sell_amount float8 NOT NULL, + commission_currency currency NULL, + commission float8 NULL, + CONSTRAINT spots_pkey PRIMARY KEY (id), + CONSTRAINT spots_cp_code_fkey FOREIGN KEY (cp_code) REFERENCES counterparties(code) +); + +create + trigger dealid after insert + on + spots for each row execute procedure auto_dealid();; CREATE OR REPLACE FUNCTION auto_dealid() RETURNS TRIGGER AS $$ @@ -286,6 +369,8 @@ identifier = COALESCE(identifier, cusip, isin)', NEW.id); stub := 'SCCSH'; WHEN 'capfloors' THEN stub := 'CAP'; + WHEN 'spots' THEN + stub := 'SCFX'; END CASE; sqlstr := format(sqlstr, 'dealid = $1||id', NEW.id); END IF; |
