diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/analytics/option.py | 24 |
1 files changed, 3 insertions, 21 deletions
diff --git a/python/analytics/option.py b/python/analytics/option.py index d7d9942f..02f6a784 100644 --- a/python/analytics/option.py +++ b/python/analytics/option.py @@ -68,15 +68,7 @@ def ATMstrike(index, exercise_date): if index._quote_is_price: return 100 * (1 - fp) else: - closure = lambda S: g(index, S, exercise_date) - fp - eta = 1.1 - a = index.spread - b = index.spread * eta - while True: - if closure(b) > 0: - break - b *= eta - return brentq(closure, a, b) + return g(index, index.fixed_rate, exercise_date, pv=fp) class BlackSwaption(ForwardIndex): """Swaption class""" @@ -114,18 +106,8 @@ class BlackSwaption(ForwardIndex): def strike(self, K): if self.index._quote_is_price: self._G = (100 - K) / 100 - # we compute the corresponding spread to the strike price - def handle(S, index, forward_date, forward_yc): - return g(index, S, forward_date, forward_yc) - self._G - eta = 1.2 - a = 225 - b = eta * a - while True: - if handle(b, self.index, self.exercise_date, self._forward_yc) > 0: - break - b *= eta - self._strike = brentq(handle, a, b, - args=(self.index, self.exercise_date, self._forward_yc)) + self._strike = g(self.index, self.index.fixed_rate, + self.exercise_date, self._forward_yc, self._G) else: self._G = g(self.index, K, self.exercise_date, self._forward_yc) self._strike = K |
