Interface CalculationFunction<T extends CalculationTarget>

 Type Parameters:
T
 the type of target handled by this function
 All Known Implementing Classes:
BillTradeCalculationFunction
,BondFutureOptionTradeCalculationFunction
,BondFutureTradeCalculationFunction
,BulletPaymentTradeCalculationFunction
,CapitalIndexedBondTradeCalculationFunction
,CdsIndexTradeCalculationFunction
,CdsTradeCalculationFunction
,CmsTradeCalculationFunction
,DsfTradeCalculationFunction
,FixedCouponBondTradeCalculationFunction
,FraTradeCalculationFunction
,FxNdfTradeCalculationFunction
,FxSingleBarrierOptionTradeCalculationFunction
,FxSingleTradeCalculationFunction
,FxSwapTradeCalculationFunction
,FxVanillaOptionTradeCalculationFunction
,GenericSecurityPositionCalculationFunction
,GenericSecurityTradeCalculationFunction
,IborCapFloorTradeCalculationFunction
,IborFutureOptionTradeCalculationFunction
,IborFutureTradeCalculationFunction
,OvernightFutureTradeCalculationFunction
,SecurityPositionCalculationFunction
,SecurityTradeCalculationFunction
,SwaptionTradeCalculationFunction
,SwapTradeCalculationFunction
,TermDepositTradeCalculationFunction
public interface CalculationFunction<T extends CalculationTarget>
Primary interface for all calculation functions that calculate measures.Implementations of this interface provide the ability to calculate one or more measures for a target (trade) using one or more sets of market data (scenarios). The methods of the function allow the
CalculationRunner
to correctly invoke the function:targetType()
 the target type that the function applies tosupportedMeasures()
 the set of measures that can be calculatednaturalCurrency(CalculationTarget, ReferenceData)
 the "natural" currency of the targetrequirements(CalculationTarget, Set, CalculationParameters, ReferenceData)
 the market data requirements for performing the calculationcalculate(CalculationTarget, Set, CalculationParameters, ScenarioMarketData, ReferenceData)
 perform the calculation
If any of the calculated values contain any currency amounts and implement
ScenarioFxConvertible
the calculation runner will automatically convert the amounts into the reporting currency.


Method Summary
All Methods Instance Methods Abstract Methods Default Methods Modifier and Type Method Description Map<Measure,Result<?>>
calculate(T target, Set<Measure> measures, CalculationParameters parameters, ScenarioMarketData marketData, ReferenceData refData)
Calculates values of multiple measures for the target using multiple sets of market data.default Optional<String>
identifier(T target)
Returns an identifier that should uniquely identify the specified target.Currency
naturalCurrency(T target, ReferenceData refData)
Returns the "natural" currency for the specified target.FunctionRequirements
requirements(T target, Set<Measure> measures, CalculationParameters parameters, ReferenceData refData)
Determines the market data required by this function to perform its calculations.Set<Measure>
supportedMeasures()
Returns the set of measures that the function can calculate.Class<T>
targetType()
Gets the target type that this function applies to.



Method Detail

targetType
Class<T> targetType()
Gets the target type that this function applies to.The target type will typically be a concrete class.
 Returns:
 the target type

supportedMeasures
Set<Measure> supportedMeasures()
Returns the set of measures that the function can calculate. Returns:
 the readonly set of measures that the function can calculate

identifier
default Optional<String> identifier(T target)
Returns an identifier that should uniquely identify the specified target.This identifier is used in error messages to identify the target. This should normally be overridden to provide a suitable identifier. For example, if the target is a trade, there will typically be a trade identifier available.
This method must not throw an exception.
 Parameters:
target
 the target of the calculation Returns:
 the identifier of the target, empty if no suitable identifier available

naturalCurrency
Currency naturalCurrency(T target, ReferenceData refData)
Returns the "natural" currency for the specified target.This is the currency to which currency amounts are converted if the "natural" reporting currency is requested using
ReportingCurrency.NATURAL
. Most targets have a "natural" currency, for example the currency of a FRA or the base currency of an FX forward.It is required that all functions that return a currencyconvertible measure must choose a "natural" currency for each trade. The choice must be consistent not random, given the same trade the same currency must be returned. This might involve picking, the first leg or base currency from a currency pair. An exception must only be thrown if the function handles no currencyconvertible measures.
 Parameters:
target
 the target of the calculationrefData
 the reference data to be used in the calculation Returns:
 the "natural" currency of the target
 Throws:
IllegalStateException
 if the function calculates no currencyconvertible measures

requirements
FunctionRequirements requirements(T target, Set<Measure> measures, CalculationParameters parameters, ReferenceData refData)
Determines the market data required by this function to perform its calculations.Any market data needed by the
calculate
method should be specified.The set of measures may include measures that are not supported by this function.
 Parameters:
target
 the target of the calculationmeasures
 the set of measures to be calculatedparameters
 the parameters that affect how the calculation is performedrefData
 the reference data to be used in the calculation Returns:
 the requirements specifying the market data the function needs to perform calculations

calculate
Map<Measure,Result<?>> calculate(T target, Set<Measure> measures, CalculationParameters parameters, ScenarioMarketData marketData, ReferenceData refData)
Calculates values of multiple measures for the target using multiple sets of market data.The set of measures must only contain measures that the function supports, as returned by
supportedMeasures()
. The market data must provide at least the set of data requested byrequirements(CalculationTarget, Set, CalculationParameters, ReferenceData)
.The result of this method will often be an instance of
ScenarioArray
, which handles the common case where there is one calculated value for each scenario. However, it is also possible for the function to calculate an aggregated result, such as the maximum or minimum value across all scenarios, in which case the result would not implementScenarioArray
. Parameters:
target
 the target of the calculationmeasures
 the set of measures to calculateparameters
 the parameters that affect how the calculation is performedmarketData
 the multiscenario market data to be used in the calculationrefData
 the reference data to be used in the calculation Returns:
 the readonly map of calculated values, keyed by their measure

