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