The justified multiples are the Price-to-Earnings and Price-to-Book ratios the dividend discount and residual income models imply for a company with a constant payout ratio, Return on Equity and growth rate. Comparing them with the actual multiples shows whether the market prices a company above or below what its profitability, payout and growth justify at a given required rate of return.

The formula is as follows:

\[\text{Growth Rate} = \text{Return on Equity} \cdot (1 - \text{Payout Ratio}),\;\; \text{the sustainable growth rate},\;\; \text{unless a growth rate is given}\] \[\text{Justified Trailing}\; P / E = \text{Payout Ratio} \cdot (1 + \text{Growth Rate}) / (\text{Rate of Return} - \text{Growth Rate})\] \[\text{Justified Leading}\; P / E = \text{Payout Ratio} / (\text{Rate of Return} - \text{Growth Rate})\] \[\text{Justified}\; P / B = (\text{Return on Equity} - \text{Growth Rate}) / (\text{Rate of Return} - \text{Growth Rate})\] \[\text{Price-to-Earnings Ratio} = \text{Share Price} / (\text{Net Income} / \text{Weighted Average Shares})\] \[\text{Price-to-Book Ratio} = \text{Share Price} / (\text{Total Shareholder Equity} / \text{Weighted Average Shares})\]

Also known as: justified P/E, justified P/B, fundamental P/E, warranted multiples.

Justified Multiples in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_justified_multiples as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["KO", "PEP", "PG"],
    api_key="FINANCIAL_MODELING_PREP_KEY",
    start_date="2021-01-01",
    end_date="2025-12-31",
)

toolkit.models.get_justified_multiples(rate_of_return=0.08, growth_rate=0.04).loc["KO"]

Or, after setting up the Finance Toolkit MCP, ask:

Which P/E and P/B ratios did Coca-Cola's payout and return on equity justify from 2021 to 2025, at an 8% required return and 4% growth, and how do they compare with its actual multiples?

Which returns:

  2021 2022 2023 2024 2025
Payout Ratio 0.7422 0.7982 0.7422 0.7863 0.6698
Return on Equity 0.4591 0.3838 0.4149 0.3869 0.497
Growth Rate 0.04 0.04 0.04 0.04 0.04
Justified Trailing P/E 19.2971 20.752 19.2974 20.4434 17.4147
Justified Leading P/E 18.5549 19.9539 18.5552 19.6571 16.7449
Justified P/B 10.4769 8.5957 9.3713 8.6716 11.4251
Price-to-Earnings Ratio 26.2994 28.9985 23.8657 25.2999 23.0046
Price-to-Book Ratio 11.1732 11.4791 9.8569 10.8209 9.3731

Parameters

get_justified_multiples accepts the following parameters.

ParameterTypeDescriptionExample
rate_of_returnfloatThe required rate of return on equity.0.08
growth_ratefloat | NoneThe constant growth rate of the earnings, dividends and book value. Defaults to None, which uses the sustainable growth rate of each period.0.03
dilutedboolWhether to use the diluted share count for the actual multiples. Defaults to True.False
trailingint | NoneSum the flows over this many periods and measure the Return on Equity on the equity that many periods back. Defaults to None, which is 4 for quarterly data (a trailing twelve months) and 1 otherwise.4
roundingint | NoneThe number of decimals to round the results to. Defaults to None, which uses the rounding of the Toolkit (4 unless set otherwise).2
show_columnslist[str] | NoneThe periods to show. Defaults to None, all periods.None, all periods
Share