aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics/option.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics/option.py')
-rw-r--r--python/analytics/option.py19
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