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
# 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]