aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/tranche_functions.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/tranche_functions.py')
-rw-r--r--python/analytics/tranche_functions.py15
1 files changed, 10 insertions, 5 deletions
diff --git a/python/analytics/tranche_functions.py b/python/analytics/tranche_functions.py
index d4c38097..9ccd0e63 100644
--- a/python/analytics/tranche_functions.py
+++ b/python/analytics/tranche_functions.py
@@ -339,7 +339,6 @@ def tranche_pl_trunc(EL, cs, K1, K2, scaled=False):
def tranche_pv(L, R, cs, K1, K2):
return tranche_pl(L, cs, K1, K2) + tranche_cl(L, R, cs, K2, K2)
-
def credit_schedule(tradedate, tenor, coupon, yc, enddate=None):
tradedate = pydate_to_qldate(tradedate)
if enddate is None:
@@ -348,14 +347,20 @@ def credit_schedule(tradedate, tenor, coupon, yc, enddate=None):
enddate = pydate_to_qldate(enddate)
cal = WeekendsOnly()
DC = Actual360()
- sched = Schedule.from_rule(tradedate + 1, enddate, Period('3M'), cal,
+ start_date = tradedate + 1
+ sched = Schedule.from_rule(tradedate, enddate, Period('3M'), cal,
ModifiedFollowing, Unadjusted, CDS2015)
dates = sched.to_npdates()
pydates = dates.astype('O')
- df = [yc.discount_factor(d) for d in pydates if d > tradedate + 1]
- coupons = [DC.year_fraction(d1, d2) * coupon for d1, d2 in zip(sched[:-2], sched[1:-1])]
+ df = [yc.discount_factor(d) for d in pydates if d > start_date]
+ coupons = [DC.year_fraction(d1, d2) * coupon for d1, d2 in zip(sched[:-2], sched[1:-1])
+ if d2 > start_date]
coupons.append(Actual360(True).year_fraction(sched[-2], sched[-1]) * coupon)
- return pd.DataFrame({"df": df, "coupons": coupons}, dates[1:])
+ if dates[1] <= start_date:
+ dates = dates[2:]
+ else:
+ dates = dates[1:]
+ return pd.DataFrame({"df": df, "coupons": coupons}, index=dates)
def cds_accrued(tradedate, coupon):