diff options
Diffstat (limited to 'python/analytics')
| -rw-r--r-- | python/analytics/index.py | 12 | ||||
| -rw-r--r-- | python/analytics/option.py | 19 |
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 |
