diff options
Diffstat (limited to 'python/Dawn/models.py')
| -rw-r--r-- | python/Dawn/models.py | 53 |
1 files changed, 39 insertions, 14 deletions
diff --git a/python/Dawn/models.py b/python/Dawn/models.py index b9eca2e6..3e472d7a 100644 --- a/python/Dawn/models.py +++ b/python/Dawn/models.py @@ -1,5 +1,10 @@ from flask_wtf import FlaskForm from flask_wtf.file import FileField + +from pandas.tseries.offsets import CustomBusinessDay +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 @@ -7,6 +12,12 @@ 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" @@ -261,8 +272,10 @@ class BondDeal(db.Model): info={"choices": [(None, "")], "label": "counterparty"}, nullable=False, ) - trade_date = db.Column(db.Date, nullable=False) - settle_date = db.Column(db.Date, 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={ @@ -327,8 +340,12 @@ class CDSDeal(db.Model): info={"choices": [(None, "")], "label": "counterparty"}, nullable=False, ) - trade_date = db.Column(db.Date, nullable=False) - effective_date = db.Column(db.Date, 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()), + ) maturity = db.Column(db.Date, nullable=False) currency = db.Column(CCY, nullable=False) payment_rolldate = db.Column(BUS_DAY_CONVENTION, nullable=False) @@ -340,7 +357,9 @@ class CDSDeal(db.Model): 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) + upfront_settle_date = db.Column( + db.Date, nullable=False, default=lambda: datetime.date.today() + bus_day + ) 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}) @@ -450,8 +469,10 @@ class SwaptionDeal(db.Model): 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) + trade_date = db.Column(db.Date, nullable=False, default=datetime.date.today) + settle_date = db.Column( + db.Date, nullable=False, default=lambda: default.date.today() + 3 * bus_day + ) buysell = db.Column( db.Boolean, nullable=False, @@ -494,8 +515,10 @@ class FutureDeal(db.Model): info={"choices": [("IBKRNY", "Interactive Brokers")], "label": "counterparty"}, nullable=False, ) - trade_date = db.Column(db.Date, nullable=False) - settle_date = db.Column(db.Date, 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, @@ -528,7 +551,7 @@ class CashFlowDeal(db.Model): 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) + trade_date = db.Column(db.Date, nullable=False, default=datetime.date.today) account = db.relationship(Accounts) @@ -550,8 +573,10 @@ class SpotDeal(db.Model): info={"choices": [("IBKRNY", "Interactive Brokers")], "label": "counterparty"}, nullable=False, ) - trade_date = db.Column(db.Date, nullable=False) - settle_date = db.Column(db.Date, 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) @@ -620,7 +645,7 @@ class CapFloorDeal(db.Model): 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) + 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}) @@ -632,7 +657,7 @@ 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) + termination_date = db.Column(db.Date, nullable=False, default=datetime.date.today) termination_cp = db.Column( db.String(12), db.ForeignKey("counterparties.code"), |
