Esempio n. 1
0
    def test_(self):
        for t in (0.012, 0.2, 0.5, 0.8, 1.0, 1.5, 2.0, 5.0):
            rate = 0.01
            factor = continuous_compounding(rate, t)
            self.assertAlmostEqual(continuous_rate(factor, t), rate)

            factor = 0.5
            rate = continuous_rate(factor, t)
            self.assertAlmostEqual(continuous_compounding(rate, t), factor)

            rate = 0.01
            factor = simple_compounding(rate, t)
            self.assertAlmostEqual(simple_rate(factor, t), rate)

            factor = 0.5
            rate = simple_rate(factor, t)
            self.assertAlmostEqual(simple_compounding(rate, t), factor)

            for p in (1, 2, 4, 12, 365):
                rate = 0.01
                factor = periodic_compounding(rate, t, p)
                self.assertAlmostEqual(periodic_rate(factor, t, p), rate)

                factor = 0.5
                rate = periodic_rate(factor, t, p)
                self.assertAlmostEqual(periodic_compounding(rate, t, p),
                                       factor)
Esempio n. 2
0
    def rate_from_disc_factor(start, end, dcc, df):
        """
        calculates rate between given dates (start date excluded, end date included) from given discount factor

        :param BusinessDate start : start date of BusinessPeriod
        :param BusinessDate end : end date of BusinessPeriod
        :param dcc dcc : BusinessPeriod day count convention
        :param double df : discount factor
        :return double : rate
        """

        return periodic_rate(df, dcc.get_year_fraction(start, end), 365)
Esempio n. 3
0
 def __init__(self, freq=1):
     super(Discrete, self).__init__()
     self.disc_factor_from_rate = \
         lambda start, end, dcc, rate: periodic_compounding(rate, dcc.get_year_fraction(start, end), freq)
     self.rate_from_disc_factor = \
         lambda start, end, dcc, df: periodic_rate(df, dcc.get_year_fraction(start, end), freq)