Пример #1
0
        // market quote bucketed PV01 for one scenario
        internal CurrencyParameterSensitivities pv01MarketQuoteBucketed(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
        {
            PointSensitivities             pointSensitivity     = tradePricer.presentValueSensitivity(trade, ratesProvider);
            CurrencyParameterSensitivities parameterSensitivity = ratesProvider.parameterSensitivity(pointSensitivity);

            return(MARKET_QUOTE_SENS.sensitivity(parameterSensitivity, ratesProvider).multipliedBy(ONE_BASIS_POINT));
        }
Пример #2
0
 //-------------------------------------------------------------------------
 // calculates par spread for all scenarios
 internal DoubleScenarioArray parSpread(ResolvedFxSingleTrade trade, RatesScenarioMarketData marketData)
 {
     return(DoubleScenarioArray.of(marketData.ScenarioCount, i => parSpread(trade, marketData.scenario(i).ratesProvider())));
 }
Пример #3
0
 /// <summary>
 /// Calculates present value for a single set of market data.
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <returns> the present value </returns>
 public virtual MultiCurrencyAmount presentValue(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(calc.presentValue(trade, ratesProvider));
 }
Пример #4
0
 /// <summary>
 /// Calculates the forward FX rate for a single set of market data.
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <returns> the current cash </returns>
 public virtual FxRate forwardFxRate(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(calc.forwardFxRate(trade, ratesProvider));
 }
Пример #5
0
 /// <summary>
 /// Calculates current cash for a single set of market data.
 /// <para>
 /// The sum of all cash flows paid on the valuation date.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <returns> the current cash </returns>
 public virtual MultiCurrencyAmount currentCash(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(calc.currentCash(trade, ratesProvider));
 }
Пример #6
0
 //-------------------------------------------------------------------------
 /// <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(ResolvedFxSingleTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData)
 {
     return(calc.parSpread(trade, lookup.marketDataView(marketData)));
 }
Пример #7
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Calculates present value sensitivity across one or more scenarios.
 /// <para>
 /// This is the sensitivity of
 /// <seealso cref="#presentValue(ResolvedFxSingleTrade, 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(ResolvedFxSingleTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData)
 {
     return(calc.pv01MarketQuoteBucketed(trade, lookup.marketDataView(marketData)));
 }
Пример #8
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Calculates the currency exposure by discounting each payment in its own currency.
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the currency exposure </returns>
 public virtual MultiCurrencyAmount currencyExposure(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.currencyExposure(trade.Product, provider));
 }
Пример #9
0
 //-------------------------------------------------------------------------
 // calculates calibrated sum PV01 for all scenarios
 internal MultiCurrencyScenarioArray pv01CalibratedSum(ResolvedFxSingleTrade trade, RatesScenarioMarketData marketData)
 {
     return(MultiCurrencyScenarioArray.of(marketData.ScenarioCount, i => pv01CalibratedSum(trade, marketData.scenario(i).ratesProvider())));
 }
Пример #10
0
 // present value for one scenario
 internal MultiCurrencyAmount presentValue(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(tradePricer.presentValue(trade, ratesProvider));
 }
Пример #11
0
 // forward FX rate for one scenario
 internal FxRate forwardFxRate(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(tradePricer.forwardFxRate(trade, ratesProvider));
 }
Пример #12
0
 //-------------------------------------------------------------------------
 // calculates forward FX rate for all scenarios
 internal ScenarioArray <FxRate> forwardFxRate(ResolvedFxSingleTrade trade, RatesScenarioMarketData marketData)
 {
     return(ScenarioArray.of(marketData.ScenarioCount, i => forwardFxRate(trade, marketData.scenario(i).ratesProvider())));
 }
Пример #13
0
 // current cash for one scenario
 internal MultiCurrencyAmount currentCash(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(tradePricer.currentCash(trade, ratesProvider));
 }
Пример #14
0
 //-------------------------------------------------------------------------
 // calculates currency exposure for all scenarios
 internal MultiCurrencyScenarioArray currencyExposure(ResolvedFxSingleTrade trade, RatesScenarioMarketData marketData)
 {
     return(MultiCurrencyScenarioArray.of(marketData.ScenarioCount, i => currencyExposure(trade, marketData.scenario(i).ratesProvider())));
 }
Пример #15
0
 // par spread for one scenario
 internal double parSpread(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(tradePricer.parSpread(trade, ratesProvider));
 }
Пример #16
0
 /// <summary>
 /// Calculates the present value curve sensitivity of the trade.
 /// <para>
 /// The present value sensitivity of the trade is the sensitivity of the present value to
 /// the underlying curves.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the point sensitivity of the present value </returns>
 public virtual PointSensitivities presentValueSensitivity(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.presentValueSensitivity(trade.Product, provider));
 }
Пример #17
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Calculates the par spread.
 /// <para>
 /// This is the spread that should be added to the FX points to have a zero value.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the spread </returns>
 public virtual double parSpread(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.parSpread(trade.Product, provider));
 }
Пример #18
0
 //-------------------------------------------------------------------------
 // calculates calibrated bucketed PV01 for all scenarios
 internal ScenarioArray <CurrencyParameterSensitivities> pv01CalibratedBucketed(ResolvedFxSingleTrade trade, RatesScenarioMarketData marketData)
 {
     return(ScenarioArray.of(marketData.ScenarioCount, i => pv01CalibratedBucketed(trade, marketData.scenario(i).ratesProvider())));
 }
Пример #19
0
 /// <summary>
 /// Calculates present value sensitivity for a single set of market data.
 /// <para>
 /// This is the sensitivity of
 /// <seealso cref="#presentValue(ResolvedFxSingleTrade, 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="ratesProvider">  the market data </param>
 /// <returns> the present value sensitivity </returns>
 public virtual MultiCurrencyAmount pv01MarketQuoteSum(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(calc.pv01MarketQuoteSum(trade, ratesProvider));
 }
Пример #20
0
        // calibrated bucketed PV01 for one scenario
        internal CurrencyParameterSensitivities pv01CalibratedBucketed(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
        {
            PointSensitivities pointSensitivity = tradePricer.presentValueSensitivity(trade, ratesProvider);

            return(ratesProvider.parameterSensitivity(pointSensitivity).multipliedBy(ONE_BASIS_POINT));
        }
Пример #21
0
 /// <summary>
 /// Calculates present value sensitivity for a single set of market data.
 /// <para>
 /// This is the sensitivity of
 /// <seealso cref="#presentValue(ResolvedFxSingleTrade, 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="ratesProvider">  the market data </param>
 /// <returns> the present value sensitivity </returns>
 public virtual CurrencyParameterSensitivities pv01MarketQuoteBucketed(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(calc.pv01MarketQuoteBucketed(trade, ratesProvider));
 }
Пример #22
0
 /// <summary>
 /// Calculates the current cash of the trade.
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the current cash of the trade in the settlement currency </returns>
 public virtual MultiCurrencyAmount currentCash(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.currentCash(trade.Product, provider.ValuationDate));
 }
Пример #23
0
 /// <summary>
 /// Calculates par spread for a single set of market data.
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="ratesProvider">  the market data </param>
 /// <returns> the par spread </returns>
 public virtual double parSpread(ResolvedFxSingleTrade trade, RatesProvider ratesProvider)
 {
     return(calc.parSpread(trade, ratesProvider));
 }
Пример #24
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Calculates the forward exchange rate.
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the forward rate </returns>
 public virtual FxRate forwardFxRate(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.forwardFxRate(trade.Product, provider));
 }
Пример #25
0
 //-------------------------------------------------------------------------
 /// <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)));
 }
Пример #26
0
 /// <summary>
 /// Calculates the forward exchange rate point sensitivity.
 /// <para>
 /// The returned value is based on the direction of the FX product.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the point sensitivity </returns>
 public virtual PointSensitivities forwardFxRatePointSensitivity(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.forwardFxRatePointSensitivity(trade.Product, provider).build());
 }
Пример #27
0
 //-------------------------------------------------------------------------
 /// <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(ResolvedFxSingleTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData)
 {
     return(calc.presentValue(trade, lookup.marketDataView(marketData)));
 }
Пример #28
0
 /// <summary>
 /// Calculates the sensitivity of the forward exchange rate to the spot rate.
 /// <para>
 /// The returned value is based on the direction of the FX product.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the sensitivity to spot </returns>
 public virtual double forwardFxRateSpotSensitivity(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.forwardFxRateSpotSensitivity(trade.Product, provider));
 }
Пример #29
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Calculates present value sensitivity across one or more scenarios.
 /// <para>
 /// This is the sensitivity of
 /// <seealso cref="#presentValue(ResolvedFxSingleTrade, 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(ResolvedFxSingleTrade trade, RatesMarketDataLookup lookup, ScenarioMarketData marketData)
 {
     return(calc.pv01CalibratedSum(trade, lookup.marketDataView(marketData)));
 }
Пример #30
0
 //-------------------------------------------------------------------------
 /// <summary>
 /// Calculates the present value of the trade.
 /// <para>
 /// The present value of the trade is the value on the valuation date.
 /// The present value is returned in the settlement currency.
 ///
 /// </para>
 /// </summary>
 /// <param name="trade">  the trade </param>
 /// <param name="provider">  the rates provider </param>
 /// <returns> the present value of the trade in the settlement currency </returns>
 public virtual MultiCurrencyAmount presentValue(ResolvedFxSingleTrade trade, RatesProvider provider)
 {
     return(productPricer.presentValue(trade.Product, provider));
 }