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.py16
1 files changed, 10 insertions, 6 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py
index 2277b938..9ec3b7ac 100644
--- a/python/analytics/index.py
+++ b/python/analytics/index.py
@@ -88,11 +88,15 @@ class Index():
Unadjusted,
CDS)
- def survival_probability(self, d):
- if d > self.trade_date:
- return math.exp( - self.flat_hazard * (d - self.trade_date).days/365)
- else:
- return 1
+ def forward_annuity(self, exercise_date):
+ step_in_date = exercise_date + datetime.timedelta(days=1)
+ value_date = (pd.Timestamp(exercise_date) + 3* BDay()).date()
+ a = self._fee_leg.pv(self.trade_date, step_in_date, self._value_date,
+ self._yc, self._sc, False)
+ Delta = self._fee_leg.accrued(step_in_date)
+ df = self._yc.discount_factor(value_date)
+ q = self._sc.survival_probability(step_in_date)
+ return a - Delta * df * q
def forward_pv(self, exercise_date):
"""This is default adjusted forward price at time exercise_date"""
@@ -102,7 +106,7 @@ class Index():
Delta = self._fee_leg.accrued(step_in_date)
value_date = (pd.Timestamp(exercise_date) + 3* BDay()).date()
df = self._yc.discount_factor(value_date)
- q = self.survival_probability(exercise_date)
+ q = self._sc.survival_probability(exercise_date)
clean_forward_annuity = a - Delta * df * q
dl_pv = self._default_leg.pv(
self.trade_date, step_in_date, self._value_date,