aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--python/analytics/index.py14
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):