Covered interest parity (CIP) says that a risk-free investment in U.S. dollars should deliver exactly the same payoff as a euro investment that is hedged back into dollars with a forward contract. Instead of just memorising the algebra, it helps to watch the cash split into both paths and reunite at maturity.
The interactive lab below follows $1,000 through both strategies and solves for the forward rate that keeps the outcomes identical. Adjust the market inputs to see how the forward contract must respond.
Tip
How to use the animation
Move the sliders to set the spot exchange rate and the two 1-year interest rates.
Adjusting a slider automatically replays the animation; use Play animation to rerun it on demand.
Watch the forward rate update so the hedged foreign payoff lands exactly on the domestic payoff—no arbitrage.
Note
Spot and forward rates are quoted in USD per EUR (how many dollars one euro buys). The domestic rate is the U.S. continuously compounded risk-free rate \(r\), and the foreign rate is the euro continuously compounded risk-free rate \(r_f\).
Interactive lab: domestic vs. hedged foreign investment
formatUSD = (value, digits =2) =>newIntl.NumberFormat("en-US", {style:"currency",currency:"USD",minimumFractionDigits: digits,maximumFractionDigits: digits }).format(value)formatEUR = (value, digits =2) =>newIntl.NumberFormat("de-DE", {style:"currency",currency:"EUR",minimumFractionDigits: digits,maximumFractionDigits: digits }).format(value)formatPercent = value =>`${(value *100).toFixed(2)}%`formatSpot = value =>`$${value.toFixed(3)} per €1`easeInOutCubic = t => t <0.5?4* t * t * t :1-Math.pow(-2* t +2,3) /2
escapeTeX = value =>String(value).replace(/\u00A0/g,' ').replace(/\\/g,"\\\\").replace(/\$/g,"\\$").replace(/%/g,"\\%").replace(/_/g,"\\_").replace(/\{/g,"\\{").replace(/\}/g,"\\}").replace(/#/g,"\\#").replace(/\^/g,"\\^").replace(/&/g,"\\&")texUSD = value =>`\\text{${escapeTeX(formatUSD(value))}}`texEUR = value => {const raw =formatEUR(value).replace(/€/g,'').trim()return`\\text{${escapeTeX(raw)}}\\,\\text{EUR}`}texSpotQuote = rate =>`\\$${rate.toFixed(3)}\\,/\\,\\text{EUR}`texForwardQuote = rate =>`\\$${rate.toFixed(3)}\\,/\\,\\text{EUR}`texPercent = value =>`${(value *100).toFixed(2)}\\%`styleMath = (node, { size ="0.9rem", color ="#495057", weight =500 } = {}) => { node.style.display="block" node.style.fontSize= size node.style.color= color node.style.fontWeight= weightreturn node}
Both paths start with the same $1,000. Under no-arbitrage, the forward rate for a contract with maturity \(T\) must satisfy
\[
F_0 = S_0 e^{(r - r_f)T}
\]
where \(r\) and \(r_f\) are the continuously compounded risk-free rates. The animation enforces this equality by solving for \(F_0\) after you set the inputs (with \(T=1\) year).
If \(r > r_f\), the forward trades at a premium to spot (\(F_0 > S_0\)) so that the foreign investment does not beat the domestic path.
If \(r < r_f\), the forward trades at a discount (\(F_0 < S_0\)), offsetting the foreign yield advantage.
Any deviation of the actual forward quote from \(F_0\) signals a covered interest arbitrage opportunity: borrow in the cheaper currency, invest in the higher-yielding one, and lock the forward to harvest the spread.
Forwards vs. Futures Prices
The formula for the no-arbitrage forward rate, \(F_0\), assumes that the interest rates \(r\) and \(r_f\) are constant over the life of the contract. Under this assumption, the price of a currency futures contract is identical to the forward price.
In reality, interest rates are stochastic. This introduces a key difference between forwards and futures:
Forwards are settled only at maturity.
Futures are marked-to-market daily, meaning profits and losses are settled every day.
If the foreign currency strengthens unexpectedly, futures traders receive immediate cash profits, which they can reinvest at the prevailing (and possibly changed) interest rates. If the currency weakens, they have to fund immediate losses.
This daily settlement mechanism means that the futures price will be higher than the forward price if the exchange rate is positively correlated with domestic interest rates. This is because positive correlation allows profits from a rising exchange rate to be reinvested at higher-than-average rates—an advantage over forwards that must be priced into the futures contract. Conversely, the futures price will be lower if the correlation is negative. For most short-term contracts on major currencies, this correlation effect is small, and the forward and futures prices are therefore very close.