Beispiel #1
0
        // calculate the end date
        private LocalDate calculateEnd(LocalDate valuationDate, ReferenceData refData)
        {
            TermDepositTrade    trade   = template.createTrade(valuationDate, BuySell.BUY, 0d, 0d, refData);
            ResolvedTermDeposit deposit = trade.Product.resolve(refData);

            return(deposit.EndDate);
        }
        public virtual void test_pv01()
        {
            TermDepositTradeCalculationFunction function = new TermDepositTradeCalculationFunction();
            ScenarioMarketData md       = marketData();
            RatesProvider      provider = RATES_LOOKUP.ratesProvider(md.scenario(0));
            DiscountingTermDepositProductPricer pricer          = DiscountingTermDepositProductPricer.DEFAULT;
            ResolvedTermDeposit            resolved             = TRADE.Product.resolve(REF_DATA);
            PointSensitivities             pvPointSens          = pricer.presentValueSensitivity(resolved, provider);
            CurrencyParameterSensitivities pvParamSens          = provider.parameterSensitivity(pvPointSens);
            MultiCurrencyAmount            expectedPv01         = pvParamSens.total().multipliedBy(1e-4);
            CurrencyParameterSensitivities expectedBucketedPv01 = pvParamSens.multipliedBy(1e-4);

            ISet <Measure> measures = ImmutableSet.of(Measures.PV01_CALIBRATED_SUM, Measures.PV01_CALIBRATED_BUCKETED);

            assertThat(function.calculate(TRADE, measures, PARAMS, md, REF_DATA)).containsEntry(Measures.PV01_CALIBRATED_SUM, Result.success(MultiCurrencyScenarioArray.of(ImmutableList.of(expectedPv01)))).containsEntry(Measures.PV01_CALIBRATED_BUCKETED, Result.success(ScenarioArray.of(ImmutableList.of(expectedBucketedPv01))));
        }