Technical Yield curve Building

44
Dr. Mark Gibbs, Dr. Russell Goyder THE PAST, PRESENT AND FUTURE OF CURVES TECHNICAL PAPER

description

Swap Curve, Bootstrapping Curve, Technical Analysis of Curve

Transcript of Technical Yield curve Building

Page 1: Technical Yield curve Building

Dr. Mark Gibbs, Dr. Russell Goyder

THE PAST, PRESENT AND FUTURE OF CURVESTECHNICAL PAPER

Page 2: Technical Yield curve Building
Page 3: Technical Yield curve Building

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

Page 4: Technical Yield curve Building

1 | The Past, Present and Future of Curves

1 INTRODUCTION

Reading about OIS discounting in the financial 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 first 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 modification 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 confined 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 finish 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.

Page 5: Technical Yield curve Building

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 definition 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 fixed payments, such as the fixed leg of a vanilla interest swap, given by

where N is the notional amount of the swap, c is the fixed coupon and τi is the accrual fraction associated with the ith payment of a total of n, made at time ti. In such a vanilla swap, a fixed leg is typically exchanged for a floating 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 floating leg, an additional curve is required. The leg value is given by

where the additional curve is L(t). fi is the time at which an observation of the floating rate is made in order to determine the amount paid at time ti and r is a margin, typically zero in a vanilla fixed-for-floating swap, but non-zero in floating-for-floating 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 fixed 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, finding 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 definitions 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).

Page 6: Technical Yield curve Building

3 | The Past, Present and Future of Curves

A static hedge can be constructed for any contract that only depends on today’s 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 swaption’s 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 fit 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 finding 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 efficient, 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 define 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 definition, 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 flexible calibration system, that is flexible enough to cope with changes that have necessitated comprehensive reworking of other systems throughout the financial industry, make the need to adjust to a more general definition of the word “curve” worthwhile.

With this definition 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.

Definition 1. The Curve ConceptA node in the dependency tree of pricing model parameters managed by a Model.

Page 7: Technical Yield curve Building

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 α ( ta , tb ) is the day-count fraction between the times ta and tb defining the period associated with the rate fixed on tf .

The conventions for calculating the day-count fraction, together with the calculation of the times ta and tb for a given fixing time tf are part of the published definition of the rate. A widely-used reference rate is LIBOR (see www.bbalibor.com). While the precise details are often moderately complex, typically ta follows tf by a couple of days and tb follows ta by the tenor of the rate. The rate is then paid at a time tp which is usually very close to tb. 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 tp ~ ta , 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 tb ) 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 floating 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 ta ≥ tf , tp may precede tb .

In addition to the above assumption, there is another group of assumptions that were often bundled with the first. Namely that

1. the rate’s day-count convention α matched exactly that of the trade τ and

2. the rate’s accrual period defined by ta and tb matched exactly the trade’s payment schedule, so that for the ith payment period, ti = tb and ti−1 = ta , for all i.

~ 2 days

tf

ta ≥ tf tp ~ tb

tbta

rate tenor

LIBOR period boundariesLIBOR fixing time Payment time

time

tp

Page 8: Technical Yield curve Building

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 t1 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(tn ) in terms of { D(ti ) 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(ti ) }. In general, a bootstrap calculation is one where a curve C(t) is determined sequentially by constraining the point at ti , C(ti ), with a calculation that depends on previous points in the curve, { C(tj ) j < i }. This is illustrated in Fig. 2.

Page 9: Technical Yield curve Building

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 fixed coupon with quotes for maturities which are separated by one year. Denote the quotes and corresponding maturity times by {si } i = 1 ... n and {ti } 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(t1 ):

1

D(t)1

D(t)

D(1)

t

t

t

D(1)

D(2)

1y

1y 2y 3y

1y 2y

Together with the fixed 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 find 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(ti )) points are determined by pricing instruments of increasing maturity to par, based on a curve whose earlier parts have been fixed by earlier instruments, and whose last section varies according to each value of D(ti ) explored by the algorithm.

D(1)

D(2)

D(3)

Page 10: Technical Yield curve Building

7 | The Past, Present and Future of Curves

• Solve for D(t2 ) in terms of D(t1 ):

• 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 flow at an arbitrary time t, not just the { ti }. 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 { ti , D(ti )}:

Before a finished 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 first coupon (paid at six months) is determined by the one year discount factor together with a chosen interpolation method. Eq. (7) would then be modified to give

D(t)

6 months 1 year (swap maturity)

floating leg of swap has 2 payments

Each discount curve value at swap maturity, plus log-linear interpolation from (0,1), defines a potential discount curve.

fixed 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).

Page 11: Technical Yield curve Building

The Past, Present and Future of Curves | 8

With an explicit approach like this, changing from one interpolation method to another requires significant code changes. Instead of the closed-form Eq. (8), a numerical root-finding algorithm can be applied to find the { D(ti ) }, which allows an arbitrary choice of interpolation method. This is our first 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 flows, 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 flows 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 flat spread S(t) = s which allows the approach of Eq. (6) to be maintained, with the modification 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-fidelity treatment necessary to capture some features of real swaps, as described in Sec. 3.2.4.

Page 12: Technical Yield curve Building

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 2In 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

NX0

N

NX1

NX0 NX1

L1Ƴ

L1Ƶ

m

L2Ƶ

m

L2Ƴ

N

Page 13: Technical Yield curve Building

The Past, Present and Future of Curves | 10

Translating the asset currency cash flows into the numeraire currency and combining all the flows into one diagram, we can see how some of them cancel, in Fig. 5.

Fig. 5. Cross-currency swap cash flows expressed in the numeraire currency

Fig. 6 shows the net flows 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 flow 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 LiƳ is paid at time tj in

the numeraire currency and where the corresponding rate in the numeraire currency, LjƵ is

combined with a spread m before being paid at time tj . α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.

NX1

L1Ƴ X1

NX1

In the numeraire currency Ƶ: convert each payment at i using Xi

time

NX0

NX0

NX1 NX2

NX0 NX1

L1Ƶ

L2Ƴ X2

m

L2Ƶ

m

Net notional flows in currency Ƶ:

Remaining notional amounts:

Resulting swap structure:

N(X2 − X1 )N(X1 − X0 )

NX0 + N(X1 − X0 ) = NX1

NX1 + N(X2 − X1 ) = NX2

0

NX0

L1Ƶ ∙ NX1

m

L2Ƶ ∙ NX2

m

L1ƳX1

∙ N

NXi (LƳ

i − LƵi − m)∑V =

i = 1

I

L2ƳX2

∙ N

Page 14: Technical Yield curve Building

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 first 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 defined 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 finding 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 sufficiently 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 si, paired with the cross-currency swap quote mi of equal maturity ti , we now have two curve values DƳ(ti ) and LƳ(t i

f ) to find, where t if is the LIBOR fixing time for a payment at ti . We

now have a well-posed problem, which therefore has a well-defined 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.

Page 15: Technical Yield curve Building

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 ta and tb. 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 L3m(t), are known, then our task is to determine the curve L6m(t) that satisfies

for each zi 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 L6m(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, fixings for LIBOR are only available on London business days. If the floating leg of a swap pays 3-month USD LIBOR, there may be no fixing that results in tb 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.

Page 16: Technical Yield curve Building

13 | The Past, Present and Future of Curves

Payment LIBOR fixing LIBOR start LIBOR end Dates "line up"?04-Jun-12 28-Feb-12 01-Mar-12 01-Jun-12 No04-Sep-12 30-May-12 01-Jun-12 04-Sep-12 No03-Dec-12 31-Aug-12 04-Sep-12 04-Dec-12 No04-Mar-13 29-Nov-12 03-Dec-12 04-Mar-13 Yes

03-Jun-13 28-Feb-13 04-Mar-13 04-Jun-13 No03-Sep-13 30-May-13 03-Jun-13 03-Sep-13 Yes03-Dec-13 30-Aug-13 03-Sep-13 03-Dec-13 Yes03-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(tn ) 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 influences on curve-building in the last decade and so we shall focus on those influences 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.

Page 17: Technical Yield curve Building

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 profits 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 specified 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 flows should be discounted when valuing a collateralized trade is the rate at which collateral earns interest.

A common collateral agreement specifies 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 FundsSp

read

(bps

)450

250

350

150

0

400

200

50

300

100

-50Q4 2006 Q4 2007 Q4 2009Q2 2007 Q1 2009Q3 2008 Q1 2010

Page 18: Technical Yield curve Building

15 | The Past, Present and Future of Curves

3.3.1 OIS DISCOUNTING

An OIS pays a fixed coupon in return for a compounded overnight rate. Use the annuity Α from Eq. (1) and a floating 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 ith 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 find 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 finding a viable replacement, means that it remains a cornerstone of the financial 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 specific to an institution and something relatively difficult 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 specifies that posted collateral earns the overnight rate.

Page 19: Technical Yield curve Building

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 defines 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 specifies the single rate at which collateral earns interest is relatively simple. A significant 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 significant, 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 first 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 significant. 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.

Page 20: Technical Yield curve Building

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 { Xk } 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, Xk(t), invested in an account that earns the corresponding rate in currency k, Rk(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 { Rk(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, Dk(t), for each k. Having obtained the full set of { Dk(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 find the discount curve whose rate is R(t). This is most readily accomplished as another bootstrap, where we sample the rate curve at a finite 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 tp (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 tp = tb and that coincides with the previous sample's tp.

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, refining this to fix 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 refinement over time of a single coherent approach to discounting trades within financial markets, based on a general principle of consistency across instruments quoted to the market. Within the financial markets, the phrase "broker curves" - the name presumably refers

Page 21: Technical Yield curve Building

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 finite 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 flows 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 flows 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 flows Fi at times ti ,

Page 22: Technical Yield curve Building

19 | The Past, Present and Future of Curves

and any changes in V are driven by either market movements or flows Fi at each time ti . However, each cashflow of the trade will cause a jump at ti of −Fi in V, leading to an equal and opposite jump in C of Fi . In other words, the net collateral flows are due only to profit 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 profit 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 flows due to market movements. Obviously, other flows, 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 fixed coupon C and referencing a LIBOR rate L(t), the valuation of the swap for a multiplier H(t) is

where the ti are the fixed payment dates, tj the floating payment dates, and sj the associated rate fixing 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 fixed 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 satisfies VH¹ = 0, it is no longer true in general that VH² = 0 for an arbitrary relative multiplier curve H2(t). Intuitively, this makes sense. A financial 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 fixes discounting at the implied OIS curve rate. Equivalently, one could define 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 difficulty in providing a collateralized version of trades with a significant 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!

Page 23: Technical Yield curve Building

The Past, Present and Future of Curves | 20

4 FUTURE-PROOF CURVE-BUILDING

Throughout Sec. 3, we have seen a progression through several specific 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 significantly 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 difficult to relate to real problems. For this reason, throughout this section, we describe the relevant set of concepts in the context of the first 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 efficient 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 define 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 financial 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].

Page 24: Technical Yield curve Building

21 | The Past, Present and Future of Curves

4.2 CALIBRATION TARGET

The CalibrationTarget concept is defined 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 first 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 first 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 identifiers (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-finding 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 specific to one-dimensional bootstrap targets.

4. The interpolation method to use for each target curve. In our example, log-linear for D(t).

Definition 2. The Calibration Target conceptThe identity and structure of each curve to be built.

Page 25: Technical Yield curve Building

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-specified 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 fixed 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 definition 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 find. 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 fine for the points in a discount curve, assuming a payment is made at maturity, but it is easy to find 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 fixing) 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 defined 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

Definition 3. InstrumentStrategy conceptThe specification of which instruments to value during the calibration.

Page 26: Technical Yield curve Building

23 | The Past, Present and Future of Curves

system and a root-finding 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 flat 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 defined as follows:

The optimizer specifies 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 find 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 finds a minimum of the χ2 metric

where Xi is the value of the ith instrument under the source valuation specification (see below), Yi(x) is the value of the ith instrument under the target valuation specification (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 finding 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.

Definition 4. The Optimizer conceptThe metric to be minimized and the algorithm by which it is achieved.

Page 27: Technical Yield curve Building

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 defined as:

Correspondingly, the target side of the comparison can therefore be defined as:

Given Definition 5, we can define the SourceValSpec concept as follows:

This is nothing more than the ValSpec concept, as defined 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 sufficient 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 (Definition 7), the TargetValSpec is a simple application of the ValSpec concept (see [2]) to Definition 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

Definition 5. The source valuationThe valuation that yields known values in the calibration.

Definition 6. The target valuationThe valuation based on the curves specified in the CalibrationTarget.

Definition 7. The SourceValSpec conceptHow the SourceValuation is to proceed, numerically.

Definition 8. The TargetValSpec conceptHow the TargetValuation is to proceed, numerically.

Page 28: Technical Yield curve Building

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 sufficient.

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 briefly.

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 DA(t) and the LIBOR curve LA(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

Page 29: Technical Yield curve Building

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 simplified 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 fincad::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 fincad::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-specified 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.

Page 30: Technical Yield curve Building

27 | The Past, Present and Future of Curves

We also need a CalibrationTarget (Sec. 4.2), an important part of which is the specification 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 { si } i = 1 ... N for maturities { ti } i = 1 ... N, define the set of points { Fi } 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 identified in the model via a curve_tag. Curves which just form inputs to other curve-build instructions can be identified using user-specified tags, but curves used directly by valuation engines must be tagged in the way that F3 expects, otherwise its valuation engines will not find the required curves. For this reason, when constructing the CalibrationTarget in the following code which identifies 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 specified, but we are choosing the default values of these optional arguments.

Given the calibration target and instrument strategy, we can now configure the build of the discount curve itself.

model = model.ExtendModelWithCalibratedCurves( discountCurveTarget, oisStrategy, CalibrationOptimizer::RootSearch( F3 ), ValuationSpecificationBuilder::ZeroValueProduct( F3 ), ValuationSpecificationBuilder::Passthrough( F3 ) );

In the third argument in the above call, we have specified 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 fifth argument, the TargetValuation is configured to "pass through" to the model-wide valuation settings which, because not explicitly configured 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 sufficient to value the fixed leg of an OIS, as per Eq. (1). For the floating 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 ) );

Page 31: Technical Yield curve Building

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 configure 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 specifies a collection of LIBOR swaps. Instead of exponential decay (log-linear interpolation) for the initial guess and final curve, we select linear interpolation (with linear as opposed to flat 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 ), ValuationSpecificationBuilder::ZeroValueProduct( F3 ), ValuationSpecificationBuilder::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_specification > 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 sufficient 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

Page 32: Technical Yield curve Building

29 | The Past, Present and Future of Curves

specification" (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_specifications( oisMaturities ), quotes( oisQuotes ) );

We can now do precisely the same for the LIBOR swap quotes.

std::vector< quote_specification > 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_specifications( 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 final 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 );

Page 33: Technical Yield curve Building

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 defined 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], ValuationSpecification::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], ValuationSpecification::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.

Page 34: Technical Yield curve Building

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 first 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 first five 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

1m

Par r

ate

(bps

)

3y9m 11y

5m 7y

15m 25y

3m 5y

11m 15y

7m 9y

21m

OIS round trip

2m 4y

10m 12y

6m 8y

18m 30y

4m 6y1y 20y

8m 10y2y

300

100

200

2y

Par r

ate

(bps

)

18y

10y

26y6y 22y

14y

30y

40y

50y4y 20y

12y

28y8y 24y

LIBOR swaps round trip

16y3y 19y

11y

27y7y 23y

15y

35y5y 21y

13y

29y9y 25y

17y

0

Market quoteCalculated par rate

Market quoteCalculated par rate

Page 35: Technical Yield curve Building

The Past, Present and Future of Curves | 32

Fig. 9. Exposure of five OIS instruments to the available market data. The delta-function nature of each risk report shows that the bootstrap has succeeded. Exposure here is defined as the partial derivative of the value of the instrument with respect to each market quote.

In contrast, Fig. 10 shows the exposure profile 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 ), fincad::f3::payrec::Pay(), MarketConventions::SwapEUR6mFloating( F3 ) );

Product portfolio = Product::CreatePortfolioProduct( F3,

constituents );

OIS Exposure

4

x105

1m

1m

3m

3m

2m

2m

4m4m

5m

5mInstrument

Quote

2

3

1

0

Page 36: Technical Yield curve Building

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

Hedg

e no

tiona

l

1m 15m7m 3y 9y3m 18m9m 4y 10y

4m 21m 7y10

,

5y 11y

6m 2y 8y1y 6y 12y

x105

10

5

0

-5

Hedg

e no

tiona

l

x107

1.5

0.5

-0.5

1

0

-12y 6y4y 8y 11y3y 7y 10y5y 9y 12y

Exposure to LIBOR swap quotes

Quote matuirty

Page 37: Technical Yield curve Building

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

Disc

ount

Fac

tor

Forw

ard

Rate

s

6m Euro LIBORLIBOR pointsEONIA

Page 38: Technical Yield curve Building

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 specifies 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 specifies 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 descriptionDEUR(t) OIS discount curve in Euro DGBP(t) OIS discount curve in SterlingREUR(t) EONIA curveRGBP(t) SONIA curveLEUR(t) Euro LIBOR curveLGBP(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 influence of the EURGBP exchange rate, we choose cross-currency swaps as our constraint on an alternative Euro discount curve, ZEUR(t), appropriate for discounting uncollateralized trades. F3's valuation machinery will select this curve for trades labelled with a collateral agreement object that specifies "no collateralization" or with no collateral agreement object at all.

In terms of the table of Sec. 4.7, the bootstrapping of ZEUR(t) goes as follows:

Description CalibrationTarget InstrumentStrategy Optimizer SourceValSpec TargetValSpec

FX-implied EUR discount curve

Bootstrap the discount curve ZEUR(t)

Cross-currency swaps 1-d root search Par Simple closed-form, converting to a single currency

Page 39: Technical Yield curve Building

The Past, Present and Future of Curves | 36

We can now construct the cheapest-to-deliver rate curve by first 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< fincad::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 104 126 148 16 18

SONIAFX-adjusted EONIACheapest-to-deliver

Page 40: Technical Yield curve Building

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 identified 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 flows 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 Swaps5%

EONIA Swaps3%

EUR LIBOR Swaps3%

Cross-currency Swaps2%

EURGBP Rate~0%

Page 41: Technical Yield curve Building

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.

Page 42: Technical Yield curve Building

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.fincad.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-fixing 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)

Page 43: Technical Yield curve Building

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 financial 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 fixed income portfolios to banks, corporate treasuries, hedge funds, asset management firms, audit firms, 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 FINCAD’s award winning F3 solution. Dr. Gibbs has nearly 20 years of financial 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 FINCAD’s quant team in 2006, he worked as a consultant at The MathWorks, solving a wide range of problems in various industries, particularly in the financial industry. In his current role, Dr. Goyder manages FINCAD’s quant team and oversees the delivery of analytics functionality in FINCAD’s products, from initial research to the deployment of production code. Dr. Goyder holds a PhD in Physics from the University of Cambridge.

Page 44: Technical Yield curve Building

CORPORATE HEADQUARTERSCentral City, Suite 175013450 102nd AvenueSurrey, BC V3T 5X3Canada

EMEA SALES & CLIENT SERVICE CENTERBlock 4, Blackrock Business Park Carysfort Avenue, BlackrockCo Dublin, Ireland

USA/CANADA 1.800.304.0702EUROPE 00.800.304.07020LONDON +44.20.7495.3334DUBLIN +353.1.400.3100ELSEWHERE +1.604.957.1200FAX +1.604.957.1201EMAIL [email protected]

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 fitness 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.