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));
        }
Beispiel #2
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);
        }