// present value for one scenario
        internal CurrencyAmount presentValue(ResolvedIborFutureTrade trade, RatesProvider ratesProvider)
        {
            // mark to model
            double settlementPrice = this.settlementPrice(trade, ratesProvider);

            return(tradePricer.presentValue(trade, ratesProvider, settlementPrice));
        }
        //-------------------------------------------------------------------------
        public virtual void test_presentValue()
        {
            ScenarioMarketData md                   = IborFutureTradeCalculationFunctionTest.marketData();
            RatesProvider      provider             = RATES_LOOKUP.marketDataView(md.scenario(0)).ratesProvider();
            DiscountingIborFutureTradePricer pricer = DiscountingIborFutureTradePricer.DEFAULT;
            CurrencyAmount expectedPv               = pricer.presentValue(RTRADE, provider, SETTLEMENT_PRICE);
            double         expectedParSpread        = pricer.parSpread(RTRADE, provider, SETTLEMENT_PRICE);

            assertEquals(IborFutureTradeCalculations.DEFAULT.presentValue(RTRADE, RATES_LOOKUP, md), CurrencyScenarioArray.of(ImmutableList.of(expectedPv)));
            assertEquals(IborFutureTradeCalculations.DEFAULT.parSpread(RTRADE, RATES_LOOKUP, md), DoubleScenarioArray.of(ImmutableList.of(expectedParSpread)));
        }