ForHosting KIT · Finance & money

Real exchange rate calculator

A nominal rate of 20 with domestic prices at 100 and foreign prices at 120 gives a real exchange rate of 24, because foreign goods cost relatively more. Enter one rate and two price levels to compare purchasing power. 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
Nominal rate
20
Domestic price
100
Foreign price
120
You get
Price ratio
1.2
Real exchange rate
24
Ppp gap percent
20
Price level band
foreign_prices_higher

The real exchange rate adjusts the market (nominal) exchange rate for differences in price levels between two countries, so you can compare relative purchasing power instead of headline currency quotes alone. When domestic prices rise faster than foreign prices, the same nominal rate buys fewer foreign goods in real terms; when foreign prices rise faster, the reverse holds. Students, tutors, trade analysts, and macro problem-set authors need a deterministic way to turn a positive nominal rate, a domestic price level P, and a foreign price level P* into the textbook real rate without mixing quote conventions or inventing a base year. This real exchange rate calculator accepts those three positive inputs, multiplies the nominal rate by the foreign-to-domestic price ratio, and returns the real rate, the price ratio, a percentage gap versus equal price levels, a short band label, and the formula string.

What the real exchange rate measures and how the formula works

The nominal exchange rate e is a pure money price of one currency in units of another. Alone it does not tell you whether a basket of goods is cheaper at home or abroad, because price levels differ across countries and over time. The real exchange rate folds those price levels into the comparison.

With e quoted as domestic currency units per one unit of foreign currency, domestic price level P, and foreign price level P*, the standard bilateral identity is real exchange rate equals e times P* over P.

The ratio P* over P is a pure relative price index: when it equals one, price levels match under a common index base and the real rate equals the nominal rate; when foreign prices are higher, the ratio exceeds one and the real rate sits above the nominal quote; when domestic prices are higher, the ratio falls below one and the real rate sits below the nominal quote.

Interpreting the level as an absolute purchasing-power-parity benchmark only makes sense when the price indices share a comparable base and e is measured consistently with that basket. This calculator implements the textbook level identity only: it does not estimate pass-through elasticities, chain-weight multi-period series, or convert between direct and indirect quotes. You supply one positive nominal rate and two positive price levels, and you receive the corresponding real rate ready for problem sets, slides, and automated checks.

Classroom PPP and RER checks

Let students enter nominal e, domestic P, and foreign P* and verify RER = e × (P*/P) against textbook worked examples.

LMS and exam auto-grading

Mark real-exchange-rate items with a deterministic oracle that rejects non-positive rates or prices and never invents a hollow parity result.

Trade notebooks and dashboards

Recompute bilateral real rates from published CPI and spot quotes in teaching dashboards without importing a full macro toolkit.

What happens if a price level is zero or negative?

Price levels and the nominal rate must be strictly greater than zero; invalid input is not billed.

What is the formula for the real exchange rate?

Multiply the nominal rate by the foreign price level divided by the domestic one. With a nominal rate of 20, domestic prices of 100 and foreign prices of 120, the real rate is 20 × 1.2 = 24.

Why is the real rate higher than the nominal rate?

Because foreign prices are above domestic ones on a common index base, so the price ratio exceeds 1. When domestic prices are higher, the ratio drops below 1 and the real rate falls under the nominal quote.

Which way should the nominal rate be quoted?

As domestic currency units per one unit of foreign currency, for example pesos per dollar. A quote in the opposite direction gives a different number, so check how your source states the rate before you enter it.

What does the percentage gap show?

How far the two price levels are from being equal. It is the price ratio minus 1, times 100: with foreign prices of 120 and domestic prices of 100, the gap is 20% and foreign prices are labelled higher.

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/econ/real-exchange-rate

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/econ/real-exchange-rate \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"nominal_rate":20,"domestic_price":100,"foreign_price":120}'
{
  "nominal_rate": 20,
  "domestic_price": 100,
  "foreign_price": 120
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "econ.real_exchange_rate",
  "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.

Input contract, response fields, and validation rules

Optionally send decimals as an integer from zero through twelve (default six) to control half-up rounding on every computed field. All three levels must be strictly greater than zero: a zero or negative price would make the ratio undefined or meaningless for purchasing-power comparison, and a non-positive nominal rate is rejected for the same classroom domain. POST a JSON body with three required finite numbers: nominal_rate (domestic currency per one foreign unit), domestic_price (home price level P), and foreign_price (abroad price level P*). Missing fields, empty strings, non-finite values, and non-integer decimals outside the allowed range fail with invalid_input and are not billed. Common aliases are accepted: e, spot, nominal, fx_rate, or exchange_rate for nominal_rate; p_home, p_domestic, home_price, or p for domestic_price; p_foreign, p_star, abroad_price, or p_star_foreign for foreign_price. On success the body returns the echoed inputs (rounded), price_ratio as foreign over domestic, real_exchange_rate as nominal times that ratio, ppp_gap_percent as (price_ratio minus one) times one hundred, price_level_band as a coarse classroom label (domestic_prices_higher, equal_price_levels, or foreign_prices_higher), and formula. Example: nominal twenty, domestic one hundred, foreign one hundred twenty yields price_ratio one point two, real exchange rate twenty-four, ppp_gap_percent twenty, and foreign_prices_higher. Pair the numbers with your own multi-period table if you need period-to-period real appreciation as the percent change in the real rate; this endpoint computes only the level for a single triple and does not re-base historical series or convert CPI into GDP deflators.

Where a real exchange rate API earns its keep

Principles and intermediate open-economy courses use a real exchange rate calculator so students can convert any valid nominal rate and two price levels into the canonical relative-price measure without confusing quote conventions or mixing CPI with spot FX alone. Exam generators and LMS plugins need a deterministic oracle that rejects zero or negative prices instead of inventing a hollow real rate that a buggy grader might treat as parity. Failed validation does not consume balance. Trade and macro notebooks often recompute textbook tables from published CPI and mid-market quotes; pinning the arithmetic in a tiny parse API keeps spreadsheet drift out of the comparison column. Keep requests small, pin the rounded real_exchange_rate and ppp_gap_percent fields in tests, and you get reproducible relative purchasing-power numbers for homework, LMS plugins, and edge workers without standing up a full multi-country national-accounts pipeline of your own.

How is the real exchange rate calculated?

Send positive numbers nominal_rate (domestic per foreign unit), domestic_price (P), and foreign_price (P*). The API returns RER = nominal_rate × (foreign_price / domestic_price), plus the price ratio and a PPP gap percent.

What quote convention does nominal_rate use?

Domestic currency units per one unit of foreign currency (for example pesos per dollar). Keep the same quote direction as your price-level pair so the real rate stays interpretable.

What does price_level_band mean?

It is a coarse classroom label from the unrounded foreign-to-domestic price ratio: foreign_prices_higher, equal_price_levels, or domestic_prices_higher. It is not a forecast or a central-bank regime label.

What does the real exchange rate 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 →