Get started

The FX Score Ignores Carry and That Changes the Whole Ranking

Every column on this board measures price. In FX that omits the return you are paid for holding, and a two hundred basis point carry gap is enough to invert a quarterly ranking before the trade is even sized.

The FX Score Ignores Carry and That Changes the Whole Ranking

Relative strength engines rank on price. That is not a hidden assumption, it is the definition of the thing, and across equities and crypto it is close enough to total return that nobody has to think about it. In FX it is not close enough, because a meaningful share of the return from holding a currency arrives as interest rather than as price, and no column on any board of this type has anywhere to put it.

The practical consequence is an ordering error with a predictable sign. High yielding currencies are systematically understated by a price ranking and low yielders are systematically flattered, which means a screen of this kind will hand you the wrong end of the carry trade with perfect consistency.

What the board measures and what it has no field for

Start with what is actually on the page, because it settles the argument quickly. The benchmark panel carries Benchmark, Price, 1D, 7D, 30D and 90D. Those are a level and four price changes. On the populated asset tabs the row adds Score, Conviction, Phase, the same four return windows, ATH percent and a benchmark count. There is no yield column, no funding column, no accrual column and no total return column anywhere in the module.

One further point of fact matters. At capture the FX tab returned no data at all, with a message stating that the scanner is still collecting for this asset class, so there is no live FX ranking to inspect and no FX score to audit. What follows is therefore not a critique of a number you can see. It is the adjustment your desk needs specified before the tab populates, and it applies today to any price based currency ranking you already run.

The FX tab of the Asset Outperformer Engine with an empty results area and the benchmark panel above showing only price and four return columns
Two things to read here. The results area returns no FX data available yet, so there is no live currency ranking. And the benchmark panel above it carries Price, 1D, 7D, 30D and 90D and nothing else, which is the structural point: every field in this module is a price field.

The size of the omission over the windows the board uses

Put a number on it before deciding whether it is worth a process change. Carry accrues roughly linearly in time while spot returns do not, so the omission grows with the window and is close to irrelevant at the short end.

Take a two percentage point annualised differential, which is unremarkable across a developed pair. Over the 1D window that is under one basis point and it is noise. Over 7D it is about four basis points. Over 30D it is about seventeen. Over the 90D window it is roughly fifty basis points, which is no longer noise, and against another currency whose differential runs the other way the gap between the two is a full percentage point of return that the price columns cannot see.

Widen the differential to six or eight points annualised, which is ordinary in emerging markets, and the 90D omission is one and a half to two percent per currency. At that scale carry is not an adjustment to the ranking, it is comparable in magnitude to the spot moves being ranked, and any ordering produced without it is close to arbitrary.

Computing the adjustment from forwards, not from policy rates

The instinct is to take the two central bank policy rates and difference them. Do not build the adjustment that way. Policy rates are a statement about where the official rate sits, and they are not what you earn.

Use the forward points instead. The forward outright against spot for the tenor you care about gives you the market clearing cost of holding the currency, and it already embeds the cross currency basis, the local money market spread over policy and the balance sheet cost that your counterparties are actually charging. When the basis moves, and it moves most when you would most want the number to be right, forwards reflect it and the policy differential does not.

The mechanical form is straightforward. Total return over the window is one plus the spot return, times one plus the carry earned over the window, minus one, where the carry comes from the forward discount or premium for the matching tenor. Compute the carry over the actual window rather than annualising and pro rating, because the term structure of forward points is not flat and pro rating from a one year point will misstate a thirty day hold.

Two details are worth writing into the specification rather than leaving to whoever implements it. Roll the carry at the tenor you would actually trade, since a book rolled monthly earns something different from one rolled quarterly. And apply the bid offer on the forward, not the mid, because the omission you are correcting is smaller than the spread on some of the currencies where it matters most.

What it does to the ordering

Three currencies over a ninety day window, with spot returns against the benchmark of plus 2.0 percent, plus 0.5 percent and minus 1.5 percent. On a price ranking the order is unambiguous and the third one is a short candidate.

Now attach carry of 0.5, 8.0 and 3.0 percent annualised, which over ninety days contributes roughly 0.12, 1.94 and 0.74 percent. Total returns become 2.12, 2.45 and minus 0.78 percent. The second currency has moved from the middle of the ranking to the top, and it did so on an input the board has no column for. The third is still last, but its deficit has shrunk by half, which is enough to change whether it clears a threshold for a short.

Notice what the price ranking got right and what it got wrong. It correctly identified the direction of spot in all three cases. It got the ordering wrong, and ordering is what a ranking is for. That is the failure mode to describe when someone asks why the desk does not simply use the screen output: not that the screen is inaccurate, but that it is accurate about a quantity that is not the one the position earns.

Which ranking the mandate is actually judged against

Here is the distinction that decides which of the two numbers belongs in your process, and it is a mandate question rather than a modelling one.

If the currency exposure is unhedged and held in the book, the position earns the carry, and total return is the honest measure. Ranking on spot alone will systematically underweight the currencies your book is actually being paid to hold, and the attribution report at quarter end will show a currency contribution that no one in the investment process ever chose.

If the exposure is hedged, the carry is not yours, it is the cost of the hedge, and it flows through the hedging programme rather than the position. In that case the spot ranking is the right input for the security decision, because the hedge has already removed the part of the return that the carry adjustment describes. Applying the total return adjustment on top of a fully hedged book double counts it and will make high yielders look attractive when the hedge is precisely what is handing that yield away.

Most books are neither, which is where discipline is required. Write down the hedge ratio the ranking assumes, apply the carry adjustment to the unhedged proportion only, and put that assumption in the same document as the ranking methodology so the two cannot drift apart. A ranking that assumes an unhedged book while the operations team runs an eighty percent hedge is a defect nobody notices for a year.

Where the adjusted ranking breaks

Two limits belong in the same specification, because a carry adjusted ranking is more dangerous than an unadjusted one if these are left out.

The first is that carry is compensation for a tail, not a free addition. The currencies that sit at the top of a carry adjusted table are frequently there because the market requires payment to hold them, and the payment is for a distribution with a long left side. A ranking that promotes a currency for its yield without any risk term attached will assemble the classic carry portfolio, which does exactly what it is documented to do and then does the other thing.

The second is that the adjustment assumes you can transact the forward at something near the observed rate for the size you need. Under capital controls, in non-deliverable markets, or during a basis dislocation, the forward point you are computing from is either not accessible or is itself the crisis. Cap the carry contribution you are willing to credit any single currency, exclude names where the forward market cannot support your size, and mark the excluded ones in the output rather than dropping them silently, so that the reason a currency is absent from the ranking is a recorded decision.

WRITTEN BY
Blockcircle Team

Financial market intelligence covering crypto, stocks, commodities, precious metals, and prediction markets.