diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/yieldcurve.py | 22 |
1 files changed, 14 insertions, 8 deletions
diff --git a/python/yieldcurve.py b/python/yieldcurve.py index 7325e6b7..78ad3801 100644 --- a/python/yieldcurve.py +++ b/python/yieldcurve.py @@ -4,14 +4,14 @@ import requests, zipfile from io import BytesIO import xml.etree.ElementTree as ET import datetime -from quantlib.time.api import Calendar, Date, Period, Days, Following, Schedule, today +from quantlib.time.api import Calendar, Date, Period, Days, Schedule, today from quantlib.time import imm from quantlib.util.converter import qldate_to_pydate, pydate_to_qldate from quantlib.market.market import libor_market import numpy as np import matplotlib.pyplot as plt -def getMarkitIRData(date): +def getMarkitIRData(date = datetime.date.today()): basedir = os.path.join(root, "data", "Yield Curves") datestr = datetime.datetime.strftime(date, "%Y%m%d") filename = "InterestRates_USD_{0}.xml".format(datestr) @@ -43,22 +43,28 @@ def get_futures_data(date = datetime.date.today()): quotes = [float(line.split(",")[1]) for line in fh] return quotes -if __name__=="__main__": +def YC(date = datetime.date.today()): m = libor_market('USD(NY)') calendar = Calendar.from_name(m.calendar) - MarkitData = getMarkitIRData(qldate_to_pydate(today())) - prev_day = calendar.advance(today(), -1, Days, convention=Following) + MarkitData = getMarkitIRData() + prev_day = calendar.advance(today(), -1, Days) futures = get_futures_data(qldate_to_pydate(prev_day).date()) m = libor_market('USD(NY)') quotes = [('ED',i+1, v) for i, v in enumerate(futures)] quotes += [('SWAP', k, v) for k, v in MarkitData['swaps'].items()] m.set_quotes(today(), quotes) m.bootstrap_term_structure() - p3 = Period('3Mo') + return m + +if __name__=="__main__": + m = YC() + p1 = Period('1Mo') p2 = Period('2Mo') + p3 = Period('3Mo') p6 = Period('6Mo') - settle_date = calendar.advance(today(), m.settlement_days, Days, convention=Following) - sched = Schedule(settle_date, settle_date+Period('5Yr'), Period('3Mo'), calendar) + p12 = Period('12Mo') + calendar = Calendar.from_name(m.calendar) + sched = Schedule(m.settle_date, m.settle_date+Period('5Yr'), Period('3Mo'), calendar) days = [qldate_to_pydate(day) for day in sched] f3 = [m.forward(d, p3, 1) for d in sched] f6 = [m.forward(d, p6, 1) for d in sched] |
