diff options
| -rw-r--r-- | python/analytics/index.py | 14 |
1 files changed, 6 insertions, 8 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py index a1ec4bb8..95ec5210 100644 --- a/python/analytics/index.py +++ b/python/analytics/index.py @@ -84,29 +84,27 @@ class Index(): 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, + a = self._fee_leg.pv(self.trade_date, step_in_date, self.trade_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) + q = self._sc.survival_probability(exercise_date) return a - Delta * df * q def forward_pv(self, exercise_date): """This is default adjusted forward price at time exercise_date""" step_in_date = exercise_date + datetime.timedelta(days=1) - a = self._fee_leg.pv(self.trade_date, step_in_date, self._value_date, + a = self._fee_leg.pv(self.trade_date, step_in_date, self.trade_date, self._yc, self._sc, False) 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._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, - self._yc, self._sc, self.recovery) - forward_price = self.notional * (dl_pv - clean_forward_annuity * self.fixed_rate*1e-4) + 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 * self._yc.discount_factor(self._value_date) / df + fep + return forward_price / df + fep @property def spread(self): |
