public void CanInterpolate() { var hz = 0.5; var sut = new ConstantHazzardInterpolator(); sut = new ConstantHazzardInterpolator(hz); var t = 2.5; Assert.Equal(System.Math.Exp(-hz * t), sut.Interpolate(t)); Assert.Equal(-hz * System.Math.Exp(-hz * t), sut.FirstDerivative(t)); Assert.Equal(hz * hz * System.Math.Exp(-hz * t), sut.SecondDerivative(t)); Assert.Throws <NotImplementedException>(() => sut.Sensitivity(0)); Assert.Throws <NotImplementedException>(() => sut.Bump(0, 0)); Assert.Throws <NotImplementedException>(() => sut.UpdateY(0, 0)); }
public void CDSBasicFacts_LinearApprox() { var origin = new DateTime(2020, 06, 15); var hzi = new ConstantHazzardInterpolator(0.0); var hz = new HazzardCurve(origin, DayCountBasis.ACT365F, hzi); var usd = TestProviderHelper.CurrencyProvider.GetCurrency("USD"); var df = new ConstantRateIrCurve(0.00, origin, "LIBOR", usd); var sut = new CDS() { Basis = DayCountBasis.ACT365F, Currency = usd, OriginDate = origin, Tenor = new Frequency("1y"), Spread = 0.01, Notional = 1e6 }; sut.Init(); var pv = sut.PV_LinearApprox(hz, df, 0.4, false); Assert.Equal(-sut.Notional * sut.Spread, pv); }