Esempio n. 1
0
 // price function
 private System.Func <DoubleArray, DoubleArray> createPriceFunction(SabrIborCapletFloorletVolatilityCalibrationDefinition sabrDefinition, RatesProvider ratesProvider, SabrParametersIborCapletFloorletVolatilities volatilities, IList <ResolvedIborCapFloorLeg> capList, IList <double> priceList)
 {
     System.Func <DoubleArray, DoubleArray> priceFunction = (DoubleArray x) =>
     {
         SabrParametersIborCapletFloorletVolatilities volsNew = updateParameters(sabrDefinition, volatilities, x);
         return(DoubleArray.of(capList.Count, n => sabrPricer.presentValue(capList[n], ratesProvider, volsNew).Amount / priceList[n]));
     };
     return(priceFunction);
 }
        public virtual void test_presentValue()
        {
            CurrencyAmount capComputed   = PRICER.presentValue(CAP, RATES, VOLS);
            CurrencyAmount floorComputed = PRICER.presentValue(FLOOR, RATES, VOLS);
            double         capExpected   = 0d;
            double         floorExpected = 0d;
            int            nPeriods      = CAP.CapletFloorletPeriods.size();

            for (int i = 0; i < nPeriods; ++i)
            {
                capExpected   += PRICER_PERIOD.presentValue(CAP.CapletFloorletPeriods.get(i), RATES, VOLS).Amount;
                floorExpected += PRICER_PERIOD.presentValue(FLOOR.CapletFloorletPeriods.get(i), RATES, VOLS).Amount;
            }
            assertEquals(capComputed.Currency, EUR);
            assertEquals(capComputed.Amount, capExpected);
            assertEquals(floorComputed.Currency, EUR);
            assertEquals(floorComputed.Amount, floorExpected);
        }
Esempio n. 3
0
        public virtual void test_presentValue()
        {
            MultiCurrencyAmount computed1 = PRICER.presentValue(CAP_ONE_LEG, RATES, VOLS);
            MultiCurrencyAmount computed2 = PRICER.presentValue(CAP_TWO_LEGS, RATES, VOLS);
            CurrencyAmount      cap       = PRICER_CAP_LEG.presentValue(CAP_LEG, RATES, VOLS);
            CurrencyAmount      pay       = PRICER_PAY_LEG.presentValue(PAY_LEG, RATES);

            assertEquals(computed1, MultiCurrencyAmount.of(cap));
            assertEquals(computed2, MultiCurrencyAmount.of(cap.plus(pay)));
        }