Information ratio calculator
A portfolio that returned 12% against a 10% benchmark with a 4% tracking error has an information ratio of 0.5: half a point of excess return per point of tracking error. Rank active managers or strategies on the same scale. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Worked example
- Portfolio return
- 12
- Benchmark return
- 10
- Tracking error
- 4
- Excess return
- 2
- Information ratio
- 0.5
The information ratio — searched as an information ratio calculator, IR calculator, or active return over tracking error — scores how much excess return a portfolio earned per unit of tracking error versus its chosen benchmark. Given a portfolio return, a benchmark return, and a tracking error expressed in the same units, the identity is the active return (portfolio minus benchmark) divided by tracking error. Portfolio managers, consultants, and CFA-style students use this figure whenever they need one comparable number for active skill after residual volatility is scaled out. This information ratio calculator accepts those three numbers, rejects a zero tracking error instead of dividing by zero, and returns the ratio together with the echoed inputs and the excess-return remainder.
What the information ratio means and how the IR formula works
An information ratio answers one comparison question: how much excess return did this portfolio, sleeve, or strategy earn per unit of tracking error versus the benchmark it was hired to beat? Searchers who type information ratio calculator want that quotient, not a Sharpe ratio that scales total volatility against a cash rate, not a Treynor ratio that scales by beta, and not a tracking-error print taken in isolation.
Portfolio return is the numerator's first term: the holding-period or annualized return of the book, written in the same unit as the other two inputs (twelve for twelve percent, or 0.12 as a decimal, but not a mix of the two conventions). Benchmark return is the second term: the matching return of the index, policy mix, or peer composite the mandate names.
Tracking error is the denominator: the standard deviation of the active-return series over the same window, a volatility figure that must be strictly greater than zero because a zero residual makes the information ratio undefined. The identity is information ratio equals (portfolio return minus benchmark return) divided by tracking error. A result of 0.5 means half a unit of active return per unit of tracking error; a negative result means the book lagged the benchmark after residual risk is scaled in.
The calculator does not fetch live prices, does not annualize a stub month, and does not estimate tracking error from a raw return series: you supply the three scalars the identity needs. Prefer the same compounding convention and the same window for every input; mixing a calendar-year portfolio return with a quarterly tracking-error print is not an information ratio, it is a mixed snapshot that will mislead any manager ranking you hang on the result.
Where an information ratio calculator earns its keep
Asset-management scorecards use an information ratio calculator when two active sleeves share a benchmark and the committee needs one comparable figure before capital is reallocated. Consultants and RFP teams recompute the ratio from the published portfolio return, benchmark return, and tracking-error line so the ranking pack matches the fact sheet, including the case of a closet indexer whose residual has collapsed to zero and must fail rather than print Infinity.
Educators and CFA-style homework need an oracle that divides active return by tracking error and rejects a zero denominator the way a marking scheme does, instead of letting a spreadsheet leak Infinity into a gradebook. Failed validation is not billed. Keep tracking error positive, pin the rounded ratio in tests, and you get reproducible information-ratio figures for spreadsheets, workflow tools, and edge workers without standing up a performance-attribution library of your own.
Use this capability when you already have the three scalars; if you have only a return series and want tracking error estimated from it, or if you want a Sharpe ratio against cash, that is a different identity and does not belong in this information-ratio definition.
What you can do with it
Active-manager scorecards
Convert each sleeve's portfolio return, benchmark return, and tracking error into an information ratio so two active books that share a benchmark rank by residual-scaled skill, not by raw excess return.
Consultant and RFP ranking packs
Reproduce the disclosed information ratio from the fact-sheet return line and the published tracking-error figure, including rejection when tracking error is still zero.
Classroom and CFA homework
Mark information-ratio items with a deterministic oracle that divides active return by tracking error and fails loudly on a zero tracking-error base.
FAQ
Should I enter returns as percents or as decimals?
Either convention works if all three inputs use it. Twelve, ten, and four (percents) yield the same 0.5 as 0.12, 0.10, and 0.04 (decimals). Mixing the two conventions does not.
Is this the same as the Sharpe ratio?
No. The information ratio scales active return versus a benchmark by tracking error. The Sharpe ratio scales excess return versus a risk-free rate by total volatility. They answer different questions.
What does an information ratio of 0.5 mean?
It means the portfolio earned half a unit of active return for every unit of tracking error it took on. A negative ratio means it lagged its benchmark once that residual risk is scaled in.
Can I mix an annual return with a quarterly tracking error?
No. Use the same window and the same compounding convention for all three numbers. Mixing a calendar-year return with a quarterly tracking error gives a mixed snapshot that will mislead any ranking built on it.
What happens if the tracking error is zero?
The calculator refuses it instead of dividing by zero. A tracking error of zero means the portfolio moved exactly like its benchmark, and then the information ratio is simply undefined.
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/information-ratio \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"portfolio_return":12,"benchmark_return":10,"tracking_error":4}'const res = await fetch("https://api.kit.forhosting.com/fin/information-ratio", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"portfolio_return": 12,
"benchmark_return": 10,
"tracking_error": 4
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/fin/information-ratio",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"portfolio_return": 12,
"benchmark_return": 10,
"tracking_error": 4
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/fin/information-ratio", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"portfolio_return":12,"benchmark_return":10,"tracking_error":4}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"portfolio_return":12,"benchmark_return":10,"tracking_error":4}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/fin/information-ratio", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"portfolio_return": 12,
"benchmark_return": 10,
"tracking_error": 4
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "fin.information_ratio",
"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
Input contract, response shape, rounding, and error behaviour
A closet-index book whose tracking error has collapsed to zero must fail rather than print Infinity. POST a JSON body with three required finite numbers: portfolio_return, benchmark_return, and tracking_error, all in the same unit and covering the same evaluation window. portfolio_return (aliases rp, r_p, portfolio, and port_return) must be finite; negative values are allowed when the book lost money. benchmark_return (aliases rb, r_b, benchmark, and bench_return) must be finite; negative values are allowed when the index itself fell. tracking_error (aliases te, tracking, and tracking_error_percent) must be a finite number strictly greater than zero because the information ratio divides active return by tracking error. Missing fields, empty strings, non-finite values, booleans, and a zero or negative tracking error fail with invalid_input naming the issue, and those failures are not billed. On success the body echoes the three inputs, returns excess_return as portfolio_return minus benchmark_return rounded to twelve places, information_ratio as that remainder divided by tracking_error also rounded to twelve places, and a formula string restating the identity. Example: a portfolio return of twelve, a benchmark return of ten, and a tracking error of four yields excess_return 2 and information_ratio 0.5. Example: a portfolio return of ten, a benchmark return of eight, and a tracking error of three yields a repeating decimal rather than a silent empty payload. Pair the ratio with your own annualization notes if the memo needs a horizon flag; this endpoint computes the information ratio only and does not invent a skill verdict, a t-statistic, or a tracking-error estimate from a return series you did not supply.
Technical questions
How is the information ratio calculated?
Send finite numbers portfolio_return, benchmark_return, and tracking_error (> 0) in the same unit. The API returns information_ratio = (portfolio_return − benchmark_return) / tracking_error, plus the excess_return remainder.
What happens if tracking error is zero?
The task fails with invalid_input. An information ratio cannot divide by a zero tracking-error base, so the request is rejected and is not billed.
What does the information ratio calculator cost?
The browser tool is free. API requests use prepaid balance at $0.002 per successful call; invalid input is not billed.