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