aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/Dawn/__init__.py2
-rw-r--r--python/Dawn/models.py53
-rw-r--r--python/Dawn/views.py27
3 files changed, 41 insertions, 41 deletions
diff --git a/python/Dawn/__init__.py b/python/Dawn/__init__.py
index 498ef6a5..b57c1f33 100644
--- a/python/Dawn/__init__.py
+++ b/python/Dawn/__init__.py
@@ -21,4 +21,4 @@ if not app.debug:
import Dawn.views
-app.jinja_env.globals.update(bus_day=Dawn.views.bus_day)
+app.jinja_env.globals.update(bus_day=Dawn.models.bus_day)
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"),
diff --git a/python/Dawn/views.py b/python/Dawn/views.py
index 77f90acc..1149b078 100644
--- a/python/Dawn/views.py
+++ b/python/Dawn/views.py
@@ -36,20 +36,12 @@ from .models import (
from sqlalchemy.exc import IntegrityError
from wtforms.fields import BooleanField
-from pandas.tseries.offsets import CustomBusinessDay
-from pandas.tseries.holiday import get_calendar, HolidayCalendarFactory, GoodFriday
-from pyisda.date import previous_twentieth
-
from .utils import bump_rev, simple_serialize
from PyPDF2 import PdfFileMerger
from io import BytesIO
from . import app
from . import db
-fed_cal = get_calendar("USFederalHolidayCalendar")
-bond_cal = HolidayCalendarFactory("BondCalendar", fed_cal, GoodFriday)
-bus_day = CustomBusinessDay(calendar=bond_cal())
-
def cp_choices(kind="bond"):
if kind == "bond":
@@ -226,24 +218,7 @@ def get_form(trade, kind):
if trade.id:
form = Form(obj=trade)
else:
- today = pd.datetime.today()
- tomorrow = today + pd.DateOffset(1)
- if kind == "cds":
- form = Form(
- trade_date=today.date(),
- effective_date=previous_twentieth(today.date()),
- upfront_settle_date=today.date() + 1 * bus_day,
- )
-
- elif kind == "swaption":
- form = Form(
- trade_date=today.date(),
- effective_date=tomorrow.date(),
- settle_date=today.date() + 3 * bus_day,
- )
-
- else:
- form = Form(trade_date=today.date(), settle_date=today.date() + 2 * bus_day)
+ form = Form()
# add extra empty fields
empty_choice = (None, "")
for attr in ["folder", "buysell", "asset_class", "swaption_type"]: