def test_FinInterpolate():

    import time

    xValues = np.array([0.25, 0.5, 0.75, 1.0, 2.0, 3.0, 5.0, 10.0])
    a = -0.1
    b = 0.002

    yValues = []
    for x in xValues:
        y = math.exp(a * x + b * x * x)
        yValues.append(y)

    yValues = np.array(yValues)

    xInterpolateValues = np.linspace(0.0, 10.0, 20)

    testCases.header("METHOD", "X", "Y_INTERPOLATED")

    for interp_type in InterpTypes:

        yInterpValues = []
        start = time.time()

        interpolator = Interpolator(interp_type)
        interpolator.fit(xValues, yValues)

        for x in xInterpolateValues:
            y_int = interpolator.interpolate(x)
            testCases.print(interp_type, x, y_int)
            yInterpValues.append(y_int)

        end = time.time()

        if PLOT_GRAPHS:
            plt.figure(figsize=(12, 10))
            plt.plot(xValues, yValues, color='r', marker='o')
            plt.plot(xInterpolateValues,
                     yInterpValues,
                     color='b',
                     label=str(interp_type))
            plt.legend()

    xp = np.array([0.2, 0.4, 0.45, 0.6, 0.82, 0.93, 0.99])
    yp = np.array([0.4, 0.9, 0.32, 0.2, 0.22, 0.10, 0.28])
    n = 10000

    testCases.header("LABEL", "TIME")
    interpolator = Interpolator(interp_type)
    interpolator.fit(xp, yp)

    start = time.time()
    for i in range(0, n):
        interpolator.interpolate(0.8)
    end = time.time()
    testCases.print("10000 Interpolations", end - start)
Beispiel #2
0
def test_FinInterpolate():
    for interp_type in InterpTypes:

        yInterpValues = []

        interpolator = Interpolator(interp_type)
        interpolator.fit(xValues, yValues)

        for x in xInterpolateValues:
            y_int = interpolator.interpolate(x)
            yInterpValues.append(y_int)
Beispiel #3
0
def test_LINEAR_ZERO_RATES():
    interp_type = InterpTypes.LINEAR_ZERO_RATES

    interpolator = Interpolator(interp_type)
    interpolator.fit(xValues, yValues)

    index = 8
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 4.2105
    assert round(y_int, 4) == 0.6800

    index = 13
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 6.8421
    assert round(y_int, 4) == 0.5540

    index = 18
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 9.4737
    assert round(y_int, 4) == 0.4640
Beispiel #4
0
def test_LINEAR_FWD_RATES():
    interp_type = InterpTypes.LINEAR_FWD_RATES

    interpolator = Interpolator(interp_type)
    interpolator.fit(xValues, yValues)

    index = 3
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 1.5789
    assert round(y_int, 4) == 0.8581

    index = 15
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 7.8947
    assert round(y_int, 4) == 0.5119

    index = 19
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 10.0
    assert round(y_int, 4) == 0.4493
Beispiel #5
0
def test_FLAT_FWD_RATES():
    interp_type = InterpTypes.FLAT_FWD_RATES

    interpolator = Interpolator(interp_type)
    interpolator.fit(xValues, yValues)

    index = 0
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 0.0
    assert round(y_int, 4) == 1.0

    index = 5
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 2.6316
    assert round(y_int, 4) == 0.7797

    index = 10
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 5.2632
    assert round(y_int, 4) == 0.6260
Beispiel #6
0
def test_PCHIP_LOG_DISCOUNT():
    interp_type = InterpTypes.PCHIP_LOG_DISCOUNT

    interpolator = Interpolator(interp_type)
    interpolator.fit(xValues, yValues)

    index = 3
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 1.5789
    assert round(y_int, 4) == 0.8582

    index = 8
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 4.2105
    assert round(y_int, 4) == 0.6796

    index = 13
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 6.8421
    assert round(y_int, 4) == 0.5551
Beispiel #7
0
def test_NATCUBIC_ZERO_RATES():
    interp_type = InterpTypes.NATCUBIC_ZERO_RATES

    interpolator = Interpolator(interp_type)
    interpolator.fit(xValues, yValues)

    index = 2
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 1.0526
    assert round(y_int, 4) == 0.9021

    index = 7
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 3.6842
    assert round(y_int, 4) == 0.7109

    index = 12
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 6.3158
    assert round(y_int, 4) == 0.5759
Beispiel #8
0
def test_NATCUBIC_LOG_DISCOUNT():
    interp_type = InterpTypes.NATCUBIC_LOG_DISCOUNT

    interpolator = Interpolator(interp_type)
    interpolator.fit(xValues, yValues)

    index = 4
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 2.1053
    assert round(y_int, 4) == 0.8174

    index = 9
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 4.7368
    assert round(y_int, 4) == 0.6512

    index = 14
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 7.3684
    assert round(y_int, 4) == 0.5355
Beispiel #9
0
def test_FINCUBIC_ZERO_RATES():
    interp_type = InterpTypes.FINCUBIC_ZERO_RATES

    interpolator = Interpolator(interp_type)
    interpolator.fit(xValues, yValues)

    index = 1
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 0.5263
    assert round(y_int, 4) == 0.9493

    index = 6
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 3.1579
    assert round(y_int, 4) == 0.7439

    index = 11
    x = xInterpolateValues[index]
    y_int = interpolator.interpolate(x)
    assert round(x, 4) == 5.7895
    assert round(y_int, 4) == 0.6007