How to Calculate Swap Rate from Spot Rate

Swap Rate & Forward Points Calculator .calc-container { max-width: 800px; margin: 0 auto; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; color: #333; line-height: 1.6; } .calc-box { background: #f8f9fa; border: 1px solid #e9ecef; border-radius: 8px; padding: 30px; margin-bottom: 40px; box-shadow: 0 4px 6px rgba(0,0,0,0.05); } .calc-title { text-align: center; margin-bottom: 25px; color: #2c3e50; font-size: 24px; font-weight: 700; } .form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; } @media (max-width: 600px) { .form-grid { grid-template-columns: 1fr; } } .form-group { margin-bottom: 15px; } .form-group label { display: block; margin-bottom: 8px; font-weight: 600; font-size: 14px; color: #555; } .form-group input, .form-group select { width: 100%; padding: 12px; border: 1px solid #ccc; border-radius: 4px; font-size: 16px; box-sizing: border-box; } .form-group input:focus { border-color: #007bff; outline: none; box-shadow: 0 0 0 3px rgba(0,123,255,0.1); } .calc-btn { grid-column: 1 / -1; background-color: #28a745; color: white; padding: 15px; border: none; border-radius: 4px; font-size: 18px; cursor: pointer; font-weight: bold; width: 100%; transition: background-color 0.2s; } .calc-btn:hover { background-color: #218838; } .results-area { grid-column: 1 / -1; background: #fff; border: 1px solid #dee2e6; border-radius: 4px; padding: 20px; margin-top: 20px; display: none; } .result-row { display: flex; justify-content: space-between; margin-bottom: 10px; padding-bottom: 10px; border-bottom: 1px solid #eee; } .result-row:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; } .result-label { color: #666; } .result-val { font-weight: bold; color: #2c3e50; font-size: 18px; } .article-section h2 { color: #2c3e50; margin-top: 30px; font-size: 22px; } .article-section h3 { color: #495057; margin-top: 20px; font-size: 18px; } .article-section p { margin-bottom: 15px; text-align: justify; } .formula-box { background: #eef2f5; padding: 15px; border-left: 4px solid #007bff; font-family: 'Courier New', monospace; margin: 20px 0; }
Forex Forward Rate & Swap Points Calculator
360 Days (Standard USD/EUR) 365 Days (GBP/AUD)
Calculated Forward Rate:
Swap Points (Raw):
Swap Points (Pips):
Direction:

How to Calculate Swap Rate from Spot Rate

In foreign exchange (Forex) markets, the "Swap Rate" (often referred to as Forward Points or Swap Points) is the difference between the Spot Rate and the Forward Rate. This value is determined by the Interest Rate Parity (IRP) theory, which states that the difference in interest rates between two currencies is equal to the differential between the forward and spot exchange rates.

Traders and financial institutions calculate these points to price forward contracts or to determine the cost of carry (rollover) for holding positions overnight. If the interest rate of the currency you are buying is higher than the one you are selling, you generally earn swap points. Conversely, if you buy a currency with a lower interest rate, you pay swap points.

The Mathematical Formula

To calculate the Swap Rate (Forward Points) from the Spot Rate, we first determine the theoretical Forward Rate using the interest rates of the Base and Quote currencies.

Forward Rate = Spot Rate × [ (1 + (Quote Rate × Days / Year)) / (1 + (Base Rate × Days / Year)) ]

Where:

  • Spot Rate: The current exchange price of the currency pair.
  • Quote Rate: The annual interest rate of the secondary currency (Counter currency).
  • Base Rate: The annual interest rate of the primary currency.
  • Days: The number of days until the forward date (or 1 for overnight swap).
  • Year: The day count convention (usually 360 for most pairs, 365 for GBP pairs).

Once the Forward Rate is calculated, the Swap Points are simply:

Swap Points = Forward Rate – Spot Rate

Example Calculation

Let's assume the EUR/USD pair has a Spot Rate of 1.1000.

  • Base Currency (EUR) Interest Rate: 3.00%
  • Quote Currency (USD) Interest Rate: 5.00%
  • Duration: 30 Days
  • Day Count: 360

1. Calculate Quote Factor: 1 + (0.05 × 30/360) = 1.004166

2. Calculate Base Factor: 1 + (0.03 × 30/360) = 1.002500

3. Determine Forward Rate: 1.1000 × (1.004166 / 1.002500) ≈ 1.1018

4. Calculate Swap Points: 1.1018 – 1.1000 = +0.0018 (or 18 Pips)

In this scenario, because the Quote currency (USD) has a higher interest rate than the Base currency (EUR), the Forward Rate is higher than the Spot Rate (Contango), resulting in positive swap points.

Why do Swap Rates Vary?

While the formula provides a theoretical value known as "Fair Value," actual broker swap rates often differ slightly. Brokers may add a markup or markdown to the interbank swap rates to cover their administrative costs and risk. This is why the "Long Swap" and "Short Swap" values on a trading platform rarely align perfectly with the pure interest rate differential.

function calculateSwap() { // 1. Get input values var spot = parseFloat(document.getElementById('spotRate').value); var baseRate = parseFloat(document.getElementById('baseInt').value); var quoteRate = parseFloat(document.getElementById('quoteInt').value); var days = parseFloat(document.getElementById('days').value); var dayCount = parseFloat(document.getElementById('dayCount').value); // 2. Validate inputs if (isNaN(spot) || isNaN(baseRate) || isNaN(quoteRate) || isNaN(days) || isNaN(dayCount)) { alert("Please enter valid numerical values for all fields."); return; } if (spot <= 0 || days 50) { multiplier = 100; // Adjust for JPY pairs } var swapPips = swapRaw * multiplier; // 9. Determine Direction (Premium or Discount) var directionText = ""; if (swapRaw > 0) { directionText = "Premium (Forward > Spot)"; } else if (swapRaw < 0) { directionText = "Discount (Forward 50 ? 2 : 4; // Dynamic precision var fullPrecision = precision + 2; // For forward rate accuracy document.getElementById('resForwardRate').innerText = forwardRate.toFixed(fullPrecision); document.getElementById('resSwapRaw').innerText = swapRaw.toFixed(fullPrecision); document.getElementById('resSwapPips').innerText = swapPips.toFixed(2) + " Pips"; document.getElementById('resDirection').innerText = directionText; }

Leave a Comment