/**
* Copyright (C) 2014 - present by OpenGamma Inc. and the OpenGamma group of companies
*
* Please see distribution for license.
*/
package com.opengamma.sesame.swaption;
import com.opengamma.analytics.financial.interestrate.PresentValueSABRSensitivityDataBundle;
import com.opengamma.analytics.financial.provider.sensitivity.multicurve.MultipleCurrencyParameterSensitivity;
import com.opengamma.analytics.util.amount.ReferenceAmount;
import com.opengamma.util.money.Currency;
import com.opengamma.util.money.MultipleCurrencyAmount;
import com.opengamma.util.result.Result;
import com.opengamma.util.tuple.Pair;
/**
* Calculator initialised with the data required to perform
* analytics calculations for a particular security.
*/
public interface SwaptionCalculator {
/**
* Calculates the present value for the security
*
* @return the present value
*/
Result<MultipleCurrencyAmount> calculatePV();
/**
* Calculates the implied volatility for the security
*
* @return the implied volatility
*/
Result<Double> calculateImpliedVolatility();
/**
* Calculates the PV01 for the security
*
* @return the PV01
*/
Result<ReferenceAmount<Pair<String, Currency>>> calculatePV01();
/**
* Calculates the bucketed PV01 for the security
*
* @return the bucketed PV01
*/
Result<MultipleCurrencyParameterSensitivity> calculateBucketedPV01();
/**
* Calculates the bucketed SABR risk for the security
*
* @return the bucketed SABR risk
*/
Result<PresentValueSABRSensitivityDataBundle> calculateBucketedSABRRisk();
}