diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/yieldcurve.py | 16 |
1 files changed, 10 insertions, 6 deletions
diff --git a/python/yieldcurve.py b/python/yieldcurve.py index 23f411a8..951f7931 100644 --- a/python/yieldcurve.py +++ b/python/yieldcurve.py @@ -13,7 +13,7 @@ import matplotlib.pyplot as plt def getMarkitIRData(date = datetime.date.today()): basedir = os.path.join(root, "data", "Yield Curves") - datestr = datetime.datetime.strftime(date, "%Y%m%d") + datestr = date.strftime("%Y%m%d") filename = "InterestRates_USD_{0}.xml".format(datestr) if not os.path.exists(os.path.join(basedir, filename)): r = requests.get('http://www.markit.com/news/InterestRates_USD_{0}.zip'.format(datestr)) @@ -38,19 +38,23 @@ def getMarkitIRData(date = datetime.date.today()): def get_futures_data(date = datetime.date.today()): futures_file = os.path.join(root, "data", "Yield Curves", - "futures-{0}.csv".format(str(date))) + "futures-{0}.csv".format(date.strftime("%Y-%m-%d"))) with open(futures_file) as fh: quotes = [float(line.split(",")[1]) for line in fh] return quotes def YC(date = datetime.date.today(), MarkitData=None, futures = None): if not MarkitData: - MarkitData = getMarkitIRData(date.date()) + MarkitData = getMarkitIRData(date) if not futures: - futures = get_futures_data(date.date()) + futures = get_futures_data(date) m = libor_market('USD(NY)') + cal = Calendar.from_name('GBR') + # m.settle_date is not available until we set_quotes, so we compute it again + # need a better way to do this + settle_date = cal.advance(pydate_to_qldate(date), 2, Days) quotes = [('ED',i+1, v) for i, v in enumerate(futures)] - if next_imm_date(date, 9) == m.settle_date + Period('2Yr'): + if next_imm_date(date, 9) == settle_date + Period('2Yr'): quotes.pop(7) quotes += [('SWAP', k, v) for k, v in MarkitData['swaps'].items()] m.set_quotes(date, quotes) @@ -58,7 +62,7 @@ def YC(date = datetime.date.today(), MarkitData=None, futures = None): return ts if __name__=="__main__": - date = datetime.datetime(2014, 4, 29) + date = datetime.date(2014, 4, 29) ts = YC(date) cal = Calendar.from_name('USA') p1 = Period('1Mo') |
