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