Systemicalpha

Fundamental: Graham Number

systemic:core-grahamIndicatorsfunction1 cr

Inputs

NameTypeDescription
EPSfloatarrayTrailing-twelve-month earnings per share.
Book Value Per SharefloatarrayBook value (total equity) per outstanding share.

Outputs

NameTypeDescription
Graham NumberfloatarrayThe estimated fair-value ceiling for the stock, in the same unit as its market price.
Graham Number=22.5×EPS×BVPS\text{Graham Number} = \sqrt{22.5 \times EPS \times BVPS}

The Graham Number, from Benjamin Graham's The Intelligent Investor, estimates the maximum price a defensive value investor should pay for a stock, combining earnings power (EPS) and balance-sheet strength (book value per share) into a single fair-value benchmark.

EPSBVPSGraham Number
6.134.2524.21
6.424.4025.21

Interpreting the Result

Compare the Graham Number against the current market price (an Alpaca closing price, for example) with a Subtract or Divide module:

ComparisonReading
Price well below Graham NumberPotentially undervalued by Graham's criterion
Price near Graham NumberFairly valued
Price well above Graham NumberPotentially overvalued

The Graham Number is a single point-in-time benchmark, not a band — pair it with your own margin-of-safety threshold.


Missing Data

If either EPS or book value per share is missing (null) at a position, the Graham Number at that position is null.

The formula is also undefined — and therefore null — whenever EPS or BVPS is negative. That includes the case where both are negative: their product is positive, but a company with negative earnings and negative book value is un-investable by Graham's own criterion, so no number is emitted. The module never forces a value out of an undefined case; a negative input stays null, exactly like any other undefined result.

EPSBVPSResult
null4.25null
6.13nullnull
-1.53.00null (negative earnings)
-2.0-5.0null (both negative — never a fabricated value)
6.134.2524.21

In live execution the module returns exactly one datapoint — the newest position — which is null when it cannot be determined.


Wiring

Wire both inputs from the Stock: Fundamentals node:

  • eps → EPS input (trailing-twelve-month earnings per share)
  • bvps → Book Value Per Share input

EPS is a trailing-twelve-month rollup and Book Value per Share is a point-in-time quarter-end balance — Stock: Fundamentals already assembles both, so no additional TTM work or wiring is required from you.


  • ALTZ — Altman Z-Score (bankruptcy risk)
  • PFS — Piotroski F-Score (fundamental quality)
© 2026 WanoLabs. All rights reservedAlpha build v0.1.5