The Analyst's Path

Currency swap

A currency swap is a contract in which two parties exchange principal in two currencies at the start, pay each other interest on the principal they received, fixed or floating as the terms set, and exchange the principal back at the end at the original rate. Each leg is priced off its own currency's curve, so the swap is worth zero at the start. Because the principal moves, the credit exposure is much larger than on a rate swap of the same notional.

7 min readPart of Swaptions, the Black Model & Non-Rate SwapsOpen in course mode

Advertisement

A fixed-for-fixed currency swap exchanges principal in two currencies at inception, exchanges fixed-rate interest on each principal through the life of the deal, and exchanges the principal back at maturity at the original rate. It is the instrument that turns a dollar liability into a rupee liability, or a rupee asset into a dollar asset, without touching the underlying bond.

Three features separate it from the interest-rate swap you already price.

The first difference is that principal moves. In a single-currency swap the notional never does, because both legs are in the same money and the principals cancel. Here they are in different currencies and do not cancel, so they are exchanged at the start and returned at the end. That makes the credit exposure much larger than a rate swap of the same notional, because the final exchange is a payment of the whole amount at a rate fixed years earlier.

Advertisement

How is a currency swap priced?

Each leg is then priced off its own curve. The fixed rate on the dollar leg is the par swap rate off the dollar discount curve, and the fixed rate on the rupee leg is the par swap rate off the rupee curve. On the curves in Worked example 5 those are 4.890398% and 7.079030%, a differential of 2.188633% that is the interest-rate differential and nothing else. Set the rates that way and each leg is a bond priced at par in its own currency, so the swap is worth exactly zero at inception in either currency. That is the check.

Valuation after inception then has two moving parts. In one currency,

V (in INR, receiving USD) = S × PV$(USD leg) - PV₹(INR leg)

Both present values move with their own curves, and the spot rate S multiplies one of them. The value therefore changes for three separable reasons: time passing (carry and roll-down), the two curves moving, and the exchange rate moving.

How do you explain a change in value?

Separating those three is a reporting discipline rather than a mathematical necessity, and it is the difference between a treasurer who can explain a mark and one who can only report it. The method is three revaluations rather than one. Revalue at the new date on the old curves at the old spot, which isolates carry and roll. Revalue at the new date on the new curves at the old spot, and the change from the first is the rate component. Revalue at the new spot, and the change from the second is the currency component. The three add to the total exactly, because each step changes one thing.

Worked example 5 runs that on a $10 million against ₹86 crore three-year swap and finds carry of minus ₹93.20 lakh, a rate component of minus ₹1.3441 crore and a currency component of plus ₹2.5387 crore, adding to a mark of plus ₹26.26 lakh. Two large offsetting moves, a small net, and a treasurer who reports only the net has told the board nothing.

What does the textbook price leave out?

Two honest limits, stated because a learner who carries the arithmetic without them will misquote a dealer.

The first is the cross-currency basis. Pricing both legs off clean domestic curves assumes that borrowing dollars synthetically through the swap costs the same as borrowing them directly. It does not. The gap is a traded spread, applied to one leg, and it is a funding phenomenon rather than an arbitrage: MS1.04 owns why it exists and why it widens in stress. A price built without it is a teaching price.

The second is India-specific and perishable. The onshore USD/INR forward market and the offshore non-deliverable forward market can quote different forward points for the same tenor, and the gap moves with capital-account conditions and with the Reserve Bank of India's own participation in the market. The covered-interest-parity forwards implied by the two curves in Worked example 5 run from 86.864314 at six months to 91.509912 at three years, or 550.99 paise of forward points at the long end, and those are curve-implied rather than quoted. Any real transaction is priced off the traded market. Verify with the Reserve Bank of India's own reference rate and the Clearing Corporation of India's traded forward data before using any forward point in live work; checked at the time of writing, and the onshore-offshore relationship in particular has moved repeatedly with policy.

{
  "skill": "Building a two-curve currency-swap pricer and a mark-to-market attribution that actually adds up",
  "use": "Have a code-capable assistant write the discount-factor, par-rate and leg-valuation functions for a fixed-for-fixed cross-currency swap, plus the three-revaluation attribution (carry, rates, currency), so you can re-run a mark on any date instead of rebuilding a spreadsheet each quarter.",
  "tools": ["Chat assistants with code execution - Claude, ChatGPT, Gemini", "Python: NumPy for the curve arithmetic, pandas for the cash flow schedule", "CCIL and FBIL for INR curve and forward data; the US Treasury par yield curve and SOFR OIS levels for USD"],
  "prompt": "Given two zero-coupon curves (USD and INR, continuously compounded, at stated tenors), a spot rate, a notional in each currency and an annual payment schedule, write Python that (a) solves the par fixed rate on each leg so the swap is worth exactly zero at inception, (b) values the swap on a later date given new curves and a new spot, and (c) decomposes the change into carry-and-roll, a rate component and a currency component by three successive revaluations. Assert that the three components sum to the total value change to within 1e-9, and assert that the inception value is zero to within 1e-9. Do not round intermediate values.",
  "verify": "Both assertions must fire on bad input before you trust either: perturb one par rate by a single basis point and confirm the inception-value assertion fails, and swap the order of the second and third revaluations and confirm the components change while the total does not. Recompute one full coupon exchange and one final principal exchange by hand. Trace every curve point to a named primary source (CCIL or FBIL for INR, the US Treasury or the New York Fed for USD) and Date-check it against the valuation date, because a curve one day stale moves a three-year mark by more than most people expect. Then state, in writing, that the price excludes the cross-currency basis and is therefore a teaching price rather than a dealer quote (Guardrail 1-5).",
  "diy": "You must be able to derive the par fixed rate on one leg from 'PV of the leg equals its face' with a calculator, and to say why both legs price at par at inception, before you let any code do it. The gated skill is the attribution: knowing that a small net mark can hide two large offsetting components is the thing that makes the output useful to a board, and no assistant will tell you to look.",
  "market": "IN"
}

Advertisement

Part of the course

This page is part of Swaptions, the Black Model & Non-Rate Swaps (DV1.04), in Phase 12: Finance Plus, AI and the quant-code track. The module's flashcards and its quiz are in the app.