As a gift to the candidates studying for the Level III exam in 2019, CFA Institute replaced the existing Level III Fixed Income readings with new Fixed Income readings. Amongst the new readings was one entitled Yield Curve Strategies, and included in that reading was a section on Inter-Market Curve Strategies, including, in particular, inter-market curve positioning.
Their example on inter-market curve positioning is 10 pages long.
In this article I’ll cover the important points on inter-market curve positioning without all of the gruesome detail of that example. Nevertheless, I believe that you will get enough to be able to handle any question on the topic that the exam might throw at you.
Note that I’ll be rounding all of the values to zero decimal places, which means that occasionally the addition / subtraction might appear to be off just slightly. Pay it no attention.
To begin, we need a couple of yield curves, one for each of two currencies. I’ll call them Australian Dollar (AUD) and Swiss Franc (CHF) for no particularly good reason; I stress that these are artifacts of my warped imagination, and that if they represent actual yield curves for these (or any other) currencies at any time in history or in the future, it’s nothing more than an amazing coincidence. AUD will be our home currency. An excerpt from these curves is:
Maturity, Years | YTM | |
AUD | CHF | |
2 | 2.50% | 1.50% |
5 | 3.66% | 2.79% |
10 | 4.83% | 4.37% |
15 | 5.43% | 5.44% |
20 | 5.75% | 6.17% |
30 | 6.00% | 7.00% |
The full yield curves look like this:
Note that these are par curves, not spot curves. (If you need a refresher on the difference between a par curve and a spot curve, look here.) The modified durations of par bonds at these maturities – which will come into play presently – are:
Maturity, Years | Durmod, Years | |
AUD | CHF | |
2 | 1.9390 | 1.9631 |
5 | 4.5312 | 4.6372 |
10 | 7.8590 | 8.0325 |
15 | 10.1694 | 10.1641 |
20 | 11.7954 | 11.4007 |
30 | 13.8378 | 12.4724 |
The strategy is a three-act play:
- Intra-market carry trade in AUD: borrowing AUD at a low rate and lending AUD at a high rate. The complication is that we want to be currency neutral (i.e., lending exactly the same amount we borrow) and duration neutral (i.e., have a net modified duration (properly, currency duration) of zero).
- Intra-market carry trade in CHF: borrowing CHF at a low rate and lending CHF at a high rate. As with the AUD carry trade, we want to be currency neutral and duration neutral.
- Inter-market carry trade: either borrowing AUD at a low rate, converting it to CHF, and lending the CHF at a high rate, or borrowing CHF at a low rate, converting it to AUD, and lending AUD at a high rate. And, once again, we want to be currency neutral and duration neutral (in both currencies, on both yield curves).
I’ll take these three separately, in the order named. And to keep matters simple, I’ll assume that all of the bonds mentioned are par bonds; i.e., their coupon rates equal their respective yields to maturity (YTMs). I’ll also assume that the holding period is one year, and that the bonds pay coupons annually (so that there’s no reinvestment risk to complicate things). Furthermore, I’ll assume that the yield on each bond will remain unchanged (so that they remain par bonds); i.e., the yield will result exclusively from the coupon payments. Thus, I’m assuming that the yield curves one year from today will be (note the shorter maturities from the original table):
Maturity, Years | YTM | |
AUD | CHF | |
1 | 2.50% | 1.50% |
4 | 3.66% | 2.79% |
9 | 4.83% | 4.37% |
14 | 5.43% | 5.44% |
19 | 5.75% | 6.17% |
29 | 6.00% | 7.00% |
While we’re discussing assumptions, let’s assume that the spot AUD/CHF exchange rate today is AUD 1.5169 = CHF 1.0, that the 1-year forward rate is AUD 1.5319 = CHF 1.0, and that one year from today the spot exchange rate is also AUD 1.5319 = CHF 1.0. (Later, I’ll mention what happens when the bonds aren’t priced at par, and when the yield curves change, and when the expected future exchange rate is not the forward rate, but we’ll keep it simple for now.)
So that we don’t go completely bonkers (because we’re new at this, so we don’t want to risk losing a ton of money if we foul it up completely), I’ll impose limits of ±AUD 1,000,000 and ±CHF 1,000,000 on any single security.
A Word About Hedging
There is no (well, maybe some, actually, but not much) hedging. None. (Well, almost none.) Specifically:
- No bond price hedging
- No interest rate hedging
- Maybe some exchange rate hedging on bonds with maturities longer than the expected holding period.
Zero! (Well, practically zero.) No hedging at all! (Well, not much.) If you hedge, you fail. (OK: that’s a bit dramatic, but generally you don’t want to hedge. Why? Because the basis of carry trade is that interest rate parity won’t hold. If it does, you simply earn the risk-free rate in your home currency for your holding period. Hedging generally ensures that interest rate parity holds.)
You might hedge exchange rate risk on bonds with maturities longer than your expected holding period because that hedge will be based on interest rate parity for the holding period (and will lock in a forward exchange rate based on the short-term rate differential.) If the longer-term rate differential is different, it may not exactly wipe out any expected yield gain.
In general, if you want to hedge, don’t waste your time with this stuff; buy Treasuries. Be boring. Wear beige.
Act 1: Intra-Market Carry Trade in AUD
The idea behind intra-market (i.e., one market) carry trade is pretty simple: to borrow at a low rate and lend at a high rate in the same currency. Conventional wisdom is that you make more money when the yield curve is steeper, and less when its flatter, so we’ll start at the short end of the AUD yield curve (where it’s steeper) by:
- Borrowing the limit, AUD 1,000,000, at the 2-year rate of 2.50%
- Lending AUD 1,000,000 at the 10-year rate of 4.83%
The yield pickup is 2.33% (\(=\ AUD\ 23,300\)) per year. To borrow the money we issue (or sell) 2-year bonds and to lend it we purchase 10-year bonds:
Because we have borrowed and lent the same amount, we are currency (i.e., AUD) neutral, but we are not duration neutral: our net AUD-duration is:
\[AUD\ 1,000,000\ ×\ 7.8590\ years\ -\ AUD\ 1,000,000\ ×\ 1.9390\ years\]
\[=\ 5,920,000\ AUD-years\]
To be duration neutral will, unfortunately, cost some money (i.e., yield): we construct another AUD trade that negates the AUD-duration of the first trade. Think of it as buying insurance: we’re insuring ourselves against parallel shifts in the yield curve. (Well, small ones at least.) Because we need negative AUD-duration, we have to buy shorter-term bonds and sell longer-term bonds, which means that we’ll have a net negative yield on this portion of the strategy. To implement it, we’ll
- Issue (sell) 30-year bonds
- Buy 15-year bonds
in equal AUD amounts:
We have to calculate the appropriate amount to make sure that we are net duration neutral, and we do so by solving this equation, where \(A\) is the unknown amount of AUD:
\begin{align}A\ ×\ 10.1694\ years\ -\ A\ ×\ 13.8378\ years\ &=\ -5,920,000\ AUD-years\\
\\
A\ ×\ \left(10.1694\ years\ -\ 13.8378\ years\right)\ &=\ -5,920,000\ AUD-years\\
\\
A\ ×\ \left(-3.6684\ years\right)\ &=\ -5,920,000\ AUD-years\\
\\
A\ &=\ \frac{-5,920,000\ AUD-years}{-3.6684\ years}\\
\\
A\ &=\ AUD\ 1,613,783
\end{align}
(This amount exceeds our position limit of AUD, which means that we need to adjust everything downward. I’ll get to that in a moment; I don’t want to lose momentum here.)
Now, we have to see how much this trade is going to cost us, to see if we’re really making any money. We’re borrowing at 6.00% and lending at 5.43%, for a net loss of 0.57% on AUD 1,613,783, or \(AUD\ 9,199\) per year. So, we’re currency neutral, duration neutral, and netting:
\[AUD\ 23,300\ -\ AUD\ 9,199\ =\ AUD\ 14,101\]
per year.
Now, let’s deal with that pesky matter of exceeding our position limits. This turns out to be easy: really easy. Our positions in the 15-year and 30-year bonds are too big by a factor of 1.613783. So we simply divide every position by that factor. That also divides our profit by the same factor. Thus:
- The short position in 2-year AUD bonds will be:
\(\dfrac{AUD\ 1,000,000}{1.613783}\ =\ AUD\ 619,662\)
- The long position in 10-year AUD bonds will be:
\(\dfrac{AUD\ 1,000,000}{1.613783}\ =\ AUD\ 619,662\)
- The long position in 15-year AUD bonds will be:
\(\dfrac{AUD\ 1,613,783}{1.613783}\ =\ AUD\ 1,000,000\)
- The short position in 30-year AUD bonds will be:
\(\dfrac{AUD\ 1,613,783}{1.613783}\ =\ AUD\ 1,000,000\)
- The profit will be:
\(\dfrac{AUD\ 14,101}{1.613783}\ =\ AUD\ 8,738\)
So far, so good. We’re making money, and if we have a parallel yield curve shift, we’re covered.
Act 2: Intra-Market Carry Trade in CHF
We’ll do much the same thing with CHF as we did with AUD, making this the most boring part of the process. For reasons that I will explain later, we’ll start off by:
- Borrowing CHF 1,000,000 at the 10-year rate of 4.37% (issuing (selling) 10-year bonds)
- Lending CHF 1,000,000 at the 30-year rate of 7.00% (buying 30-year bonds):
The yield pickup is 2.63% (\(=\ CHF\ 26,300\)) per year. We are currency (i.e., CHF) neutral, but we are not duration neutral: our net CHF-duration is:
\[CHF\ 1,000,000\ ×\ 12.4724\ years\ -\ CHF\ 1,000,000\ ×\ 8.0325\ years\]
\[=\ 4,439,900\ CHF-years\]
To negate the CHF-duration of the first trade, we’ll:
- Issue (sell) 15-year bonds
- Buy 2-year bonds, in equal CHF amounts:
To get the amount of CHF for this trade, we have to solve this equation, where \(C\) is the unknown amount of CHF:
\begin{align}C\ ×\ 1.9631\ years\ -\ C\ ×\ 10.1641\ years\ &=\ -4,439,900\ CHF-years\\
\\
C\ ×\ \left(1.9631\ years\ -\ 10.1641\ years\right)\ &=\ -4,439,900\ CHF-years\\
\\
C\ ×\ \left(-8.2010\ years\right)\ &=\ -4,439,900\ CHF-years\\
\\
C\ &=\ \frac{-4,439,900\ CHF-years}{-8.2010\ years}\\
\\
C\ &=\ CHF\ 541,385
\end{align}
As this is within our position limits, we do not need to make any changes in the amounts here. Now, we have to see how much this trade is going to cost us, to see if we’re really making any money. We’re borrowing at 5.44% and lending at 1.50%, for a net loss of 3.94% on CHF 541,385, or \(CHF\ 21,330\) per year. So, we’re currency neutral, duration neutral, and netting:
\[CHF\ 26,300\ -\ CHF\ 21,330\ =\ CHF\ 4,969\]
per year.
We’re on a roll!
Note that this is the one area in inter-market carry trade where we might hedge the AUD/CHF exchange rate. The idea here is to make a profit exclusively in CHF and transfer that profit over to AUD; we’re not trying to profit on the transfer itself. Later, when we do inter-market trades, the exchange rate movement will generally be a part of the profit we’re seeking, so we generally won’t hedge it there; here, we can hedge it or not, and it’s more likely that we will hedge it.
By the way, the reason that I chose to start with a 10-year/30-year (10/30) trade here rather than with a 2/10 trade as I did with AUD is that I set this scenario up in Excel and used an optimizer (Solver) to determine the set of trades that would be the most profitable. In practice, if you’re doing inter-market (or just intra-market) carry trades, you’ll use some computer-based optimization system to determine the best set of trades.
Intermission: Total Intra-Market Profit
If our assumption holds that the yields for each of the bonds remain unchanged, as well as our assumption about the future exchange rate, then one year from today we’ll have made:
\begin{align}AUD\ 8,738\ +\ CHF\ 4,969\left(\frac{AUD\ 1.5319}{CHF\ 1.0}\right)\ &=\ AUD\ 8,738\ +\ AUD\ 7,613\\
\\
&=\ AUD\ 16,351
\end{align}
We’re making money, but we want more!
Act 3: Inter-Market Carry Trade
Now comes the interesting part: the inter-market trades. Borrowing AUD, converting them to CHF, and investing the CHF, or else borrowing CHF, converting them to AUD, and investing the AUD. This is the type of carry trade that you covered at Level II: borrow a low-rate currency, convert it to a high-rate currency, invest at the high rate, then later convert back to the low-rate currency and hope that the exchange rate change has been less than what is suggested by interest rate parity.
Here, we complicate those simple trades by imposing currency neutrality and duration neutrality on the inter-market carry trades. Thus, if we borrow CHF 100,000 (at some maturity), convert it to AUD 1,516,900 (at the current spot exchange rate), and invest the AUD, we’ll also have to borrow AUD 1,516,900 (at some other maturity), convert it to CHF 100,000, and invest the CHF. And then do another pair of borrowings/lendings to maintain duration neutrality.
You should have seen my note, above, about why I started the CHF intra-market carry trade with a 10/30 trade: I used an optimizer to determine the trades that would maximize the profit. For the inter-market trades, I did the same.
Without constraints, it should be obvious that you would want to:
- Borrow 2-year CHF, convert it to AUD, and invest 2-year AUD, because the AUD 2-year rate is higher than the CHF 2-year rate
- Borrow 5-year CHF and invest 5-year AUD
- Borrow 10-year CHF and invest 10-year AUD
- Pretty much leave the 15-year maturity alone (as there’s no strong yield advantage), unless you need to mess with it for duration neutrality
- Borrow 20-year AUD and invest 20-year CHF
- Borrow 30-year AUD and invest 30-year CHF
Of course, these may not all hold true when the currency-neutral and duration-neutral constraints come into play (recall that in the intra-market trades we deliberately lost money on two trades to ensure duration neutrality), but they’re a starting point, and a reasonable reality check.
Using an optimizer, and bearing in mind that we have to keep our net positions within the imposed limits, I came up with these inter-market trades that are currency and duration neutral, and maximize the profit:
- Borrow AUD 380,338 at the AUD 2-year rate, convert them to CHF 250,734, and invest that at the CHF 2-year rate
- Borrow CHF 362,431 at the CHF 5-year rate, convert them to AUD 549,635, and invest that at the AUD 5-year rate
- Borrow AUD 288,712 at the AUD 20-year rate, convert them to CHF 190,330, and invest that at the CHF 20-year rate
- Borrow CHF 78,723 at the CHF 30-year rate, convert them to AUD 119,415, and invest that at the AUD 30-year rate
All of this results in a profit (remember: assuming no yield changes and a given future AUD/CHF exchange rate) of \(AUD\ 995\).
Final Result
The total profit would be:
\[AUD\ 17,346\ \left(=\ AUD\ 16,351\ +\ AUD\ 995\right)\]
Here’s how the positions add up:
Maturity, Years | AUD | ||
Intra-Market | Inter-Market | Total | |
2 | (AUD 619,662) | (AUD 380,338) | (AUD 1,000,000) |
5 | AUD 0 | AUD 549,635 | AUD 549,635 |
10 | AUD 619,662 | AUD 0 | AUD 619,662 |
15 | AUD 1,000,000 | AUD 0 | AUD 1,000,000 |
20 | AUD 0 | (AUD 288,712) | (AUD 288,712) |
30 | (AUD 1,000,000) | AUD 119,415 | (AUD 880,585) |
and:
Maturity, Years | CHF | ||
Intra-Market | Inter-Market | Total | |
2 | CHF 541,385 | CHF 250,734 | CHF 792,119 |
5 | CHF 0 | (CHF 362,341) | (CHF 362,341) |
10 | (CHF 1,000,000) | CHF 0 | (CHF 1,000,000) |
15 | (CHF 541,385) | CHF 0 | (CHF 541,385) |
20 | CHF 0 | CHF 190,330 | CHF 190,330 |
30 | CHF 1,000,000 | (CHF 78,723) | CHF 921,277 |
Graphically, here’s what’s happening, in toto:
Notice, in particular, that for the 30-year bonds the inter-market trade negates some of the corresponding intra-market trades; i.e., the intra-market AUD trade is short AUD 1,000,000 in the 30-year bond, while the inter-market trade is long AUD 119,415 in that same bond, and the intra-market CHF trade is long CHF 1,000,000 in the 30-year bond, while the inter-market trade is short CHF 78,723 in that same bond. The curriculum uses the term “reverse” or “switch” to denote a situation in which the inter-market trade on a given bond is in the opposite direction of the intra-market trade on that same bond.
Complications
In the real world, things are a lot more complicated than the (already at least moderately complex) situation I described above. Real-world complications include the possibility that the:
- Bonds used in the trade might not all be par bonds (indeed, it’s most likely that none of them will be par bonds)
- Yield curves might (indeed, probably will) change: move up, move down, flatten, steepen, whatever
- Expected future exchange rate is not the forward rate
- Strategy will incorporate more than two yield curves
- Bonds used in the trade are not fixed-rate bonds
- Coupons are received before the holding period ends
Premium / Discount Bonds
If the bonds used in carry trade are not par bonds (i.e., they’re premium bonds or discount bonds), then there will be a riding-the-yield-curve effect on the price of the bonds (even if the bond’s yield to maturity is unchanged) which will affect the carry trade return. To be fair, even par bonds will see price changes when the yield curve is not flat. When calculating the return on a carry trade transaction, be sure to remember to include the capital gain/loss on the bonds themselves. And, of course, remember that premium bonds will have a higher coupon return, and discount bonds will have a lower coupon return.
Yield Curve Changes
If the yield curves are expected to change, then the prices of some (or all) of the bonds in the carry trade transaction will change accordingly. Ideally, you can predict the yield curve changes accurately and incorporate them into your algorithm for determining the best carry trade transactions. Nevertheless, this is a source of risk in carry trade. Note that it will affect both aspects of the carry trade: intra-market and inter-market.
Exchange Rate Changes
As with yield curve changes, you can try to anticipate exchange rate changes and incorporate those changes into your carry trade algorithm. As with everything else, the better you are at predicting the actual (spot) exchange rate at the end of your holding period, the better you will be at making an inter-market carry trade profit.
Three or More Yield Curves
The example in the curriculum has three currencies: USD, GBP, and EUR. In the real world, you may be looking at dozens of currencies, including both stable, developed market currencies (e.g., USD, GBP, EUR, JPY, CHF, AUD, CAD, and so on) and less stable currencies, or currencies from less developed markets (Turkish lira (TRY), Brazilian real (BRL), Mexican peso (MXN), Indian rupee (INR), Argentinian peso (ARS), Thai bhat (THB), and so on). This means that the model has to include yield curves for each of the currencies involved (current yield curves as well as projected yield curves) and exchange rates between each of the currencies involved and the investor’s home currency (again, current spot rates and projected spot rates). The optimization becomes more complicated with each additional currency; in general, the complexity will increase as roughly the square of the number of currencies.
Floating-Rate Bonds
I confess that this would never have occurred to me, but there was a question on a CFA forum about what happens if the cost of borrowing changes. This would occur if the bonds that are sold are floating-rate bonds. Of course, it’s also possible for the cost of lending to change, if the bonds that are bought are floating-rate bonds.
In the real world this could happen (though I doubt it ever would: it is an added complication that, frankly, nobody wants), but it will never happen on the exam. Please put it out of your mind.
Interim Coupons
If any of the bonds used in the carry trade pay coupons before your holding period is up, those coupons will have to be reinvested for the remainder of the holding period. This probably isn’t a significant problem, as the coupons are generally small relative to the price of the bond itself, and the reinvestment return will be small relative to the coupons that are reinvested (so, really, really small relative to the price of the bond). Nevertheless, it’s a complicating factor that a fixed income portfolio manager should consider as part of the carry trade strategy. I’m quite sure, however, that it will not arise on the exam.
How Can This Be Tested?
This is a really good question. Because this material was new in the 2019 Level III curriculum, and because 2019 is the year that CFA Institute decided that it would no longer publish the morning session actual exams and guideline answers, I have no definitive answer on how they tested this in 2019 or how they might test it in the future. The best I can do is to speculate. Therefore, do not take anything that follows as gospel; it’s nothing more nor less than my opinion (along with a soupçon of reasoning).
First, you will not have to go through all of the calculations included in the 10-page example in the curriculum. That’s far too long for an exam question. Nor do I expect that you will have to determine, on the whole, what transactions you will have to make, though you might have to do so with some clues given to you. Here are some examples of what I think you could expect:
Example 1
Suppose that you are given four bonds denominated in a single currency, say, 2-year, 5-year, 7-year, and 10-year maturities, and you’re given the YTMs today (a normal (upward sloping) yield curve), the modified durations today, and the expected YTMs in one year (also a normal yield curve). You’re further told that all carry trades will be pairs trades (i.e., sell one bond, buy the same amount of one other bond), and that the pairs trade to pick up yield will be a 2/7 trade for a given amount. You might be asked to calculate the:
- Expected yield pickup on the 2/7 trade (in bps or in currency)
- Amount of the 5/10 trade to ensure that you’re duration neutral
- Expected yield loss on the 5/10 trade (in bps or in currency)
- Expected yield gain for the entire transaction (in bps or in currency)
Example 2
Suppose that you’re given yield curves for GBP and BRL, and all of the transactions for an intra-market carry trade in BRL. For the inter-market carry trade, you might be asked to:
- Determine the position (buy or sell) in, say, the 10-year GBP bond based on the relative 10-year yield of BRL vs. GBP
- Calculate the expected yield gain (in bps or GBP or BRL) on the 10-year inter-market carry trade
Example 3
You might also have qualitative questions about intra-market or inter-market carry trade, such as explaining why you would deliberately enter into a specific trade knowing that you will lose yield on the trade (Answer: to maintain duration neutrality), or why you might have a position that is less than the allowable position limit (Answer: to maintain duration neutrality; I know, this is starting to get boring).
Final Thought
I encourage you to go through the example in the curriculum. It’s long, and it’s tedious, and it’s boring, but at least now you have a good grasp on what they’re doing and why, so you’ll be able to step through it fairly quickly. It has a number of questions which you should read and try to answer before reading their answers. I think that it will serve you well.