//------------------------------------------------------------------------- /// <summary> /// Calculates present value across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="legalEntityLookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value, one entry per scenario </returns> public virtual CurrencyScenarioArray presentValue(ResolvedCapitalIndexedBondTrade trade, RatesMarketDataLookup ratesLookup, LegalEntityDiscountingMarketDataLookup legalEntityLookup, ScenarioMarketData marketData) { return(calc.presentValue(trade, ratesLookup.marketDataView(marketData), legalEntityLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates accrued interest across one or more scenarios. /// <para> /// The accrued interest since the last payment. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the accrued interest, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray accruedInterest(ResolvedSwapTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.accruedInterest(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray presentValue(ResolvedSwapTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.presentValue(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of /// <seealso cref="#presentValue(ResolvedSwapTrade, RatesMarketDataLookup, ScenarioMarketData) present value"/> /// to a one basis point shift in the market quotes used to calibrate the curves. /// The result is the sum of the sensitivities of all affected curves. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray pv01MarketQuoteSum(ResolvedSwapTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.pv01MarketQuoteSum(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates par spread across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the par spread, one entry per scenario </returns> public virtual DoubleScenarioArray parSpread(ResolvedSwapTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.parSpread(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of present value to a one basis point shift in /// the market quotes used to calibrate the curves. /// The result is provided for each affected curve and currency, bucketed by curve node. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <param name="swaptionLookup"> the lookup used to query the swaption market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual ScenarioArray <CurrencyParameterSensitivities> pv01RatesMarketQuoteBucketed(ResolvedCmsTrade trade, RatesMarketDataLookup ratesLookup, SwaptionMarketDataLookup swaptionLookup, ScenarioMarketData marketData) { return(calc.pv01RatesMarketQuoteBucketed(trade, ratesLookup.marketDataView(marketData), swaptionLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates unit price across one or more scenarios. /// <para> /// This is the price of a single unit of the security. /// </para> /// <para> /// Strata uses <i>decimal prices</i> for DSFs in the trade model, pricers and market data. /// The decimal price is based on the decimal multiplier equivalent to the implied percentage. /// Thus the market price of 100.182 is represented in Strata by 1.00182. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value, one entry per scenario </returns> public virtual DoubleScenarioArray unitPrice(ResolvedDsfTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.unitPrice(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of present value to a one basis point shift in /// the market quotes used to calibrate the curves. /// The result is provided for each affected curve and currency, bucketed by curve node. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <param name="capFloorLookup"> the lookup used to query the cap/floor market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual ScenarioArray <CurrencyParameterSensitivities> pv01RatesMarketQuoteBucketed(ResolvedIborCapFloorTrade trade, RatesMarketDataLookup ratesLookup, IborCapFloorMarketDataLookup capFloorLookup, ScenarioMarketData marketData) { return(calc.pv01RatesMarketQuoteBucketed(trade, ratesLookup.marketDataView(marketData), capFloorLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates currency exposure across one or more scenarios. /// <para> /// The currency risk, expressed as the equivalent amount in each currency. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="capFloorLookup"> the lookup used to query the cap/floor market data </param> /// <param name="marketData"> the market data </param> /// <returns> the currency exposure, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray currencyExposure(ResolvedIborCapFloorTrade trade, RatesMarketDataLookup ratesLookup, IborCapFloorMarketDataLookup capFloorLookup, ScenarioMarketData marketData) { return(calc.currencyExposure(trade, ratesLookup.marketDataView(marketData), capFloorLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of /// <seealso cref="#presentValue(ResolvedTermDepositTrade, RatesMarketDataLookup, ScenarioMarketData) present value"/> /// to a one basis point shift in the calibrated curves. /// The result is provided for each affected curve and currency, bucketed by curve node. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual ScenarioArray <CurrencyParameterSensitivities> pv01CalibratedBucketed(ResolvedTermDepositTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.pv01CalibratedBucketed(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates par rate across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the par rate, one entry per scenario </returns> public virtual DoubleScenarioArray parRate(ResolvedTermDepositTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.parRate(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates the forward FX rate across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the current cash, one entry per scenario </returns> public virtual ScenarioArray <FxRate> forwardFxRate(ResolvedFxSingleTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.forwardFxRate(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates current cash across one or more scenarios. /// <para> /// The sum of all cash flows paid on the valuation date. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="swaptionLookup"> the lookup used to query the swaption market data </param> /// <param name="marketData"> the market data </param> /// <returns> the current cash, one entry per scenario </returns> public virtual CurrencyScenarioArray currentCash(ResolvedSwaptionTrade trade, RatesMarketDataLookup ratesLookup, SwaptionMarketDataLookup swaptionLookup, ScenarioMarketData marketData) { return(calc.currentCash(trade, ratesLookup.marketDataView(marketData), swaptionLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of present value to a one basis point shift in the calibrated curves. /// The result is the sum of the sensitivities of all affected curves. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="swaptionLookup"> the lookup used to query the swaption market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray pv01RatesCalibratedSum(ResolvedSwaptionTrade trade, RatesMarketDataLookup ratesLookup, SwaptionMarketDataLookup swaptionLookup, ScenarioMarketData marketData) { return(calc.pv01RatesCalibratedSum(trade, ratesLookup.marketDataView(marketData), swaptionLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of present value to a one basis point shift in /// the market quotes used to calibrate the curves. /// The result is provided for each affected curve and currency, bucketed by curve node. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <param name="fxLookup"> the lookup used to query the option market data </param> /// <param name="method"> the pricing method </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual ScenarioArray <CurrencyParameterSensitivities> pv01RatesMarketQuoteBucketed(ResolvedFxVanillaOptionTrade trade, RatesMarketDataLookup ratesLookup, FxOptionMarketDataLookup fxLookup, ScenarioMarketData marketData, FxVanillaOptionMethod method) { return(calc.pv01RatesMarketQuoteBucketed(trade, ratesLookup.marketDataView(marketData), fxLookup.marketDataView(marketData), method)); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of present value to a one basis point shift in the calibrated curves. /// The result is the sum of the sensitivities of all affected curves. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="capFloorLookup"> the lookup used to query the cap/floor market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray pv01RatesCalibratedSum(ResolvedIborCapFloorTrade trade, RatesMarketDataLookup ratesLookup, IborCapFloorMarketDataLookup capFloorLookup, ScenarioMarketData marketData) { return(calc.pv01RatesCalibratedSum(trade, ratesLookup.marketDataView(marketData), capFloorLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="fxLookup"> the lookup used to query the option market data </param> /// <param name="marketData"> the market data </param> /// <param name="method"> the pricing method </param> /// <returns> the present value, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray presentValue(ResolvedFxVanillaOptionTrade trade, RatesMarketDataLookup ratesLookup, FxOptionMarketDataLookup fxLookup, ScenarioMarketData marketData, FxVanillaOptionMethod method) { return(calc.presentValue(trade, ratesLookup.marketDataView(marketData), fxLookup.marketDataView(marketData), method)); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of /// <seealso cref="#presentValue(ResolvedIborFutureTrade, RatesMarketDataLookup, ScenarioMarketData) present value"/> /// to a one basis point shift in the calibrated curves. /// The result is the sum of the sensitivities of all affected curves. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray pv01CalibratedSum(ResolvedIborFutureTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.pv01CalibratedSum(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="swaptionLookup"> the lookup used to query the swaption market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray presentValue(ResolvedCmsTrade trade, RatesMarketDataLookup ratesLookup, SwaptionMarketDataLookup swaptionLookup, ScenarioMarketData marketData) { return(calc.presentValue(trade, ratesLookup.marketDataView(marketData), swaptionLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of /// <seealso cref="#presentValue(ResolvedIborFutureOptionTrade, RatesMarketDataLookup, IborFutureOptionMarketDataLookup, ScenarioMarketData) present value"/> /// to a one basis point shift in the calibrated curves. /// The result is provided for each affected curve and currency, bucketed by curve node. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the rates market data </param> /// <param name="optionLookup"> the lookup used to query the option market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual ScenarioArray <CurrencyParameterSensitivities> pv01CalibratedBucketed(ResolvedIborFutureOptionTrade trade, RatesMarketDataLookup ratesLookup, IborFutureOptionMarketDataLookup optionLookup, ScenarioMarketData marketData) { return(calc.pv01CalibratedBucketed(trade, ratesLookup.marketDataView(marketData), optionLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates currency exposure across one or more scenarios. /// <para> /// The currency risk, expressed as the equivalent amount in each currency. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the currency exposure, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray currencyExposure(ResolvedDsfTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.currencyExposure(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of /// <seealso cref="#presentValue(ResolvedIborFutureOptionTrade, RatesMarketDataLookup, IborFutureOptionMarketDataLookup, ScenarioMarketData) present value"/> /// to a one basis point shift in the market quotes used to calibrate the curves. /// The result is the sum of the sensitivities of all affected curves. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the rates market data </param> /// <param name="optionLookup"> the lookup used to query the option market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual MultiCurrencyScenarioArray pv01MarketQuoteSum(ResolvedIborFutureOptionTrade trade, RatesMarketDataLookup ratesLookup, IborFutureOptionMarketDataLookup optionLookup, ScenarioMarketData marketData) { return(calc.pv01MarketQuoteSum(trade, ratesLookup.marketDataView(marketData), optionLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of /// <seealso cref="#presentValue(ResolvedSwapTrade, RatesMarketDataLookup, ScenarioMarketData) present value"/> /// to a one basis point shift in the market quotes used to calibrate the curves. /// The result is provided for each affected curve and currency, bucketed by curve node. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual ScenarioArray <CurrencyParameterSensitivities> pv01MarketQuoteBucketed(ResolvedSwapTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.pv01MarketQuoteBucketed(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates unit price across one or more scenarios. /// <para> /// This is the price of a single unit of the security. /// </para> /// <para> /// Strata uses <i>decimal prices</i> for Ibor futures in the trade model, pricers and market data. /// The decimal price is based on the decimal rate equivalent to the percentage. /// For example, a price of 99.32 implies an interest rate of 0.68% which is represented in Strata by 0.9932. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the rates market data </param> /// <param name="optionLookup"> the lookup used to query the option market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value, one entry per scenario </returns> public virtual DoubleScenarioArray unitPrice(ResolvedIborFutureOptionTrade trade, RatesMarketDataLookup ratesLookup, IborFutureOptionMarketDataLookup optionLookup, ScenarioMarketData marketData) { return(calc.unitPrice(trade, ratesLookup.marketDataView(marketData), optionLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates cash flows across one or more scenarios. /// <para> /// The cash flows provide details about the payments of the trade. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the cash flows, one entry per scenario </returns> public virtual ScenarioArray <CashFlows> cashFlows(ResolvedSwapTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.cashFlows(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the rates market data </param> /// <param name="optionLookup"> the lookup used to query the option market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value, one entry per scenario </returns> public virtual CurrencyScenarioArray presentValue(ResolvedIborFutureOptionTrade trade, RatesMarketDataLookup ratesLookup, IborFutureOptionMarketDataLookup optionLookup, ScenarioMarketData marketData) { return(calc.presentValue(trade, ratesLookup.marketDataView(marketData), optionLookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates the present value of each leg across one or more scenarios. /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value of each leg, one entry per scenario </returns> public virtual ScenarioArray <LegAmounts> legPresentValue(ResolvedSwapTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.legPresentValue(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates current cash across one or more scenarios. /// <para> /// The sum of all cash flows paid on the valuation date. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the current cash, one entry per scenario </returns> public virtual CurrencyScenarioArray currentCash(ResolvedFraTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.currentCash(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Explains the present value calculation across one or more scenarios. /// <para> /// This provides a breakdown of how /// <seealso cref="#presentValue(ResolvedSwapTrade, RatesMarketDataLookup, ScenarioMarketData) present value"/> /// was calculated, typically used for debugging and validation. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="lookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value explanation, one entry per scenario </returns> public virtual ScenarioArray <ExplainMap> explainPresentValue(ResolvedSwapTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData) { return(calc.explainPresentValue(trade, lookup.marketDataView(marketData))); }
//------------------------------------------------------------------------- /// <summary> /// Calculates present value sensitivity across one or more scenarios. /// <para> /// This is the sensitivity of /// <seealso cref="#presentValue(ResolvedCapitalIndexedBondTrade, RatesMarketDataLookup, LegalEntityDiscountingMarketDataLookup, ScenarioMarketData) present value"/> /// to a one basis point shift in the calibrated curves. /// The result is provided for each affected curve and currency, bucketed by curve node. /// /// </para> /// </summary> /// <param name="trade"> the trade </param> /// <param name="ratesLookup"> the lookup used to query the market data </param> /// <param name="legalEntityLookup"> the lookup used to query the market data </param> /// <param name="marketData"> the market data </param> /// <returns> the present value sensitivity, one entry per scenario </returns> public virtual ScenarioArray <CurrencyParameterSensitivities> pv01CalibratedBucketed(ResolvedCapitalIndexedBondTrade trade, RatesMarketDataLookup ratesLookup, LegalEntityDiscountingMarketDataLookup legalEntityLookup, ScenarioMarketData marketData) { return(calc.pv01CalibratedBucketed(trade, ratesLookup.marketDataView(marketData), legalEntityLookup.marketDataView(marketData))); }