Rates, Credit, XVA and Risk · Rates, credit & risk
4Vanilla Rates Options
In June 2014 the ECB set its deposit rate at , and within two years short euro rates and many forward rates were below zero. Black’s model, in which a rate is lognormal, cannot price an option on a negative forward, or struck at a negative rate: its formula takes the logarithm of both. For more than twenty years caps and swaptions had been quoted as Black volatilities; the quotes that could not exist began to appear as normal volatilities, in basis points a year, or as volatilities of a shifted rate. The prices did not care which model was used to quote them; the risk numbers did. This chapter prices the two vanilla rates options, caplets and swaptions, in both models, strips the volatility of each caplet out of the quoted caps, and shows what the settlement terms of a swaption do to its price. The products and their market are those of One Quant Book 2, chapter 13; the curves are chapter 2’s euro curves.
4.1 Black and Bachelier for rates
A caplet on six-month Euribor fixing at and paid at pays , where is the forward of that fixing. Under the -forward measure of the discount curve (One Quant Book 4, chapter 5), is a martingale, and so is the par rate of a swap under the annuity measure . Both options are therefore options on a martingale, and the model only has to say how that martingale is distributed.
Proposition 4.1 (Caplets and swaptions under their natural measures)
If the expectation is Bachelier’s formula (One Quant Book 2, chapter 13); if it is Black’s formula (One Quant Book 5, chapter 3), with the forward in place of the spot and no drift.
Partial proof. Take as numeraire: the caplet’s price divided by it is a martingale, and at the numeraire is one. is a traded asset divided by the numeraire, hence a martingale. The same argument with the annuity as numeraire gives the swaption; with multiple curves, the projected forward is defined as the expectation of the fixing. ∎
Definition 4.2 (Lognormal volatility)
The lognormal volatility of a rates option is the volatility at which Black’s formula, applied to the forward rate, reproduces its price; it is a relative volatility, a percentage of the rate, and exists only for positive forward and strike.
Proposition 4.3 (Normal and lognormal volatilities at the money)
For an option at the money (), the two models give the same price when
Proof. The two at-the-money prices are and ; expand to first order. ∎
A normal model priced at one volatility for all strikes is a steep negative skew in lognormal terms (Figure 4.1): for a five-year option on a forward of 2.50% at 80 basis points of normal volatility, the Black volatility is 32.7% at the money (the approximation gives ), 71.1% at a strike of 0.50% and 23.8% at 4.50%. A market whose smile is flat in normal terms therefore looks strongly skewed to anyone quoting in Black terms, and a model choice is also a choice of how the smile moves when rates move.
As of September 2026 — Negative rates and the conventions of rates options
The ECB’s deposit facility rate was negative from 11 June 2014 () to 27 July 2022, with a low of from 18 September 2019. Options on negative forwards or strikes have no Black volatility, and the market began quoting caps, floors and swaptions also in normal or in shifted Black volatilities (chapter 5). Since 26 November 2018 the default cash-settlement method for euro swaptions in the ISDA settlement matrix has been the collateralised cash price instead of the par-yield method.
4.2 Caps, floors and caplet stripping
A cap is quoted as one number, its price or a single volatility for all its caplets. The caplets of a five-year cap are the same caplets as the first four years of a ten-year cap, and cannot have two prices.
Definition 4.4 (Flat volatility, caplet volatility)
The flat volatility of a cap is the single volatility at which the sum of its caplets’ prices equals the cap’s price. A caplet volatility is the volatility of one caplet, a function of its fixing date (and strike); the caplet volatilities of all caps of one strike form a single term structure.
Definition 4.5 (Caplet stripping)
Caplet stripping is the calibration of a term structure of caplet volatilities that reprices every quoted cap of a strike: with caps of increasing maturity, the caplets between two consecutive maturities are given one volatility, solved so that the longer cap reprices, the shorter caplets’ volatilities held.
def strip_caplet_vols(start: dt.date, maturities: list[int], flat_vols: list[float], strike: float, proj, disc,
model: str = "normal", months: int = 6) -> list[tuple[float, float]]:
"""Piecewise-constant caplet volatilities, one level per interval between cap maturities, such
that every cap reprices at its flat volatility. Returns (last fixing time of the interval, vol)."""
knots: list[tuple[float, float]] = []
def stripped(t: float) -> float:
for tk, v in knots:
if t <= tk + 1e-9:
return v
return knots[-1][1]
for m, fv in zip(maturities, flat_vols, strict=True):
cap = Cap(start, m, strike, months)
target = cap_price(cap, proj, disc, fv, model)
last_fix = caplets(cap, proj, disc)[-1]["t"]
lo, hi = 1e-6, 5.0 if model == "lognormal" else 0.05
for _ in range(100):
mid = 0.5 * (lo + hi)
knots.append((last_fix, mid))
p = cap_price(cap, proj, disc, stripped, model)
knots.pop()
lo, hi = (mid, hi) if p < target else (lo, mid)
knots.append((last_fix, 0.5 * (lo + hi)))
return knots
Example 4.6 (A euro cap strip)
Flat normal volatilities of caps struck at 3% on six-month Euribor of 58, 66, 72, 75, 76, 75 and 72 basis points at one, two, three, four, five, seven and ten years (illustrative; the first caplet, already fixed, excluded) strip into caplet volatilities of 58.0, 66.6, 75.7, 78.9, 78.0, 73.7 and 67.9 basis points on the successive intervals (Figure 4.2). Where flat volatilities rise, the new caplets must be above the flat level to lift the average; the hump of the caplet curve is higher and earlier than that of the flat curve.
4.3 Swaptions: physical and cash settlement
A physically settled swaption delivers the swap; its value is the annuity times an option on the forward swap rate (Proposition 4.1). In euros and sterling most swaptions are settled in cash, and the settlement amount needs an annuity that both parties can compute on the exercise date from one number.
Definition 4.7 (Cash-settled swaption, cash annuity)
A cash-settled swaption pays, on exercise, the value of the underlying swap computed by an agreed method instead of delivering it. Under the par-yield method the value is with the cash annuity
the annuity of the swap discounted at its own par rate ( payments a year); under the collateralised-cash-price method it is the swap’s value on the discount curve of the agreed clearing house, as if physically settled.
def cash_annuity(rate: float, tenor: int, freq: int = 1) -> float:
"""Annuity of a swap discounted at its own rate (par-yield, or IRR, method)."""
return sum((1.0 / freq) / (1.0 + rate / freq) ** i for i in range(1, tenor * freq + 1))
def swaption_cash_irr(expiry: dt.date, tenor: int, strike: float, proj, disc, vol: float, model: str = "normal",
payer: bool = True, notional: float = 1.0) -> float:
"""The traditional market formula for a par-yield cash-settled swaption: discount to expiry,
times the cash annuity at the forward rate, times the option on the rate."""
s, _ = forward_swap(proj, disc, expiry, tenor)
t = disc.t(expiry)
return notional * disc.df(expiry) * cash_annuity(s, tenor) * PRICERS[model](s, strike, t, vol, 1.0, payer)
Example 4.8 (Five years into ten)
On chapter 2’s curves the ten-year swap starting in five years has a forward par rate of 3.098% against six-month Euribor and a (discount-curve) annuity of 7.740. At 80 basis points of normal volatility (a lognormal volatility of 26.2%), the at-the-money physical payer on EUR 100 million is worth EUR 5 525 150. The traditional cash formula, option, gives EUR 5 410 452, 2.1% less: , because the cash annuity discounts at the Euribor swap rate, above the €STR rates of the collateralised annuity. The par-yield payoff is also not a function of the annuity measure’s numeraire, so the formula is itself an approximation; the collateralised cash price removes both problems by settling at the physical value.
4.4 Vega, the smile, and the choice of model
The normal vega of a caplet, with , is largest at the money and does not depend on the level of rates; the Black vega is proportional to . A desk that hedges in one model and is marked in the other sees vega move when rates move with no change in the market. Two rules follow. Hedge in the model in which the market’s smile is most stable (for euro and dollar rates, normal or shifted models since the negative-rate years); and report vega per basis point of normal volatility, which is additive across caplets and swaptions of different forwards.
Remark 4.9 (Flat or stripped: same price, different risk)
The five-year cap of the problem below has the same price at its flat volatility and at the stripped caplet volatilities, by construction; its total vega is the same too, but its bucketed vega is not: the stripped curve puts it on the caplets’ own expiries, where the hedging caps and swaptions sit.
4.5 Tutorial: strip, price, compare
Goal. Strip caplet volatilities from cap quotes, price a cap and a swaption on chapter 2’s euro curves, and compare the settlement methods. End state: Figures 4.1 and 4.2 and the numbers of Example 4.8.
- Smile:
smile_from_flat_normal()converts a flat normal volatility into Black volatilities by strike with Book 2’snormal_to_black. - Strip:
stripped()returns seven knots; check that every cap reprices at its flat volatility. - Swaption:
swaption_table()gives the forward, the two annuities and the two prices. - Cap:
treasurer_cap()andcap_strike_table();fig_rc_vanilla.pywrites the charts.
What to change next. Price the cap with a flat lognormal volatility of 25% and compare; strip with caps quoted every year instead of at one, two, three, four, five, seven and ten years.
4.6 Build: caps, floors and swaptions
Purpose. The vanilla rates options of the miniature firm, priced on the multi-curve; the calibration instruments of the models of chapters 5 to 10, and the options the risk engine of Chapter 29 registers with the pricing library.
Interface. Cap(start, years, strike, months, floor, skip_first); caplets, cap_price(cap, proj, disc, vol, model), cap_vega, strip_caplet_vols, piecewise; forward_swap, swaption_physical, cash_annuity, swaption_cash_irr.
Rules. Forward-looking caplets fixed at the start of their period; the first caplet skipped by default; model is normal or lognormal; Book 2’s firm_normalvol imported, not edited.
Acceptance tests. code/firm/capfloor/tests/: zero volatility gives intrinsic value; cap minus floor is the forward swap; stripped volatilities reprice every cap; payer minus receiver is the forward swap; the cash annuity has the closed form and falls with the rate.
Stretch. Strike-dependent stripping (a caplet smile per expiry); the collateralised cash price with a separate settlement curve; backward-looking caplets (chapter 10).
Sources and further reading
- F. Black, “The pricing of commodity contracts”, Journal of Financial Economics 3, 1976.
- ISDA, “Market practice change for settlement of EUR swaptions to collateralized cash price”, November 2018.
- D. Brigo and F. Mercurio, Interest Rate Models: Theory and Practice, 2nd ed., Springer, 2006, chapter 6.
- ECB, Key ECB interest rates.
4.7 Exercises
Exercise 4.1 ★
A caplet on EUR 10 million struck at 3% fixes at 3.40% for a period with accrual 0.5069. What does it pay, and when?
Solution
Solution of Exercise 4.1.
, paid at the end of the period, six months after the fixing.
Exercise 4.2 ★
A five-year at-the-money option on a forward of 2.50% has a normal volatility of 80 basis points. Estimate its lognormal volatility, and compare with the exact 32.7%.
Solution
Solution of Exercise 4.2.
; the exact value 32.7% is slightly higher because for .
Exercise 4.3 ★
Why do market caps on six-month Euribor exclude the first caplet?
Solution
Solution of Exercise 4.3.
The first period’s rate is already fixed on the trade date: its caplet has no optionality left, only a known payoff, so it is left out and the cap’s optionality starts with the second period.
Exercise 4.4 ★★
The one-year cap has a flat volatility of 58 and the two-year of 66 basis points. Without computing, is the stripped volatility of the second-year caplets above or below 66? Check against Example 4.6.
Solution
Solution of Exercise 4.4.
Above: the two-year cap’s value at 66 basis points includes the first-year caplets at 58; for the average to reach 66 the second-year caplets must be higher. The strip gives 66.6.
Exercise 4.5 ★★
Explain the 2.1% gap between the par-yield cash formula and the physical price in Example 4.8, and why the collateralised cash price closes it.
Solution
Solution of Exercise 4.5.
The physical price multiplies the option by the collateralised annuity 7.740; the par-yield formula uses , which discounts the annuity at the Euribor swap rate 3.098%, higher than the €STR discount rates: 2.1% less. The collateralised cash price settles at the swap’s value on the clearing house’s discount curve, which is what the physical swaption delivers, so both prices coincide.
Exercise 4.6 ★★
Read Figure 4.1: why does a flat normal smile look like a negative lognormal skew? What smile would a flat lognormal market look like in normal terms?
Solution
Solution of Exercise 4.6.
In the normal model a move of so many basis points is equally likely at any level; relative to a low strike that is a large percentage move, relative to a high strike a small one, so the implied lognormal volatility falls with the strike. A flat lognormal market looks like a positive normal skew: normal volatility rises with the strike.
Exercise 4.7 ★★★
Coding. Find the floor strike that makes a five-year collar (long the 3% cap, short the floor) cost nothing, with the stripped volatilities at every strike.
Solution
Solution of Exercise 4.7.
1.97%: selling the five-year floor at 1.97% pays for the cap at 3%. The company then pays at least 1.97% plus its margin even if Euribor falls further. (Using the 3% caplet volatilities at every strike ignores the smile.)
Exercise 4.8 ★★★
Find the flaw. “The five-year cap is quoted at 76 basis points, so I price the two caplets fixing after four years at 76.” What is wrong, and by how much does it misprice them on EUR 200 million?
Solution
Solution of Exercise 4.8.
76 basis points is the flat volatility of the whole five-year cap, an average over all its caplets; the caplets fixing after four years have their own stripped volatility, 78.0. At 76 they are worth EUR 886 956 on EUR 200 million, at 78.0 EUR 916 329: underpriced by EUR 29 373.
4.8 Problem: The Treasurer’s Cap
Problem 4.1
Weekend problem — capping a floating-rate loan
A company has borrowed EUR 200 million for five years at six-month Euribor plus a margin, first rate already fixed. Its board wants the rate capped at 3%. On chapter 2’s curves and the stripped volatilities of Example 4.6 it buys the five-year cap at 3%.
Part I — The cap.
- How many caplets does it hold, and why that number?
- Give its premium in euros and as a percentage of notional.
- Express the premium as a running cost in basis points a year.
- Price it at the five-year flat volatility instead, and explain the result.
- The average forward of the caplets is 2.44%. Why pay anything for a cap struck above it?
Part II — Risk.
- Give its vega per basis point of normal volatility.
- If normal volatilities rise by 10 basis points, how much does the cap gain?
- Would its lognormal vega grow or shrink if rates rose, at constant normal volatility?
- Who is short this vega, and how is it hedged?
- Price the cap at a flat lognormal volatility of 25% and comment.
Part III — Scenarios.
- If every remaining fixing is 3.50%, what does the cap pay in total, undiscounted?
- Give the present value of those payments today.
- At what average fixing does the company break even on the premium, approximately?
- If all fixings stay below 3%, what has the company bought?
- Why is the cap not an option on the average rate?
Part IV — Judgement.
- Compare the cap with paying fixed on a five-year swap.
- Give the floor strike of a zero-cost collar and say what the company gives up.
- Why might a bank quote this cap above the model price?
- State the named result: the premium, its running cost and the vega of the treasurer’s cap.
- In one sentence: what does a cap buy that a swap does not?
Solution
Solution of Problem 4.1.
1. Nine: ten six-month periods, less the first, already fixed. 2. EUR 2 157 482, 1.079% of the notional. 3. Divided by the annuity of the caplet payments (4.286): 25.2 basis points a year. 4. The same, EUR 2 157 482: the stripped volatilities were calibrated so that the five-year cap reprices at its flat volatility. 5. The forwards are expectations; with 66 to 79 basis points of normal volatility a year, fixings above 3% in the later years are quite likely, and the cap pays in those states. 6. EUR 43 093 per basis point. 7. About . 8. Grow: one point of lognormal volatility is worth about points of normal volatility (), so the lognormal vega is about times the normal vega, which does not change with the level; higher rates, larger lognormal vega. Normal vega is the more stable number to report. 9. The bank that sold it; it hedges by buying caps or caplets from the market, or swaptions for the longer expiries, and runs the residual. 10. EUR 1 827 377: at a flat 25% the caplets on forwards around 2.4% have normal volatilities of about 60 basis points, below the market’s; the lognormal quote would misprice the cap by 15%. 11. with : EUR 4 569 444. 12. EUR 4 285 872 ( annuity 4.286). 13. About 3.25%: the premium is 25.2 basis points a year of the notional, so the fixings must average 25 basis points above the strike. 14. Insurance: protection against the states in which rates rose, which did not occur; the premium is the price of that protection. 15. Each caplet pays on its own fixing, so a high fixing in one period is not offset by a low one in another; an option on the average would be cheaper. 16. The swap fixes the rate at the forward (about 2.4% to 3% over the periods) at no upfront cost and removes the benefit of falling rates; the cap costs 25 basis points a year and keeps it. 17. 1.97%: the company pays for its cap by giving up the benefit of fixings below 1.97%. 18. Bid–offer on the volatility it must buy to hedge, the credit charge for a corporate that does not post collateral (chapters 18 and 19), and the capital the trade consumes. 19. Named result: the treasurer’s cap costs EUR 2 157 482 (1.079% of notional, 25.2 basis points a year) with a vega of EUR 43 093 per basis point of normal volatility. 20. Protection against high rates while keeping the benefit of low ones.
4.9 Interview questions
Interview question 4.1 ★ trader, bank
What is a caplet, and under which measure is its forward rate a martingale?
Solution
Solution of Interview question 4.1.
An option paying at the end of a period on the rate fixed at its start. Its forward is a traded asset divided by , so it is a martingale under the -forward measure, which makes the caplet price times a call on a martingale.
What the interviewer is looking for: the numeraire argument.
Interview question 4.2 ★★ researcher
Derive the relation between normal and lognormal at-the-money volatility.
Solution
Solution of Interview question 4.2.
At the money, Bachelier gives and Black gives . Equating: ; more generally for nearby strikes.
What the interviewer is looking for: the expansion and the rule.
Interview question 4.3 ★★ researcher, developer
How do you strip caplet volatilities from cap quotes, and what can go wrong?
Solution
Solution of Interview question 4.3.
Price each quoted cap at its flat volatility; with caps in increasing maturity, solve for one volatility of the new caplets so that the longer cap reprices, earlier caplets held (or fit a smooth parametric curve to all caps at once). Problems: negative or oscillating volatilities when quotes are inconsistent or maturities close, sensitivity of the strip to one bad quote, a different strip for every strike (the smile), and the first-caplet convention.
What the interviewer is looking for: the sequential solve and its failure modes.
Interview question 4.4 ★★ trader
Why would a desk prefer to risk-manage in normal volatility?
Solution
Solution of Interview question 4.4.
Normal volatility is more stable when rates move, since rate changes in basis points depend little on the level; it works with negative rates; normal vegas add across instruments of different forwards; and the market quotes it, so hedge ratios match the quotes.
What the interviewer is looking for: stability of the smile and additivity.
Interview question 4.5 ★★★ researcher, bank
What is the problem with pricing a par-yield cash-settled swaption with Black’s formula and the cash annuity, and how did the market fix it?
Solution
Solution of Interview question 4.5.
The par-yield payoff is not the annuity numeraire times the payoff, so annuity-measure pricing does not apply; the formula ignores the convexity of and mixes discount rates, and it is not arbitrage-free against physical swaptions. The market (euro swaptions, November 2018) moved the default to the collateralised cash price, which settles at the swap’s value on the clearing house’s curve.
What the interviewer is looking for: payoff versus numeraire, and the market fix.
Interview question 4.6 ★★★ developer, risk
Your caplet pricer returns NaN for some trades after rates fell. Why, and what do you change?
Solution
Solution of Interview question 4.6.
Black’s formula takes : a negative forward or strike gives a NaN or an exception. Price in the normal model or a shifted lognormal model (chapter 5), convert the volatility quotes accordingly, and test the pricer on negative forwards and strikes.
What the interviewer is looking for: the log and the model switch.