aboutsummaryrefslogtreecommitdiffstats
path: root/python
diff options
context:
space:
mode:
Diffstat (limited to 'python')
-rw-r--r--python/analytics/index.py18
1 files changed, 15 insertions, 3 deletions
diff --git a/python/analytics/index.py b/python/analytics/index.py
index 5a94415f..ec967544 100644
--- a/python/analytics/index.py
+++ b/python/analytics/index.py
@@ -13,6 +13,7 @@ from db import dbconn
from psycopg2 import DataError
from pyisda.curve import SpreadCurve
from .utils import previous_twentieth
+from scipy.optimize import brentq
from yieldcurve import YC, ql_to_jp, roll_yc, rate_helpers
serenitasdb = dbconn('serenitasdb')
@@ -167,7 +168,19 @@ class Index():
@price.setter
def price(self, val):
- pass
+ def handle(x, self, val):
+ self._spread = x
+ self._update()
+ return val - self.price
+ eta = 1.2
+ a = 50*1e-4 if self.recovery == 0.4 else 250*1e-4
+ b = a * eta
+ while True:
+ if handle(b, self, val) > 0:
+ break
+ b *= eta
+ self._spread = brentq(handle, a, b, args = (self, val))
+ self._update()
@property
def DV01(self):
@@ -234,8 +247,7 @@ class Index():
# self._helpers = rate_helpers(self.currency)
# self._ql_yc = YC(self._helpers)
# self._yc = ql_to_jp(self._ql_yc)
- helpers = rate_helpers(self.currency)
- ql_yc = YC(helpers)
+ ql_yc = YC(currency = self.currency)
self._yc = ql_to_jp(ql_yc)
self._trade_date = d
self._step_in_date = self.trade_date + datetime.timedelta(days=1)