Esempio n. 1
0
    def test_2(self):
        cr = tuple(Project(300000, 14000, 0, 20).cash_flows)
        ed = tuple(Project(220000, 21000, 0, 20).cash_flows) + (CashFlow(
            8, 35000), CashFlow(16, 35000))
        i = EfInt(0.05)

        self.assertAlmostEqual(pw(cr, i), 474470.94479555974)
        self.assertAlmostEqual(pw(ed, i), 521429.6981340426)
        self.assertAlmostEqual(aw(cr, i), 38072.77615720737)
        self.assertAlmostEqual(aw(ed, i), 41840.86801633675)

        self.assertLess(pw(cr, i), pw(ed, i))
        self.assertLess(aw(cr, i), aw(ed, i))
Esempio n. 2
0
    def test_2(self):
        i = NomInt(0.07, 2)

        self.assertAlmostEqual(pw(Bond(100, 0, 2, 3 / 12).cash_flows, i),
                               98.2946374365981)
        self.assertAlmostEqual(pw(Bond(100, 0, 2, 5 / 12).cash_flows, i),
                               97.17391685967232)
        self.assertAlmostEqual(pw(Bond(100, 0, 2, 3).cash_flows, i),
                               81.35006443077528)
        self.assertAlmostEqual(
            pw(Bond.from_rate(100, NomInt(0.04, 2), 2, 3).cash_flows, i),
            92.00717047033226)
        self.assertAlmostEqual(
            pw(Bond.from_rate(100, NomInt(0.06, 2), 2, 3.25).cash_flows, i),
            95.94840994600501)
Esempio n. 3
0
 def test_projects(self):
     self.assertAlmostEqual(
         pw(Project(-20000, 4000 - 1000, 4000, 10).cash_flows, EfInt(0.05)),
         5620.857801717468)
     self.assertAlmostEqual(
         aw(Project(-20000, 4000 - 1000, 4000, 10).cash_flows, EfInt(0.05)),
         727.9268005526942)
Esempio n. 4
0
    def test_1(self):
        i, n = 0.05, 6
        y = pw(Project(-700, 370, 0, n).cash_flows, EfInt(i))

        self.assertAlmostEqual(y, 1178.006064888955)
        self.assertAlmostEqual(y * fp(i, n), 1578.6407921875)
        self.assertAlmostEqual(y * fp(i, 4), 1431.8737344104306)
        self.assertAlmostEqual(
            np.float_(
                fsolve(lambda x: y - x * pf(i, 1) - 5 * x * pf(i, 3),
                       np.array(0))), 223.464034554222)

        i, n = 0.09, 6
        y = pw(Project(-700, 370, 0, n).cash_flows, EfInt(i))

        self.assertAlmostEqual(y, 959.7898783854448)
        self.assertAlmostEqual(y * fp(i, n), 1609.6637114243001)
        self.assertAlmostEqual(y * fp(i, 4), 1354.821741793031)
        self.assertAlmostEqual(
            np.float_(
                fsolve(lambda x: y - x * pf(i, 1) - 5 * x * pf(i, 3),
                       np.array(0))), 200.862256010023)
Esempio n. 5
0
    def test_5(self):
        y = fsolve(
            lambda y_: pw(
                Bond.from_rate(100, NomInt(0.07, 2), 2, 7.5).cash_flows,
                NomInt(y_, 2)) * fp(y_ / 2, 0.5) - 108, np.array(0.1))
        b = lambda cr: pw(
            Bond.from_rate(1000, NomInt(cr, 2), 2, 9).cash_flows, NomInt(y, 2))

        cur_cr = np.ceil(
            np.float_(
                fsolve(lambda cr: 9500000 / 2 -
                       (4400 * b(cr)), np.array(0.1))) / 0.0025) * 0.0025
        self.assertAlmostEqual(cur_cr, 0.0725)
        self.assertAlmostEqual(np.float_(4400 * b(cur_cr)), 4802235.185695503)

        cur_cr = np.ceil(
            np.float_(
                fsolve(lambda cr: 9500000 / 2 / (1 - 0.008) -
                       (4400 * b(cr)), np.array(0.1))) / 0.0025) * 0.0025
        self.assertAlmostEqual(cur_cr, 0.0725)
        self.assertAlmostEqual(np.float_(4400 * b(cur_cr) * (1 - 0.008)),
                               4763817.304209939)
Esempio n. 6
0
 def test_3(self):
     self.assertAlmostEqual(
         yield_(
             Bond.from_rate(100, NomInt(0.07, 2), 2, 3).cash_flows, 100,
             EfInt(0)).to_nom(2).rate, 0.07)
     self.assertAlmostEqual(
         pw(
             Bond.from_rate(100, NomInt(0.04, 2), 2, 3).cash_flows,
             NomInt(0.05, 2)) + 100 * 0.04 / 2, 99.24593731921009)
     self.assertAlmostEqual(
         yield_(
             Bond.from_rate(100, NomInt(0.03, 2), 2, 2.25).cash_flows, 100,
             EfInt(0)).to_nom(2).rate, 0.026754568040623247)
     self.assertAlmostEqual(
         pw(
             Bond.from_rate(100, NomInt(0.07, 2), 2, 2.25).cash_flows,
             NomInt(0.05, 2)), 102.65033622528411)
     self.assertAlmostEqual(
         np.float_(
             fsolve(
                 lambda c: pw(
                     Bond.from_rate(100, NomInt(c, 2), 2, 2.25).cash_flows,
                     NomInt(0.03, 2)) - 114, np.array(0.1)), ),
         0.10627047075771787)