def __init__(self):
     self.dates = []
     self.OIS = OIS()
     self.corporates = []
     self.ratings = ['AAA', 'AA']
     self.corpSpreads = {}
     self.corporates = pd.DataFrame()
     self.corporates_full = {}
 def getCorporates(self, trim_start, trim_end, WORKING_DIR='.'):
     self.OIS = OIS(trim_start=trim_start,
                    trim_end=trim_end,
                    WORKING_DIR=WORKING_DIR)
     self.datesAll = self.OIS.datesAll
     self.OISData = self.OIS.getOIS()
     self.WORKING_DIR = WORKING_DIR
     for rating in self.ratings:
         index = 'ML/' + rating + 'TRI'
         try:
             corpSpreads = 1e-4 * (Quandl.get(
                 index,
                 authtoken="Lqsxas8ieaKqpztgYHxk",
                 trim_start=trim_start,
                 trim_end=trim_end))
             corpSpreads.reset_index(level=0, inplace=True)
             corpSpreads = pd.merge(left=self.datesAll,
                                    right=corpSpreads,
                                    how='left')
             corpSpreads = corpSpreads.fillna(method='ffill').fillna(
                 method='bfill')
             self.corpSpreads[rating] = corpSpreads.T.fillna(
                 method='ffill').fillna(method='bfill').T
         except:
             print(index, " not found")
     self.corpSpreads = pd.Panel.from_dict(self.corpSpreads)
     self.corporates = {}
     self.OISData.drop('Date', axis=1, inplace=True)
     ntenors = np.shape(self.OISData)[1]
     for rating in self.ratings:
         try:
             tiledCorps = np.tile(self.corpSpreads[rating]['Value'],
                                  ntenors)
             tiledCorps = tiledCorps.reshape(np.shape(self.OISData),
                                             order="F")
             self.corporates[rating] = pd.DataFrame(
                 data=(tiledCorps + self.OISData.values))
             self.corporates[rating].drop(
                 self.corporates[rating].columns[[0]], axis=1, inplace=True)
         except:
             print("Error in addition of Corp Spreads")
     self.corporates = pd.Panel(self.corporates)
     return self.corporates
def lsqQ(para):
    ois = OIS(trim_start = startdate, trim_end = enddate)
    Affine = VasicekAffine(x, para, datelist)
    myCDS = CDS(ois.interpolationois(), datelist, Affine.calQ(), recovery)
    diff = np.subtract(brz_cds,myCDS.MTM())
    return diff
def lsqR(para):
    ois = OIS(trim_start = startdate, trim_end = enddate)
    Affine = VasicekAffine(x, para, datelist)
    diff = np.subtract(ois.interpolationois(),Affine.calR())
    return diff
示例#5
0
# a=range(1,5)
# for i in a:
#     print(i)
# print(a)
start = datetime.datetime(2005, 1, 10)
end = datetime.datetime(2010, 1, 10)
test_current_day = datetime.datetime(2009, 3, 5)
test_end_day = datetime.datetime(2037, 9, 10)
start_temp = start
end_temp = start_temp + relativedelta(years=30)
trim_start = "2005-01-10"
trim_end = "2010-01-10"
#a=Quandl.get("USTREASURY/YIELD", authtoken="Lqsxas8ieaKqpztgYHxk", trim_start=trim_start, trim_end=trim_end)
#print(a)

testois = OIS()
print('discounted factor', testois.interpolationois())

a = testois.get_OIS_daily(test_current_day, test_end_day)
#print(a)

#test single:24+i to 28+i
# a=testois.interpolationois()
# ndays=(end_temp-start_temp).days
# d_series=np.arange(0,ndays,1)
# plt.plot(d_series,a)
# plt.show()
# a=(end-start).days
# t=[]
# t=np.arange(0,a,1)
# ndate=[29,89,179,364,729,1094,1824,2554,3649,7329,10949]