How to Calculate the Swap Rate

Forex Swap Rate Calculator

Calculate the overnight rollover interest for your currency positions based on interest rate differentials.

Calculation Results:

Annual Swap Yield:

Daily Swap Amount (Quote Currency):

Monthly Swap Projection:

*Positive values indicate credit received; negative values indicate cost paid.

How to Calculate the Swap Rate in Forex

In the foreign exchange market, a swap rate (also known as a rollover rate) is the interest added to or deducted from a trading account for holding a position overnight. Because every currency trade involves borrowing one currency to buy another, the interest rate differential between the two central banks determines the swap rate.

The Swap Rate Formula

To calculate the daily swap amount, professional traders use the following mathematical logic:

Daily Swap = (Position Size × (Interest Rate Differential – Broker Markup) / 100 / 365) × Current Price

Key Variables Explained

  • Position Size: The number of lots you are trading (e.g., 1.0 lot usually equals 100,000 units of the base currency).
  • Interest Rate Differential: The difference between the interest rate of the base currency and the quote currency. If you buy a currency with a higher interest rate than the one you sell, you earn a "positive swap."
  • Broker Markup: Brokers typically add a small fee or spread to the swap rate, which reduces the interest you receive or increases the interest you pay.
  • 365/360 Days: Most brokers calculate swap on a daily basis, dividing the annual rate by 365 (though some use 360).

Example Calculation

Suppose you are long 1 standard lot (100,000 units) of EUR/USD. The Eurozone interest rate is 4.50%, the US interest rate is 5.50%, and your broker charges a 0.25% markup. The exchange rate is 1.0800.

  • Differential: 4.50% – 5.50% = -1.00%
  • Adjusted for Markup: -1.00% – 0.25% = -1.25%
  • Annual Swap Amount: 100,000 * (-1.25 / 100) = -1,250 USD
  • Daily Swap: -1,250 / 365 = -3.42 USD per night

Triple Swap Wednesdays

It is important to note that most brokers charge a "triple swap" on Wednesday nights. This is because the spot forex market has a T+2 settlement cycle. A trade held over Wednesday night represents the settlement for the upcoming weekend, so three days of interest are accounted for in a single rollover period.

function calculateSwapRate() { var position = parseFloat(document.getElementById('positionSize').value); var contract = parseFloat(document.getElementById('contractSize').value); var baseRate = parseFloat(document.getElementById('baseInterestRate').value); var quoteRate = parseFloat(document.getElementById('quoteInterestRate').value); var markup = parseFloat(document.getElementById('brokerFee').value); var price = parseFloat(document.getElementById('currentPrice').value); if (isNaN(position) || isNaN(contract) || isNaN(baseRate) || isNaN(quoteRate) || isNaN(markup) || isNaN(price)) { alert("Please enter valid numeric values in all fields."); return; } // Logic: Calculate the differential minus the broker's spread // Note: In a long position, you earn base rate and pay quote rate. // Differential = (Base – Quote – Markup) var annualDiff = (baseRate – quoteRate – markup); // Total units traded var totalUnits = position * contract; // Annualized swap in quote currency // (Units * RateDiff / 100) * Price // However, usually calculation is: PositionValue * Diff / 365 var annualAmount = (totalUnits * (annualDiff / 100)) * price; var dailySwap = annualAmount / 365; var monthlySwap = dailySwap * 30.42; // Average days per month // Display Results document.getElementById('annualYield').innerText = annualDiff.toFixed(2) + "%"; document.getElementById('dailyAmount').innerText = dailySwap.toFixed(4); document.getElementById('monthlyAmount').innerText = monthlySwap.toFixed(2); // Style adjustments for positive/negative if (dailySwap > 0) { document.getElementById('dailyAmount').style.color = "#27ae60"; } else { document.getElementById('dailyAmount').style.color = "#c0392b"; } document.getElementById('swap-result-box').style.display = 'block'; }

Leave a Comment