The Covered Interest Rate Parity for FX is often quoted simplistically as $$ X_T \quad=\quad X_S \cdot \frac{D^{base}_T}{D^{quote}_T} $$ where $X_t$ is the (projected) FX rate at time $t$ (denoted as $1$ base = $X$ quote), $D_t^{ccy}$ is the discount factor for time $t$ in currency $ccy$, and $X_S$ denotes the current FX Spot Rate.

To derive this parity one can note a cashflow of 1 USD at $T$ can be discounted in USD and then converted at spot $X_S$ to JPY. Or equivalently, convert at $X_T$ and discount in JPY. So $$ \text{NPV in JPY} \quad=\quad (1\text{ USD} \cdot D_T^{USD}) \cdot X_S \quad=\quad (1\text{ USD} \cdot X_T) \cdot D_T^{JPY} $$ which implies the parity.

In practice the above parity does not hold since spot $\ne$ today (e.g. when spot = today + 2 days). So we get a more comprehensive parity: $$ X_{T} \quad=\quad X_{S} \cdot \frac{D^{base}_{T}}{D^{quote}_{T}} \cdot \color{blue}{\frac{D^{quote}_{S}}{D^{base}_{S}}} $$ E.g. see QuantLib's implementation: github.com/.../QuantLib/.../ratehelpers.cpp#L995-L1012

I am struggling to properly incorporate this $\color{blue}{\text{spot adjustment}}$ in the non-arbitrage/replication argument, which I outlined above. Can anybody help?


A simple trick is being used to come up with the right discount factors.

Since $D_T=\frac{1}{1+r_1}\frac{1}{1+r_2}\frac{1}{1+r_3}\cdots\frac{1}{1+r_T}$

and $D_S=\frac{1}{1+r_1}\frac{1}{1+r_2}$

we can form the desired discount factor from two days hence to date $T$ as follows

$\frac{D_T}{D_S}=\frac{1}{1+r_3}\cdots\frac{1}{1+r_T}$ (which we might call $D_{2,T}$)

The same trick is being used for both the base and quote currencies to eliminate the unwanted discounting for the first two days which would occur in a naive day 0 to day $T$ discounting. It is not so much a different arbitrage argument as a refinement of the calculation of $D^{base}$ and $D^{quote}$ in your first equation, reflecting that $D_{2,T}$ and not $D_{0,T}$ type of calculation is needed.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.