aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/index.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/index.py')
-rw-r--r--python/analytics/index.py13
1 files changed, 6 insertions, 7 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py
index 95ec5210..bc3db1e1 100644
--- a/python/analytics/index.py
+++ b/python/analytics/index.py
@@ -17,20 +17,18 @@ from yieldcurve import YC, ql_to_jp, roll_yc, rate_helpers
serenitasdb = dbconn('serenitasdb')
-def g(index, spread : float, exercise_date : datetime.date, use_rolled_curve = True):
+def g(index, spread : float, exercise_date : datetime.date, forward_yc = None):
""" computes the strike clean price using the expected forward yield curve """
- if use_rolled_curve:
- rolled_curve = roll_yc(index._yc, exercise_date)
- else:
- rolled_curve = index._yc
+ if forward_yc is None:
+ forward_yc = index._yc
step_in_date = exercise_date + datetime.timedelta(days=1)
exercise_date_settle = (pd.Timestamp(exercise_date) + 3* BDay()).date()
- sc = SpreadCurve(exercise_date, rolled_curve, index.start_date,
+ sc = SpreadCurve(exercise_date, forward_yc, index.start_date,
step_in_date, exercise_date_settle,
[index.end_date], array.array('d', [spread * 1e-4]),
index.recovery)
a = index._fee_leg.pv(exercise_date, step_in_date, exercise_date_settle,
- rolled_curve, sc, True)
+ forward_yc, sc, True)
return (spread - index.fixed_rate) * a *1e-4
class Index():
@@ -103,6 +101,7 @@ class Index():
clean_forward_annuity = a - Delta * df * q
forward_price = self.notional * clean_forward_annuity * (self._spread -
self.fixed_rate*1e-4)
+
fep = self.notional * (1 - self.recovery) * (1 - q)
return forward_price / df + fep