Example #1
0
def test_expected_present_value__raises_InvalidEPVInputs_when_ndim_greater_than_2(
    life_table, ):
    n = 100
    probabilities = life_table.get_pxs()[:n]
    cash_flows = np.array([[tuple([1] * n), tuple([1] * n), tuple([1] * n)]])
    interest_rates = tuple([0.07] * n)

    try:
        expected_present_value(cash_flows, probabilities, interest_rates)
        assert False
    except InvalidEPVInputs:
        assert True
Example #2
0
def test_expected_present_value__raises_InvalidEPVInputs_when_lengths_do_not_match(
    life_table, ):
    n = 100
    probabilities = life_table.get_pxs()[:n]
    cash_flows = tuple([1] * (n + 1))
    interest_rates = tuple([0.07] * n)

    try:
        expected_present_value(cash_flows, probabilities, interest_rates)
        assert False
    except InvalidEPVInputs:
        assert True
Example #3
0
def test_expected_present_value__array(life_table):
    n = 100
    probabilities = np.array(life_table.get_pxs()[:n])
    cash_flows = np.array(tuple([1] * n))
    interest_rates = np.array(tuple([0.07] * n))

    epv = expected_present_value(cash_flows, probabilities, interest_rates)

    expected = life_table.axn(0, 0.07, n)
    percent_error = abs(((expected - epv) / expected) * 100)
    assert percent_error < 1.5
Example #4
0
def test_expected_present_value__n_is_3(life_table):
    n = 3
    probabilities = life_table.get_pxs()[:n]
    cash_flows = tuple([1] * n)
    interest_rates = tuple([0.07] * n)

    epv = expected_present_value(cash_flows, probabilities, interest_rates)

    expected = life_table.axn(0, 0.07, n)
    percent_error = abs(((expected - epv) / expected) * 100)
    assert percent_error < 0.5
Example #5
0
def test_expected_present_value__matrix(life_table):
    n = 100
    probabilities = np.array([
        life_table.get_pxs()[:n],
        life_table.get_pxs()[:n],
        life_table.get_pxs()[:n]
    ])
    cash_flows = np.array([tuple([1] * n), tuple([1] * n), tuple([1] * n)])
    interest_rates = np.array(
        [tuple([0.07] * n),
         tuple([0.06] * n),
         tuple([0.05] * n)])

    epv = expected_present_value(cash_flows, probabilities, interest_rates)

    expecteds = np.array([
        life_table.axn(0, 0.07, n),
        life_table.axn(0, 0.06, n),
        life_table.axn(0, 0.05, n),
    ])
    for i, expected in enumerate(expecteds):
        percent_error = abs(((expected - epv[i]) / expected) * 100)
        assert percent_error < 3