# QuantLibXL - Optionlet bootstrapping failure

I am trying to bootstrap the Optionlet volatility surface from a Cap/Floor volatility surface using QuantLibXL. To be specific, the data is from ICAP:

    STK  ATM   0  0.25  0.5  [...]
1Y  0.31 77.95    81.9  71.8
18M 0.34 83.08    89.2  76.6
2Y  0.37 86.03    96.2  80.1
[...]


Now, I can set up without errors qlCapFloorVolTermSurface, and qlOptionletStripper1, but when I trigger the actual computation, e.g., with qlOptionletStripper1CapFloorVolatilities, I get the error

qlOptionletStripper1CapFloorVolatilities - could not bootstrap optionlet
type: Put
strike: 25.000000 %
atm: 1.311340 %
price: 0.125286
annuity: 0.501145
expiry: March 22nd, 2017
error: root not bracketed f[0,24] -> [-1.3213e-002, -1]


I understand that the root searching algorithm cannot find a solution in the specified range, but what can one do here in practice? Have I missed something?

• The optionlet stripper takes as argument an IborIndex, for which I am using an Euribor object with an qlInterpolatedYieldCurve on a composite yield curve called "(45) - Euro" in Bloomberg.
• Strangely, the ATM rate indicated in the output does not at all match what it should be, namely according to the optionletstripper1.cpp:

atmOptionletRate_[i] = iborIndex_->fixing(optionletDates_[i]);

The fixing at March 22nd, 2017 retrieved with qlYieldTSZeroRate, is 0.60310%, not 1.311340%. Any ideas?

-

• The OptionletStripper1 takes an IborIndex, which should have a tenor equal to 1Y. I had set it to 6M, and that seemed to cause problems