Fundamental: Graham Number
systemic:core-grahamIndicatorsfunction1 crInputs
| Name | Type | Description |
|---|---|---|
| EPS | floatarray | Trailing-twelve-month earnings per share. |
| Book Value Per Share | floatarray | Book value (total equity) per outstanding share. |
Outputs
| Name | Type | Description |
|---|---|---|
| Graham Number | floatarray | The estimated fair-value ceiling for the stock, in the same unit as its market price. |
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.
| EPS | BVPS | Graham Number |
|---|---|---|
| 6.13 | 4.25 | 24.21 |
| 6.42 | 4.40 | 25.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:
| Comparison | Reading |
|---|---|
| Price well below Graham Number | Potentially undervalued by Graham's criterion |
| Price near Graham Number | Fairly valued |
| Price well above Graham Number | Potentially 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.
| EPS | BVPS | Result |
|---|---|---|
| null | 4.25 | null |
| 6.13 | null | null |
| -1.5 | 3.00 | null (negative earnings) |
| -2.0 | -5.0 | null (both negative — never a fabricated value) |
| 6.13 | 4.25 | 24.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.
Related Modules
- ALTZ — Altman Z-Score (bankruptcy risk)
- PFS — Piotroski F-Score (fundamental quality)