aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/Dawn/models.py19
-rw-r--r--python/Dawn/templates/swaption_blotter.html2
-rw-r--r--sql/dawn.sql7
3 files changed, 20 insertions, 8 deletions
diff --git a/python/Dawn/models.py b/python/Dawn/models.py
index 7a124d9b..badfde90 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'))
+PORTFOLIO = ENUM('OPTIONS', 'IR', 'MORTGAGES', name='portfolio')
+
BOND_STRAT = ENUM('M_STR_MAV', 'M_STR_MEZZ', 'CSO_TRANCH',
'M_CLO_BB20', 'M_CLO_AAA', 'M_CLO_BBB', 'M_MTG_IO', 'M_MTG_THRU',
'M_MTG_GOOD', 'M_MTG_B4PR', 'M_MTG_RW', 'M_MTG_FP', 'M_MTG_LMG',
@@ -46,7 +48,7 @@ CDS_STRAT = ENUM('HEDGE_CSO', 'HEDGE_CLO', 'HEDGE_MAC', 'HEDGE_MBS',
'SER_HYMEZ', 'SER_HYEQY', 'SER_HYINX', 'SER_IGCURVE', 'MBSCDS',
'IGOPTDEL', 'HYOPTDEL', 'SER_ITRXCURVE', name='cds_strat')
-SWAPTION_STRAT = ENUM('IGPAYER', 'IGREC', 'HYPAYER', 'HYREC',
+SWAPTION_STRAT = ENUM('IGPAYER', 'IGREC', 'HYPAYER', 'HYREC', 'STEEP',
name='swaption_strat')
FUTURE_STRAT = ENUM('M_STR_MAV', 'M_MTG_IO', 'M_STR_MEZZ', 'M_MTG_RW', 'SER_ITRXCURVE',
@@ -57,8 +59,11 @@ CASH_STRAT = ENUM('M_CSH_CASH', 'MBSCDSCSH', 'SER_IGCVECSH', 'SER_ITRXCVCSH', 'C
'IRDEVCSH',
name='cash_strat')
-SWAPTION_TYPE = ENUM('PAYER', 'RECEIVER',
- name='swaption_type')
+OPTION_TYPE = ENUM('PAYER', 'RECEIVER',
+ name='option_type')
+
+SWAPTION_TYPE = ENUM('CD_INDEX_OPTION', 'SWAPTION', name='swaption_type')
+SETTLEMENT_TYPE = ENUM('Delivery', 'Cash', name='settlement_type')
REPO_TYPE = ENUM('REPO', 'REVERSE REPO', name='repo_type')
FUTURE_TYPE = ENUM('FUTURE', 'CFD', 'SYNTHETIC-FUTURE', 'LME-FORWARD', name='future_type')
@@ -204,25 +209,28 @@ class RepoDeal(db.Model):
"haircut is NULL and weighted_amount is NOT NULL)"),
db.CheckConstraint("cusip is NOT NULL or isin is NOT NULL"))
+
class SwaptionDeal(db.Model):
__tablename__ = 'swaptions'
id = db.Column('id', db.Integer, primary_key=True)
dealid = db.Column(db.String(28))
lastupdate = db.Column(db.DateTime, server_default=db.func.now(), onupdate=db.func.now())
action = db.Column(ACTION)
+ portfolio = db.Column(PORTFOLIO)
folder = db.Column(SWAPTION_STRAT, nullable=False)
custodian = db.Column(db.String(12), default='NONE', nullable=False)
cashaccount = db.Column(db.String(10), default='SGNSCLMASW', nullable=False)
cp_code = db.Column(db.String(12), db.ForeignKey('counterparties.code'),
info={'choices': [(None, '')],
'label': 'counterparty'}, nullable=False)
+ swap_type = db.Column(SWAPTION_TYPE, nullable=False)
trade_date = db.Column(db.Date, nullable=False)
settle_date = db.Column(db.Date, nullable=False)
- buysell = db.Column(db.Boolean, nullable=False, info={'choices':[(0, 'sell'), (1, 'buy')],
+ buysell = db.Column(db.Boolean, nullable=False, info={'choices': [(0, 'sell'), (1, 'buy')],
'coerce': lambda x: bool(int(x))
if x is not None else x})
notional = db.Column(db.Float, nullable=False)
- swaption_type = db.Column(SWAPTION_TYPE, nullable=False)
+ option_type = db.Column(OPTION_TYPE, nullable=False)
strike = db.Column(db.Float, nullable=False)
price = db.Column(db.Float, nullable=False)
expiration_date = db.Column(db.Date, nullable=False)
@@ -241,6 +249,7 @@ class SwaptionDeal(db.Model):
counterparty = db.relationship(Counterparties, foreign_keys=[cp_code])
termination_counterparty = db.relationship(Counterparties, foreign_keys=[termination_cp])
+
class FutureDeal(db.Model):
__tablename__ = 'futures'
id = db.Column('id', db.Integer, primary_key=True)
diff --git a/python/Dawn/templates/swaption_blotter.html b/python/Dawn/templates/swaption_blotter.html
index 73abbb26..ec827059 100644
--- a/python/Dawn/templates/swaption_blotter.html
+++ b/python/Dawn/templates/swaption_blotter.html
@@ -25,7 +25,7 @@
<td>{{trade.settle_date}}</td>
<td>{% if trade.buysell %}Buy{% else %}Sell{% endif %}</td>
<td>{{"{0:,.2f}".format(trade.notional)}}</td>
- <td>{{trade.swaption_type}}</td>
+ <td>{{trade.option_type}}</td>
<td>{{trade.expiration_date}}</td>
<td>{{trade.strike}}</td>
<td>{{trade.price}}</td>
diff --git a/sql/dawn.sql b/sql/dawn.sql
index 9f7df1f9..b81f8e56 100644
--- a/sql/dawn.sql
+++ b/sql/dawn.sql
@@ -10,6 +10,7 @@ CREATE TYPE cds_strat AS ENUM('HEDGE_CSO', 'HEDGE_CLO', 'HEDGE_MAC', 'HEDGE_MBS'
'IGOPTDEL', 'HYOPTDEL', 'SER_ITRXCURVE');
CREATE TYPE swaption_strat AS ENUM('IGPAYER', 'IGREC', 'HYPAYER', 'HYREC', 'STEEP');
+CREATE TYPE swaption_type AS ENUM('CD_INDEX_OPTION', 'SWAPTION');
CREATE TYPE repo_strat AS ENUM('');
@@ -36,7 +37,7 @@ 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', 'CD_INDEX_OPTION', 'SWAPTION');
CREATE TYPE repo_type AS ENUM('REPO', 'REVERSE REPO');
-CREATE TYPE swaption_type AS ENUM('PAYER', 'RECEIVER');
+CREATE TYPE option_type AS ENUM('PAYER', 'RECEIVER');
CREATE TYPE isda AS ENUM('ISDA2014', 'ISDA2003Cred');
CREATE TYPE protection AS ENUM('Buyer', 'Seller');
@@ -186,15 +187,17 @@ CREATE TABLE swaptions(id serial PRIMARY KEY,
dealid varchar(28) UNIQUE,
lastupdate timestamptz DEFAULT now(),
action action,
+ portfolio portfolio NOT NULL,
folder swaption_strat NOT NULL,
custodian varchar(12) NOT NULL,
cashaccount varchar(10) NOT NULL,
cp_code varchar(12) NOT NULL REFERENCES counterparties(code) ON UPDATE CASCADE,
+ swap_type swaption_type NOT NULL,
trade_date date NOT NULL,
settle_date date NOT NULL,
buysell bool NOT NULL,
notional float NOT NULL,
- swaption_type swaption_type NOT NULL,
+ option_type option_type NOT NULL,
strike float NOT NULL,
price float NOT NULL,
expiration_date date NOT NULL,