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)
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))