ForHosting KIT · Finance & money

Currency forward calculator

Find the exchange rate you can lock in today for a future date: a 1.25 spot with 5% at home and 3% abroad over one year gives a forward of 1.274272. Forward points and the premium or discount come with it. Free in your browser.

  • Free
  • Runs in your browser
  • No sign-up
  • Your data stays on your device
Use it from WebAPIEmailTelegramApp soon
If you enter
Spot rate
1.25
Domestic rate
5
Foreign rate
3
Years
1
You get
Forward rate
1.274272
Forward points
0.024272
Forward premium percent
1.941748
Interest differential
2

A currency forward rate is the exchange rate locked in today for a settlement date in the future. Covered interest-rate parity says that quote is not a forecast of where spot will print: it is the no-arbitrage price implied by today's spot, the domestic interest rate, the foreign interest rate, and the year fraction to maturity. Treasurers, students, and trading tools look this number up whenever they price an outright forward, check dealer points, or mark a homework problem. This currency forward calculator accepts those four inputs, applies the identity, and returns the forward rate in the same quote as the spot together with outright points and the implied forward premium.

What a currency forward rate means and how covered parity sets it

An outright currency forward is a contract to exchange two currencies on a future value date at a rate agreed now. In frictionless money markets that rate is pinned by covered interest-rate parity: borrowing one currency, converting at spot, and lending the other until the same date must cost the same as locking the forward, or an arbitrageur would harvest a risk-free spread.

When the domestic rate exceeds the foreign rate the foreign currency trades at a forward premium (F greater than S), because holding the lower-yielding foreign unit must be compensated by a higher future domestic price. When the foreign rate is higher, F is below S and the foreign currency is at a forward discount — high-interest currencies cheapen in the forward, they do not automatically cheapen in the spot you observe today.

T equals one year with five percent domestic and three percent foreign on a one-point-two-five spot therefore yields F equals one-point-two-five times one-point-zero-five over one-point-zero-three, about one-point-two-seven-four.

Treasury outright forward pricing

Turn a published spot, two cash rates, and a year-fraction tenor into the CIP forward a treasurer compares with a bank outright before booking a hedge.

Dealer points and premium checks

Back out forward points and the implied premium or discount so a quote that has wandered from covered parity is visible before you trade it.

What quote convention is the spot rate in?

If domestic is USD and foreign is EUR, both S and F are USD per 1 EUR.

How is a currency forward rate calculated?

Multiply the spot by one plus the domestic rate times the years, then divide by one plus the foreign rate times the years. A 1.25 spot with 5% and 3% over one year gives 1.274272.

Is the forward rate a forecast of the future exchange rate?

No. It is the price that leaves no risk-less profit from borrowing one currency, converting at spot and lending the other until the same date. It follows from today's spot and the two interest rates, not from a view of the market.

Why is the forward above the spot rate?

Because the domestic rate is higher than the foreign one, the foreign currency trades at a forward premium. When the foreign rate is the higher one, the forward sits below spot and the foreign currency is at a discount.

How do I enter six months or 90 days as the term?

Enter the time as a fraction of a year. Six months is 0.5, and 90 days counted on a 360-day year is 0.25. The calculator uses the fraction you give and does not convert day-count conventions.

Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.

POSThttps://api.kit.forhosting.com/fin/currency-forward

Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.

curl -X POST https://api.kit.forhosting.com/fin/currency-forward \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"spot_rate":1.25,"domestic_rate":5,"foreign_rate":3,"years":1}'
{
  "spot_rate": 1.25,
  "domestic_rate": 5,
  "foreign_rate": 3,
  "years": 1
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.currency_forward",
  "status": "queued",
  "_links": {
    "result": "/tasks/tsk_…/result"
  }
}

The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.

Per request$0.002

Published price — no tokens, no invented credits. A failed task is never charged.

HTTPCodeMeaning
401unauthorizedMissing or invalid API key.
402insufficient_balanceYour balance doesn't cover the task price.
404unknown_typeThat task type doesn't exist.
429rate_limitedToo many requests. Use the webhook instead of polling.

Given a strictly positive spot S quoted as domestic units per one foreign unit, F equals S times (one plus r_d times T) divided by (one plus r_f times T) in the money-market convention used on FX desks. A spot rate that is not strictly positive fails with invalid_input instead of inventing a quote.

What a currency forward rate means and how covered parity sets it

With S quoted as units of domestic currency per one unit of foreign currency, the money-market identity is F equals S times (one plus r_d times T) over (one plus r_f times T), where r_d and r_f are simple annual rates and T is the year fraction to maturity. This endpoint applies that identity only. It does not fetch live LIBOR, SOFR, or FX swaps, it does not convert day-count conventions beyond the year fraction you supply, and it is not a purchasing-power or cross-rate calculator: those answer different search intents with different inputs.

Input contract, quote convention, response shape, and errors

An optional decimals integer from zero through twelve (default six) controls half-up rounding on the computed numeric outputs. Pair the response with your own day-count and compounding conventions if a desk uses actual over three-sixty or continuous compounding; this calculator measures the linear CIP identity only and does not annualize, compound continuously, or pull a live curve. POST a JSON body with four required finite numbers: spot_rate, the strictly positive spot quote as domestic units per one foreign unit (aliases spot, s, and spot_fx); domestic_rate, the annual domestic interest rate as a percent such as five for five percent (aliases r_d, rd, domestic, domestic_interest, and i_d); foreign_rate, the annual foreign interest rate as a percent (aliases r_f, rf, foreign, foreign_interest, and i_f); and years, the year fraction to maturity, which must be greater than or equal to zero (aliases t, tenor, maturity, time_years, and ttm). Interest rates may be negative when a market quotes a negative nominal policy rate; the identity remains well-defined as long as the money-market denominator one plus r_f times T is not zero. The distinctive failure is a non-positive spot: missing, empty, zero, or negative spot_rate fails with invalid_input naming the field, and the call is not billed. Missing or non-finite domestic_rate, foreign_rate, or years fail the same way, as does a year fraction below zero. On success the body echoes the four inputs and adds forward_rate in the same quote as the spot, forward_points as F minus S, forward_premium_percent as (F over S minus one) times one hundred, interest_differential as domestic_rate minus foreign_rate in percent, and a formula string restating the money-market identity.

Where a currency forward calculator earns its keep

Sell-side and fintech tools use the same figure to back out implied points and to flag when a dealer spread has wandered from covered parity. Content teams can contrast the CIP forward with a PPP implied rate or a triangular cross so readers see why those three numbers answer three different questions. Failed validation does not consume balance. The capability never invents a spot from a feed or a pair of interest rates from a central-bank page; those quotes belong in your data layer, and this calculator only applies the identity once you supply them. Educators and LMS platforms need a deterministic oracle for homework that asks students to compute F equals S times (one plus r_d times T) over (one plus r_f times T), including the discount case where the foreign rate exceeds the domestic rate and the forward prints below spot. Integrators wire the endpoint into notebooks, n8n flows, or edge workers to pin goldens whenever a valuation sheet changes the domestic-rate assumption. Keep spot_rate strictly positive, pin the rounded forward_rate field in tests, and you get reproducible currency forwards for widgets, classrooms, and production without standing up a swap library of your own.

Classroom covered-parity homework

Mark problems that ask students to compute F = S × (1 + r_d × T) / (1 + r_f × T), including the forward-discount case, with a deterministic oracle.

How is the currency forward rate calculated?

The money-market covered-parity identity is F = S × (1 + r_d × T) / (1 + r_f × T). S is the spot as domestic units per one foreign unit, r_d and r_f are simple annual rates, and T is the year fraction to maturity. This calculator takes the two rates as percents (5 means 5%).

What happens if the spot rate is not positive?

The task fails with invalid_input. A missing, empty, zero, or negative spot_rate is not a well-posed FX quote, so no forward is invented and the call is not billed.

Are the interest rates entered as percents or decimals?

domestic_rate and foreign_rate are annual percents (5 means 5%, 3 means 3%). years is a year fraction (0.5 is six months). The response echoes those inputs and reports forward_premium_percent in percent of spot.

What does the currency forward calculator cost?

The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.

Read the full KIT documentation →