def testConversion(self):

        d1 = Date.todaysDate()

        for case in self.cases:
            ir = InterestRate(case.r, DayCounter('Actual/360'), case.comp, case.freq)
            d2 = d1 + int(360 * case.t + 0.5)

            compoundf = ir.compoundFactor(d1, d2)
            disc = ir.discountFactor(d1, d2)

            self.assertAlmostEqual(compoundf, 1.0 / disc)

            ir2 = ir.equivalentRate(ir.dayCounter_,
                                    ir.comp_,
                                    ir.freq_,
                                    d1, d2)

            self.assertAlmostEqual(ir2.r_, ir.r_)
            self.assertEqual(ir.freq_, ir2.freq_)
            self.assertEqual(ir.comp_, ir2.comp_)

            ir3 = ir.equivalentRate(ir.dayCounter_,
                                    case.comp2, case.freq2,
                                    d1, d2)
            expectedIR = InterestRate(case.expected, ir.dayCounter_,
                                      case.comp2, case.freq2)
            self.assertAlmostEqual(ir3.r_, expectedIR.r_, case.precision)

            r3 = ir.equivalentRate(ir.dayCounter_,
                                   case.comp2, case.freq2,
                                   d1, d2)
            self.assertAlmostEqual(r3.r_, case.expected, case.precision)
Пример #2
0
    def testSimpleCashFlowHasOccurred(self):

        cf_date = Date.todaysDate() - 1

        cf1 = SimpleCashFlow(100., cf_date)
        self.assertTrue(cf1.hasOccurred())

        ref_date = cf_date - 1
        self.assertFalse(cf1.hasOccurred(ref_date))

        ref_date = cf_date
        self.assertTrue(cf1.hasOccurred(ref_date))
        self.assertFalse(cf1.hasOccurred(ref_date, include_ref_date=True))