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