diff options
Diffstat (limited to 'python/analytics/option.py')
| -rw-r--r-- | python/analytics/option.py | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/python/analytics/option.py b/python/analytics/option.py index 64b2187a..5378b0ce 100644 --- a/python/analytics/option.py +++ b/python/analytics/option.py @@ -212,13 +212,14 @@ class BlackSwaption(ForwardIndex): def delta(self): old_index_pv = self.index.pv old_pv = self.pv + old_spread = self.index.spread self.index.spread += 1 self._update() - notional_ratio = self.index.notional/self.notional - self._dv01 = (self.pv - old_pv) - delta = -self.index._direction * self._dv01 * notional_ratio / \ + notional_ratio = self.index.notional / self.notional + dv01 = self.pv - old_pv + delta = -self.index._direction * dv01 * notional_ratio / \ (self.index.pv - old_index_pv) - self.index.spread -= 1 + self.index.spread = old_spread self._update() return delta @@ -231,13 +232,14 @@ class BlackSwaption(ForwardIndex): @property def gamma(self): + old_spread = self.index.spread self.index.spread += 5 self._update() old_delta = self.delta self.index.spread -= 10 self._update() gamma = old_delta - self.delta - self.index.spread += 5 + self.index.spread = old_spread self._update() return gamma @@ -252,18 +254,19 @@ class BlackSwaption(ForwardIndex): @property def vega(self): old_pv = self.pv + old_sigma = self.sigma self.sigma += 0.01 vega = self.pv - old_pv - self.sigma -= 0.01 + self.sigma = old_sigma return vega @property def DV01(self): - old_pv = self.pv + old_pv, old_spread = self.pv, self.index.spread self.index.spread += 1 self._update() dv01 = self.pv - old_pv - self.index.spread -= 1 + self.index.spread = old_spread self._update() return dv01 |
