// test diagonal part against finite difference approximation computed from pv public virtual void swap_exampleTest() { LocalDate start = LocalDate.of(2014, 3, 10); LocalDate end = LocalDate.of(2021, 3, 10); double notional = 1.0e6; ResolvedSwap swap = FixedIborSwapConventions.USD_FIXED_6M_LIBOR_3M.toTrade(RatesProviderDataSets.VAL_DATE_2014_01_22, start, end, BuySell.BUY, notional, 0.005).Product.resolve(REF_DATA); DiscountingSwapProductPricer pricer = DiscountingSwapProductPricer.DEFAULT; System.Func <ImmutableRatesProvider, CurrencyAmount> pvFunction = p => pricer.presentValue(swap, USD, p); System.Func <ImmutableRatesProvider, CurrencyParameterSensitivities> sensiFunction = p => { PointSensitivities sensi = pricer.presentValueSensitivity(swap, p).build(); return(p.parameterSensitivity(sensi)); }; CurrencyParameterSensitivities expected = sensitivityDiagonal(RatesProviderDataSets.MULTI_CPI_USD, pvFunction); CurrencyParameterSensitivities computed = CENTRAL.calculateCrossGammaIntraCurve(RatesProviderDataSets.MULTI_CPI_USD, sensiFunction).diagonal(); assertTrue(computed.equalWithTolerance(expected, Math.Sqrt(EPS) * notional)); CurrencyParameterSensitivities computedFromCross = CENTRAL.calculateCrossGammaCrossCurve(RatesProviderDataSets.MULTI_CPI_USD, sensiFunction).diagonal(); assertTrue(computed.equalWithTolerance(computedFromCross, TOL)); }
/// <summary> /// Creates an instance. /// </summary> /// <param name="swapPricer"> the pricer for <seealso cref="Swap"/> </param> public VolatilitySwaptionCashParYieldProductPricer(DiscountingSwapProductPricer swapPricer) { this.swapPricer = ArgChecker.notNull(swapPricer, "swapPricer"); }
/// <summary> /// Creates an instance. /// </summary> /// <param name="swapPricer"> the pricer for <seealso cref="ResolvedSwap"/> </param> public DiscountingCmsPeriodPricer(DiscountingSwapProductPricer swapPricer) { this.swapPricer = ArgChecker.notNull(swapPricer, "legPricer"); }
/// <summary> /// Creates an instance. /// </summary> /// <param name="swapPricer"> the pricer for <seealso cref="Swap"/> </param> public VolatilitySwaptionPhysicalProductPricer(DiscountingSwapProductPricer swapPricer) { this.swapPricer = ArgChecker.notNull(swapPricer, "swapPricer"); }
/// <summary> /// Creates an instance. /// </summary> /// <param name="swapPricer"> the pricer for <seealso cref="Swap"/> </param> public NormalSwaptionPhysicalProductPricer(DiscountingSwapProductPricer swapPricer) : base(swapPricer) { }
/// <summary> /// Creates an instance. /// </summary> /// <param name="swapPricer"> the pricer for <seealso cref="Swap"/> </param> public NormalSwaptionCashParYieldProductPricer(DiscountingSwapProductPricer swapPricer) : base(swapPricer) { }
private SabrExtrapolationReplicationCmsPeriodPricer(DiscountingSwapProductPricer swapPricer, double cutOffStrike, double mu) { this.swapPricer = ArgChecker.notNull(swapPricer, "swapPricer"); this.cutOffStrike = cutOffStrike; this.mu = ArgChecker.notNegativeOrZero(mu, "mu"); }
//------------------------------------------------------------------------- /// <summary> /// Obtains the pricer. /// </summary> /// <param name="swapPricer"> the pricer for underlying swap </param> /// <param name="cutOffStrike"> the cut-off strike value </param> /// <param name="mu"> the tail thickness </param> /// <returns> the pricer </returns> public static SabrExtrapolationReplicationCmsPeriodPricer of(DiscountingSwapProductPricer swapPricer, double cutOffStrike, double mu) { return(new SabrExtrapolationReplicationCmsPeriodPricer(swapPricer, cutOffStrike, mu)); }
private BlackFlatCmsPeriodPricer(DiscountingSwapProductPricer swapPricer) { this.swapPricer = ArgChecker.notNull(swapPricer, "swapPricer"); }
/// <summary> /// Obtains the pricer. /// </summary> /// <param name="swapPricer"> the pricer for underlying swap </param> /// <returns> the pricer </returns> public static BlackFlatCmsPeriodPricer of(DiscountingSwapProductPricer swapPricer) { return(new BlackFlatCmsPeriodPricer(swapPricer)); }