ForHosting KIT · Finance & money

Graham number calculator

With earnings of 2.5 per share and a book value of 20 per share, Graham's price ceiling is 33.54, the square root of 22.5 × 2.5 × 20. Compare it with the market price to see whether a stock trades above what Graham would defend. 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
Earnings per share
2.5
Book value per share
20
You get
Product
1,125
Graham number
33.54

The Graham number is Benjamin Graham's maximum defensible price for a common stock: the square root of 22.5 times earnings per share times book value per share. Value investors, screeners, and student-analysts use that ceiling to flag names trading above a conservative combination of a 15 times earnings multiple and a 1.5 times book multiple, the product that produces the famous 22.5 constant. Zero earnings or zero book value is allowed and yields a Graham number of zero.

What the Graham number means and how 22.5 becomes a price ceiling

The Graham number is a conservative price ceiling for a common stock, taken from Benjamin Graham's value-investing rules of thumb: a no-growth company should not trade above a price-to-earnings multiple of fifteen, and it should not trade above a price-to-book multiple of one and a half. A stock trading above the Graham number is, on this screen, more expensive than Graham would defend; a stock trading below it still has to pass qualitative work, because the formula is a ceiling, not a buy list.

Earnings per share is the trailing or forward profit that belongs to each ordinary share, in one currency. Book value per share is shareholders' equity divided by the same share count, in that same currency. A two-point-five earnings figure and a twenty book-value figure produce a product of 22.5 times 2.5 times 20, which is 1125, and a Graham number of 33.54 after half-up rounding to two decimal places.

Zero earnings or zero book value is a legitimate outcome and returns a price ceiling of zero rather than an error: Graham's screen says there is no defensible positive price when either factor is missing. You supply two finite non-negative numbers that already share one period and one currency; the calculator multiplies them by 22.5, takes the square root, and rounds the ceiling half-up to two decimal places so goldens compare byte-for-byte across runtimes.

This is Graham's 22.5 screen, not a PEG ratio, not a dividend-discount model, and not an enterprise-value multiple.

Where a Graham number calculator earns its keep

Screeners and value-investing clubs use a Graham number calculator to turn last year's earnings per share and book value per share into one comparable price ceiling before they open a full 10-K. Portfolio tools drop EPS from the trailing statement and book value from the latest equity line, and they flag names whose last trade sits above the ceiling without pretending the formula is a discounted-cash-flow target.

This is a different search and a different job from a PEG ratio, from a dividend-discount model, from an earnings-per-share calculator, and from a times-earnings business valuation: those tools scale growth, discount a perpetual dividend, divide profit by shares, or apply an industry multiple to a whole company. A Graham number prices one share against Graham's 15 times 1.5 bound. Failed validation does not consume balance.

Keep both inputs non-negative, pin the rounded ceiling in tests, and you get a reproducible Graham number for teasers, LMS plugins, and edge workers without standing up a valuation engine of your own.

Value screen before reading the 10-K

Turn trailing earnings per share and book value per share into one Graham price ceiling before you spend a weekend on the annual report.

Classroom and CFA-style homework

Let students submit EPS and book value per share and verify the ordered radical √(22.5 × EPS × BVPS) against the textbook method.

How is the Graham number calculated?

The constant 22.5 is Graham's 15× earnings limit times his 1.5× book limit. The ceiling is rounded half-up to two decimal places; product (the value inside the radical) is rounded half-up to six.

What happens if earnings per share or book value per share is negative?

A negative factor would put a negative number under the square root, which is not a real price ceiling, and those failures are not billed.

What should I enter as earnings per share?

Use basic or diluted, trailing twelve months or next-year, whichever matches the book figure you apply. The calculator does not rebuild the income statement or look up a quote.

Is this the same as intrinsic value or a discounted-cash-flow target?

No. The Graham number is a conservative price ceiling from a 15× earnings bound times a 1.5× book bound. Intrinsic value from a dividend-discount model or a discounted-cash-flow path is a different search and a different job. A name below the Graham number still needs qualitative work; the formula is a screen, not a buy list.

What does it mean if a stock trades above the Graham number?

On this screen it is more expensive than Graham would defend: its earnings and book multiples cannot both stay inside his limits. A price below the ceiling is not a buy signal on its own; the business still needs proper research.

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/graham-number

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/graham-number \
  -H "Authorization: Bearer $KIT_KEY" \
  -H "Content-Type: application/json" \
  -d '{"earnings_per_share":2.5,"book_value_per_share":20}'
{
  "earnings_per_share": 2.5,
  "book_value_per_share": 20
}
{
  "task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
  "type": "fin.graham_number",
  "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.

This Graham number calculator takes two finite numbers in the same currency — earnings_per_share and book_value_per_share — multiplies them by 22.5, takes the positive square root, and returns the price ceiling together with the product inside the radical and the formula shown beside the result. Either input that is negative is rejected with invalid_input and is not billed, because a square root of a negative product is not a real price ceiling.

What the Graham number means and how 22.5 becomes a price ceiling

Multiplying those two limits gives the constant 22.5, and rearranging price over earnings times price over book into a single identity yields graham_number equals the square root of 22.5 times earnings_per_share times book_value_per_share. That square root is the highest price at which both the earnings multiple and the book multiple stay inside Graham's bounds at once. Negative earnings and negative book value are not legitimate inputs for this radical: the square root of a negative product is not a real price, so the task fails with invalid_input. This calculator does not look up a live quote, does not apply a margin of safety haircut, does not annualise a stub period, does not convert currencies, and does not compute a discounted-cash-flow value.

Input contract, response shape, and error behaviour

Zero is allowed on either field and produces a Graham number of zero: a company with no earnings or no book equity has a price ceiling of zero on this screen, which is the honest result rather than a clamped dummy price. Keep both numbers in one unit so the ceiling is a price in that same unit. POST a JSON body with two required finite numbers. earnings_per_share is trailing or forward earnings that belong to each ordinary share, in one currency unit; aliases eps and earnings map to the same field so a screener worksheet can keep its column names. book_value_per_share is shareholders' equity per ordinary share in that same currency; aliases bvps, book_value, and book are accepted. Each numeric field may arrive as a JSON number or a numeric string. Missing fields, empty strings, and non-finite values fail with invalid_input naming the field. On success the body echoes earnings_per_share and book_value_per_share, then reports product as 22.5 times those two numbers (the value inside the square root), graham_number as the price ceiling rounded half-up to two decimal places, and a formula string restating the identity. Example: earnings_per_share of 2.5 and book_value_per_share of 20 yield a product of 1125 and a Graham number of 33.54. Pair the JSON with your own rule for which EPS definition matches the book figure you chose — trailing twelve months, diluted, or forward — because this endpoint multiplies the two numbers you send; it does not rebuild the income statement, choose a share count, or convert currencies.

Where a Graham number calculator earns its keep

Student-analysts re-run the same two fields when a year closes or a split adjusts the share count, then pin graham_number next to the market quote so every discussion starts from one defensible price rather than a hand-waved multiple.

Watchlist ceiling versus last trade

Pin graham_number next to the last trade so a watchlist flags names sitting above Graham's 15 × 1.5 bound without a live quote feed.

What does the Graham number 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 →