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)
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)
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)