Пример #1
0
 def loadAndSaveMarketData(self, pricingDate, marketId):
     ''' assumes that 'EOD' marketId exists '''
     eodCurve = InterestRateCurve()
     eodCurve.ccy = self.tCBond.ccy
     eodCurve.index = Enum.Index('LIBOR')
     eodCurve.term = 'M'
     eodCurve.numTerms = 3
     eodCurve.pricingDate = pricingDate
     eodCurve.marketId = 'EOD'
     eodCurve.load()
     irCurve = InterestRateCurve()
     irCurve.ccy = self.tCBond.ccy
     irCurve.index = Enum.Index('LIBOR')
     irCurve.term = 'M'
     irCurve.numTerms = 3
     irCurve.pricingDate = pricingDate
     irCurve.marketId = marketId
     eodRates = eodCurve.getRates()
     for rate in eodRates:
         irCurve.addRate(rate)
     irCurve.save()
     eodBondOAS = BondOAS.objects.get(tCBond=self.tCBond, pricingDate=pricingDate,
                                   marketId='EOD')
     bondOAS = BondOAS(tCBond=self.tCBond, pricingDate=pricingDate,
                       marketId=marketId,mid=eodBondOAS.mid)
     bondOAS.save()
    def testBuildMMCurve(self):
        curve = InterestRateCurve(ccy='USD', index=Index('LIBOR'), term='M', 
                                  numTerms=3, pricingDate=self.pricingDate, marketId='TEST1')
        curve.load()
#        curve.printCurve()
        cv = curve.buildZeroCurve()
        for node in cv.nodes():
            a = node
Пример #3
0
 def marketData(self, pricingDate, marketId=''):
     irCurve = InterestRateCurve()
     irCurve.ccy = self._tcSwap.ccy
     irCurve.index = Index('LIBOR')
     irCurve.term = 'M'
     irCurve.numTerms = 3
     irCurve.pricingDate = pricingDate
     irCurve.marketId = marketId
     irCurve.load()
     l = []
     l.append(irCurve)
     return l
Пример #4
0
 def testLoadAndSaveMarketData_TODO(self):
     #curve should never exist
     self.pos.loadAndSaveMarketData(pricingDate=Date.Date(1,1,2009), 
                                    marketId=self.marketId)
     #now, curve should exist
     irCurve = InterestRateCurve()
     irCurve.ccy = Enum.Currency('USD')
     irCurve.index = Enum.Index('LIBOR')
     irCurve.term = 'M'
     irCurve.numTerms = 3
     irCurve.pricingDate = Date.Date(1,1,2009)
     irCurve.marketId = self.marketId
     irCurve.load()
     #now, delete again so that next test will work
     irCurve.delete()
Пример #5
0
 def marketData(self, pricingDate, marketId=''):
     irCurve = InterestRateCurve()
     irCurve.ccy = self.tCBond.ccy
     irCurve.index = Enum.Index('LIBOR')
     irCurve.term = 'M'
     irCurve.numTerms = 3
     irCurve.pricingDate = pricingDate
     irCurve.marketId = marketId
     irCurve.load()
     l = []
     l.append(irCurve)
     ##print pricingDate
     bondOAS = BondOAS.objects.get(tCBond=self.tCBond, pricingDate=pricingDate,
                                   marketId=marketId)
     l.append(bondOAS)
     return l
Пример #6
0
 def loadInterestRateFromCSVFile(self, fileName):
     '''
     Downloads prices from fileName. fileName needs to include full path
     '''
     file = open(fileName,'r')
     lastDate = Date.Date(month=1,day=1,year=1972)
     for line in file:
         items = line.split(',')
         #skip first line which is headers
         if items[0] == 'date':
             continue
         #create new curve if date has changed
         curveDate = self.createDateFromString(items[0])
         if curveDate <> lastDate:
             newCurve = InterestRateCurve()
             newCurve.pricingDate = curveDate
             newCurve.ccy = items[1]
             newCurve.index = items[2]
             newCurve.marketId = items[3]
             newCurve.term = items[4]
             newCurve.numTerms = int(items[5])
             newCurve.save()
             newCurve.load()
             #Delete all rates in case the curve already existed
             rates = InterestRate.objects.filter(curve=newCurve)
             if rates:
                 rates.delete()
         curve = InterestRateCurve()
         curve.pricingDate = curveDate
         curve.ccy = items[1]
         curve.index = items[2]
         curve.marketId = items[3]
         curve.term = items[4]
         curve.numTerms = int(items[5])
         curve.load()
         rate = InterestRate()
         rate.curve = curve
         rate.type = items[6]
         rate.term = items[7]
         rate.numTerms = int(items[8])
         rate.mid = float(items[9])
         rate.save()
         lastDate = curveDate
 def testSingleIRCurveScenario(self):
     irA = InterestRateCurve()
     irA.ccy = "USD"
     irA.index = "LIBOR"
     irA.term = 'M'
     irA.numTerms = 3
     irA.marketId = 'TEST1'
     irA.pricingDate = Date.Date(month=9, day=12, year=2011)
     irA.load()
     scenarioBase = MarketDataScenario.MarketDataScenario()
     scenarioBase.name = 'Base'
     scenarioBase.marketData = irA
     #print scenarioBase
     scenarioUp = MarketDataScenario.MarketDataScenario()
     scenarioUp.name = 'Up'
     irB = copy.copy(irA)
     for item in irB.rates:
         item.mid = item.mid * 1.01
     scenarioUp.marketData = irB
 def testUpdateRate(self):
     '''
     Tests the update of a rate value and save it to DB
     '''
     curve = InterestRateCurve(ccy='USD', index=Index('LIBOR'), term='M', 
                               numTerms=3, pricingDate=self.pricingDate, marketId='TMP')
     curve.addRate(InterestRate(term='M', numTerms=1, type='Deposit', 
                                mid=0.01, curve=curve))
     curve.addRate(InterestRate(term='M', numTerms=3, type='Deposit', 
                                mid=0.01, curve=curve))        
     curve.save()
     curve = InterestRateCurve(ccy='USD', index=Index('LIBOR'), term='M', 
                               numTerms=3, pricingDate=self.pricingDate, marketId='TMP')
     curve.load()
     self.failIf(curve.rates[1].mid <> 0.01, "Rate incorrect")
     self.failIf(len(curve.rates) <> 2, "Number of rates incorrect")
     curve.rates[1].mid = 0.02
     curve.save()
     curveAfterUpdate = InterestRateCurve(ccy='USD', index=Index('LIBOR'), term='M', 
                                          numTerms=3, pricingDate=self.pricingDate, marketId='TMP')
     curveAfterUpdate.load()
     self.failIf(curveAfterUpdate.rates[1].mid <> 0.02, "Updated rate incorrect")
     self.failIf(len(curveAfterUpdate.rates) <> 2, "Number of updated rates incorrect")
     curveAfterUpdate.rates[1].mid = 0.01
     curveAfterUpdate.save()
     curve = InterestRateCurve(ccy='USD', index=Index('LIBOR'), term='M', 
                               numTerms=3, pricingDate=self.pricingDate, marketId='TMP')
     curve.load()
     self.failIf(curve.rates[1].mid <> 0.01, "Rate incorrect")
     self.failIf(len(curve.rates) <> 2, "Number of rates incorrect")
Пример #9
0
 def loadAndSaveMarketData(self, pricingDate, marketId):
     ''' assumes that 'EOD' marketId exists
     algorithm is to load the EOD curve and save it with marketId
     '''
     eodCurve = InterestRateCurve()
     eodCurve.ccy = self._tcSwap.ccy
     eodCurve.index = Index('LIBOR')
     eodCurve.term = 'M'
     eodCurve.numTerms = 3
     eodCurve.pricingDate = pricingDate
     eodCurve.marketId = 'EOD'
     eodCurve.load()
     irCurve = InterestRateCurve()
     irCurve.ccy = self._tcSwap.ccy
     irCurve.index = Index('LIBOR')
     irCurve.term = 'M'
     irCurve.numTerms = 3
     irCurve.pricingDate = pricingDate
     irCurve.marketId = marketId
     eodRates = eodCurve.getRates()
     for rate in eodRates:
         irCurve.addRate(rate)
     irCurve.save()
 def testLoadCurve(self):
     curve = InterestRateCurve(ccy='USD', index=Index('LIBOR'), term='M', 
                               numTerms=3, pricingDate=self.pricingDate, marketId='TEST1')
     curve.load()