diff options
Diffstat (limited to 'python/analytics/index.py')
| -rw-r--r-- | python/analytics/index.py | 34 |
1 files changed, 1 insertions, 33 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py index efda3cb6..ee8aaa2a 100644 --- a/python/analytics/index.py +++ b/python/analytics/index.py @@ -83,36 +83,6 @@ class Index(object): self._default_leg = ContingentLeg(self.start_date, d, 1) self._end_date = d - 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.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(exercise_date) - return a - Delta * df * q - - def forward_spread(self, exercise_date): - value_date = (pd.Timestamp(exercise_date) + 3* BDay()).date() - df = self._yc.discount_factor(value_date) - q = self._sc.survival_probability(exercise_date) - return self._spread + (1 - self.recovery) * (1 - q) * df / self.forward_annuity(exercise_date) - - 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.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 - forward_price = clean_forward_annuity * (self.spread - self.fixed_rate) * 1e-4 - fep = (1 - self.recovery) * (1-q) - return self.notional * (forward_price / df + fep) - @property def spread(self): if self._spread is not None: @@ -391,6 +361,4 @@ class ForwardIndex(object): self._forward_pv = self._forward_pv / self.df + fep self._forward_spread = self.index._spread + fep * self.df / self._forward_annuity else: - self._forward_annuity = None - self._forward_pv = None - self._forward_spread = None + self._forward_annuity, self._forward_pv, self._forward_spread = None, None, None |
