aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/Dawn/models.py65
1 files changed, 46 insertions, 19 deletions
diff --git a/python/Dawn/models.py b/python/Dawn/models.py
index 239ea885..e7c96a3b 100644
--- a/python/Dawn/models.py
+++ b/python/Dawn/models.py
@@ -33,6 +33,11 @@ class Counterparties(db.Model):
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', name='bond_strat')
+
+CDS_STRAT = ENUM('HEDGE_CSO', 'HEDGE_CLO', 'HEDGE_MAC', 'HEDGE_MBS',
+ 'SER_IGSNR', 'SER_IGMEZ', 'SER_IGEQY', 'SER_IGINX', 'SER_HYSNR',
+ 'SER_HYMEZ', 'SER_HYEQY', 'SER_HYINX', 'SER_IGCURVE', 'MBSCDS', name='cds_strat')
+
ASSET_CLASS = ENUM('CSO', 'Subprime', 'CLO', 'Tranches', 'Futures', 'Cash', 'FX', 'Cleared',
name='asset_class')
ACTION = ENUM('NEW', 'UPDATE', 'CANCEL', name='action')
@@ -41,6 +46,16 @@ CCY = ENUM('USD', 'CAD', 'EUR', 'YEN', name='currency')
BBG_TYPE = ENUM('Mtge', 'Corp', name='bbg_type')
+SWAP_TYPE = ENUM('CD_INDEX', 'CD_INDEX_TRANCHE', 'CD_BAKSET_TRANCHE', 'ABS_CDS', name='swap_type')
+
+ISDA = ENUM('ISDA2014', 'ISDA2003Cred', name='isda')
+
+DAY_COUNT = ENUM('ACT/360', 'ACT/ACT', '30/360', 'ACT/365', name='day_count')
+
+BUS_DAY_CONVENTION = ENUM('Modified Following', 'Following', 'Modified Preceding', 'Preceding',
+ 'Second-Day-After', 'End-of-Month', name='bus_day_convention')
+PROTECTION = ENUM('Buyer', 'Seller', name='protection')
+
class BondDeal(db.Model):
__tablename__ = 'bonds'
id = db.Column('id', db.Integer, primary_key=True)
@@ -78,25 +93,37 @@ class BondDeal(db.Model):
counterparty = db.relationship(Counterparties)
__table_args__= (db.CheckConstraint('cusip is not Null or isin is not Null'),)
-class Position(db.Model):
- date = db.Column(db.Date, primary_key=True)
- isin = db.Column(db.String(12))
- cusip = db.Column(db.String(9))
- identifier = db.Column(db.String(12), primary_key=True)
- notional = db.Column(db.Float)
- currency = db.Column(CCY)
- factor = db.Column(db.Float)
- price = db.Column(db.Float)
- market_value = db.Column(db.Float)
- accrued = db.Column(db.Float)
- days_accrued = db.Column(db.Integer)
- start_accrued_date = db.Column(db.Date)
- factor_pay_date = db.Column(db.Date)
- paydown = db.Column(db.Float)
- writedown = db.Column(db.Float)
- bbg_type = db.Column(BBG_TYPE)
- strategy = db.Column(BOND_STRAT)
-
+class CDSDeal(db.Model):
+ __tablenames__ = 'cds'
+ 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)
+ folder = db.Column(CDS_STRAT, nullable = False)
+ custodian = db.Column(db.String(12), default='ML', nullable=False)
+ cashaccount = db.Column(db.String(10), default='MLNSCLMASW', nullable=False)
+ cp_code = db.Column(db.String(12))
+ trade_date = db.Column(db.Date, nullable = False)
+ effective_date = db.Column(db.Date, nullable = False)
+ maturity = db.Column(db.Date, nullable = False)
+ currency = db.Column(CCY, nullable = False)
+ payment_rolldate = db.Column(BUS_DAY_CONVENTION, nullable = False)
+ notional = db.Column(db.Float, nullable = False)
+ fixed_rate = db.Column(db.Float, nullable = False)
+ day_count = db.Column(DAY_COUNT, nullable = False)
+ frequency = db.Column(db.SmallInteger, default=4, nullable = False)
+ protection = db.Column(PROTECTION, nullable = False)
+ security_id = db.Column(db.String(12), nullable = False)
+ security_desc = db.Column(db.String(32), nullable = False)
+ upfront = db.Column(db.Float, nullable = False)
+ upfront_settle_date = db.Column(db.Date, nullable = False)
+ swap_type = db.Column(SWAP_TYPE, nullable = False)
+ attach = db.Column(db.SmallInteger)
+ detach = db.Column(db.SmallInteger)
+ clearing_facility = db.Column(db.String(12), default='ICE-CREDIT')
+ isda_definition = db.Column(ISDA)
+ __table_args__ = (db.CheckConstraint("swap_type!='CD_INDEX_TRANCHE' or " \
+ "(attach is not NULL and detach is not NULL)"),)
BaseModelForm = model_form_factory(Form)
class ModelForm(BaseModelForm):