aboutsummaryrefslogtreecommitdiffstats
path: root/python/analytics
diff options
context:
space:
mode:
Diffstat (limited to 'python/analytics')
-rw-r--r--python/analytics/index.py12
-rw-r--r--python/analytics/option.py19
2 files changed, 16 insertions, 15 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py
index 7d31ab3f..8d157897 100644
--- a/python/analytics/index.py
+++ b/python/analytics/index.py
@@ -219,16 +219,15 @@ class Index(object):
@property
def DV01(self):
- old_pv = self.pv
+ old_pv, old_spread = self.pv, self.spread
self.spread += 1
dv01 = self.pv - old_pv
- self.spread -= 1
+ self.spread = old_spread
return dv01
@property
def IRDV01(self):
- old_pv = self.pv
- old_yc = self._yc
+ old_pv, old_yc = self.pv, self._yc
# for rh in self._helpers:
# rh.quote += 1e-4
# self._yc = ql_to_jp(self._ql_yc)
@@ -247,8 +246,7 @@ class Index(object):
@property
def rec_risk(self):
- old_pv = self.pv
- old_recovery = self.recovery
+ old_pv, old_recovery = self.pv, self.recovery
self.recovery = old_recovery - 0.01
self._update()
pv_minus = self.pv
@@ -257,7 +255,7 @@ class Index(object):
pv_plus = self.pv
self.recovery = old_recovery
self._update()
- return (pv_plus - pv_minus)/2
+ return (pv_plus - pv_minus) / 2
@property
def jump_to_default(self):
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