aboutsummaryrefslogtreecommitdiffstats
path: root/python/Dawn/models.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/Dawn/models.py')
-rw-r--r--python/Dawn/models.py709
1 files changed, 0 insertions, 709 deletions
diff --git a/python/Dawn/models.py b/python/Dawn/models.py
deleted file mode 100644
index 34464fec..00000000
--- a/python/Dawn/models.py
+++ /dev/null
@@ -1,709 +0,0 @@
-from flask_wtf import FlaskForm
-from flask_wtf.file import FileField
-
-from pandas.tseries.offsets import CustomBusinessDay, BDay
-from pandas.tseries.holiday import get_calendar, HolidayCalendarFactory, GoodFriday
-from pyisda.date import previous_twentieth
-
-from sqlalchemy.dialects.postgresql import ENUM
-from wtforms.validators import Length
-from wtforms_alchemy import model_form_factory
-from sqlalchemy_utils import EmailType, PhoneNumberType
-
-from . import db
-
-import datetime
-
-fed_cal = get_calendar("USFederalHolidayCalendar")
-bond_cal = HolidayCalendarFactory("BondCalendar", fed_cal, GoodFriday)
-bus_day = CustomBusinessDay(calendar=bond_cal())
-
-
-class Counterparties(db.Model):
- __tablename__ = "counterparties"
- code = db.Column(db.String(12), primary_key=True)
- name = db.Column(db.String)
- city = db.Column(db.String)
- state = db.Column(db.String(2))
- dtc_number = db.Column(db.Integer)
- sales_contact = db.Column(db.String)
- sales_email = db.Column(EmailType)
- sales_phone = db.Column(PhoneNumberType())
- valuation_contact1 = db.Column(db.String)
- valuation_email1 = db.Column(EmailType)
- valuation_contact2 = db.Column(db.String)
- valuation_email2 = db.Column(EmailType)
- valuation_contact3 = db.Column(db.String)
- valuation_email3 = db.Column(EmailType)
- valuation_contact4 = db.Column(db.String)
- valuation_email4 = db.Column(EmailType)
- notes = db.Column(db.String)
- instructions = db.Column(db.String, info={"form_field_class": FileField})
-
-
-class Accounts(db.Model):
- __tablename__ = "accounts"
- code = db.Column(db.String(5), primary_key=True)
- name = db.Column(db.String)
- custodian = db.Column(db.String)
- cash_account = db.Column(db.String)
- counterparty = db.Column(db.String(12), db.ForeignKey("counterparties.code"))
-
-
-FUND = ENUM("SERCGMAST", "BRINKER", "BOWDST", name="fund")
-
-PORTFOLIO = ENUM(
- "OPTIONS",
- "IR",
- "MORTGAGES",
- "IG",
- "HY",
- "CURVE",
- "TRANCHE",
- "CLO",
- "HEDGE_MAC",
- "STRUCTURED",
- 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",
- "M_MTG_SD",
- "M_MTG_PR",
- "CRT_SD",
- "CRT_LD",
- "CRT_LD_JNR",
- 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_HYCURVE",
- "SER_IGCURVE",
- "SER_ITRXCURVE",
- "XCURVE",
- "MBSCDS",
- "IGOPTDEL",
- "HYOPTDEL",
- "HYEQY",
- "HYMEZ",
- "HYSNR",
- "HYINX",
- "IGEQY",
- "IGMEZ",
- "IGSNR",
- "IGINX",
- "XOEQY",
- "XOMEZ",
- "XOINX",
- "EUEQY",
- "EUMEZ",
- "EUSNR",
- "EUINX",
- "BSPK",
- name="cds_strat",
-)
-
-SWAPTION_STRAT = ENUM(
- "IGPAYER", "IGREC", "HYPAYER", "HYREC", "STEEP", "DV01", name="swaption_strat"
-)
-
-FUTURE_STRAT = ENUM(
- "M_STR_MAV",
- "M_MTG_IO",
- "M_STR_MEZZ",
- "M_MTG_RW",
- "SER_ITRXCURVE",
- "M_CSH_CASH",
- "DELTAONE",
- "TCSH",
- name="future_strat",
-)
-
-CASH_STRAT = ENUM(
- "M_CSH_CASH",
- "MBSCDSCSH",
- "SER_IGCVECSH",
- "SER_ITRXCVCSH",
- "CVECSH",
- "CSOCDSCSH",
- "IGCDSCSH",
- "HYCDSCSH",
- "CLOCDSCSH",
- "IGTCDSCSH",
- "MACCDSCSH",
- "M_STR_MEZZ",
- "IRDEVCSH",
- "TCSH",
- "COCSH",
- "XCURVE",
- "SER_ITRXCURVE",
- "BSPK",
- "SER_HYINX",
- "IGOPTDEL",
- "IGINX",
- "HEDGE_CLO",
- name="cash_strat",
-)
-
-SPOT_STRAT = ENUM(
- "M_STR_MAV",
- "M_STR_MEZZ",
- "M_CSH_CASH",
- "TCSH",
- "CVECSH",
- "SER_ITRXCURVE",
- name="spot_strat",
-)
-
-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"
-)
-
-CALL_NOTICE = ENUM(
- "24H",
- "48H",
- "3D",
- "4D",
- "5D",
- "6D",
- "1W",
- "8D",
- "9D",
- "10D",
- "2W",
- "1M",
- "2M",
- name="call_notice",
-)
-
-ASSET_CLASS = ENUM(
- "CSO",
- "Subprime",
- "CLO",
- "Tranches",
- "Futures",
- "Cash",
- "FX",
- "Cleared",
- "CRT",
- name="asset_class",
-)
-ACTION = ENUM("NEW", "UPDATE", "CANCEL", name="action")
-
-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_BASKET_TRANCHE",
- "ABS_CDS",
- "BESPOKE",
- name="swap_type",
-)
-
-ISDA = ENUM("ISDA2014", "ISDA2003Cred", name="isda")
-
-DAY_COUNT = ENUM("ACT/360", "ACT/ACT", "30/360", "ACT/365", name="day_count")
-FREQ = ENUM(
- "Yearly",
- "Half-Yearly",
- "Quarterly",
- "Bi-Monthly",
- "Monthly",
- "Weekly",
- "Daily",
- "Straight",
- name="frequency",
-)
-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")
-
-CAPFLOOR_TYPE = ENUM(
- "CAPFLOOR", "CMS_OPTION", "STRUCTURED", "FORWARD_PREMIUM", name="capfloor_type"
-)
-CAPFLOOR = ENUM("C", "F", name="cap_or_floor")
-PAYMENT_MODE = ENUM("F", "S", name="payment_mode")
-PRICING_TYPE = ENUM("PlainVanilla", "EquityIndex", name="pricing_type")
-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)
- folder = db.Column(BOND_STRAT, nullable=False)
- custodian = db.Column(db.String(12), default="BAC", nullable=False)
- cashaccount = db.Column(db.String(12), default="V0NSCLMAMB", nullable=False)
- cp_code = db.Column(
- db.String(12),
- db.ForeignKey("counterparties.code"),
- info={"choices": [(None, "")], "label": "counterparty"},
- nullable=False,
- )
- trade_date = db.Column(db.Date, nullable=False, default=datetime.date.today)
- settle_date = db.Column(
- db.Date, nullable=False, default=lambda: datetime.date.today() + 2 * bus_day
- )
- cusip = db.Column(
- db.String(9),
- info={
- "validators": Length(9, 9),
- "filters": [lambda x: x or None],
- "trim": True,
- },
- )
- isin = db.Column(
- db.String(12),
- info={
- "validators": Length(12, 12),
- "filters": [lambda x: x or None],
- "trim": True,
- },
- )
- identifier = db.Column(
- db.String(12), info={"filters": [lambda x: x or None], "trim": True}
- )
- description = db.Column(db.String(32), nullable=False, info={"trim": True})
- 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,
- },
- )
- faceamount = db.Column(db.Float, nullable=False)
- price = db.Column(db.Float, nullable=False)
- accrued = db.Column(db.Float)
- asset_class = db.Column(ASSET_CLASS)
- ticket = db.Column(db.String, info={"form_field_class": FileField})
- principal_payment = db.Column(db.Float)
- accrued_payment = db.Column(db.Float)
- counterparty = db.relationship(Counterparties)
- __table_args__ = (db.CheckConstraint("cusip is not Null or isin is not Null"),)
-
-
-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)
- portfolio = db.Column(PORTFOLIO, nullable=False)
- folder = db.Column(CDS_STRAT, nullable=False)
- account_code = db.Column(
- db.String(5),
- db.ForeignKey("accounts.code"),
- info={"choices": [(None, "")], "label": "fcm_account"},
- nullable=False,
- )
- custodian = db.Column(db.String(12), default="NONE", nullable=False)
- cashaccount = db.Column(db.String(12), default="V0NSCLMFCM", nullable=False)
- cp_code = db.Column(
- db.String(12),
- db.ForeignKey("counterparties.code"),
- info={"choices": [(None, "")], "label": "counterparty"},
- nullable=False,
- )
- trade_date = db.Column(db.Date, nullable=False, default=datetime.date.today)
- effective_date = db.Column(
- db.Date,
- nullable=False,
- default=lambda: previous_twentieth(datetime.date.today() + BDay()),
- )
- 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)
- upfront_settle_date = db.Column(
- db.Date, nullable=False, default=lambda: datetime.date.today() + BDay()
- )
- initial_margin_percentage = db.Column(db.Float)
- swap_type = db.Column(SWAP_TYPE, nullable=False)
- orig_attach = db.Column(db.SmallInteger, info={"min": 0, "max": 100})
- orig_detach = db.Column(db.SmallInteger, info={"min": 0, "max": 100})
- attach = db.Column(db.Float, info={"min": 0.0, "max": 100.0})
- detach = db.Column(db.Float, info={"min": 0.0, "max": 100.0})
- corr_attach = db.Column(db.Float, info={"min": 0.0, "max": 1.0})
- corr_detach = db.Column(db.Float, info={"min": 0.0, "max": 1.0})
- index_ref = db.Column(db.Float)
- clearing_facility = db.Column(
- db.String(12), default=None, info={"filters": [lambda x: x or None]}
- )
- isda_definition = db.Column(ISDA)
- counterparty = db.relationship(Counterparties, foreign_keys=[cp_code])
- fcm_account = db.relationship(
- Accounts, foreign_keys=[account_code], load_on_pending=True
- )
- ref = db.Column(db.Float)
- __table_args__ = (
- db.CheckConstraint(
- "(swap_type IN ('CD_INDEX_TRANCHE', 'BESPOKE') AND "
- "(orig_attach IS NOT NULL AND orig_detach IS NOT NULL AND clearing_facility IS NULL))"
- "OR (swap_type='CD_INDEX' AND "
- "orig_attach IS NULL AND orig_detach IS NULL AND clearing_facility='ICE-CREDIT')"
- "OR (swap_type='ABS_CDS' AND "
- "orig_attach IS NULL AND orig_detach IS NULL AND clearing_faciliy IS NULL)"
- ),
- )
-
-
-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, nullable=False)
- folder = db.Column(CDS_STRAT, nullable=False)
- custodian = db.Column(db.String(12), default="SGFCM", nullable=False)
- cashaccount = db.Column(db.String(12), default="V0NSCLMAMB", nullable=False)
- cp_code = db.Column(
- db.String(12),
- db.ForeignKey("counterparties.code"),
- info={"choices": [(None, "")], "label": "counterparty"},
- nullable=False,
- )
- trade_date = db.Column(db.Date, nullable=False)
- settle_date = db.Column(db.Date, nullable=False)
- cusip = db.Column(
- db.String(9),
- info={
- "validators": Length(9, 9),
- "filters": [lambda x: x or None],
- "trim": True,
- },
- )
- isin = db.Column(
- db.String(12),
- info={
- "validators": Length(12, 12),
- "filters": [lambda x: x or None],
- "trim": True,
- },
- )
- identifier = db.Column(
- db.String(12), info={"filters": [lambda x: x or None], "trim": True}
- )
- description = db.Column(db.String(32), nullable=False, info={"trim": True})
- transation_indicator = db.Column(REPO_TYPE)
- faceamount = db.Column(db.Float, nullable=False)
- price = db.Column(db.Float, nullable=False)
- currency = db.Column(CCY, nullable=False)
- expiration_date = db.Column(db.Date)
- weighted_amount = db.Column(db.Float)
- haircut = db.Column(db.Float)
- repo_rate = db.Column(db.Float, nullable=False)
- call_notice = db.Column(CALL_NOTICE)
- daycount = db.Column(DAY_COUNT)
- ticket = db.Column(db.String, info={"form_field_class": FileField})
- __table__args = (
- db.CheckConstraint(
- "haircut is not NULL and weighted_amount is NULL) or "
- "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)
- 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, 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(12), default="V0NSCLMAMB", 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, default=datetime.date.today)
- settle_date = db.Column(
- db.Date, nullable=False, default=lambda: datetime.date.today() + 3 * bus_day
- )
- 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)
- 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)
- initial_margin_percentage = db.Column(db.Float)
- index_ref = db.Column(db.Float)
- security_id = db.Column(db.String(12), nullable=False)
- security_desc = db.Column(db.String(32))
- fixed_rate = db.Column(db.Float)
- maturity = db.Column(db.Date, nullable=False)
- currency = db.Column(CCY, nullable=False)
- settlement_type = db.Column(SETTLEMENT_TYPE, nullable=False)
- counterparty = db.relationship(Counterparties, foreign_keys=[cp_code])
-
-
-class FutureDeal(db.Model):
- __tablename__ = "futures"
- id = db.Column("id", db.Integer, primary_key=True)
- 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, 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)
- cp_code = db.Column(
- db.String(12),
- db.ForeignKey("counterparties.code"),
- info={
- "choices": [("IBKRNY", "Interactive Brokers"), ("GOLDNY", "Goldman Sachs")],
- "label": "counterparty",
- },
- nullable=False,
- )
- trade_date = db.Column(db.Date, nullable=False, default=datetime.date.today)
- settle_date = db.Column(
- db.Date, nullable=False, default=lambda: datetime.date.today() + 2 * bus_day
- )
- 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,
- },
- )
- bbg_ticker = db.Column(db.String(32), nullable=False)
- quantity = db.Column(db.Float, nullable=False)
- price = db.Column(db.Float, nullable=False)
- commission = db.Column(db.Float)
- swap_type = db.Column(FUTURE_TYPE, nullable=False)
- security_desc = db.Column(db.String(32), nullable=False)
- maturity = db.Column(db.Date, nullable=False)
- currency = db.Column(CCY, nullable=False)
- exchange = db.Column(db.String(3), default="CME", nullable=False)
- counterparty = db.relationship(Counterparties)
-
-
-class CashFlowDeal(db.Model):
- __tablename__ = "wires"
- 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(CASH_STRAT, nullable=False)
- code = db.Column(db.String(5), db.ForeignKey("accounts.code"), nullable=False)
- amount = db.Column(db.Float, nullable=False)
- currency = db.Column(CCY, nullable=False)
- trade_date = db.Column(db.Date, nullable=False, default=datetime.date.today)
- account = db.relationship(Accounts)
-
-
-class SpotDeal(db.Model):
- __tablename__ = "spots"
- id = db.Column("id", db.Integer, primary_key=True)
- 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, nullable=False)
- folder = db.Column(SPOT_STRAT, nullable=False)
- custodian = db.Column(db.String(12), default="INTBR", nullable=False)
- cashaccount = db.Column(db.String(12), default="IANSCLMAFU", nullable=False)
- cp_code = db.Column(
- db.String(12),
- db.ForeignKey("counterparties.code"),
- info={
- "choices": [
- ("IBKRNY", "Interactive Brokers"),
- ("BAMSNY", "BofA"),
- ("WELFEI", "Wells Fargo"),
- ("BONY", "Bank of New York"),
- ],
- "label": "counterparty",
- },
- nullable=False,
- )
- trade_date = db.Column(db.Date, nullable=False, default=datetime.date.today)
- settle_date = db.Column(
- db.Date, nullable=False, default=lambda: datetime.date.today() + 2 * bus_day
- )
- spot_rate = db.Column(db.Float, nullable=False)
- buy_currency = db.Column(CCY, nullable=False)
- buy_amount = db.Column(db.Float, nullable=False)
- sell_currency = db.Column(CCY, nullable=False)
- sell_amount = db.Column(db.Float, nullable=False)
- commission_currency = db.Column(CCY)
- commission = db.Column(db.Float)
- counterparty = db.relationship(Counterparties)
-
-
-class CapFloorDeal(db.Model):
- __tablename__ = "capfloors"
- id = db.Column("id", db.Integer, primary_key=True)
- 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, nullable=False)
- folder = db.Column(SWAPTION_STRAT, nullable=False)
- custodian = db.Column(db.String(12), default="NONE", nullable=False)
- cashaccount = db.Column(db.String(12), default="V0NSCLMAMB", nullable=False)
- cp_code = db.Column(
- db.String(12),
- db.ForeignKey("counterparties.code"),
- info={"choices": [(None, "")], "label": "counterparty"},
- nullable=False,
- )
- comments = db.Column(db.String(100))
- floating_rate_index = db.Column(
- db.String(12), nullable=False, info={"label": "Floating Rate Index"}
- )
- floating_rate_index_desc = db.Column(db.String(32))
- 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,
- },
- )
- cap_or_floor = db.Column(
- CAPFLOOR,
- nullable=False,
- info={"choices": [("C", "Cap"), ("F", "Floor")], "label": "Cap or Floor?"},
- )
- strike = db.Column(db.Float, nullable=False)
- value_date = db.Column(db.Date, nullable=False)
- expiration_date = db.Column(db.Date, nullable=False)
- premium_percent = db.Column(db.Float, nullable=False)
- pricing_type = db.Column(PRICING_TYPE, nullable=False)
- payment_frequency = db.Column(FREQ, nullable=False, default="Straight")
- fixing_frequency = db.Column(FREQ, nullable=False, default="Straight")
- day_count_counvention = db.Column(DAY_COUNT, default="Act/Act")
- bdc_convention = db.Column(BUS_DAY_CONVENTION, default="Modified")
- payment_mode = db.Column(
- PAYMENT_MODE,
- nullable=False,
- info={"choices": [("F", "Flat"), ("S", "Schedule")]},
- )
- payment_at_beginning_or_end = db.Column(
- BEGIN_OR_END,
- nullable=False,
- info={"label": "In arrears?", "choices": [("E", True), ("B", False)]},
- )
- initial_margin_percentage = db.Column(db.Float)
- initial_margin_currency = db.Column(CCY)
- amount = db.Column(db.Float, nullable=False, info={"label": "notional"})
- trade_date = db.Column(db.Date, nullable=False, default=datetime.date.today)
- swap_type = db.Column(CAPFLOOR_TYPE, nullable=False)
- reset_lag = db.Column(db.Integer, default=2)
- trade_confirm = db.Column(db.String, info={"form_field_class": FileField})
- cpty_id = db.Column(db.Text)
- counterparty = db.relationship(Counterparties, foreign_keys=[cp_code])
-
-
-class Termination(db.Model):
- __tablename__ = "terminations"
- id = db.Column("id", db.Integer, primary_key=True)
- dealid = db.Column(db.String(28), nullable=False)
- termination_date = db.Column(db.Date, nullable=False, default=datetime.date.today)
- termination_cp = db.Column(
- db.String(12),
- db.ForeignKey("counterparties.code"),
- info={
- "choices": [(None, "")],
- "label": "termination counterparty",
- "coerce": lambda s: None if s == "None" else s,
- },
- )
- counterparty = db.relationship(Counterparties, foreign_keys=[termination_cp])
- termination_amount = db.Column(db.Float)
- termination_fee = db.Column(db.Float, nullable=False)
- fee_payment_date = db.Column(
- db.Date, nullable=False, default=lambda: datetime.date.today() + 3 * bus_day
- )
- partial_termination = db.Column(db.Boolean, nullable=False, default=False)
-
-
-BaseModelForm = model_form_factory(FlaskForm)
-
-
-class ModelForm(BaseModelForm):
- @classmethod
- def get_session(self):
- return db.session