1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
import datetime
from pyisda.date import previous_twentieth
from utils.db import serenitas_pool, dbconn
def accrual_days(event_date, auction_date):
return (event_date - previous_twentieth(auction_date)).days + 1
dawndb = dbconn("dawndb")
conn = serenitas_pool.getconn()
with conn.cursor() as c:
c.execute("SELECT * FROM defaulted ORDER BY auction_date")
for r in c:
if r.auction_date < datetime.date(2020, 5, 1):
continue
acc = accrual_days(r.event_date, r.auction_date)
severity = 1 - r.recovery
principal = -1e6 * severity
accrued = severity * acc*0.05/360 * 1e6
with dawndb.cursor() as c:
for tranche_id in (1590, 1413, 1116):
c.execute("INSERT INTO tranche_cashflows VALUES(%s, %s, %s, %s)",
(r.auction_date, tranche_id, principal, accrued))
dawndb.commit()
serenitas_pool.putconn(conn)
|