diff options
| -rw-r--r-- | python/yieldcurve.py | 27 |
1 files changed, 26 insertions, 1 deletions
diff --git a/python/yieldcurve.py b/python/yieldcurve.py index ab434e13..6aefe563 100644 --- a/python/yieldcurve.py +++ b/python/yieldcurve.py @@ -15,7 +15,7 @@ from quantlib.time.date import pydate_from_qldate import numpy as np from quantlib.quotes import SimpleQuote from db import dbconn -from pyisda.curve import YieldCurve +from pyisda.curve import YieldCurve, BadDay def getMarkitIRData(effective_date = datetime.date.today(), currency = "USD"): @@ -106,6 +106,31 @@ def YC(helpers = None, currency="USD", MarkitData=None): calendar = WeekendsOnly() return PiecewiseYieldCurve(BootstrapTrait.Discount, Interpolator.LogLinear, 0, calendar, helpers, Actual365Fixed()) + +def jpYC(effective_date, currency="USD", MarkitData=None): + if MarkitData is None: + MarkitData = getMarkitIRData(effective_date, + currency) + types = 'M'*len(MarkitData['deposits']) + 'S'*len(MarkitData['swaps']) + periods = [t for t, _ in MarkitData['deposits']] + \ + [t for t, _ in MarkitData['swaps']] + rates = [r for _, r in MarkitData['deposits']] + \ + [r for _, r in MarkitData['swaps']] + rates = np.array(rates) + if currency == "USD": + fixed_period = '6M' + float_period = '3M' + fixed_dcc = '30/360' + float_dcc ='ACT/360' + elif currency == 'EUR': + fixed_period = '12M' + float_period = '6M' + fixed_dcc = '30/360' + float_dcc = 'ACT/360' + return YieldCurve(effective_date, types, periods, rates, 'ACT/360',\ + fixed_period, float_period, fixed_dcc, float_dcc, + BadDay.MODIFIED) + def ql_to_jp(ql_yc): """convert a QuantLib yield curve to a JP's one""" if ql_yc._trait == BootstrapTrait.Discount: |
