Calculate the net share issuance of Pontiff and Woodgate (2008): the log change in the split-adjusted number of shares over a year.

Pontiff and Woodgate show that companies that issue shares earn lower returns over the following year and companies that buy back shares higher returns, and that the share issuance predicts returns more strongly than size, book-to-market or momentum in the years after 1970. The measure is positive for a net issuer of shares and negative for a company that buys back more shares than it issues.

The formula is as follows:

\[\text{Net Share Issuance} = \ln(\text{Shares} / \text{Shares}\; a \;\text{Year Earlier})\]

The shares are the weighted average shares of the period, which the statements report adjusted for later stock splits, so only issuance and repurchases change them. The paper takes the shares outstanding at a date; the weighted average moves with them but spreads a change over the period it occurs in. The shares a year earlier are those of the year before with annual data and four quarters back with quarterly data. Shares of zero or less give NaN.

Also known as: share issuance, ISSUE, net stock issues, change in shares outstanding.

Net Share Issuance in Python or via the MCP

Install the Finance Toolkit with:

pip install financetoolkit -U

Then call get_net_share_issuance as shown below.

from financetoolkit import Toolkit

toolkit = Toolkit(
    ["AAPL", "TSLA", "META", "AMZN"],
    api_key="FINANCIAL_MODELING_PREP_KEY",
    start_date="2021-01-01",
    end_date="2025-12-31",
)

toolkit.ratios.get_net_share_issuance()

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

How much did Apple, Tesla, Meta and Amazon change their share count through issuance and buybacks in each year from 2021 to 2025?

Which returns:

  2021 2022 2023 2024 2025
AAPL -0.0382 -0.0295 -0.0295 -0.0258 -0.0261
AMZN 0.0119 0.0068 0.0112 0.0163 0.0173
META -0.0127 -0.0465 -0.043 -0.0157 -0.0051
TSLA 0.0556 0.0562 0.0138 0.0074 0.0087

Parameters

get_net_share_issuance accepts the following parameters.

ParameterTypeDescriptionExample
dilutedboolWhether to use the diluted weighted average shares instead of the basic ones. Defaults to False, as the dilution from options and convertibles moves with the share price rather than with issuance.False
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
growthboolWhether to calculate the growth of the ratios. Defaults to False.True
lagint | list[int]The lag to use for the growth calculation. Defaults to 1.4
compoundboolWhether the growth is the compound annual growth rate over the lag (e.g. lag=5 for the five-year CAGR) instead of the total change. Defaults to False.False
standardizeboolWhether to standardize (Z-Score) the result. When combined with growth=True, standardizes the growth values instead of the raw values. Defaults to False.True
trailingintThe number of periods the shares are compared over. E.g. 5 with annual data gives the five-year issuance. Defaults to None, which uses a year: 4 quarters with quarterly data and 1 year with annual data.4
Share