FX Swap Basis from Covered Interest Rate Parity
Summary
The document explains how to interpret an FX forward quote and calculate the implied funding yield and FX basis. Under covered interest rate parity, the forward exchange rate relates spot, the two currency interest rates, and the accrual period. Rearranging that relation gives the implied dollar yield; subtracting the quoted dollar yield gives the basis spread. The response also identifies a bracket placement error in the paper’s displayed formula and shows how settlement timing affects the accrual period: a three-month transaction can span 92 accrual days after accounting for a two-day spot settlement lag.
A forward outright is distinct from forward points, and the displayed quote depends on the data source and terminal settings. The answer stresses that Bloomberg yield columns and conventions may vary, including which interest rate curve is selected. Real bid and ask pricing also involves conventions for the two swap legs, so the simplified parity calculation may not exactly reproduce a quoted basis. The example clarifies calculation mechanics but does not establish a trading opportunity.
Key ideas
- Covered interest rate parity can be rearranged to calculate the yield implied by an FX forward.
- The FX basis is the difference between the implied funding yield and the directly quoted yield.
- The accrual period should account for the spot settlement lag and the applicable day-count convention.
- Forward outright quotes and forward points are distinct displays of FX forward pricing.
- Bid and ask conventions and the selected interest rate curves can affect the calculated spread.
Tags
Full text
# How to Bloomberg compute the implied Yield ? What is FX swap basis spread?
# How to Bloomberg compute the implied Yield ? What is FX swap basis spread?
Question 1: You can see Bloomberg EUR/USD FXFA<go> page attached below
EUR 3 months yield=3.9412
US 3 months yield= 5.6683
Spot Rate: 1.0580
How does it find FX swap rate as 1.062732?
Question 2:
The last column in this picture is "spread", is this FX swap basis spread ?
Question 3:
The following paper calculates FX swap basis spread as the following formulea, is this true ? https://www.newyorkfed.org/medialibrary/media/research/epr/2022/epr_2022_fima-repo_choi.pdf
## Answer by AKdemy (score 11, accepted)
https://quant.stackexchange.com/a/76971
1 ) The value `1.062732` is the Forward outright as quoted on `FRD`. Your pricing source is BGN (Bloomberg Generic New York). That means historically, the value refers to 5PM New York time. The quote itself is derived from all available indicative quotes. You can see the quotes you have access to on `ALLQ`, given you load the forward ticker. Some details about the calculation behind it can be found on `XDF`.
Technically, the quote for EURUSD is in points but you have `show outrights` ticked and FRD should show both, points and outrights anyways. Note that FRD and FXFA both have separate settings for this, and your view may differ and not display everything.
2 ) It is simply the spread (difference) between the actual yield and the one implied from covered interest rate parity. Therefore, it is the FX basis swap spread, as defined by the authors:
> One standard metric that reflects the gap in the cost of funds is the FX swap basis spread (sometimes referred to as the basis), constructed by comparing the implied cost of U.S. dollar funding from an FX swap transaction of a specific tenor to a direct U.S. dollar interest rate.
3 ) The formula in the paper has a typo. As mentioned in the answer by @bartosz.leszynski before, it really is just standard covered interest rate parity solved for yield. $${{S_{t}}}\frac {(1+i_{\ $}*\frac{k}{360})}{(1+i_{\ €}*\frac{k}{360})} = F_{t+k}$$, hence $$i_{\ $_{implied}} = \left(\frac {F_{t+k}*(1+i_{\ €}*\frac{k}{360})}{S_t} -1 \right)/\frac{k}{360}$$ which is just the formula in the paper (after fixing the bracket), rearranging a bit $$i_{\ $_{implied}} = \frac{360}{k} \left(\left(\frac{F_{t+k}}{S_t} \right) * \left(1+i{_\ €}*\frac{k}{360} \right) -1 \right)$$ , and subtracting the yield to get the $$ Basis \ Spread = \left[\frac{360}{k} \left(\left(\frac{F_{t+k}}{S_t} \right) \left(1+i{_\ €}*\frac{k}{360} \right) -1 \right) \right] - i_{\ $}.$$
Moreover, it is not 90 days, but 92 days (daycount is Act/360, taking into account a T+2 settlement lag for Spot). A quick demo in Julia looks like this.
```
using Dates
# define dates
start_dt = Dates.Date(2023,10,10)
settle_dt = start_dt + Dates.Day(2) # Spot settles T+2 (in this case)
end_dt = Dates.Date(2024,1,12)
days = end_dt - settle_dt
# define input data
spot_bid = 1.058
fwd_bid = 1.062732
#fwd_pts_bid = (fwd_bid - spot_bid)*10000
usd_yld_bid = 0.056683
eur_yld_bid = 0.039412
# compute implied yield
println("Days to expiry = $(days.value)")
paper = 360/days.value*((fwd_bid/spot_bid)*(1+eur_yld_bid*days.value/360))-1
println("Wrong Formula Implied USD Yield= $(paper)")
cip_solved = 360/days.value*((fwd_bid/spot_bid)*(1+eur_yld_bid*days.value/360)-1)
println("Correct Formula Implied USD Yield= $(cip_solved)")
println("USD Implied Yield Pct = $(round(cip_solved*100, digits = 4))")
println("Spread Bid = $(round((cip_solved - usd_yld_bid)*100, digits = 4))")
```
To sum up, the implied cost is the computed interest rate you get from covered interest rate parity, and the direct USD interest rate is the quoted rate. That said, you need to click on the Yield columns in FXFA to see what you actually have selected. This will depend on your (default) settings and need not be OIS (also OIS can be Fed Funds as well as SOFR).
TL;DR One final comment, I omitted bid and ask above, but the relationship is not as simply as solving the formula. Bloomberg shows the formulas they use on the help page:
The reason these formulas are not consistent is that in real life, spot and forward transactions are negotiated as a swap, and you usually do not need to pay the full spread on both legs. Therefore, it is common practice to reverse the spread on one rate which gives the relationship shown on the help page (our example refers to $N_b$).
This is also consistent with FRD, where two rules are mentioned:
- {LPHP FRD:0:1 2898067 }:
ON ("Overnight"), TN ("Tomorrow-Next"), and SN ("Spot-Next") are not tenors; they are swaps. Each are associated with two separate settlement dates, one for each leg: • ON is the swap between TOD and TOM. • TN is the swap between TOM and the following business day (which is spot in a T+2 currency).
- {LPHP FRD:0:1 612124 }:
Certain rules apply when calculating two-day settlements for Overnight (ON) and Tomorrow Night (TN) outrights. Two-Day Settlement Outright Calculations • ON bid outright: spot bid - TN ask points - ON ask points • ON ask outright: spot ask - TN bid points - ON bid points • TN bid outright: spot bid - TN ask points
## Answer by bartosz.leszynski (score 3)
https://quant.stackexchange.com/a/76965
- In my opinion the first column is the market EURUSD FX forward BID rate. So they find the market price 1.062732.
- It looks like it is a spread between Implied USD Yield and market USD Yield.
- In my opinion the price formula is:
EURUSD_spot_bid * (1 + USD_yield_bid * 90/360) / (1 + EUR_yield_ask * 90/360) = EURUSD_3Mforward_bid
so the Implied USD Yield formula is:
implied_USD_yield_bid = 360/90 * EURUSD_3Mforward_bid / EURUSD_spot_bid * (1 + EUR_yield_ask * 90/360) - 360/90
so the spread between Implied USD Yield and market USD Yield is:
spread = 360/90 * EURUSD_3Mforward_bid / EURUSD_spot_bid * (1 + EUR_yield_ask * 90/360) - 360/90 - USD_yield_bid
However, my Implied USD Yield formula returns dfferent outcome 0,057548 than what is in the screenshot 0,05709
implied_USD_yield_bid = 360/90 * 1,062732 / 1,058 * (1 + 0,039481 * 90/360) - 360/90 = 0,057548Shown 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.