Você está na página 1de 44

Dr. Mark Gibbs, Dr.

Russell Goyder
THE PAST, PRESENT AND
FUTURE OF CURVES
TECHNICAL PAPER
The Past, Present and Future of Curves | iii
The Past, Present and Future of Curves
1 Introduction 1
2 The curve-building problem 2
2.1 Curve-building vs calibration 2
3 A brief history of curve-building 4
3.1 1980's approximations 4
3.2 1990's developments 8
3.2.1 Funding spread 8
3.2.3 Tenor basis swaps 12
3.2.4 Real swaps 12
3.3 Current challenges 13
3.3.1 OIS discounting 15
3.3.2 Choice of collateral currency 16
3.3.3 Multiple discounting methods 17
4 Future-proof curve-building 20
4.1 Model 20
4.2 Calibration Target 21
4.3 Instrument strategy 22
4.4 Optimizer 23
4.5 Source valuation approach 24
4.6 Target valuation approach 24
4.7 Calibration showcase 25
5 Example: Simple dual-curve OIS discounting bootstrap 26
5.1 Discount curve 26
5.2 LIBOR curve 28
5.3 Market data 28
5.4 Round trip 30
6 Example: Multi-currency CSA 35
7 Conclusion 38
Bibliography 39
About FINCAD 40
About the Authors 40
1 | The Past, Present and Future of Curves
1 INTRODUCTION
Reading about OIS discounting in the nancial press in recent months, it is hard to avoid the
following impression:
interest rate modeling for vanilla instruments was simple and well understood before the
credit crisis of 2008,
since the crisis, everything needs to be rethought from rst principles, resulting in a
paradigm shift in how swaps and other vanilla interest rate instruments are valued and how
curves are built, and
institutions around the globe are scrambling to update legacy valuation and risk
management systems to cope with this modeling revolution.
This position is only reinforced by an examination of recent press releases in the analytics
vendor space, which proudly announce the advent of dual curve bootstrapping capabilities
and list asset classes that can now be priced with the new approach, after a new software
release.
In general, this is not a bad approximation of reality. Many institutions around the world are
indeed expending considerable effort to update legacy systems to cope with the post-crisis
market. Many market participants are indeed having to throw out their existing understanding of
how vanilla rates derivatives are priced and learn a more sophisticated approach. But the notion
that these ideas and techniques themselves are new, dating to the aftermath of the 2008 credit
crisis, is false.
In fact, several market participants have taken the change comfortably in their stride, requiring
only minimal modication of their conceptual and software frameworks to cope with OIS
discounting and related effects. A truer characterization of the credit crisis effect is one of
popularizing this knowledge, hitherto conned to sophisticated trading operations only.
In this article, after a brief description of the curve-building problem (Sec. 2), we give a brief
history of the development of the ideas that now form the basis of modern curve-building (Sec. 3).
In doing so, we identify the key concepts and abstractions that are present in the problem, which
in turn form the basis of any generic curve-building system (Sec. 4). We nish the article with two
examples of building curves in F3, an analytics platform whose architecture predates the credit
crisis, but which has required no changes to keep pace with the recent revolution in interest
rate modeling. Our conclusion is given in Sec. 7.
The Past, Present and Future of Curves | 2
2 THE CURVE-BUILDING PROBLEM
Before describing the history of curve-building, it is useful to establish a clear denition of the
problem we are trying to solve. This is achieved most readily with a concrete example, after
which we generalize the concepts of a curve and curve-building in Sec. 2.1.
In order to calculate a price for many vanilla rates derivative securities, we must build a small
collection of curves. The archetypal example is a discount curve D(t), giving the current, t = 0,
price of one unit of currency paid at time t. Armed with such a curve, we can readily calculate
the value of a set of xed payments, such as the xed leg of a vanilla interest swap, given by
where N is the notional amount of the swap, c is the xed coupon and
i
is the accrual fraction
associated with the i
th
payment of a total of n, made at time t
i
. In such a vanilla swap, a xed leg
is typically exchanged for a oating leg that pays a variable rate whose value can be established
(observed) without ambiguity, when its value is required to determine a payment amount. In order
to calculate the value of such a oating leg, an additional curve is required. The leg value is given
by
where the additional curve is L(t). f
i
is the time at which an observation of the oating rate is
made in order to determine the amount paid at time t
i
and r is a margin, typically zero in a vanilla
xed-for-oating swap, but non-zero in oating-for-oating contracts such as tenor basis swaps.
The total number of payments m depends on the payment schedule and in general differs from n.
Strictly, the curves D(t) and L(t) are model parameters. They are not observable in the market
at the inception of a swap - only prices are available as market data. For swaps, the prices are
encoded as par rates - the value s of the xed coupon c that results in a swap having zero value
at inception
giving
Under a set of modeling assumptions such as those outlined above, it is straightforward to
calculate the price or par rate of a swap, given the curves D(t) and L(t). It is also possible,
although more challenging, to invert this calculation, nding the curves D(t) and L(t) that are
implied by market prices. It is this procedure that is termed curve-building and is the focus of this
article.
2.1 CURVE-BUILDING VS CALIBRATION
Curve-building is a special case of calibration. There are no rigorous denitions that distinguish
the two terms, but a key element of what most people regard as building curves is that curve
values are based only on derivatives for which we can construct a static hedge for the payoff; a
hedge can be constructed at trade inception and can be left untouched throughout the life of the
deal. In the vernacular, it can be priced off a curve (or curves).
3 | The Past, Present and Future of Curves
A static hedge can be constructed for any contract that only depends on todays expectation
of future events. An equivalent statement is that its payoff can be written as a linear function
of its underlyings. The most common non-linear payoff is that of an option - a swaptions value
today depends on the expected value as seen at the time the swaption expires of the swap into
which the holder may choose to exercise. Hedges for such contracts are dynamic; they must
be adjusted throughout the lifetime of the traded contract and their pricing requires a model for
the dynamics of the underlyings. The term calibration is typically used to refer to the process
of implying values of the parameters of such dynamical models from relevant market quotes,
typically European option prices, encoded as implied volatilities in the Black model ([1]).
In curve-building problems, the curves are indeed one-dimensional real-valued functions,
typically of time. They therefore match the usual notion of curve. In calibration problems,
however, the relevant curves are often two- or three-dimensional functions, or even constant
values, which can be regarded as zero-dimensional functions (functions of no arguments, or
nullary functions). Indeed, some valuations are based on objects which do not neatly t into the
mould of mathematical function at all - a manager of foreign exchange rates which enforces
correct handling of settlement conventions and consistent cross rates would be one example.
A crucial aspect of a truly generic calibration architecture is the set of abstractions in which it
is expressed. Identifying the right set of abstractions rests on nding the common link among
seemingly disparate concepts. Somewhat counter-intuitively, the common link here is not the
function-like (or otherwise) nature of the relevant objects, but the fact that they are all the
parameters of a pricing model. In turn, one of the most essential features of pricing model
parameters is that they form a dependency tree which must be managed if our valuations are
to be efcient, consistent and arbitrage-free. This concept of model parameter manager has
been termed Model and described in more detail in [2], which presents an exposition of the
essential concepts that underpin the design of modern analytics platforms.
We can now go further and dene a new concept related to that of Model:
We have chosen to label this concept as Curve because curves, in the conventional sense of
one-dimensional mathematical functions are the canonical example of pricing model parameters
that most of us meet. However, it is important to note that in the above denition, we have
stripped away all but the most essential and fundamental aspects of the notion of curve, as
it pertains to the problem of generic calibration. This hijacking of an established term may
prompt some controversy, but it is our belief that the rewards of a generic and exible calibration
system, that is exible enough to cope with changes that have necessitated comprehensive
reworking of other systems throughout the nancial industry, make the need to adjust to a more
general denition of the word curve worthwhile.
With this denition of Curve, although the examples in this article are based on vanilla interest
rate instruments and the corresponding one-dimensional function curves, the concepts
introduced in Sec. 4 cover all types of calibration and are not constrained to simple vanilla rates
securities at all. Indeed, a key point we make is that, with the correct architecture, a calibration
framework can be truly generic, coping easily with any curve-building problem seen to date in
the market and any that the future might hold.
Denition 1. The Curve Concept
A node in the dependency tree of pricing model parameters managed by a Model.
The Past, Present and Future of Curves | 4
3 A BRIEF HISTORY OF CURVE-BUILDING
In this section, we review the history of common curve-building practice, from the relatively early
days of derivatives trading in the 1980s through to the present. We then, in Sec. 4, consider the
collection of concepts relevant to any and all curve-building (and calibration) problems and apply
an embodiment of those ideas to two examples.
3.1 1980'S APPROXIMATIONS
Curve-building lived its early childhood in the 1980s. A good description of common market
practice at the time can be found in [3]. The then common assumption was that L(t) in Eq. (2)
could be expressed as the rate implicit in the curve D(t), via
where

(

t
a
, t
b
) is the day-count fraction between the times t
a
and t
b
dening the period
associated with the rate xed on t
f
.
The conventions for calculating the day-count fraction, together with the calculation of the times
t
a
and t
b
for a given xing time t
f
are part of the published denition of the rate. A widely-used
reference rate is LIBOR (see www.bbalibor.com). While the precise details are often moderately
complex, typically t
a
follows t
f
by a couple of days and t
b
follows t
a
by the tenor of the rate. The
rate is then paid at a time t
p
which is usually very close to t
b
. If it is not, then the rate is not paid at
its natural time and an accurate calculation of its value requires a timing convexity adjustment.
LIBOR in arrears is a common special case where t
p
~

t
a
, so that the rate is paid at the beginning
of its period. In this article we deal with vanilla swaps where such convexity effects (although
strictly present whenever the payment time does not precisely coincide with t
b
) are so small that
they are universally ignored by market participants.
Fig. 1 shows the collection of four distinct dates on which each payment of LIBOR is based in the
oating leg of a typical interest rate swap.
Fig. 1. The times relevant to a payment of LIBOR in a typical vanilla interest rate swap
Note that while t
a
t
f
, t
p
may precede t
b
.
In addition to the above assumption, there is another group of assumptions that were often
bundled with the rst. Namely that
1. the rates day-count convention matched exactly that of the trade and
2. the rates accrual period dened by t
a
and t
b
matched exactly the trades payment schedule,
so that for the i
th
payment period, t
i
=

t
b
and t
i1
=

t
a
, for all i.
~ 2 days
t
f
t
a
t
f
t
p
~ t
b
t
b
t
a
rate tenor
LIBOR period boundaries LIBOR xing time Payment time
time
t
p
5 | The Past, Present and Future of Curves
In other words, the dates in the trade line up with the dates in the rate. If these conditions are
met, the sum in Eq. (2) telescopes, with intermediate discount factors canceling, to yield the
simple form
If, in addition, we ignore any settlement delay that results in t
1
differing from the day on which the
swap is traded, and by implication valued, then we can simplify further to obtain
The motivation behind making these simplifying assumptions is that we can now solve Eq. (3) for
D(t
n
) in terms of { D(t
i
) i < n } and the market quote s to give
Given Eq. (6), it was common practice to implement a bootstrap calculation to solve for the full
set of { D(t
i
) }. In general, a bootstrap calculation is one where a curve C(t) is determined
sequentially by constraining the point at t
i
, C(t
i
), with a calculation that depends on previous
points in the curve, { C(t
j
) j < i }. This is illustrated in Fig. 2.
The Past, Present and Future of Curves | 6
Fig. 2. Schematic illustration of the bootstrapping concept.
To illustrate this bootstrap approach in the context of Eq. (6), assume (for now) that the frequency
of coupon payments matches that of the quotes, for example an annual xed coupon with quotes
for maturities which are separated by one year. Denote the quotes and corresponding maturity
times by {s
i
} i = 1 ... n and {t
i
} i = 1 ... n. The approach would then proceed as follows:
Initialize the t = 0 point on the discount curve to 1, D(0) = 1
Solve for D(t
1
):
1
D(t)
1
D(t)
D(1)
t
t
t
D(1)
D(2)
1y
1y 2y 3y
1y 2y
Together with the xed point
D(0) = 1, a point at 1 year,
with an interpolation scheme,
determines an entire curve.
D(1) is found by pricing a 1
year swap to par.
To nd D(2), we price a
2 year swap to par, using
a curve which remains
unchanged for all previous
maturities (in this case 1
year) but which varies with
each trial value of D(2)
explored by the algorithm.
Similarly, D(3) and
subsequent (D(t
i
)) points
are determined by pricing
instruments of increasing
maturity to par, based on a
curve whose earlier parts
have been xed by earlier
instruments, and whose last
section varies according to
each value of D(t
i
) explored
by the algorithm.
D(1)
D(2)
D(3)
7 | The Past, Present and Future of Curves
Solve for D(t
2
) in terms of D(t
1
):
Continue to iterate through the quotes until all are consumed and each point in the discount
curve is known in terms of earlier discount curve values and the given swap rates.
The end goal here is to obtain the curve D(t) which can be used to provide a discount factor for
a cash ow at an arbitrary time t, not just the { t
i
}. This is achieved by interpolation according
to a prescribed method. A common method for interpolating a discount curve is log-linear, which
results in exponential decay between the curve points { t
i
, D(t
i
)}:
Before a nished curve was obtained however, interpolation would usually be required as
part of the bootstrap, whenever the swaps' coupon period was smaller than the time between
quoted swap maturities, as for example in the case of swaps paying a coupon semi-annually or
quarterly. Fig. 3 illustrates the case of a one year, semi-annual swap:
Fig. 3. Setup used in a historical approach to bootstrapping a discount curve from a one year
swap quote, with semi-annual coupons and log-linear interpolation
The discount factor needed to value the rst coupon (paid at six months) is determined by the
one year discount factor together with a chosen interpolation method. Eq. (7) would then be
modied to give
D(t)
6 months 1 year
(swap maturity)
oating leg of swap
has 2 payments
Each discount curve
value at swap maturity,
plus log-linear
interpolation from (0,1),
denes a potential
discount curve.
xed leg of swap has
2 coupons
1
t
D(0.5)
D(1)
Swap valuation also requires that D(t) is evaluated at t = 0.5. D(0.5) is determined by D(1) together with an
interpolation rule.
If that rule is log-linear, then D(0.5) = D(1).
The Past, Present and Future of Curves | 8
With an explicit approach like this, changing from one interpolation method to another requires
signicant code changes. Instead of the closed-form Eq. (8), a numerical root-nding algorithm
can be applied to nd the { D(t
i
) }, which allows an arbitrary choice of interpolation method.
This is our rst example of generalizing a very bespoke calculation in order to improve its ability
to cope with changing requirements.
3.2 1990'S DEVELOPMENTS
As we shall see shortly in Sec. 3.2.1, Eq. (4) makes an implicit statement about the cost of funding
future cash ows, and by implication also about an institution's credit quality. In the early 90s,
an increasing number of market participants began to be aware of this and take it into account
in their curve-building. As the 90s progressed, it also became apparent that Eq. (4) was unable
to yield consistent pricing calculations across multiple currencies. While a given collection of
domestic swap markets could be matched with that approach, the resulting curves were unable
to price cross-currency basis swaps between them. This is explored in Sec. 3.2.2. In addition, it
became apparent that the additional assumptions of Sec. 3.1 were not necessary to construct a
bootstrap calculation. Instead of curves based on idealized swaps, real swaps (as described in
Sec. 3.2.4) began to be used.
3.2.1 FUNDING SPREAD
The discount curve D(t) is not observable in any market. There is no absolute notion of
"the time value of money" or "the risk free" rate - they are modeling constructs, the latter
appearing essentially in academic treatments. The only reality is the market; quoted prices for
traded assets. When using these quotes to imply a curve D(t), we are really asking what the
effective time value of money is for us, if we participate in that market, and hedge our position
with instruments funded at the rate implicit in D(t). In other words, the appropriate rate for
discounting cash ows in valuations such as Eq. (3) is the rate at which we can borrow (and
lend) in order to hedge our position.
Eq. (4) says that this rate is LIBOR, which is almost certainly not true. As is now almost common
knowledge on the high street in light of press coverage of recent scandals, LIBOR is just the
average (and topped and tailed) rate at which a representative of each of a collection of London
banks say they think the bank can borrow from another. Reality will be different. If a bank is
unusually creditworthy, its borrowing rate will be lower than LIBOR, and higher if otherwise. This
can be modeled readily by adjusting Eq. (4) to become
where S(t) is a spread curve, which encodes the extra creditworthiness (or the converse) of a
given market participant. With S(t) known (or assumed), we are left with just one unknown curve,
D(t), which can be found by the bootstrapping techniques described in Subsec. 3.1.
Simpler still is a at spread S(t) = s which allows the approach of Eq. (6) to be maintained, with
the modication s s s. Due to this approximation, an approach to bootstrapping based on the
approximations that led to Eq. (6) persists even today in many systems. It was only with increased
liquidity in the cross-currency swap market that this simple approach broke down, as described
in Sec. 3.2.2, and the same techniques used to match the cross-currency and tenor basis swap
markets were used in the higher-delity treatment necessary to capture some features of real
swaps, as described in Sec. 3.2.4.
9 | The Past, Present and Future of Curves
3.2.2 CROSS-CURRENCY SWAPS
At about the same time, it became apparent that the assumption in Eq. (4) was unable to yield
consistent pricing calculations across multiple currencies. While a given collection of domestic
swap markets could be matched with that approach, the resulting curves were unable to price
cross-currency basis swaps between them.
A (resetting) cross-currency basis swap quote measures the difference between corresponding
LIBOR rates in a pair of currencies, which we term here the asset and numeraire currencies
and , such that the exchange rate X(t) gives the value in the numeraire currency of a payment
at time t of one unit of asset currency. In other words, X(t) converts from to . Although its
expected value will be given by interest rate parity later in Eq. (12), the following development
prior to that point holds for any exchange rate dynamics, because we are expressing only
contract terms, not making modeling statements.
We seek an expression for the price in the numeraire currency of such a swap, in order to solve
for curve values that result in a par valuation. In order to arrive at such an expression, we need
to account for some subtle structure in such instruments whose net effect is to isolate exposure
to the difference between the LIBOR rate in each currency from exposure to X(t). The structure
of a resetting cross currency swap is illustrated in Fig. 4. In addition to interest rate payments,
the swap's principal is exchanged on each roll. Note that the amount of principal paid and
received on each roll in the numeraire currency is the notional N scaled by the exchange rate at
the start of the period.
Fig. 4. The structure of a cross-currency swap
0 2
In the asset currency :
In the numeraire currency :
front-and-back payments of the
Z-worth of the notional amount N in
currency , at the start of the period.
time
time
1
N
N
NX
0
N
NX
1
NX
0
NX
1
L
1

L
1

m
L
2

m
L
2

N
The Past, Present and Future of Curves | 10
Translating the asset currency cash ows into the numeraire currency and combining all the
ows into one diagram, we can see how some of them cancel, in Fig. 5.
Fig. 5. Cross-currency swap cash ows expressed in the numeraire currency
Fig. 6 shows the net ows of principal, which when subtracted from the initial principal result
in an amortizing principal structure, where the notional amount on which LIBOR is paid in each
currency is exactly that required to isolate exposure to changes in the LIBOR rates and not the
exchange rate.
Fig. 6. Cross-currency swap cash ow cancellation
In light of the above analysis, the value in the numeraire currency of such a swap's coupons can
be written as
for asset currency notional N, where the asset currency's LIBOR rate L
i

is paid at time t
j
in
the numeraire currency and where the corresponding rate in the numeraire currency, L
j

is
combined with a spread m before being paid at time t
j
.
i
and
j
are the associated accrual
fractions and we have now labeled the discount curves with and to distinguish between
the two currencies. The times at which each LIBOR and exchange rate are observed are to be
determined using the relevant market conventions in the given currencies.
NX
1
L
1

X
1
NX
1
In the numeraire currency :
convert each payment at i
using X
i
time
NX
0
NX
0
NX
1
NX
2
NX
0
NX
1
L
1

L
2

X
2
m
L
2

m
Net notional ows in currency :
Remaining notional amounts:
Resulting swap structure:
N(X
2
X
1
) N(X
1
X
0
)
NX
0
+ N(X
1
X
0
)
= NX
1
NX
1
+ N(X
2
X
1
)
= NX
2
0
NX
0
L
1

NX
1
m
L
2

NX
2
m
L
1

X
1

N
NX
i
(L

i
L

i
m)
V =
i = 1
I
L
2

X
2

N
11 | The Past, Present and Future of Curves
As we have seen, this expression merely encodes the value in one currency of such a swap
and the mechanics of a typical real swap are considerably different, involving payments in
each currency of the interest earned by each leg, plus payments based on the exchange rate
X(t) in order to isolate pure interest rate risk from foreign exchange (FX) exposure. While the
appearance of the FX rate X(t) in the rst term of Eq. (10) comes from converting payments made
in the asset currency to the numeraire currency, the same FX rate in the second term embodies
the net effect of exchanging the swap's notional amount N on each roll of the swap in such a
manner that the effective notional for the numeraire currency leg is NX(t).
In the approximation where we suppose that the two legs' schedules and accrual fractions
match (as in Fig. 6), then we may write Eq. (10) as
where the effective rate L'(t) is dened as
Eq. (11) clearly shows how a cross-currency swap exposes the holder to the difference between
two LIBOR rates, one in each of the currencies it spans.
Imposing the absence of arbitrage via the interest rate parity condition that
we arrive at a condition that must be met by the four curves D

(t), L

(t), D

(t) and L

(t), namely
for each quoted margin m, if they are to result in a model that yields market-consistent pricing.
If the two numeraire currency curves D

(t) and L

(t) are known from the corresponding market,


then this problem reduces to that of nding the two curves D

(t), L

(t). It is readily apparent that


if we proceed as in Sec. 3.1 in the asset currency also, then the resulting curves, when used in
Eq. (10) do not satisfy Eq. (13). In other words, the assumption Eq. (4) does not yield a model with
sufciently rich structure to match the domestic swap markets in two currencies and the cross-
currency swap market between them.
As with the problem of funding spread (Sec. 3.2.1), the key modeling innovation that solved this
problem was to relax the assumption in Eq. (4) and allow a spread between the implied discount
rate and LIBOR. In other words, to allow LIBOR to vary independently from the discount curve
and imply its values from the cross-currency swap market. For each vanilla interest rate swap
quote s
i
, paired with the cross-currency swap quote m
i
of equal maturity t
i
, we now have two
curve values D

(t
i
) and L

(t
i
f
) to nd, where t
i
f
is the LIBOR xing time for a payment at t
i
. We
now have a well-posed problem, which therefore has a well-dened solution, although it is no
longer possible to derive a simple formula like Eq. (6) that allows the two unknown curves D

(t)
and L

(t) to be determined algebraically, or even with a simple single-variable root-search


algorithm.
However, we can apply standard numerical inversion procedures to solve the non-linear
simultaneous equations Eq. (3) and Eq. (13), in ascending order of maturity in accordance with
the usual bootstrap approach. The numerical problem is now more challenging because it is
a search in a two-dimensional space instead of one, but perfectly tractable with well-known
numerical procedures.
The Past, Present and Future of Curves | 12
We can readily generalize the above treatment to a collection of M currencies. First, now that
LIBOR is free to differ from the discount rate, encode the amount by which it differs as the spread
S(t), given by
where the discount rate R(t) is
for the rate between times t
a
and t
b
. Then, in one currency, usually the domestic currency of the
business, we are free to make an arbitrary choice for S(t). Historically, a common choice was
that the spread should vanish (S(t) = 0) in which case we have returned to the approach of Sec.
3.1. In the remaining M 1 currencies, both the discount curve D(t) and the LIBOR curve L(t) are
determined by the requirement that we match both the vanilla swap and cross-currency basis
swap markets, as described above.
3.2.3 TENOR BASIS SWAPS
A natural analogue of this approach was developed at around the same time in order to
build models consistent with different tenors of LIBOR. The market's view of the average
difference between one tenor of LIBOR and another on a given time horizon is contained in
the corresponding tenor basis swap quote z. Taking the common example of 3-month LIBOR
swapped against 6-month LIBOR for concreteness, the value of such a swap is given by
If we assume that the discount curve D(t) and one of the LIBOR curves, say L
3m
(t), are known,
then our task is to determine the curve L
6m
(t) that satises
for each z
i
in collection of quotes of different maturities, indexed by i. This is a simpler problem
than in the case of cross-currency swaps, because there is only one unknown and it is even
tractable algebraically, so that a similar expression to Eq. (6) can be found if desired, or a
numerical approach can be applied. Regardless of how the solution is found, conceptually, the
problem resembles that of cross-currency swaps closely, because the LIBOR curve L
6m
(t) is
related to the discount curve D(t) not via Eq. (4), but via a spread as in Eq. (14).
3.2.4 REAL SWAPS
The simplifying assumptions that allowed us to write Eq. (6) are not precisely true in real life. In
real swaps the trade is distinct from the rate that its term-sheet references, and so there is no
guarantee that the payment schedule of the trade "lines up" with the dates for the rate being paid.
For example, xings for LIBOR are only available on London business days. If the oating leg of
a swap pays 3-month USD LIBOR, there may be no xing that results in t
b
falling on a given New
York business day. The following table gives an example payment schedule for such a swap,
where we can clearly see that this date-related assumption is false approximately half of the
time.
13 | The Past, Present and Future of Curves
Payment LIBOR xing LIBOR start LIBOR end Dates "line up"?
04-Jun-12 28-Feb-12 01-Mar-12 01-Jun-12 No
04-Sep-12 30-May-12 01-Jun-12 04-Sep-12 No
03-Dec-12 31-Aug-12 04-Sep-12 04-Dec-12 No
04-Mar-13 29-Nov-12 03-Dec-12 04-Mar-13 Yes
03-Jun-13 28-Feb-13 04-Mar-13 04-Jun-13 No
03-Sep-13 30-May-13 03-Jun-13 03-Sep-13 Yes
03-Dec-13 30-Aug-13 03-Sep-13 03-Dec-13 Yes
03-Mar-14 29-Nov-13 03-Dec-13 03-Mar-14 Yes
For example, in the second row, although the LIBOR end date coincides with the payment date,
the LIBOR start date is not the same as the payment date from the previous period, hence the
dates do not "line up" and there is a "no" in the last column.
This means that in practice, Eq. (5) does not hold;
While the errors introduced by making the assumptions above are generally quite small, any
deviation from a correct price that a pricing calculation yields may be exploited by placing an
appropriately large multiplier in front of it and executing trades that form an appropriate arbitrage
engine. Even if we neglect potential losses owing to incorrect pricing, these assumptions
have had a profound effect on the perception of curve-building technology. It propagates the
belief that bootstrapping calculations require Eq. (6) to hold, when in fact Eq. (6) just affords a
premature optimization.
There is nothing to stop a curve-building framework from bootstrapping D(t) by numerically
inverting Eq. (3), solving for D(t
n
) for a series of quotes s of increasing maturities. We shall
explore the design principles and demonstrate the application of such a framework in Sec. 4.
Another unfortunate consequence of these assumptions in some pricing systems was that
while they persisted inside curve-builders, they were not necessarily assumed in the swap
pricing systems that consumed the results of curve-building. As we shall see in Sec. 4, an
important design requirement for curve-building frameworks is a guarantee that the same pricing
calculation used in valuing a trade is reused when that trade's value is calculated inside a curve-
building algorithm. Only then can the resulting curves yield a consistent pricing model.
3.3 CURRENT CHALLENGES
The credit crisis of 2008 and its aftermath have eclipsed all other inuences on curve-building
in the last decade and so we shall focus on those inuences here. In late 2008 spreads between
LIBOR and Overnight Indexed Swap (OIS) rates became so large that it was no longer possible
to survive in the rates markets with curves based on an assumption of S(t) = 0. Fig. 7 shows the
spread of 3-month USD LIBOR over par OIS rates based on the Federal funds rate.
The Past, Present and Future of Curves | 14
Fig. 7. The spread of 3-month USD LIBOR over the US Federal funds rate during the credit crisis
of 2008-9.
While the spread maintained its historical levels of around 10bps, institutions which incorporated
their funding spread into their pricing curves (as described in Sec. 3.2.1) made prots at the
expense of those which did not, but the effect was not so dramatic that a market participant with
no treatment of funding spread could not at least survive, if not enjoying some of the success
that might otherwise have been available. But by the end of 2008, when the spread was several
percentage points in magnitude, it could no longer be ignored.
Furthermore, as has been highlighted by recent media coverage (see [4]), the limitations of LIBOR
as a proxy for borrowing costs became apparent. Whereas the overnight rates on which OIS
are based are averages of actual transactions, LIBOR is merely a bank's stated opinion of the
rate that other banks would charge it for a loan. Sophisticated market participants, with non-
zero funding spreads, appreciated all along that it should be treated with at least a degree of
suspicion as an indicator of an institution's real borrowing costs. However, when there is a 5%
spread between a stated opinion and actual trades, it is hard for the world at large to ignore that
LIBOR is not a true proxy for funding costs.
In the aftermath of the crisis, there is a sharp focus on counterparty exposure and attempts
to reduce or eliminate it, by means of collateral agreements and central clearing. In such
agreements, the rate that posted collateral earns is specied in the contract, which in turn
implies that this contract rate is the effective funding rate for the derivative. In other words, the
appropriate rate at which cash ows should be discounted when valuing a collateralized trade is
the rate at which collateral earns interest.
A common collateral agreement species a cash deposit accruing at the overnight rate in the
relevant currency, such as the federal funds rate in the US, SONIA in the UK and EONIA in the
Eurozone. If the discount curve is to be that curve whose implicit rate is the overnight rate, then
that provides tight constraints on methodologies for building a discount curve D(t). In particular,
LIBOR swaps are no longer of interest and must be replaced with OIS instead, because they
reference the overnight rate explicitly. In Sec. 3.3.1, we consider this problem in detail.
Spread of 3m USD LIBOR over Fed Funds
S
p
r
e
a
d

(
b
p
s
)
450
250
350
150
0
400
200
50
300
100
-50
Q4 2006 Q4 2007 Q4 2009 Q2 2007 Q1 2009 Q3 2008 Q1 2010
15 | The Past, Present and Future of Curves
3.3.1 OIS DISCOUNTING
An OIS pays a xed coupon in return for a compounded overnight rate. Use the annuity from
Eq. (1) and a oating leg
where the compounded rate R(s,t) is given implicitly in terms of the underlying (in this case
overnight) rates r(t) by
where
and where
i
is the accrual fraction for the i
th
period in the interval from s to t. We can then
express the present value of an OIS with coupon c as
We note in passing that a variant of this type of swap is one which pays the par OIS rate s that
solves G(s) = 0, but we shall not consider such structures here.
Happily, the assumption of Eq. (4), while an unwelcome approximation before, is precisely what
we require now that we aim to nd the discount curve whose rate is the overnight rate. If we
express the overnight rate as
then upon substituting into Eq. (17), the product telescopes to leave the simple expression
This in turn is just the simplest bootstrapping problem described in Sec. 3.1.
While the characteristics of LIBOR and its use as a reference rate are under active discussion
(see [4]), several trillions of dollars of existing contracts based on it, coupled with the challenge
of nding a viable replacement, means that it remains a cornerstone of the nancial industry. We
must therefore address the problem of bootstrapping a LIBOR curve, given the discount curve
D(t) implied by OIS quotes.
It is exactly this problem that has caused so much recent interest in curve-building and
reworking of systems. However, we recognize it as no more complex than the funding spread
problem of Sec. 3.2.1. We must model LIBOR using Eq. (9) and apply a subsequent bootstrap
based on LIBOR swaps. A key difference now, though, is that whereas before the funding spread
was specic to an institution and something relatively difcult to pin down, the spread S(t) now
represents the spread between LIBOR and the corresponding overnight rate, which is the same
for everyone participating in markets where the collateral agreement species that posted
collateral earns the overnight rate.
The Past, Present and Future of Curves | 16
Note that this analysis is appropriate for the valuation of any instrument for which a collateral
agreement denes the rate at which posted collateral accrues interest, which implies the cost
of funding for any hedges for the trade, and therefore picks out the appropriate discount curve
for the valuation. If no such collateral agreement exists, then we are back where we started,
with the development of Sec. 3. Consequently, if we are to incorporate counterparty default risk
into pricing by means of a suitable curve (as opposed to an explicit exposured-based calculation
such as a Credit Value Adjustment or CVA), it is of course dependent on the collateral agreement.
3.3.2 CHOICE OF COLLATERAL CURRENCY
Life under an agreement that species the single rate at which collateral earns interest is
relatively simple. A signicant number of agreements, however, allow collateral to be posted in
one of a collection of currencies. This has caused, in the words of Risk magazine ([5]), "chaos"
in the market. The most alarming aspect is the apparent option to choose collateral currency,
which, if signicant, would mean that simple linear pricing (based on curves such as L(t) above)
would no longer be viable for swap trading operations and market volatility would have to be
incorporated instead.
Deferring for the moment a discussion of how one should treat each incremental trade made by
an institution, it is extremely unlikely that this option can be monetized. In particular, in order to
extract this value, one rst has to establish that the option actually exists from a legal standpoint.
Rather than opine on this question, we note that there is no consensus within the marketplace
and also that interested parties such as ISDA have moved to eliminate, through documentation
changes that remove the currency choice aspect of collateralization agreements, not the
uncertainty in the answer but rather the question itself (see [6]).
Secondly, one would have to be able to manage the option position over time by changing the
currency of the posted collateral. This raises the issue of intraday risk. For example, consider
switching the posted collateral from Yen to US dollars. The mechanics of trade settlement would
require the counterparty to return the Yen collateral before receiving the replacement dollars. In
other words, each exercise of the option to change currency would require one or other of the
counterparties to bear settlement risk on the overall trade value.
Furthermore, in order to monetize the option, it would be necessary to make multiple switches
of the collateral. While this is not impossible, the associated trading costs can become quite
signicant. This is particularly relevant if one considers any attempt to hedge the option.
The option is the difference in funding spread of two currencies, and this is the difference in
collateral accrual rates, adjusted for the effective funding differential from the associated FX
forward market. Therefore, any delta hedge, even in the relatively simple case of a choice of only
two currencies, would be formed from two forward-starting OIS swaps, one per currency, along
with a forward-starting FX swap.
In summary, the collateralization option might not exist from a legal perspective. If it does exist,
the risk associated with exercising the option is non-trivial, as are the associated costs of
managing and exercising the option on a frequent basis throughout the life of each trade. Despite
this, research ([7]) has suggested that the option may be valuable. For the reasons given above,
and also in line with our working at the portfolio, rather than trade level, we proceed on the basis
that the option, if it exists, can be treated as if it had zero volatility. This enables us to remain
within a curve-based framework, without neglecting the optionality completely.
Within such a framework, we can still perform a straightforward calculation to determine which
currency is the cheapest in which to deliver collateral. Under the assumption that collateral will
always be held in full in the currency that earns highest rate for the poster, this amounts to the
intrinsic value of the collateral delivery option.
17 | The Past, Present and Future of Curves
This cheapest-to-deliver (CTD) rate is
for M + 1 currencies, where R'
k
(t) is the FX-adjusted rate in currency k. Choosing currency 0 as
our numeraire, so that the set of FX rates { X
k
} k = 1 ... M give the value of a unit of currency
k, in currency 0 we can calculate R'
k
(t) by considering the rate earned on an investment of a
unit of currency 0 after it has been converted to the appropriate amount of currency k at the
prevailing FX rate at t, X
k
(t), invested in an account that earns the corresponding rate in currency
k, R
k
(t), then converted back to the numeraire currency 0 at time T, which follows t by an amount
determined by the rate's tenor.
The FX adjusted rate for currency i is therefore given by
where t is the start of the borrowing period corresponding to an observation time of s, u is the
end of the same borrowing period and
t,u
is the day-count fraction calculated according to the
conventions appropriate for the numeraire currency.
Typically, the { R
k
(t) } are the overnight rates in each currency. Eq. (18) shows that each
overnight rate is a function of the corresponding discount curve if the usual approaches to
curve-building are followed. As explained in Sec. 3.2.2, cross-currency swaps can be used to
build a collection of curves that is consistent with both the domestic and cross-currency markets
for a collection of currencies. The cross-currency swap between our numeraire currency 0 and
currency k can be used to construct the discount curve in currency k, D
k
(t), for each k. Having
obtained the full set of { D
k
(t) }, the cheapest-to-deliver rate curve R(t) is straightforward to
construct by means of Eq. (20) and Eq. (19).
The end goal, however, is to nd the discount curve whose rate is R(t). This is most readily
accomplished as another bootstrap, where we sample the rate curve at a nite set of points
according to some chosen schedule, usually with a tenor equal to that of the rate R(t). In such a
bootstrap, the discount curve at a point t
p
(as in Fig. 1) is determined by a portfolio of offsetting
positions of
a payment of the rate and
the corresponding loan
whose present value is given, in the notation of Eq. (4), by
Happily, for overnight rates, it is usually the case that t
p
= t
b
and that coincides with the previous
sample's t
p
.
3.3.3 MULTIPLE DISCOUNTING METHODS
So far, we have examined several different approaches to modeling discount curves. These
approaches have included the historical approach of treating the LIBOR-discounting spread as
always zero, rening this to x the spread at zero for just one tenor in one currency, and then
using OIS discounting and other collateralization-based arguments to generate multiple discount
curves for multiple different collateralization agreements. These various approaches can be
thought of as the renement over time of a single coherent approach to discounting trades within
nancial markets, based on a general principle of consistency across instruments quoted to the
market. Within the nancial markets, the phrase "broker curves" - the name presumably refers
The Past, Present and Future of Curves | 18
to the fact that historically the quotes have been those of the interdealer broker market - is often
used to describe the implied discount curves that one can derive in this manner.
It is appropriate to reconcile this approach with both theory - "assume a risk-free rate" is a
boilerplate statement in many academic papers - and also reality, namely that every market
participant funds at their own level independent of the broker market. Taken at face value, either
of these statements appears to contradict the careful construction of consistent curves that we
have presented so far.
First, a brief aside. It is worth noting what "arbitrage free" means, from the perspective of a
market participant. While theoretical considerations are generally based on the assumption
that the markets themselves are populated by a set of well-funded rational economic agents,
each individually acting in a risk-neutral manner, this is clearly not the case in reality. However,
this does not make theories that rely on an arbitrage-free marketplace invalid. Given that this
assumption is a fundamental one for derivative pricing theory, this is somewhat reassuring. The
key point is that the practical requirement for any one market participant is that they can act as
if the market was arbitrage-free. Obviously, when this is no longer possible, theories and models
based upon such theories lose their applicability and even relevance.
Furthermore, the range of applicability of a pricing model can be limited in scope due to its
limited ability to replicate observed market prices. For example, while one would expect any
overall valuation of market-quoted trades to exactly match quoted prices, an exotic model with
a nite set of calibration instruments will generally not match the market prices of vanilla quoted
trades outside of the calibration set. In practice, this is not a major issue. The purpose of the
model is to manage the risk of one or more exotic trades, using (as much as possible!) trades of
the calibration instruments. The residual net position can then be managed in a different model.
In general this second model is more vanilla in nature and matches the market prices implied
by a much larger set of quotes. A good example of this is the use of a small set of coterminal
swaptions to calibrate a one-factor term structure model, compared against a european option
pricing model that uses interpolation methods to imply the Black volatilities throughout the entire
cube of swaption volatilities, matching each quoted option volatility in the process. Note that this
approach is essentially the same as the use of "control variates" ([8]) to reduce variance within
simulations.
Within the realm of curve-building, this approach can be used to link multiple sets of trades. The
natural grouping of trades is that induced by the counterparty and the associated settlement
mechanism, or in other words, the collateralization grouping of a set of trades. Within each
grouping, all cash ows can then be treated, at least conceptually, using a common set of
discount curves, one per currency.
These groups of curves can be dealt with two ways. Firstly, one could use a separate model
for each distinct group. Alternatively, one overall model with multiple effective discount curves
can be used. These effective curves are of the form D(t)H(t) for some "base" curve D(t) and a
per-grouping (aka per collateralization agreement) multiplier H(t). This latter approach enables
a consistent view of risk and other important statistics to be formed across portfolios of trades
containing deals from more than one group.
In the case of full collateralization for a given group of trades, and also specializing to the case
of swaps or similar trades whose value at inception is zero, the only net cash ows during
the lifetime of the trade are due to market movements. To see this, note that the collateral C
supporting a trade of value V has to obey dC + dV = 0, and for a set of ows F
i
at times t
i
,
19 | The Past, Present and Future of Curves
and any changes in V are driven by either market movements or ows F
i
at each time t
i
.
However, each cashow of the trade will cause a jump at t
i
of F
i
in V, leading to an equal and
opposite jump in C of F
i
. In other words, the net collateral ows are due only to prot and loss in
the trades.
In turn, this means that the funding that is needed for any one group of trades is that of the
net prot or loss of the trades. Assuming a consistent collateral requirement (ie C is accruing
at the same instantaneous rate as the change in value - excluding market movements - of V)
means that the cost of this funding is that of the collateral accrual rate; this is the so-called "OIS
discounting" of collateralized trades. It also implies that any market participant can isolate their
own funding costs, which in general are not going to be the same as that of any one group of
collateralized trades, and apply them to the residual ows due to market movements. Obviously,
other ows, such as those from "outright" trades like spot FX, and uncollateralized deals, have
to be included. These can be treated consistently, both in terms of this picture and also with
respect to historical approaches, by grouping them together and using an appropriate discount
curve, such as the S = 0 approach for a single currency described at the end of Sec. 3.2.2.
One consequence of the reality of multiple discount curves is the non-unique valuation of trades.
In turn, this implies that par trades in one group are not par trades in another group. Taking as an
example an interest rate swap of notional N paying a xed coupon C and referencing a LIBOR
rate L(t), the valuation of the swap for a multiplier H(t) is
where the t
i
are the xed payment dates, t
j
the oating payment dates, and s
j
the associated rate
xing dates. Quotes within the interbank market, where the current practice is for the quotes to
be on a cleared basis, value to par when H(t) is xed by discounting at the OIS rates used by the
central clearinghouses.
Now, an otherwise identical trade, but executed and settled on a different basis, does not
necessarily use the same relative multiplier H(t). As a result, whilst the market quote satises
VH

= 0, it is no longer true in general that VH

= 0 for an arbitrary relative multiplier curve H


2
(t).
Intuitively, this makes sense. A nancial institution of reasonable credit rating that is able to
participate freely within the interbank market is not going to price a market-quoted swap to
par when contemplating a trade with a junk-rated counterparty. The recent "switch to OIS
discounting" is simply the statement that the market now quotes interest rate derivatives on a
cleared basis; in other words swaps and similar instruments are quoted assuming that the trade
is settled through a clearinghouse and therefore the relevant relative multiplier is one that xes
discounting at the implied OIS curve rate. Equivalently, one could dene D(t) to be that of the OIS
curve and rescale all other H(t).
We conclude this section by noting that our observation about net collateralization also
highlights the difculty in providing a collateralized version of trades with a signicant FX
component. Either one collateralizes each currency separately, which implies two large and
nearly offsetting collateral positions in two currencies, or one has a net collateral position.
However, in the latter case the collateralization implicitly includes an FX trade that cancels out
the original underlying FX position!
The Past, Present and Future of Curves | 20
4 FUTURE-PROOF CURVE-BUILDING
Throughout Sec. 3, we have seen a progression through several specic calculations of
increasing complexity as more effects are incorporated into the curve-building procedure.
With naive implementations of these calculations, as each new level of complexity arrives, new
code is needed. This has required many valuation and risk systems to change signicantly and
institutions to devote considerable budget to effecting those changes.
However, with the right architecture, based on a comprehensive awareness of the true spectrum
of curve-building calculations as described in Sec. 3, this is all unnecessary. Whether it is
the incorporation of a funding spread, building a consistent set of multi-currency curves, OIS
discounting, or even more complex calculations, no structural changes are necessary as long
as the problem is expressed in terms of a suitable set of concepts, or abstractions. This section
is devoted to a description of such a set of concepts. In Sec. 5 and Sec. 6, we demonstrate a
concrete embodiment of them applied to some real-world curve-building problems.
In any description of generic concepts, there is the risk of speaking in abstract terms which
are difcult to relate to real problems. For this reason, throughout this section, we describe
the relevant set of concepts in the context of the rst and simplest concrete example below.
It should be understood, however, that the concepts themselves are far more general. To
emphasize this point, we give a table in Sec. 4.7 that shows a typical range of problems that
those same concepts can be used to solve. This yields a very high degree of code reuse, which
in turn results in efcient and maintainable systems.
In order to encode concepts, we operate within the object-oriented programming paradigm,
where they are represented as classes, or types. Object-oriented programming has enjoyed
ubiquitous success for solving software engineering problems for the last thirty years and
continues to do so. It has an undeserved reputation of being complex and hard to understand. An
object is simply an organized unit of data in a program that represents something in real life as
closely as possible. For example, a circle object in a geometry program might have the capability
to calculate and report its area, radius, diameter and circumference. It is the ability to dene new
types, or classes of object, so as to represent closely real-life phenomena, that gives object-
oriented programming much of its power.
In Sec. 2.1 we touched on the fact that curve-building is a special case of the general task
of calibration. In abstract terms, the act of calibration consists of comparing the value of a
collection of instruments under different valuation approaches, and adjusting the value of model
parameters in order to optimize some metric based on the difference in instrument values under
the two approaches. In the following sections, we consider each major component of this recipe
in turn, but before doing so we give a brief description of the idea of a Model, which is where the
calibration "lives".
4.1 MODEL
The task of deciding when calibrations need to be run (and, importantly, when they do not),
managing relationships between curves and ensuring that a given set of curves forms a
consistent, arbitrage-free view of the relevant nancial market, is that of a Model. For a detailed
description of the Model concept and related concepts that underpin the design of modern
analytics platforms, see [2].
21 | The Past, Present and Future of Curves
4.2 CALIBRATION TARGET
The CalibrationTarget concept is dened as follows:
Let us take as our example that of Sec. 3.3.1, where our model consists of three curves, D(t),
R(t) and L(t); the discount curve, overnight rate curve and LIBOR curve respectively. In such a
model, R(t) is implied from D(t) via Eq. (4) but the two remaining curves form the targets of two
separate calibrations. The rst calibration determines the discount curve from OIS quotes and,
given the resulting D(t) (and therefore R(t)), the LIBOR curve can be determined from LIBOR
swaps. For the purpose of illustrating the concept of CalibrationTarget, consider the rst of these
calibrations.
The required calibration target will contain the following information:
1. The number of target curves and their identities, in order to specify how they are to be used
in pricing. In our example, there is just one target curve, the discount curve.

To the reader accustomed to authoring bespoke pricing code for each new application that
arrives, the "identity" of a curve may not be a very intuitive idea. However, in the context of
a generic curve-building - and therefore valuation - framework such as that described in
[2], the construction and consumption of curves must be decoupled and curves must be
managed by something akin to a Model and a loose-coupling is maintained between the
Model and the valuation machinery that uses it.

Curves are given identiers (called tags) which are known by the valuations that need them.
This achieves the required decoupling of curve construction and consumption, so that when
the model changes nothing else has to. Another advantage is that all pricing code uses the
same curves, guaranteeing consistency across the spectrum of applications - from vanillas
to exotics, from pricing to risk. Yet another advantage is that any curve can be chosen as the
target of a calibration. To specify that a given curve is to be constructed in a calibration, we
simply supply its curve tag to the CalibrationTarget.
2. The dimensionality of the target curves. In our example, the discount curve is one-
dimensional since it gives the discount factor as a function of a single argument, time. A
"zero-dimensional curve" would be a constant parameter.
3. The number of optimizations to perform, where "optimization" is used in a general sense
to include root-nding algorithms. In our example, we wish to perform a bootstrap which,
as described in Sec. 3.1 means that a collection of optimizations (Sec 4.4) will be run in
order to determine the curve points, sequentially, in increasing time order. The number
of optimizations will equal the number of OIS quotes. An alternative approach would be
to perform just one optimization, determining all the points simultaneously. Spline-based
interpolation methodologies are notable for requiring this approach. Subsequent items in
this list are specic to one-dimensional bootstrap targets.
4. The interpolation method to use for each target curve. In our example, log-linear for D(t).
Denition 2. The Calibration Target concept
The identity and structure of each curve to be built.
The Past, Present and Future of Curves | 22
5. The initial state for the optimizations. For a given target curve, this could be a pre-specied
one-dimensional function giving the initial guess, or another curve. It could be the result of a
different curve-build or the result of the previous run of the build for the target curve, based
on the previous tick of market data. In our example, we might choose the function exp ( rt )
with r = 20%.
6. The anchoring policy for the target curves; whether or not each target curve is to be
anchored to a given point at time zero (an appropriate choice of point is that obtained by
evaluating the initial guess at time zero). In our example, D(0) would be xed at 1.
7. A constraint, if any, for each target curve. In our example, D(t) could be constrained to lie
within 0 and 1.
8. The denition of the common measure of time at which curve values will be determined in
each target curve. While straightforward in simple bootstrapping applications, a general
solution to this problem is hard to nd. In particular, it does not work to simply take the
maturity of a given bootstrapping instrument and convert it into time. Such a simple
approach would be ne for the points in a discount curve, assuming a payment is made
at maturity, but it is easy to nd examples of other curves for which this approach gives
the wrong answer, such as a LIBOR curve, because its natural payment time follows its
observation (or xing) time by the rate's tenor. For example, for the semi-annual swap
maturing at one year used in Fig. 3, the LIBOR curve is evaluated at around 6 months, not a
year.

Fortunately, we can adopt a pragmatic approach in any implementation of a generic
calibration framework, which is to run a sample valuation of a given instrument, with
target curves that possess the capability to remember the latest time at which values were
requested during the calculation. The value of the instrument is of no interest and can be
discarded, but the latest time for each curve is precisely that time at which a curve point
should be constrained in the target curve.

This is also the appropriate place to control the algorithm for determining such times. For
example, we might choose to drop instruments resulting in a target curve time which is
not greater than the latest such time found so far. Or we might choose not to use the time
determined by the above "throw-away" valuation and use the date of some event, such as
the meeting of a rate-setting committee, instead.
4.3 INSTRUMENT STRATEGY
The InstrumentStrategy concept is dened as:
An InstrumentStrategy encodes the collection of instruments to be valued under the source
and target valuation approaches (see Sec. 4.5 and Sec. 4.6). In a bootstrap, these instruments
are organized into groups, usually ascending in maturity. Each group is used in a separate
optimization to determine curve points at the relevant times for that group.
The number of instruments in each group must be greater than or equal to the number of
target curve points for the problem to be well-posed. If equal, then we have a determined
Denition 3. InstrumentStrategy concept
The specication of which instruments to value during the calibration.
23 | The Past, Present and Future of Curves
system and a root-nding algorithm is usually best suited to solving it. If greater, then we have
an overdetermined system and some form of optimization algorithm, that minimizes a metric
between source and target valuations, is required. Often, we simply have one curve and one
instrument at each curve point, as in our current example, where the instruments consist of a
collection of OIS.
An example of a calibration with multiple instruments in each group is found in most volatility
models, where quotes for a range of strikes are available at each option expiry. On the other
hand, an example of a calibration with just one group would be for any model with a at term
structure for its parameters.
Given that calibration is based on instrument valuation, and that instruments are quoted in the
market, it is important for analytics systems to represent each trade consistently and apply the
same technology to its valuation, whether the trade's valuation with a calibrated model is the end
goal or the trade is being valued inside a calibration. Only then will the end results of valuation
be consistent and correct. With an appropriate architecture, this consistency can be enforced
across all valuations, from vanilla to exotic. With a more naive approach based on encoding the
formulae appearing in this article directly, such consistency remains elusive even for some of the
simplest problems.
4.4 OPTIMIZER
The Optimizer concept is dened as follows:
The optimizer species the metric to be optimized and the numerical algorithm by which
optimization will proceed. If there is only one degree of freedom in the optimization, a simple one-
dimensional root-search algorithm can be applied based on the metric of absolute difference
between the value of a single instrument under the two valuation methodologies. This is the
scenario we nd in our example. Higher dimensional root-searches can be used for determined
systems, as described in Sec. 4.3.
The "workhorse" of optimization is the Levenberg-Marquardt gradient descent algorithm, which
nds a minimum of the
2
metric
where X
i
is the value of the i
th
instrument under the source valuation specication (see below),
Y
i
(x) is the value of the i
th
instrument under the target valuation specication (see Sec. 4.6 below)
and x is the vector of model parameters being varied in order to satisfy d
2
= 0.
A well-known limitation of any gradient descent approach is a susceptibility to nding local
minima, if they exist. Various forms of stochastic optimization are available that can mitigate this
problem, but in practice, it is very common to use a previous calibration as the initial condition for
a subsequent one, which provides an alternative mitigation.

Denition 4. The Optimizer concept


The metric to be minimized and the algorithm by which it is achieved.
The Past, Present and Future of Curves | 24
4.5 SOURCE VALUATION APPROACH
Fundamentally, calibration is the act of minimizing pricing error, generally by comparing the
valuation of the same thing under two different approaches. One of the approaches is known,
and often trivial, such as "value to par". This is called the source approach. The other approach is
the one that is based on the curves listed in the CalibrationTarget and is the topic of Sec. 4.6. The
source side of the comparison can therefore be dened as:
Correspondingly, the target side of the comparison can therefore be dened as:
Given Denition 5, we can dene the SourceValSpec concept as follows:
This is nothing more than the ValSpec concept, as dened in [2] applied to the SourceValuation.
In our example, the source valuation approach is a trivial one in which the value of every
instrument is zero. This is typical for the calibration of the simple curves that form the focus of
this article. In volatility calibrations, however, it is typically a closed-form implementation of the
Black model ([1]) for quoted European options or swaptions. These two choices do not provide
sufcient generality to cover all calibration problems. By identifying the SourceValSpec as a
major concept in calibration, we are free to specify any model and any valuation approach based
on known parameter values.
4.6 TARGET VALUATION APPROACH
As with the SourceValSpec (Denition 7), the TargetValSpec is a simple application of the
ValSpec concept (see [2]) to Denition 6. The vast majority of curve-building applications need
a simple closed-form approach where instrument values are calculated as functions of curves
which in turn give the expected values of the relevant model parameters.
The key aspect of the target valuation is that it must depend on the target curves. Beyond this,
there are no fundamental constraints, as with the SourceValSpec. We are free to choose any
ValSpec we like, although an approach based on formulae known in closed-form (or quasi
closed-form) is typical for reasons of performance. This does not mean that other valuation
approaches are not viable, however. For example, Subsec. 4.7 includes an example of calibrating
Denition 5. The source valuation
The valuation that yields known values in the calibration.
Denition 6. The target valuation
The valuation based on the curves specied in the CalibrationTarget.
Denition 7. The SourceValSpec concept
How the SourceValuation is to proceed, numerically.
Denition 8. The TargetValSpec concept
How the TargetValuation is to proceed, numerically.
25 | The Past, Present and Future of Curves
the correlations between Brownian motions driving a hybrid simulation to correlations between
real market observables, where the target valuation proceeds via Monte Carlo. In our example, a
simple closed-form approach is sufcient.
4.7 CALIBRATION SHOWCASE
In order to appreciate the wide range of applicability of the concepts described in this article,
the following table showcases a variety of different types of calibration from simple curve-builds
to complex exotic calibrations. In most cases, we are calibrating models to market quotes, but
some cases the calibration is of one model to another model. In the last row of the table, we
mention an application of this conceptual calibration framework to structuring. Such exotic
examples are beyond the scope of this article, whose focus is on simple curve-building, so they
are merely mentioned briey.
Description CalibrationTarget InstrumentStrategy Optimizer SourceValSpec TargetValSpec
LIBOR discount
curve
Bootstrap the discount
curve D(t)
Cash deposits, Futures/
FRAs, vanilla LIBOR
swaps
1-d root search Par Simple closed-form
OIS discount curve Bootstrap the discount
curve D(t)
OIS 1-d root search Par Simple closed-form
LIBOR curve under
OIS discounting
Bootstrap the LIBOR
curve L(t)
FRAs/Futures, vanilla
LIBOR swaps
1-d root search Par Simple closed-form
LIBOR curve of
alternative tenor
Bootstrap a second
LIBOR curve L'(t)
LIBOR tenor basis swaps 1-d root search Par Simple closed-form
OIS discounting
and LIBOR together
Bootstrap the discount
curve D(t) and LIBOR
curve L(t)
Vanilla LIBOR swaps
and LIBOR-OIS basis
basis swaps, paired by
maturity
2-d root search Par Simple closed-form
Foreign discount
curve, LIBOR
discounting
Bootstrap the discount
curve D
A
(t) and the
LIBOR curve L
A
(t) in
currency A
Currency A LIBOR
swaps and cross-
currency swaps
2-d root search Par Simple closed-form
Market calibration
of the shifted-
lognormal model
Bootstrap the volatility
and shift curves in the
shifted-lognormal model
Given an N expiries by M
strikes grid of European
options, form N groups
of M options
2-d gradient
descent
optimization
The Black model
in closed-form
The shifted-
lognormal model in
closed-form
Market calibration
of the Hull-
White model to
price Bermudan
swaptions
Bootstrap a Hull-White
short rate volatility curve
A co-terminal strip of at-
the-money swaptions
1-d root-search The Black model
in closed-form
The Hull-White
model in closed-
form
Market calibration
of the 3-factor
Hull-White
Bootstrap the short-rate
volatility curves in a
3-factor Hull-White
model
3 strips of at-the-money
swaptions
3-d gradient
descent
optimization
The Black model
in closed-form
The 3-factor Hull-
White model in
closed-form
Calibrate 3-factor
Hull-White to
a previously
calibrated LIBOR
market model
Bootstrap the short-rate
volatility curves in a
3-factor Hull-White
model
3 strips of at-the-money
swaptions
3-d gradient
descent
optimization
The LIBOR
market model in
closed-form
The 3-factor Hull-
White model in
closed-form
Calibrate a
stochastic volatility
LIBOR market
model to a SABR
volatility cube
The parameters
in a suitable
parameterization of the
covariance matrix
A 3-d grid of swaptions N-d gradient
descent
optimization
The SABR in
closed-form
A stochastic
volatility LIBOR
market model
Find the par rate
of a CVA-adjusted
callable dual
CMS-LIBOR spread
range accrual
swap
Fixed coupon of swap Portfolio of the swap
and a negatively
weighted CVA trade on
that swap
1-d root-search Par Monte Carlo
simulation
The Past, Present and Future of Curves | 26
5 EXAMPLE: SIMPLE DUAL-CURVE OIS
DISCOUNTING BOOTSTRAP
While Sec. 4.7 describes a wide range of calibration problems of varying degrees of complexity,
in order to provide an introductory illustration of the ideas presented in Sec. 4, we choose a
simple example of bootstrapping two curves, a Euro discount curve and a 6-month Euro LIBOR
curve, from OIS and LIBOR swaps. While a realistic example would contain more complexity,
such as other instruments, we present a simplied version of this calculation here in order to
focus on the core concepts involved in any such calculation.
The relevant concepts are embodied in F3, a modern analytics platform whose architecture
represents a distillation of the accumulated wisdom of over two decades of sell-side analytics
library development.
While we could have chosen Java, C#, MATLAB or Microsoft Excel to drive F3, for this example
we have chosen C++. We are free to make this choice because F3 is guaranteed to be consistent
across all interfaces and platforms. To start F3, we need a Context, which represents one user's
view of the state available to work with.
#include "f3object.hpp"
const fncad::interface::Library library( "f3cpp:") ;
const context_t F3( library, "5.1" );
In what follows, a generic calibration framework implementing the ideas in Sec. 4 is used directly
to build two curves. For convenience, the operations detailed here would typically be wrapped in
a higher-level interface and/or driven from a user-interface in an application. Such hiding of the
underlying concepts, however, does not help to demonstrate them. For this reason, we present
an example of the underlying framework being driven directly, in order to demonstrate each
concept from Sec. 4 explicitly. Despite this approach, the example is very concise, showing the
utility and relevance of the set of concepts.
5.1 DISCOUNT CURVE
In F3, the Model concept is embodied by a class called Model. Models are constructed in a series
of steps, where in each step we take an underlying model and construct a new model with all the
properties of the underlying, plus some new capability. At the start of this process is an empty
model:
using namespace fncad::f3;
Model model = Model::CreateEmptyModel( F3 );
An important member function of Model is ExtendModelWithCalibratedCurves, which allows an
arbitrary calibration to be expressed in terms of objects that represent the concepts discussed in
Sec. 4. The InstrumentStrategy (Subsec. 4.3) can be constructed as follows:
const instrument_type& euroOIS =
InstrumentType::EUR_OIS( F3 ); // extract built-in object from the F3 context

InstrumentStrategy oisStrategy =
InstrumentStrategy::CreateElementInstrumentStrategy( F3,
marketdata_tag( euroOIS ) );
Conceptually a marketdata_tag is a label (in fact it is a pair of strings) for a particular type of
market data. Arbitrary user-specied labels can be chosen by the user, but in this case we are
using the default label for the given type of quote, in this case Euro OIS.
27 | The Past, Present and Future of Curves
We also need a CalibrationTarget (Sec. 4.2), an important part of which is the specication of the
initial conditions for the calculation. In this case, we choose a curve decaying exponentially at a
rate given by the corresponding OIS quote. If the set of N quotes is { s
i
} i = 1 ... N for maturities
{ t
i
} i = 1 ... N, dene the set of points { F
i
} via
Then the initial guess curve can be constructed by interpolating these points log-linearly. This is
implemented in F3 as follows:
curve_tag dfGuess( "EUR-DiscountCurve", "InitialGuess" );
model = model.ExtendModelWithContinuousCompoundingCurve( curve_tag( dfGuess ),
marketdata_tag( euroOIS ) );
Note that no curves have been built yet - we are merely adding instructions for how to build
curves to the model. Each curve is identied in the model via a curve_tag. Curves which just
form inputs to other curve-build instructions can be identied using user-specied tags, but
curves used directly by valuation engines must be tagged in the way that F3 expects, otherwise
its valuation engines will not nd the required curves. For this reason, when constructing the
CalibrationTarget in the following code which identies the Euro discount curve as the curve to
be built, its tag is generated from the currency.
curve_tag discountCurve = DiscountCurveTag( F3, currency( "EUR" ) );
CalibrationTarget discountCurveTarget =
CalibrationTarget::CreateOneDimensionalCalibrationTarget( F3,
curve_tags( discountCurve ),
interpolation_methods( InterpolationBuilder::LogLinear( F3 ) ),
calib_initial_guesses( dfGuess ) );
Note that the above call caters for multi-dimensional calibrations, which is why the types of its
input arguments are collections. In our case, however, we have just one target curve, so we form
collections with just one element. This is also where many other settings such as constraints can
be specied, but we are choosing the default values of these optional arguments.
Given the calibration target and instrument strategy, we can now congure the build of the
discount curve itself.
model = model.ExtendModelWithCalibratedCurves(
discountCurveTarget,
oisStrategy,
CalibrationOptimizer::RootSearch( F3 ),
ValuationSpecifcationBuilder::ZeroValueProduct( F3 ),
ValuationSpecifcationBuilder::Passthrough( F3 ) );
In the third argument in the above call, we have specied that curve values will be found using
a root-search algorithm with default settings, via the RootSearch Optimizer (see Sec. 4.4). The
fourth argument ensures that the SourceValuation is one where all products have zero value.
In this case, it ensures that the swaps used to bootstrap the discount curve value to par. In the
fth argument, the TargetValuation is congured to "pass through" to the model-wide valuation
settings which, because not explicitly congured when constructing the empty model, are the
default settings, which for swaps is the simple closed-form approach encoded in the formulae in
Sec. 2 and Sec. 3.
A discount curve is sufcient to value the xed leg of an OIS, as per Eq. (1). For the oating leg
Eq. (16), two curves are needed; the discount curve and the overnight rate curve (r(t) in Eq. (17)).
We can express the idea of Eq. (4) as follows.
model = model.ExtendModelWithImpliedRateCurve(
Index::EONIA( F3 ).OvernightRateCurveTag(),
discountCurve,
MarketConventions::TARGETDaily( F3 ) );
The Past, Present and Future of Curves | 28
We now have a model with enough information to build a discount curve, once some market data
arrives, but before proceeding to build it, we congure a LIBOR curve bootstrap also.
5.2 LIBOR CURVE
The approach we take to the construction of the LIBOR curve is in fact very similar to that for the
discount curve. Instead of OIS, the instrument strategy species a collection of LIBOR swaps.
Instead of exponential decay (log-linear interpolation) for the initial guess and nal curve, we
select linear interpolation (with linear as opposed to at extrapolation). Otherwise, the procedure
is identical.
const instrument_type& liborSwap = InstrumentType::EUR_IRS_Semi_Libor_6m( F3 );
InstrumentStrategy irsStrategy =
InstrumentStrategy::CreateElementInstrumentStrategy( F3,
marketdata_tag( liborSwap ) );
curve_tag liborGuess( "EUR-LIBOR-6m", "InitialGuess" );
Model model = model.ExtendModelWithInterpolationCurve(
liborGuess,
marketdata_tag( liborSwap ),
InterpolationBuilder::LinearWithLinearExtrapolation( F3 ) );
const curve_tag& liborCurve = Index::LiborEUR6m( F3 ).LiborRateCurveTag();
CalibrationTarget liborCurveTarget =
CalibrationTarget::CreateOneDimensionalCalibrationTarget(
F3,
curve_tags( liborCurve ),
interpolation_methods( InterpolationBuilder::Linear( F3 )),
calib_initial_guesses( liborGuess ) );
model = model.ExtendModelWithCalibratedCurves(
liborCurveTarget,
irsStrategy,
CalibrationOptimizer::RootSearch( F3 ),
ValuationSpecifcationBuilder::ZeroValueProduct( F3 ),
ValuationSpecifcationBuilder::Passthrough( F3 ) );
5.3 MARKET DATA
Before we have a model that is ready for valuation, we must add a snapshot of market data to it.
In a real application, this data would be taken from a feed, but for the purpose of this illustrative
example, we write out a sample dataset explicitly. Also, we use a vector initialization feature
from C++11 (see [9]) for brevity. In C++03 ([10]) the same functionality is available using the Array
library from Boost ([11]).
typedef maturity_descriptor m;
std::vector< quote_specifcation > oisMaturities =
{{m("1m"),m("2m"),m("3m"),m("4m"),m("5m"),m("6m"),m("7m"),m("8m"),
m("9m"),m("10m"),m("11m"),m("1y"),m("15m"),m("18m"),m("21m"),
m("2y"),m("3y"),m("4y"),m("5y"),m("6y"),m("7y"),m("8y"),m("9y"),
m("10y"),m("11y"),m("12y"),m("15y"),m("20y"),m("25y"),m("30y")}};
std::vector< double > oisQuotes =
{{0.00338,0.00331,0.00328,0.00325,0.00324,0.00323,0.00325,0.00327,
0.0033,0.00335,0.00339,0.00334,0.00364,0.00392,0.00422,
0.00448,0.00632,0.00847,0.01063,0.01277,0.01467,0.0163,0.01768,
0.01889,0.01995,0.0209,0.02281,0.02376,0.02356,0.02317}};
Market data is essentially a collection of labeled numbers. In F3, the label is chosen to contain
sufcient information to allow reconstruction of the quoted instrument as a Product instance,
which in turn facilitates valuation. The label, other than the maturity, or more generally "quote
29 | The Past, Present and Future of Curves
specication" (which could be, for example, the strike, expiry and swap length for a swaption) is
in the form of an InstrumentType object of which there are several built into F3 for commonly
traded instruments. We used the relevant instrument type in Sec. 5.1 when constructing the
InstrumentStrategy.
MarketDataSet ois =
MarketDataSet::CreateHomogeneousMarketDataElement(
F3,
euroOIS,
quote_specifcations( oisMaturities ),
quotes( oisQuotes ) );
We can now do precisely the same for the LIBOR swap quotes.
std::vector< quote_specifcation > irsMaturities =
{{m("2y"),m("3y"),m("4y"),m("5y"),m("6y"),m("7y"),m("8y"),m("9y"),m("10y"),
m("11y"),m("12y"),m("13y"),m("14y"),m("15y"),m("16y"),m("17y"),m("18y"),
m("19y"),m("20y"),m("21y"),m("22y"),m("23y"),m("24y"),m("25y"),m("26y"),
m("27y"),m("28y"),m("29y"),m("30y"),m("35y"),m("40y"),m("50y")}};
std::vector< double > irsQuotes =
{{0.01148,0.0128,0.01463,0.01657,0.01846,0.02014,0.02156,0.02273,0.02375,
0.02464,0.02543,0.02607,0.02658,0.02696,0.02724,0.02741,0.02751,
0.02754,0.02753,0.02748,0.0274,0.02731,0.0272,0.02708,0.02696,
0.02683,0.02672,0.02661,0.02652,0.02627,0.02618,0.02612}};
MarketDataSet irs =
MarketDataSet::CreateHomogeneousMarketDataElement(
F3,
liborSwap,
quote_specifcations( irsMaturities ),
quotes( irsQuotes ) );
It can be useful to consolidate separate market data sets into a single object, which can be
achieved in the following manner.
std::vector< MarketDataSet > both( 2, ois );
both[1] = irs;
MarketDataSet euroQuotes = MarketDataSet::CombineMarketDataSets( F3, both );
Our nal step to prepare for valuation is to add the market data to our model. So far, our model
contains only curve-building instructions. In practice, these tend to change rarely. Market data
on the other hand change frequently and so are treated separately from the instructions, as
follows.
model = model.UpdateModel( euroQuotes,
valuationDate );
The Past, Present and Future of Curves | 30
5.4 ROUND TRIP
We are now ready to build the curves. Part of a Model's job is to build curves, if they have not
been built already, or return a cached curve if they have (and if other curves or market data
on which they depend have not changed). We can request each curve explicitly or delegate
that job to the appropriate valuation engine. We choose the latter by taking each quoted swap
and valuing it. We can construct each quoted swap automatically from the market data, which
is an important reason for choosing to label the quotes with objects rather than just passive
information.
std::vector< Product > overnightIndexSwaps =
model.CreateCalibrationProducts( euroOIS );
std::vector< Product > liborSwaps =
model.CreateCalibrationProducts( liborSwap );
The act of valuation in F3 is performed by calling the function ValueProduct, to which we make
requests.
typedef valuation_engine_requests req_t;
const req_t requests = req_t::SingleCurrencyValue()
+ req_t::ParRate()
+ req_t::RiskReport();
If the curve-builds have worked, the model will be consistent with the given market snapshot.
This means that each swap will value to par (to within some tolerance dened by the settings in
the Optimizer) and the par rate of each swap will match the quote.
double tolerance( 1.0e-7 );
for ( std::size_t n = 0; n < overnightIndexSwaps.size(); ++n )
{
ProductValue result = model.ValueProduct(
overnightIndexSwaps[n],
ValuationSpecifcation::ClosedForm( F3 ),
requests );
assert( std::abs( result.SingleCurrencyValue().as<double>() ) < tolerance );
assert( std::abs( result.ParRate().as<double>() - oisQuotes[n] )< tolerance );
}
for ( std::size_t n = 0; n < liborSwaps.size(); ++n )
{
ProductValue result = model.ValueProduct(
liborSwaps[n],
ValuationSpecifcation::ClosedForm( F3 ),
requests );
assert( std::abs( result.SingleCurrencyValue().as<double>() ) < tolerance );
assert( std::abs( result.ParRate().as<double>() - irsQuotes[n] )< tolerance );
}
This match between quoted rates and calculated par rates, showing that the bootstrap resulted
in curves that are consistent with the market, is illustrated in Fig. 8.
31 | The Past, Present and Future of Curves
Fig. 8. Comparison between quoted and calculated rates.
This completes the range of consistency checks that are possible in most analytics libraries, but
F3 has a further check up its sleeve, owing to its unique Universal Risk Technology
TM
(see [12]).
This guarantees comprehensive analytic rst order exposure calculation without bumping for all
models and valuation methods, including Monte Carlo. We asked F3 to calculate this exposure in
this example by including RiskReport in the list of valuation requests. For a detailed description
of the information available in an F3 risk report, see [2].
The amount of information in an F3 risk report is considerably large and we have one risk report
for each instrument from which we bootstrapped our curves. In Fig. 9 we have selected a small
subset of these risk reports - those for the rst ve OIS. We can clearly see that the exposure of
each swap is zero to all quotes except the one to which it corresponds. This is true generally, by
construction - each instrument, whether OIS or LIBOR swap, is only exposed to its quote and no
other.
300
100
200
0
1
m
P
a
r

r
a
t
e

(
b
p
s
)
3
y
9
m
1
1
y
5
m
7
y
1
5
m
2
5
y
3
m
5
y
1
1
m
1
5
y
7
m
9
y
2
1
m
OIS round trip
2
m
4
y
1
0
m
1
2
y
6
m
8
y
1
8
m
3
0
y
4
m
6
y
1
y
2
0
y
8
m
1
0
y
2
y
300
100
200
2
y
P
a
r

r
a
t
e

(
b
p
s
)
1
8
y
1
0
y
2
6
y
6
y
2
2
y
1
4
y
3
0
y
4
0
y
5
0
y
4
y
2
0
y
1
2
y
2
8
y
8
y
2
4
y
LIBOR swaps round trip
1
6
y
3
y
1
9
y
1
1
y
2
7
y
7
y
2
3
y
1
5
y
3
5
y
5
y
2
1
y
1
3
y
2
9
y
9
y
2
5
y
1
7
y
0
Market quote
Calculated par rate
Market quote
Calculated par rate
The Past, Present and Future of Curves | 32
Fig. 9. Exposure of ve OIS instruments to the available market data. The delta-function nature
of each risk report shows that the bootstrap has succeeded. Exposure here is dened as the
partial derivative of the value of the instrument with respect to each market quote.
In contrast, Fig. 10 shows the exposure prole of a sample portfolio of off-market swaps created
as follows
std::vector< std::string > maturities =
{{"1y","2y","3y","4y","5y","6y","7y","8y","9y","10y"}};
std::vector< double > coupons =
{{0.02,0.022,0.023,0.024,0.025,0.026,0.027,0.028,0.029,0.03}};
std::vector< product > constituents( coupons.size() );
for ( std::size_t n = 0; n < coupons.size(); ++n )
constituents[n] = Product::CreateInterestRateSwap(
F3,
date_t( "2012-09-24" ),
maturities[n],
notional_structure( "10Mio"),
currency( "EUR" ),
coupons[n],
MarketConventions::SwapEURSemiFixed( F3 ),
Index::LiborEUR6m( F3 ),
real( 0.0 ),
fncad::f3::payrec::Pay(),
MarketConventions::SwapEUR6mFloating( F3 ) );
Product portfolio = Product::CreatePortfolioProduct( F3,
constituents );
OIS Exposure
4
x10
5
1m
1m
3m
3m
2m
2m
4m
4m
5m
5m
Instrument
Quote
2
3
1
0
33 | The Past, Present and Future of Curves
The exposure report is generated through the RiskReport request just as in Sec. 5.4. We can see
clearly that the exposure is spread over a range of quotes - some exposure falls in almost every
available bucket.
Fig. 10. Exposure of a portfolio of off-market swaps, given as the notional required in each
quoted instrument to construct a hedge that would result in zero market exposure.
Exposure to OIS quotes
H
e
d
g
e

n
o
t
i
o
n
a
l
1
m
1
5
m
7
m
3
y
9
y
3
m
1
8
m
9
m
4
y
1
0
y
4
m
2
1
m
7
y
1
0
,
5
y
1
1
y
6
m
2
y
8
y
1
y
6
y
1
2
y
x10
5
10
5
0
-5
H
e
d
g
e

n
o
t
i
o
n
a
l
x10
7
1.5
0.5
-0.5
1
0
-1
2y 6y 4y 8y 11y 3y 7y 10y 5y 9y 12y
Exposure to LIBOR swap quotes
Quote matuirty
The Past, Present and Future of Curves | 34
When the model described in this section is used in a valuation, F3's valuation machinery
requests the relevant curves. However, it is also possible to query a model directly for curve
values, in order to visualize the curves as in Fig. 11.
Fig. 11. The curves determined by the bootstrapping procedure.
Discount Curve
Rate Curves
Time (years)
1
4%
0.8
3%
0.6
2%
0.4
1%
0.2
0%
0
0
30
30
10
10
40
40
20
20
50
50
D
i
s
c
o
u
n
t

F
a
c
t
o
r
F
o
r
w
a
r
d

R
a
t
e
s
6m Euro LIBOR
LIBOR points
EONIA
35 | The Past, Present and Future of Curves
6 EXAMPLE: MULTI-CURRENCY CSA
In Sec. 5 we went through a complete example of curve-construction, for curves in a single
currency. This example will be more illustrative, showing only the most relevant steps. The goal
is to construct a model appropriate for the valuation of a Sterling interest rate swap under a
collateral agreement that species full collateralization in cash, or a cash equivalent, where
collateral can be posted in either Sterling or Euros.
Let us assume that the procedure in Sec. 5 has been followed in both GBP and EUR, with the
following adjustment: we add an extra label to our market data that species the collateral
agreement under which the quoted trade is to be settled. For example, taking the EONIA
overnight indexed swaps from above,
const CollateralAgreement& euroCSA =
CollateralAgreement::FullyCollateralizedInEUR( F3 );
MarketDataSet euroQuotesEuroCSA =
MarketDataSet::CreateCollateralizedMarketData( F3,
euroQuotes,
euroCSA );
This uses a built-in collateral agreement object to construct market data with all of the properties
of the underlying market data euroQuotes, with the additional property that when the quoted
instruments are priced, the discount curve that is used will be one tagged as one appropriate
for discounting under this collateral agreement. To generate such a tag, we supply the collateral
agreement as the third, optional argument to the discount curve tag generating function
curve_tag discountCurveEuroCSA = DiscountCurveTag( F3,
currency( "EUR" ),
euroCSA );
and we supply this tag to the calibration target. If we follow a similar procedure in Sterling, then
we arrive at a model containing the following curves
Curve symbol Curve description
D
EUR
(t) OIS discount curve in Euro
D
GBP
(t) OIS discount curve in Sterling
R
EUR
(t) EONIA curve
R
GBP
(t) SONIA curve
L
EUR
(t) Euro LIBOR curve
L
GBP
(t) Sterling LIBOR curve
In each currency, this model will be consistent with the domestic vanilla rates markets, but will
not necessarily be consistent across the two currencies. To incorporate the inuence of the
EURGBP exchange rate, we choose cross-currency swaps as our constraint on an alternative
Euro discount curve, Z
EUR
(t), appropriate for discounting uncollateralized trades. F3's valuation
machinery will select this curve for trades labelled with a collateral agreement object that
species "no collateralization" or with no collateral agreement object at all.
In terms of the table of Sec. 4.7, the bootstrapping of Z
EUR
(t) goes as follows:
Description CalibrationTarget InstrumentStrategy Optimizer SourceValSpec TargetValSpec
FX-implied EUR
discount curve
Bootstrap the discount
curve Z
EUR
(t)
Cross-currency swaps 1-d root search Par Simple closed-
form, converting
to a single
currency
The Past, Present and Future of Curves | 36
We can now construct the cheapest-to-deliver rate curve by rst forming the appropriate
multiple currency collateral agreement and then instructing F3 to follow the process described
by Eq. (19) and Eq. (20) in Sec. 3.3.2.
std::vector< fncad::f3::index > theIndices =
{{Index::EONIA( F3 ), Index::SONIA( F3 )}};
CollateralAgreement euroSterlingCSA =
CollateralAgreement::CreateFullCashCollateralAgreement(
F3,
indices( theIndices ) );
// Make a new Index, representing the cheapest-to-deliver rate.
// The referencer determines the appropriate observation time for a given
// payment and the last argument will form the name-part of the curve tag for
// this rate.
Object ref;
ref << "StartOffset" << MarketConventions::LondonDaily( F3 ).name();
Index ctdRate = Index::CreateOvernightRateIndex(
F3,
currency( "GBP" ),
MarketConventions::LondonDaily( F3 ),
referencer( ref ),
"GBP-EUR-CTD" );
// Build the curve for the cheapest-to-deliver rate. The third argument is the
// numeraire rate, specifying the currency in which the underlying rates
// are compared.
model = model.ExtendModelWithCheapestToDeliverRateCurve(
ctdRate.OvernightRateCurveTag(),
euroSterlingCSA,
Index::SONIA( F3 ) );
The resulting curves are shown in Fig. 12.
Fig. 12. The cheapest-to-deliver rate curve under a CSA agreement that allows collateral to be
posted in one of two currencies.
4.5%
2.5%
3.5%
1.5%
4%
2%
Time (years)
Cheapest-to-deliver rate curves
3%
1%
0.5%
0%
0 2 10 4 12 6 14 8 16 18
SONIA
FX-adjusted EONIA
Cheapest-to-deliver
37 | The Past, Present and Future of Curves
In order to value a trade under this collateral agreement, where we discount at this cheapest-to-
deliver rate, we need to construct the corresponding discount curve and identify it appropriately.
model = model.ExtendModelWithBootstrappedImpliedDiscountCurve(
DiscountCurveTag( F3,
currency( "GBP" ),
euroSterlingCSA ),
ctdRate,
ldn.RollSchedule( valuationDate,
maturity_descriptor( "50y" ) ) );
In the above code, the Sterling discount curve is identied by a curve tag based on the multi-
currency CSA. This means that it will be used in the valuation of any trade collateralized under
such an agreement. To specify the collateralization for trades, we adopt an analogous approach
to that for quoted trades, as shown below for a Sterling LIBOR swap which we assume we
created already (by means of the function CreateInterestRateSwap, for example)
Product sterlingLiborSwapMultiCurrencyCSA =
Product::CreateCollateralizedProduct( F3,
sterlingLiborSwap,
euroSterlingCSA );
We can then value the collateralized product as we value any Product in F3, with ValueProduct.
By examining the resulting risk report (and bucketing the exposure to each quote into instrument
types), we can see clearly in Fig. 13 that, although the swap itself only has cash ows in Sterling,
it is exposed to a variety of risk factors across both currencies. Although the bulk of the exposure
remains in the Sterling market, approximately 8% is to quotes that depend on Euro LIBOR and
EONIA.
Fig. 13. The relative exposure of an off-market Sterling swap under a multi-currency collateral
agreement, showing exposure to the quotes used to build the cheapest-to-deliver discount
curve (and LIBOR curve) used in the valuation.
Exposure of a Sterling swap under a dual currency CSA
GBP LIBOR
Swaps
SONIA Swaps 5%
EONIA Swaps 3%
EUR LIBOR Swaps 3%
Cross-currency Swaps 2%
EURGBP Rate ~0%
38 | The Past, Present and Future of Curves
7 CONCLUSION
In this article, we examined claims of a post-crisis "revolution" in interest modeling and
associated expensive effort to update curve-building infrastructure to cope. In order to place
it in context, in Sec. 3 we described techniques in curve-building from the origins of modern
derivative markets through to the present day. We saw that to cope with OIS discounting and
related "dual-curve" bootstrapping calculations, it is not necessary to introduce anything that
is fundamentally new. For example, dual-curve pricing and bootstrapping has been used in the
cross-currency swap markets for more than two decades.
We then in Sec. 4 described a set of concepts which form the basis of a generic calibration
framework that contains all of the special cases examined in the overview of curve-building
history, together with any future curve-building problem that is possible to construct. To
demonstrate the applicability of these concepts to problems of current interest, we applied F3
to the simple example of bootstrapping discount and LIBOR curves from OIS and LIBOR swaps
and built a cheapest-to-deliver curve, in very concise C++. To illustrate the generic nature of the
framework, we gave a collection of example calibration problems ranging from simple curve
builds to exotic model-to-model calibrations, in Sec. 4.7.
Our key point is that with an appropriate architecture it is possible to construct a future-proof
curve-building capability, that requires no fundamental changes or costly reimplementation to
adjust to shifts in market practice, and that one such capability is embodied in F3.
39 | The Past, Present and Future of Curves
BIBLIOGRAPHY
[1] Black, F. and Scholes, M. (1973), The Pricing of Options and Corporate Liabilities, Journal of
Political Economy, 81, 637-659
[2] Goyder, R. and Gibbs, M.J. (2012), Optimal Architecture for Modern Analytics Platforms,
Technical Article, FINCAD Inc., http://www.ncad.com/derivatives-resources/white-papers/
optimal-architecture.aspx
[3] Miron, P. and Swannell, P. (1991), Pricing and Hedging Swaps, Euromoney Books.
[4] Timeline: Barclays' widening Libor-xing scandal, BBC (2012), http://www.bbc.co.uk/news/
business-18671255
[5] Sawyer, N. (2011), Multi-currency CSA chaos behind push to standardised CSA, Risk, 24,
18-23
[6] The ISDA Standard Credit Support Annex (SCSA), http://www2.isda.org/functional-areas/
market-infrastructure/standard-csa
[7] Fujii, M. and Takahashi, A. (2011), Choice of Collateral Currency, Risk Magazine, 24, 120-125
[8] Glassermann, P. (2004), Monte Carlo Methods in Financial Engineering, Springer-Verlag New
York
[9] The C++11 Standard, http://www.open-std.org/jtc1/sc22/wg21
[10] The C++03 Standard, http://www.open-std.org/jtc1/sc22/wg21
[11] The Boost C++ Libraries, http://www.boost.org/
[12] Universal Risk Technology, FINCAD (2012, forthcoming)
The Past, Present and Future of Curves | 40
ABOUT FINCAD
Founded in 1990, FINCAD provides advanced modelling solutions built on award-winning, patent
pending technology. With more than 4,000 clients in over 80 countries around the world, FINCAD
is the leading provider of nancial analytics technology, enabling global market participants
to make informed hedging and investment decisions. FINCAD provides software and services
supporting the valuation, reporting and risk management of derivatives and xed income
portfolios to banks, corporate treasuries, hedge funds, asset management rms, audit rms, and
governments. FINCAD Analytics can be accessed through Excel, MATLAB, as a Software-as-a-
Service or embedded into an existing system through software development kits. Now, over 70
FINCAD Alliance Partners embed FINCAD Analytics within their solutions. FINCAD provides sales
and client services from Dublin, Ireland, and Vancouver, Canada.
ABOUT THE AUTHORS
Dr. Mark Gibbs is the Chief Software Architect at FINCAD, and a key driver of FINCADs award
winning F3 solution. Dr. Gibbs has nearly 20 years of nancial industry experience, including
various roles in leading investment banks in London. Prior to joining FINCAD, he led the
structured credit quantitative team at UBS. He holds a PhD in Theoretical Physics from the
University of Cambridge and has published nearly 50 academic papers. Dr. Gibbs has served as
an industry advisor on a number of projects, most recently for an EU research project on Monte
Carlo methods.
Dr. Russell Goyder is the Director of Quantitative Research and Development at FINCAD. Before
joining FINCADs quant team in 2006, he worked as a consultant at The MathWorks, solving
a wide range of problems in various industries, particularly in the nancial industry. In his
current role, Dr. Goyder manages FINCADs quant team and oversees the delivery of analytics
functionality in FINCADs products, from initial research to the deployment of production code.
Dr. Goyder holds a PhD in Physics from the University of Cambridge.
CORPORATE HEADQUARTERS
Central City, Suite 1750
13450 102nd Avenue
Surrey, BC V3T 5X3
Canada
EMEA SALES & CLIENT SERVICE CENTER
Block 4, Blackrock Business Park
Carysfort Avenue, Blackrock
Co Dublin, Ireland
USA/CANADA 1.800.304.0702
EUROPE 00.800.304.07020
LONDON +44.20.7495.3334
DUBLIN +353.1.400.3100
ELSEWHERE +1.604.957.1200
FAX +1.604.957.1201
EMAIL info@ncad.com
Copyright 2012 FinancialCAD Corporation. All rights reserved. FinancialCAD and FINCAD are registered trademarks of FinancialCAD Corporation.
Other trademarks are the property of their respective holders. This is for informational purposes only. FINCAD MAKES NO WARRANTIES, EXPRESSED
OR IMPLIED, IN THIS SUMMARY. Printed in Canada.
TXA12W098-1
DISCLAIMER
FINCAD makes no warranty either express or implied, including, but not limited to, any implied warranties of
merchantability or tness for a particular purpose regarding these materials, and makes such materials available
solely on an "as-is" basis. In no event shall FINCAD be liable for anyone for special, collateral, incidental, or
consequential damages in connection with or arising out of purchase or use of these materials. This information
is subject to change without notice. FINCAD assumes no responsibility for any errors in this document or their
consequences, and reserves the right to make improvements and changes to this document without notice.
TRADEMARKS
F3TM (Patent Pending Technology), FinancialCAD and FINCAD are registered trademakrs of FinancialCAD
Corporation. Other trademarks are the property of their respective holders.
REVISIONS
Every effort has been made to ensure the accuracy of this document. FINCAD regrets any errors and omissions
that may occur and would appreciate being informed of any errors found. FINCAD will correct any such errors and
omissions in a subsequent version, as feasible.

Você também pode gostar