Пример #1
0
    def test_create_interpolated_hazard(self):
        Settings.instance().evaluation_date = self.todays_date

        dates = [self.todays_date + Period(i, Years) for i in [3, 5, 7]]
        hazard_rates =  [0.01, 0.03, 0.05]

        interpolation_date = self.todays_date + Period(4, Years)

        trait = Interpolator.Linear
        interpolated_curve = InterpolatedHazardRateCurve(trait, dates,
                                                         hazard_rates,
                                                         Actual365Fixed())
        t0 = interpolated_curve.time_from_reference(dates[0])
        t1 = interpolated_curve.time_from_reference(interpolation_date)
        t2 = interpolated_curve.time_from_reference(dates[1])
        interpolated_value = hazard_rates[0] + (t1-t0) /(t2-t0) * \
                             (hazard_rates[1] - hazard_rates[0])

        self.assertAlmostEqual(interpolated_value,
                               interpolated_curve.hazard_rate(interpolation_date))
        trait = Interpolator.BackwardFlat
        interpolated_curve = InterpolatedHazardRateCurve(trait, dates,
                                                         hazard_rates,
                                                         Actual365Fixed())
        interpolated_value = hazard_rates[1]
        self.assertAlmostEqual(interpolated_value,
                               interpolated_curve.hazard_rate(interpolation_date))
        trait = Interpolator.LogLinear
        interpolated_curve = InterpolatedHazardRateCurve(trait, dates,
                                                         hazard_rates,
                                                         Actual365Fixed())
        with self.assertRaisesRegexp(RuntimeError,
                                     'LogInterpolation primitive not implemented'):
            hazard_rate = interpolated_curve.hazard_rate(interpolation_date)
Пример #2
0
    def test_methods(self):
        Settings.instance().evaluation_date = self.todays_date

        dates = [self.todays_date + Period(i, Years) for i in [3, 5, 7]]
        hazard_rates = [0.01, 0.03, 0.05]
        for trait in [Interpolator.BackwardFlat, Interpolator.Linear]:
            interpolated_curve = InterpolatedHazardRateCurve(
                trait, dates, hazard_rates, Actual365Fixed())
            self.assertEqual(dates, interpolated_curve.dates)
            self.assertEqual(interpolated_curve.data,
                             interpolated_curve.hazard_rates)
Пример #3
0
    def test_create_interpolated_hazard(self):
        Settings.instance().evaluation_date = self.todays_date

        dates = [self.todays_date + Period(i, Years) for i in [3, 5, 7]]
        hazard_rates = [0.01, 0.03, 0.05]

        interpolation_date = self.todays_date + Period(4, Years)

        trait = Interpolator.Linear
        interpolated_curve = InterpolatedHazardRateCurve(
            trait, dates, hazard_rates, Actual365Fixed())
        t0 = interpolated_curve.time_from_reference(dates[0])
        t1 = interpolated_curve.time_from_reference(interpolation_date)
        t2 = interpolated_curve.time_from_reference(dates[1])
        interpolated_value = hazard_rates[0] + (t1-t0) /(t2-t0) * \
                             (hazard_rates[1] - hazard_rates[0])

        self.assertAlmostEqual(
            interpolated_value,
            interpolated_curve.hazard_rate(interpolation_date))
        trait = Interpolator.BackwardFlat
        interpolated_curve = InterpolatedHazardRateCurve(
            trait, dates, hazard_rates, Actual365Fixed())
        interpolated_value = hazard_rates[1]
        self.assertAlmostEqual(
            interpolated_value,
            interpolated_curve.hazard_rate(interpolation_date))
        trait = Interpolator.LogLinear
        interpolated_curve = InterpolatedHazardRateCurve(
            trait, dates, hazard_rates, Actual365Fixed())
        with self.assertRaisesRegexp(
                RuntimeError, 'LogInterpolation primitive not implemented'):
            hazard_rate = interpolated_curve.hazard_rate(interpolation_date)