In foreign exchange markets, a forward rate is the exchange rate agreed upon today for a transaction that will take place on a specific future date. Unlike the spot rate, which is for immediate delivery, the forward rate accounts for the interest rate differentials between the two currencies involved.
The FX Forward Rate Formula
The calculation is based on the principle of No-Arbitrage or Interest Rate Parity. The formula used is:
Forward points represent the difference between the spot rate and the forward rate. In the example above, the forward points are (1.1054 – 1.1000) * 10,000 = 54 points. If the forward rate is higher than the spot rate, the base currency is at a forward premium. If it is lower, it is at a forward discount.
function calculateForwardRate() {
var spot = parseFloat(document.getElementById('spotRate').value);
var rDom = parseFloat(document.getElementById('domRate').value);
var rFor = parseFloat(document.getElementById('forRate').value);
var days = parseFloat(document.getElementById('daysToMaturity').value);
var basis = parseFloat(document.getElementById('dayCount').value);
var resultDiv = document.getElementById('fxResultContainer');
var rateDisplay = document.getElementById('forwardRateResult');
var pointsDisplay = document.getElementById('forwardPointsResult');
if (isNaN(spot) || isNaN(rDom) || isNaN(rFor) || isNaN(days)) {
alert('Please enter valid numerical values for all fields.');
return;
}
// Convert interest rates to decimals
var rd = rDom / 100;
var rf = rFor / 100;
// Time factor
var t = days / basis;
// Forward Rate Formula: F = S * (1 + rd*t) / (1 + rf*t)
var forwardRate = spot * ( (1 + (rd * t)) / (1 + (rf * t)) );
// Forward Points (Difference * 10000 for standard pips)
var points = (forwardRate – spot) * 10000;
// Display results
rateDisplay.innerText = forwardRate.toFixed(6);
pointsDisplay.innerText = "Forward Points: " + (points > 0 ? "+" : "") + points.toFixed(2) + " pips";
resultDiv.style.display = 'block';
}