Example #1
0
        private void testPriceSensitivityBlackVolatility(CurrencyParameterSensitivities computed, System.Func <BlackBondFutureVolatilities, double> valueFn)
        {
            IList <ParameterMetadata> list = computed.Sensitivities.get(0).ParameterMetadata;
            int nVol = VOL.size();

            assertEquals(list.Count, nVol);
            for (int i = 0; i < nVol; ++i)
            {
                double[] volUp = Arrays.copyOf(VOL.toArray(), nVol);
                double[] volDw = Arrays.copyOf(VOL.toArray(), nVol);
                volUp[i] += EPS;
                volDw[i] -= EPS;
                InterpolatedNodalSurface sfUp = InterpolatedNodalSurface.of(METADATA, TIME, MONEYNESS, DoubleArray.copyOf(volUp), INTERPOLATOR_2D);
                InterpolatedNodalSurface sfDw = InterpolatedNodalSurface.of(METADATA, TIME, MONEYNESS, DoubleArray.copyOf(volDw), INTERPOLATOR_2D);
                BlackBondFutureExpiryLogMoneynessVolatilities provUp = BlackBondFutureExpiryLogMoneynessVolatilities.of(VAL_DATE_TIME, sfUp);
                BlackBondFutureExpiryLogMoneynessVolatilities provDw = BlackBondFutureExpiryLogMoneynessVolatilities.of(VAL_DATE_TIME, sfDw);
                double expected = 0.5 * (valueFn(provUp) - valueFn(provDw)) / EPS;
                int    index    = -1;
                for (int j = 0; j < nVol; ++j)
                {
                    GenericVolatilitySurfaceYearFractionParameterMetadata meta = (GenericVolatilitySurfaceYearFractionParameterMetadata)list[j];
                    if (meta.YearFraction == TIME.get(i) && meta.Strike.Value == MONEYNESS.get(i))
                    {
                        index = j;
                        continue;
                    }
                }
                assertEquals(computed.Sensitivities.get(0).Sensitivity.get(index), expected, EPS);
            }
        }
        static ShiftedBlackIborCapletFloorletExpiryStrikeVolatilitiesTest()
        {
            IList <GenericVolatilitySurfaceYearFractionParameterMetadata> list = new List <GenericVolatilitySurfaceYearFractionParameterMetadata>();
            int nData = TIME.size();

            for (int i = 0; i < nData; ++i)
            {
                GenericVolatilitySurfaceYearFractionParameterMetadata parameterMetadata = GenericVolatilitySurfaceYearFractionParameterMetadata.of(TIME.get(i), SimpleStrike.of(STRIKE.get(i)));
                list.Add(parameterMetadata);
            }
            METADATA = Surfaces.blackVolatilityByExpiryStrike("CAP_VOL", ACT_365F).withParameterMetadata(list);
        }
Example #3
0
        static BlackBondFutureOptionMarginedProductPricerTest()
        {
            IList <GenericVolatilitySurfaceYearFractionParameterMetadata> list = new List <GenericVolatilitySurfaceYearFractionParameterMetadata>();
            int nData = TIME.size();

            for (int i = 0; i < nData; ++i)
            {
                GenericVolatilitySurfaceYearFractionParameterMetadata parameterMetadata = GenericVolatilitySurfaceYearFractionParameterMetadata.of(TIME.get(i), LogMoneynessStrike.of(MONEYNESS.get(i)));
                list.Add(parameterMetadata);
            }
            METADATA = DefaultSurfaceMetadata.builder().surfaceName(SurfaceName.of("GOVT1-BOND-FUT-VOL")).xValueType(ValueType.YEAR_FRACTION).yValueType(ValueType.LOG_MONEYNESS).zValueType(ValueType.BLACK_VOLATILITY).parameterMetadata(list).dayCount(ACT_365F).build();
        }
Example #4
0
        //-------------------------------------------------------------------------
        private static ImmutableList <ParameterMetadata> createParameterMetadata(double expiry, DoubleArray delta)
        {
            ArgChecker.notNull(delta, "delta");
            int nbDelta = delta.size();

            ParameterMetadata[] parameterMetadata = new ParameterMetadata[2 * nbDelta + 1];
            parameterMetadata[nbDelta] = GenericVolatilitySurfaceYearFractionParameterMetadata.of(expiry, DeltaStrike.of(0.5d));
            for (int i = 0; i < nbDelta; i++)
            {
                parameterMetadata[i] = GenericVolatilitySurfaceYearFractionParameterMetadata.of(expiry, DeltaStrike.of(1d - delta.get(i)));          // Put
                parameterMetadata[2 * nbDelta - i] = GenericVolatilitySurfaceYearFractionParameterMetadata.of(expiry, DeltaStrike.of(delta.get(i))); // Call
            }
            return(ImmutableList.copyOf(parameterMetadata));
        }