public virtual void test_metadata_dates()
        {
            CdsIsdaCreditCurveNode node     = CdsIsdaCreditCurveNode.ofParSpread(TEMPLATE_NS, QUOTE_ID, LEGAL_ENTITY);
            ParameterMetadata      metadata = node.metadata(END_DATE);

            assertEquals(((LabelDateParameterMetadata)metadata).Date, END_DATE);
        }
Exemplo n.º 2
0
        public virtual void getter()
        {
            assertEquals(PARAMETERS.AlphaCurve, ALPHA_CURVE);
            assertEquals(PARAMETERS.BetaCurve, BETA_CURVE);
            assertEquals(PARAMETERS.RhoCurve, RHO_CURVE);
            assertEquals(PARAMETERS.NuCurve, NU_CURVE);
            assertEquals(PARAMETERS.SabrVolatilityFormula, FORMULA);
            assertEquals(PARAMETERS.ShiftCurve.Name, CurveName.of("Zero shift"));
            assertEquals(PARAMETERS.DayCount, ACT_ACT_ISDA);
            assertEquals(PARAMETERS.ParameterCount, 9);
            double expiry = 2.0;
            double alpha  = ALPHA_CURVE.yValue(expiry);
            double beta   = BETA_CURVE.yValue(expiry);
            double rho    = RHO_CURVE.yValue(expiry);
            double nu     = NU_CURVE.yValue(expiry);

            assertEquals(PARAMETERS.alpha(expiry), alpha);
            assertEquals(PARAMETERS.beta(expiry), beta);
            assertEquals(PARAMETERS.rho(expiry), rho);
            assertEquals(PARAMETERS.nu(expiry), nu);
            double strike  = 1.1;
            double forward = 1.05;

            assertEquals(PARAMETERS.volatility(expiry, strike, forward), FORMULA.volatility(forward, strike, expiry, alpha, beta, rho, nu));
            double[] adjCmp = PARAMETERS.volatilityAdjoint(expiry, strike, forward).Derivatives.toArray();
            double[] adjExp = FORMULA.volatilityAdjoint(forward, strike, expiry, alpha, beta, rho, nu).Derivatives.toArray();
            for (int i = 0; i < 6; ++i)
            {
                assertEquals(adjCmp[i], adjExp[i]);
            }
            for (int i = 0; i < 9; ++i)
            {
                if (i < 2)
                {
                    assertEquals(PARAMETERS.getParameterMetadata(i), ALPHA_CURVE.getParameterMetadata(i));
                    assertEquals(PARAMETERS.getParameter(i), ALPHA_CURVE.getParameter(i));
                }
                else if (i < 4)
                {
                    assertEquals(PARAMETERS.getParameterMetadata(i), BETA_CURVE.getParameterMetadata(i - 2));
                    assertEquals(PARAMETERS.getParameter(i), BETA_CURVE.getParameter(i - 2));
                }
                else if (i < 6)
                {
                    assertEquals(PARAMETERS.getParameterMetadata(i), RHO_CURVE.getParameterMetadata(i - 4));
                    assertEquals(PARAMETERS.getParameter(i), RHO_CURVE.getParameter(i - 4));
                }
                else if (i < 8)
                {
                    assertEquals(PARAMETERS.getParameterMetadata(i), NU_CURVE.getParameterMetadata(i - 6));
                    assertEquals(PARAMETERS.getParameter(i), NU_CURVE.getParameter(i - 6));
                }
                else
                {
                    assertEquals(PARAMETERS.getParameterMetadata(i), ParameterMetadata.empty());
                    assertEquals(PARAMETERS.getParameter(i), 0d);
                }
            }
        }
        //-------------------------------------------------------------------------
        public virtual void test_metadata_tenor()
        {
            CdsIsdaCreditCurveNode node = CdsIsdaCreditCurveNode.ofQuotedSpread(TEMPLATE, QUOTE_ID, LEGAL_ENTITY, 0.01);
            LocalDate         nodeDate  = LocalDate.of(2015, 1, 22);
            ParameterMetadata metadata  = node.metadata(nodeDate);

            assertEquals(((TenorDateParameterMetadata)metadata).Date, nodeDate);
            assertEquals(((TenorDateParameterMetadata)metadata).Tenor, Tenor.TENOR_10Y);
        }
        //-------------------------------------------------------------------------
        public virtual void test_withParameterMetadata()
        {
            DefaultSurfaceMetadata test = DefaultSurfaceMetadata.of(SURFACE_NAME).withParameterMetadata(ImmutableList.of(ParameterMetadata.empty()));

            assertThat(test.SurfaceName).isEqualTo(SURFACE_NAME);
            assertThat(test.XValueType).isEqualTo(ValueType.UNKNOWN);
            assertThat(test.YValueType).isEqualTo(ValueType.UNKNOWN);
            assertThat(test.ZValueType).isEqualTo(ValueType.UNKNOWN);
            assertThat(test.ParameterMetadata.Present).True;
            assertThat(test.ParameterMetadata.get()).containsExactly(ParameterMetadata.empty());
        }
Exemplo n.º 5
0
        //-------------------------------------------------------------------------
        public virtual void test_withParameterMetadata()
        {
            DefaultCurveMetadata @base = DefaultCurveMetadata.of(CURVE_NAME);
            DefaultCurveMetadata test  = @base.withParameterMetadata(ParameterMetadata.listOfEmpty(2));

            assertThat(test.ParameterMetadata.Present).True;
            assertThat(test.ParameterMetadata.get()).containsAll(ParameterMetadata.listOfEmpty(2));
            // redo for test coverage
            DefaultCurveMetadata test2 = test.withParameterMetadata(ParameterMetadata.listOfEmpty(3));

            assertThat(test2.ParameterMetadata.Present).True;
            assertThat(test2.ParameterMetadata.get()).containsAll(ParameterMetadata.listOfEmpty(3));
        }
Exemplo n.º 6
0
        public virtual void test_of_CurveMetadata()
        {
            ConstantCurve test = ConstantCurve.of(METADATA, VALUE);

            assertThat(test.Name).isEqualTo(CURVE_NAME);
            assertThat(test.YValue).isEqualTo(VALUE);
            assertThat(test.ParameterCount).isEqualTo(1);
            assertThat(test.getParameter(0)).isEqualTo(VALUE);
            assertThat(test.getParameterMetadata(0)).isEqualTo(ParameterMetadata.empty());
            assertThat(test.withParameter(0, 2d)).isEqualTo(ConstantCurve.of(NAME, 2d));
            assertThat(test.Metadata).isEqualTo(METADATA);
            assertThat(test.withMetadata(METADATA2)).isEqualTo(ConstantCurve.of(METADATA2, VALUE));
        }
        public virtual void test_of_SurfaceMetadata()
        {
            ConstantSurface test = ConstantSurface.of(METADATA, VALUE);

            assertThat(test.Name).isEqualTo(SURFACE_NAME);
            assertThat(test.ZValue).isEqualTo(VALUE);
            assertThat(test.ParameterCount).isEqualTo(1);
            assertThat(test.getParameter(0)).isEqualTo(VALUE);
            assertThat(test.getParameterMetadata(0)).isEqualTo(ParameterMetadata.empty());
            assertThat(test.withParameter(0, 2d)).isEqualTo(ConstantSurface.of(NAME, 2d));
            assertThat(test.withPerturbation((i, v, m) => v + 1d)).isEqualTo(ConstantSurface.of(NAME, VALUE + 1d));
            assertThat(test.Metadata).isEqualTo(METADATA);
            assertThat(test.withMetadata(METADATA2)).isEqualTo(ConstantSurface.of(METADATA2, VALUE));
        }
Exemplo n.º 8
0
        public virtual void test_of()
        {
            ConstantRecoveryRates test = ConstantRecoveryRates.of(LEGAL_ENTITY, VALUATION, RECOVERY_RATE);

            assertEquals(test.LegalEntityId, LEGAL_ENTITY);
            assertEquals(test.RecoveryRate, RECOVERY_RATE);
            assertEquals(test.ValuationDate, VALUATION);
            assertEquals(test.recoveryRate(DATE_AFTER), RECOVERY_RATE);
            assertEquals(test.findData(CurveName.of("Rubbish")), null);
            assertEquals(test.getParameter(0), RECOVERY_RATE);
            assertEquals(test.ParameterCount, 1);
            assertEquals(test.getParameterMetadata(0), ParameterMetadata.empty());
            assertEquals(test.withParameter(0, 0.5), ConstantRecoveryRates.of(LEGAL_ENTITY, VALUATION, 0.5));
        }
        public virtual void test_of()
        {
            Curve test = ParallelShiftedCurve.of(CONSTANT_CURVE, ShiftType.RELATIVE, 0.1d);

            assertThat(test.yValue(0)).isEqualTo(3.3d, offset(1e-10));
            assertThat(test.yValue(1)).isEqualTo(3.3d, offset(1e-10));
            assertThat(test.Name).isEqualTo(METADATA.CurveName);
            assertThat(test.ParameterCount).isEqualTo(2);
            assertThat(test.getParameter(0)).isEqualTo(3d);
            assertThat(test.getParameter(1)).isEqualTo(0.1d);
            assertThat(test.getParameterMetadata(0)).isEqualTo(ParameterMetadata.empty());
            assertThat(test.getParameterMetadata(1)).isEqualTo(LabelParameterMetadata.of("RelativeShift"));
            assertThat(test.Metadata).isEqualTo(METADATA);
        }
Exemplo n.º 10
0
        public virtual void test_builder1()
        {
            DefaultCurveMetadata test = DefaultCurveMetadata.builder().curveName(CURVE_NAME.ToString()).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).dayCount(ACT_360).jacobian(JACOBIAN_DATA).addInfo(CurveInfoType.DAY_COUNT, null).parameterMetadata(ImmutableList.of(ParameterMetadata.empty())).build();

            assertThat(test.CurveName).isEqualTo(CURVE_NAME);
            assertThat(test.XValueType).isEqualTo(ValueType.YEAR_FRACTION);
            assertThat(test.YValueType).isEqualTo(ValueType.DISCOUNT_FACTOR);
            assertThat(test.findInfo(CurveInfoType.DAY_COUNT)).Empty;
            assertThat(test.getInfo(CurveInfoType.JACOBIAN)).isEqualTo(JACOBIAN_DATA);
            assertThat(test.findInfo(CurveInfoType.JACOBIAN)).isEqualTo(JACOBIAN_DATA);
            assertThat(test.findInfo(CurveInfoType.of("Rubbish"))).isEqualTo(null);
            assertThat(test.ParameterMetadata.Present).True;
            assertThat(test.ParameterMetadata.get()).containsExactly(ParameterMetadata.empty());
        }
Exemplo n.º 11
0
        public virtual void test_builder4()
        {
            DefaultCurveMetadata test = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).parameterMetadata(ParameterMetadata.empty()).parameterMetadata(ParameterMetadata.empty()).build();

            assertThat(test.CurveName).isEqualTo(CURVE_NAME);
            assertThat(test.XValueType).isEqualTo(ValueType.YEAR_FRACTION);
            assertThat(test.YValueType).isEqualTo(ValueType.DISCOUNT_FACTOR);
            assertThrowsIllegalArg(() => test.getInfo(CurveInfoType.DAY_COUNT));
            assertThat(test.findInfo(CurveInfoType.DAY_COUNT)).isEqualTo(null);
            assertThat(test.findInfo(CurveInfoType.JACOBIAN)).isEqualTo(null);
            assertThat(test.findInfo(CurveInfoType.of("Rubbish"))).isEqualTo(null);
            assertThat(test.ParameterMetadata.Present).True;
            assertThat(test.ParameterMetadata.get()).containsExactly(ParameterMetadata.empty());
        }
Exemplo n.º 12
0
        public virtual void test_of_interface()
        {
            ConstantCurve         curve = ConstantCurve.of(DefaultCurveMetadata.builder().yValueType(ValueType.RECOVERY_RATE).curveName("recoveryRate").build(), RECOVERY_RATE);
            ConstantRecoveryRates test  = (ConstantRecoveryRates)RecoveryRates.of(LEGAL_ENTITY, VALUATION, curve);

            assertEquals(test.LegalEntityId, LEGAL_ENTITY);
            assertEquals(test.RecoveryRate, RECOVERY_RATE);
            assertEquals(test.ValuationDate, VALUATION);
            assertEquals(test.recoveryRate(DATE_AFTER), RECOVERY_RATE);
            assertEquals(test.findData(CurveName.of("Rubbish")), null);
            assertEquals(test.getParameter(0), RECOVERY_RATE);
            assertEquals(test.ParameterCount, 1);
            assertEquals(test.getParameterMetadata(0), ParameterMetadata.empty());
            assertEquals(test.withParameter(0, 0.5), ConstantRecoveryRates.of(LEGAL_ENTITY, VALUATION, 0.5));
        }
        public virtual void test_builder2()
        {
            DefaultSurfaceMetadata test = DefaultSurfaceMetadata.builder().surfaceName(SURFACE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).zValueType(ValueType.ZERO_RATE).dayCount(ACT_365F).addInfo(SurfaceInfoType.DAY_COUNT, null).addInfo(DESCRIPTION, "Hello").parameterMetadata(ImmutableList.of(ParameterMetadata.empty())).build();

            assertThat(test.SurfaceName).isEqualTo(SURFACE_NAME);
            assertThat(test.XValueType).isEqualTo(ValueType.YEAR_FRACTION);
            assertThat(test.YValueType).isEqualTo(ValueType.DISCOUNT_FACTOR);
            assertThat(test.ZValueType).isEqualTo(ValueType.ZERO_RATE);
            assertThrowsIllegalArg(() => test.getInfo(SurfaceInfoType.DAY_COUNT));
            assertThat(test.findInfo(SurfaceInfoType.DAY_COUNT)).Empty;
            assertThat(test.getInfo(DESCRIPTION)).isEqualTo("Hello");
            assertThat(test.findInfo(DESCRIPTION)).isEqualTo(("Hello"));
            assertThat(test.findInfo(SurfaceInfoType.of("Rubbish"))).isEqualTo(null);
            assertThat(test.ParameterMetadata.Present).True;
            assertThat(test.ParameterMetadata.get()).containsExactly(ParameterMetadata.empty());
        }
        public virtual void relative()
        {
            ParallelShiftedCurve test = ParallelShiftedCurve.relative(CONSTANT_CURVE, 0.1d);

            assertThat(test.UnderlyingCurve).isEqualTo(CONSTANT_CURVE);
            assertThat(test.ShiftType).isEqualTo(ShiftType.RELATIVE);
            assertThat(test.ShiftAmount).isEqualTo(0.1d);
            assertThat(test.Metadata).isEqualTo(METADATA);
            assertThat(test.Name).isEqualTo(METADATA.CurveName);
            assertThat(test.ParameterCount).isEqualTo(2);
            assertThat(test.getParameter(0)).isEqualTo(3d);
            assertThat(test.getParameter(1)).isEqualTo(0.1d);
            assertThat(test.getParameterMetadata(0)).isEqualTo(ParameterMetadata.empty());
            assertThat(test.getParameterMetadata(1)).isEqualTo(LabelParameterMetadata.of("RelativeShift"));
            assertThat(test.withParameter(0, 5d)).isEqualTo(ParallelShiftedCurve.relative(CONSTANT_CURVE2, 0.1d));
            assertThat(test.withParameter(1, 0.5d)).isEqualTo(ParallelShiftedCurve.relative(CONSTANT_CURVE, 0.5d));
            assertThat(test.withPerturbation((i, v, m) => v + 2d)).isEqualTo(ParallelShiftedCurve.relative(CONSTANT_CURVE2, 2.1d));
            assertThat(test.yValue(0)).isEqualTo(3.3d, offset(1e-10d));
            assertThat(test.yValue(1)).isEqualTo(3.3d, offset(1e-10d));
        }
        //-------------------------------------------------------------------------
        public virtual void absolute()
        {
            ParallelShiftedCurve test = ParallelShiftedCurve.absolute(CONSTANT_CURVE, 1d);

            assertThat(test.UnderlyingCurve).isEqualTo(CONSTANT_CURVE);
            assertThat(test.ShiftType).isEqualTo(ShiftType.ABSOLUTE);
            assertThat(test.ShiftAmount).isEqualTo(1d);
            assertThat(test.Metadata).isEqualTo(METADATA);
            assertThat(test.Name).isEqualTo(METADATA.CurveName);
            assertThat(test.ParameterCount).isEqualTo(2);
            assertThat(test.getParameter(0)).isEqualTo(3d);
            assertThat(test.getParameter(1)).isEqualTo(1d);
            assertThat(test.getParameterMetadata(0)).isEqualTo(ParameterMetadata.empty());
            assertThat(test.getParameterMetadata(1)).isEqualTo(LabelParameterMetadata.of("AbsoluteShift"));
            assertThat(test.withParameter(0, 5d)).isEqualTo(ParallelShiftedCurve.absolute(CONSTANT_CURVE2, 1d));
            assertThat(test.withParameter(1, 0.5d)).isEqualTo(ParallelShiftedCurve.absolute(CONSTANT_CURVE, 0.5d));
            assertThat(test.withPerturbation((i, v, m) => v + 2d)).isEqualTo(ParallelShiftedCurve.absolute(CONSTANT_CURVE2, 3d));
            assertThat(test.yValue(0)).isEqualTo(4d);
            assertThat(test.yValue(1)).isEqualTo(4d);
        }
        public virtual void test_withNode_invalid()
        {
            ConstantNodalCurve test = ConstantNodalCurve.of(METADATA_ENTRIES, XVALUE, YVALUE);

            assertThrowsIllegalArg(() => test.withNode(1, 2, ParameterMetadata.empty()));
        }
        //-------------------------------------------------------------------------
        public virtual void coverage()
        {
            DefaultSurfaceMetadata test = DefaultSurfaceMetadata.of(SURFACE_NAME);

            coverImmutableBean(test);
            DefaultSurfaceMetadata test2 = DefaultSurfaceMetadata.builder().surfaceName(SurfaceName.of("Test")).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).zValueType(ValueType.ZERO_RATE).dayCount(ACT_365F).parameterMetadata(ParameterMetadata.empty()).build();

            coverBeanEquals(test, test2);
        }
        public virtual void test_withParameterMetadata_clearWhenNonEmpty()
        {
            DefaultSurfaceMetadata test = DefaultSurfaceMetadata.of(SURFACE_NAME).withParameterMetadata(ImmutableList.of(ParameterMetadata.empty())).withParameterMetadata(null);

            assertThat(test.SurfaceName).isEqualTo(SURFACE_NAME);
            assertThat(test.XValueType).isEqualTo(ValueType.UNKNOWN);
            assertThat(test.YValueType).isEqualTo(ValueType.UNKNOWN);
            assertThat(test.ZValueType).isEqualTo(ValueType.UNKNOWN);
            assertThat(test.ParameterMetadata.Present).False;
        }
Exemplo n.º 19
0
        public virtual void test_builder3()
        {
            DefaultCurveMetadata test = DefaultCurveMetadata.builder().curveName(CURVE_NAME).parameterMetadata(ImmutableList.of(ParameterMetadata.empty())).clearParameterMetadata().build();

            assertThat(test.CurveName).isEqualTo(CURVE_NAME);
            assertThat(test.XValueType).isEqualTo(ValueType.UNKNOWN);
            assertThat(test.YValueType).isEqualTo(ValueType.UNKNOWN);
            assertThat(test.ParameterMetadata.Present).False;
        }
Exemplo n.º 20
0
        //-------------------------------------------------------------------------
        public virtual void coverage()
        {
            DefaultCurveMetadata test = DefaultCurveMetadata.of(CURVE_NAME);

            coverImmutableBean(test);
            DefaultCurveMetadata test2 = DefaultCurveMetadata.builder().curveName(CURVE_NAME).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.DISCOUNT_FACTOR).dayCount(ACT_360).jacobian(JACOBIAN_DATA).parameterMetadata(ParameterMetadata.empty()).build();

            coverBeanEquals(test, test2);
        }