Deriving USD Funding Rates from FX Swap Points
Summary
The document explains how to infer an implied USD borrowing rate from EUR/USD spot and overnight forward-point quotes when borrowing dollars through an FX swap. The key correction is to compare the forward exchange rate with the same spot rate used in the interest parity relationship. Using different sides of the spot quote in those two places creates a large error in the inferred rate.
The calculation also needs the appropriate money-market day-count basis. The example uses ACT/360 for both currencies rather than ACT/365, and the corrected ask-side calculation produces an implied USD yield close to the quoted market figure. The answer demonstrates the parity equation and gives a numerical check, but the result depends on the selected bid or offer, quote conventions, and assumed EUR rate; the document does not discuss transaction costs or broader funding adjustments.
Key ideas
- Use the same spot exchange rate when relating spot, forward, and interest rates.
- Convert forward points into an outright forward rate using the relevant spot quote.
- Apply the market day-count basis, which is ACT/360 in the example.
- Bid-offer selection affects the implied borrowing or lending rate.
Tags
Full text
# Implied cost of borrowing USD via an FX swap
# Implied cost of borrowing USD via an FX swap
EURUSD is quoted at 1.0879/84. Lets say O/N forward points are quoted at +0.032/+0.332. Lets say based on these quotes I want to derive my implied funding cost (USD interest rate) if I wanted to borrow USD via an FX swap (sell EURUSD spot, buy it forward). I want to sell EUR spot so I would lift the quoted bid (1.0879) I want to buy EUR forward so I would lift the quoted forward point offer (+0.332). Assume that the ON interest rate for EUR is -0.44%.
My equation that I'm trying to solve is this:
(1.0879)*[(1+x/365)/(1-0.0044/365)] = (1.0884+0.332/10000)
Solving for x gives me 17.5% which isn't even close to the answer (Bloomberg shows -0.3342% and 0.6587% bid and ask implied yield)... I cant figure out what I'm doing wrong. Can someone please help me?
## Answer by David Duarte (score 3)
https://quant.stackexchange.com/a/52905
You're not really using the same spot, are you?
$$ FX_{fwd} = FX_{spot} \frac{1+r}{1+r_f} = FX_{spot} + ForwardPoints$$
But you are using 1.0879 on one side of the equation and then 1.0884 on the other.
If you correct for that and for the fact that ibors are quoted in Act/360, you get 0.6586% which is very close to what you wanted.
```
from scipy.optimize import fsolve
spot = 1.0879
def f(x): return spot*(1+x/360)/(1-0.0044/360) - (spot+0.332/10000)
fsolve(f,0.1)
```
0.006586169611214752Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.