// calibrated sum PV01 for one scenario internal MultiCurrencyAmount pv01CalibratedSum(ResolvedIborFutureOptionTrade trade, RatesProvider ratesProvider, IborFutureOptionVolatilities volatilities) { NormalIborFutureOptionVolatilities normalVols = checkNormalVols(volatilities); PointSensitivities pointSensitivity = tradePricer.presentValueSensitivityRates(trade, ratesProvider, normalVols); return(ratesProvider.parameterSensitivity(pointSensitivity).total().multipliedBy(ONE_BASIS_POINT)); }
// unit price for one scenario internal double unitPrice(ResolvedIborFutureOptionTrade trade, RatesProvider ratesProvider, IborFutureOptionVolatilities volatilities) { // mark to model NormalIborFutureOptionVolatilities normalVols = checkNormalVols(volatilities); return(tradePricer.price(trade, ratesProvider, normalVols)); }
// present value for one scenario internal CurrencyAmount presentValue(ResolvedIborFutureOptionTrade trade, RatesProvider ratesProvider, IborFutureOptionVolatilities volatilities) { // mark to model double settlementPrice = this.settlementPrice(trade, ratesProvider); NormalIborFutureOptionVolatilities normalVols = checkNormalVols(volatilities); return(tradePricer.presentValue(trade, ratesProvider, normalVols, settlementPrice)); }
// market quote bucketed PV01 for one scenario internal CurrencyParameterSensitivities pv01MarketQuoteBucketed(ResolvedIborFutureOptionTrade trade, RatesProvider ratesProvider, IborFutureOptionVolatilities volatilities) { NormalIborFutureOptionVolatilities normalVols = checkNormalVols(volatilities); PointSensitivities pointSensitivity = tradePricer.presentValueSensitivityRates(trade, ratesProvider, normalVols); CurrencyParameterSensitivities parameterSensitivity = ratesProvider.parameterSensitivity(pointSensitivity); return(MARKET_QUOTE_SENS.sensitivity(parameterSensitivity, ratesProvider).multipliedBy(ONE_BASIS_POINT)); }