Fisher effect calculator
An 8% nominal rate, entered as 0.08, against 3% inflation, entered as 0.03, leaves an exact real rate of 0.04854368932, about 4.85%, not the 5% that simple subtraction suggests. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Nominal rate
- 0.08
- Inflation rate
- 0.03
- Real rate
- 0.0485436893
- Real rate percent
- 4.854368932
The Fisher effect is Irving Fisher's identity that links a quoted nominal interest rate to the real rate of return after inflation. This Fisher effect calculator accepts the nominal interest rate and the inflation rate as decimals — 0.05 means five percent, not five percent written as the integer five — and returns the exact real rate from r equals (1 plus i) divided by (1 plus π) minus one. The linear shortcut that subtracts inflation from the nominal quote is only a first-order approximation; the closed form is what this page evaluates, so a five percent nominal against two percent inflation is not three percent real.
What the Fisher equation means and why the approximation is not enough
A nominal interest rate is the headline percent printed on a loan, a savings product, a Treasury quote, or a homework prompt. It is not, by itself, the purchasing-power return you actually earn or pay, because inflation (or deflation) changes what each unit of currency buys between the start and the end of the period. Irving Fisher's identity states that one plus the nominal rate equals one plus the real rate, times one plus the inflation rate: (1 + i) = (1 + r)(1 + π).
Solving for the real rate gives the closed form this calculator evaluates, r = (1 + i) / (1 + π) − 1. The popular linear shortcut r approximately equal to i minus π drops the cross term i times π. For small rates that error is tiny; at eight percent nominal and three percent inflation the exact real rate is about 4.854 percent, not five.
At high inflation the gap is material, which is why textbooks insist on the exact Fisher equation rather than the subtraction rule. This page never grows a principal, never converts a consumer-price index into an inflation rate, and never compounds a nominal quote into an effective annual rate: those are different search intents with their own landings. Rates arrive as decimals so the identity can be applied without a hidden percent conversion that would turn 0.05 into five thousandths of a percent.
Where a Fisher effect calculator earns its keep
Households and students use a Fisher effect calculator when a loan or a savings quote is printed as a nominal percent and the question is what purchasing-power return remains after inflation, not how large a lump sum will grow. Personal-finance coaches need a deterministic oracle that rejects an inflation rate of minus one or less instead of silently showing Infinity that a buggy form might treat as success.
Macro and fixed-income homework often asks for the exact Fisher real rate rather than the i minus π shortcut, and answer keys must not disagree with a calculator that quietly used the approximation. This landing is not a CPI percent-change tool, not an EAR converter from compounding frequency, and not Fisher's exact test of a two-by-two contingency table: those queries are different intents and they already have their own pages.
When you later need the inflation rate from two index levels, switch to the CPI identity rather than stretching this two-field Fisher contract.
What you can do with it
Strip inflation out of a quoted nominal rate
Turn a nominal loan or savings quote and an inflation (or expected-inflation) decimal into the exact Fisher real rate so two products can be ranked on purchasing-power terms.
Classroom and homework oracles
Generate reproducible r = (1+i)/(1+π)−1 answer keys that distinguish the exact Fisher identity from the linear shortcut i minus π.
FAQ
How is the real interest rate calculated in the Fisher equation?
The exact identity is r = (1 + i) / (1 + π) − 1, where i is the nominal rate as a decimal and π is the inflation rate as a decimal.
Are the rates percents or decimals?
Decimals. Send 0.08 for eight percent. Sending 8 would be treated as eight hundred percent, not eight percent. The linear approximation i − π is not what this calculator returns.
What happens if the inflation rate is minus one or less?
When inflation is minus one, 1 + π is zero and the Fisher equation is undefined. Values below minus one are rejected for the same reason and are not billed.
How is this different from subtracting inflation from the nominal rate?
The shortcut r ≈ i − π drops the cross term i·π. This page evaluates the exact Fisher closed form, so eight percent nominal and three percent inflation is about 4.854 percent real, not five.
What does the real interest rate tell me?
It is the purchasing-power return that remains once inflation has changed what each unit of money buys. Use it when a loan or savings product quotes a nominal percent and you want to know what you really earn or pay.
Related tools
For developers — API access
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.
API endpoint
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.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/fin/fisher-effect \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"nominal_rate":0.08,"inflation_rate":0.03}'const res = await fetch("https://api.kit.forhosting.com/fin/fisher-effect", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"nominal_rate": 0.08,
"inflation_rate": 0.03
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/fisher-effect",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"nominal_rate": 0.08,
"inflation_rate": 0.03
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/fisher-effect", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"nominal_rate":0.08,"inflation_rate":0.03}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"nominal_rate":0.08,"inflation_rate":0.03}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/fisher-effect", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"nominal_rate": 0.08,
"inflation_rate": 0.03
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.fisher_effect",
"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.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
When the inflation rate is minus one or less, one plus π is zero or negative and the Fisher equation is undefined, so the task fails with invalid_input instead of a silent Infinity.
Input contract, decimal units, and the minus-one inflation error
The contracted domain error is an inflation rate of minus one or less. When π equals minus one, one plus π is zero and the division is undefined. Example: eight percent nominal against three percent inflation yields a real rate of about 0.0485, or 4.85 percent. Failed validation does not consume balance. Keep magnitudes inside the documented finite range so (1 + i) / (1 + π) stays a finite floating-point number. POST a JSON body with two required fields. nominal_rate is the quoted nominal interest rate as a decimal — 0.08 means eight percent per period, not the integer eight, which would be eight hundred percent — and aliases nominal, i, nominal_interest, and interest_rate map to the same field. inflation_rate is the inflation rate over the same period as a decimal — 0.03 means three percent — with aliases inflation, pi, expected_inflation, and inflation_pi so spreadsheets can keep familiar column names. If either field is missing, empty, infinite, or otherwise not a finite number, the task fails with invalid_input naming that field and is not billed. Mild deflation is allowed: inflation_rate of minus 0.01 is one percent deflation and produces a real rate larger than the nominal quote, which is the correct Fisher result. Each field may arrive as a JSON number or a numeric string. On success the body echoes both inputs, returns real_rate as a decimal, real_rate_percent as that same real rate times one hundred, and a formula string restating r equals (1 + i) / (1 + π) minus one.
Where a Fisher effect calculator earns its keep
Product teams wire the same contract into onboarding demos so a user who types 0.05 and 0.02 sees the identical real_rate the API will later return in production tests. Keep requests small, pin rounded real_rate in tests, and you get reproducible Fisher figures for worksheets, LMS plugins, and edge workers without standing up a spreadsheet service of your own.
Integration use cases
Product demos and CI fixtures
Seed comparison widgets and automated tests with deterministic real_rate values that match the free browser widget byte-for-byte.
Technical questions
What does the Fisher effect calculator cost?
The browser tool is free. API requests use prepaid KIT balance at $0.002 per successful call; invalid input is not billed.