Пример #1
0
 inline Real BlackVolTermStructure::blackVariance(Time t,
                                                  Real strike,
                                                  bool extrapolate) const {
     checkRange(t, extrapolate);
     checkStrike(strike, extrapolate);
     return blackVarianceImpl(t, strike);
 }
Пример #2
0
 Volatility BlackVolTermStructure::blackForwardVol(Time time1,
                                                   Time time2,
                                                   Real strike,
                                                   bool extrapolate) const {
     QL_REQUIRE(time1 <= time2,
                time1 << " later than " << time2);
     checkRange(time2, extrapolate);
     checkStrike(strike, extrapolate);
     if (time2==time1) {
         if (time1==0.0) {
             Time epsilon = 1.0e-5;
             Real var = blackVarianceImpl(epsilon, strike);
             return std::sqrt(var/epsilon);
         } else {
             Time epsilon = std::min<Time>(1.0e-5, time1);
             Real var1 = blackVarianceImpl(time1-epsilon, strike);
             Real var2 = blackVarianceImpl(time1+epsilon, strike);
             QL_ENSURE(var2>=var1,
                       "variances must be non-decreasing");
             return std::sqrt((var2-var1)/(2*epsilon));
         }
     } else {
         Real var1 = blackVarianceImpl(time1, strike);
         Real var2 = blackVarianceImpl(time2, strike);
         QL_ENSURE(var2 >= var1,
                   "variances must be non-decreasing");
         return std::sqrt((var2-var1)/(time2-time1));
     }
 }
Пример #3
0
 inline Volatility BlackVolTermStructure::blackVol(Time t,
                                                   Real strike,
                                                   bool extrapolate) const {
     checkRange(t, extrapolate);
     checkStrike(strike, extrapolate);
     return blackVolImpl(t, strike);
 }
 Volatility LocalVolTermStructure::localVol(Time t,
                                            Real underlyingLevel,
                                            bool extrapolate) const {
     checkRange(t, extrapolate);
     checkStrike(underlyingLevel, extrapolate);
     return localVolImpl(t, underlyingLevel);
 }
 inline
 Volatility CapFloorTermVolatilityStructure::volatility(Time t,
                                                        Rate strike,
                                                        bool extrap) const {
     checkRange(t, extrap);
     checkStrike(strike, extrap);
     return volatilityImpl(t, strike);
 }
Пример #6
0
 inline Real BlackVolTermStructure::blackVariance(const Date& d,
                                                  Real strike,
                                                  bool extrapolate) const {
     checkRange(d, extrapolate);
     checkStrike(strike, extrapolate);
     Time t = timeFromReference(d);
     return blackVarianceImpl(t, strike);
 }
 inline Volatility
 OptionletVolatilityStructure::volatility(Time optionTime,
                                          Rate strike,
                                          bool extrapolate) const {
     checkRange(optionTime, extrapolate);
     checkStrike(strike, extrapolate);
     return volatilityImpl(optionTime, strike);
 }
 Volatility LocalVolTermStructure::localVol(const Date& d,
                                            Real underlyingLevel,
                                            bool extrapolate) const {
     checkRange(d, extrapolate);
     checkStrike(underlyingLevel, extrapolate);
     Time t = timeFromReference(d);
     return localVolImpl(t, underlyingLevel);
 }
Пример #9
0
 inline Volatility
 SwaptionVolatilityStructure::volatility(Time optionTime,
                                         Time swapLength,
                                         Rate strike,
                                         bool extrapolate) const {
     checkSwapTenor(swapLength, extrapolate);
     checkRange(optionTime, extrapolate);
     checkStrike(strike, extrapolate);
     return volatilityImpl(optionTime, swapLength, strike);
 }
Пример #10
0
 // 3. relying on xxxImpl methods
 inline Volatility
 SwaptionVolatilityStructure::volatility(const Date& optionDate,
                                         const Period& swapTenor,
                                         Rate strike,
                                         bool extrapolate) const {
     checkSwapTenor(swapTenor, extrapolate);
     checkRange(optionDate, extrapolate);
     checkStrike(strike, extrapolate);
     return volatilityImpl(optionDate, swapTenor, strike);
 }
Пример #11
0
 inline Volatility
 SwaptionVolatilityStructure::volatility(Time optionTime,
                                         const Period& swapTenor,
                                         Rate strike,
                                         bool extrapolate) const {
     checkSwapTenor(swapTenor, extrapolate);
     checkRange(optionTime, extrapolate);
     checkStrike(strike, extrapolate);
     Time length = swapLength(swapTenor);
     return volatilityImpl(optionTime, length, strike);
 }
Пример #12
0
 Real BlackVolTermStructure::blackForwardVariance(Time time1,
                                                  Time time2,
                                                  Real strike,
                                                  bool extrapolate) const {
     QL_REQUIRE(time1 <= time2,
                time1 << " later than " << time2);
     checkRange(time2, extrapolate);
     checkStrike(strike, extrapolate);
     Real v1 = blackVarianceImpl(time1, strike);
     Real v2 = blackVarianceImpl(time2, strike);
     QL_ENSURE(v2 >= v1,
               "variances must be non-decreasing");
     return v2-v1;
 }