diff options
Diffstat (limited to 'python/analytics/index.py')
| -rw-r--r-- | python/analytics/index.py | 16 |
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, |
