Get startedDashboard

Metrics catalogue

Every metric the metrics endpoint serves, with its unit, formula and the input fields it reads.

View llms.txt

This page lists all 100 metrics that Metrics serves, in ten categories. Request metrics by name in fields, or a whole category by the name given under each heading.

Input fields in the formulas are the statement fields described on Fundamentals fields. They are in millions of the row's currency (millions of USD on a USD row), except eps_diluted and eps_basic, which are in that currency per share. A metric never sets figures labelled in two currencies against each other; see the :currency reasons on Metrics. Metrics read EPS on the share basis of the row's price date where the basis it was filed on is confirmed, and as filed otherwise; see "Stock splits" on Metrics. The market inputs close, market_cap and shares are described under "Market inputs".

Units and conventions

Unit labels

  • "ratio": a plain multiple, such as 12.5 times. Not a percentage.
  • "decimal fraction": 0.25 means 25%. Not a percentage.
  • "millions of USD": 4977636.9726 is USD 4.98 trillion.
  • "USD per share": dollars per share.
  • "days": calendar days.
  • "score": a unitless number on the scale of its published model.

Values are not rounded. Every metric is nullable: it is null when an input is unavailable (the row's missing_inputs then names the input), when a denominator is zero, or when the formula has no real value. Metrics lists the reasons missing_inputs names besides an input, such as eps_diluted:zero.

Market inputs

  • close: the requested share class's close, as traded, in USD per share, on the last trading day on or before the row's date. The row's date is period_end on annual and quarterly rows, priced_on on ttm rows and the trading date on daily rows.
  • market_cap: the whole company's market capitalisation, in millions of USD. See market_cap below.
  • shares: the company's share count on the row's date, summed over the same share classes as market_cap and consistent with that day's close across splits. Per-share metrics divide millions of USD by shares in millions, giving USD per share. When shares are unavailable, missing_inputs names shares_outstanding.

Flows, balances and TTM

Flow inputs are income-statement and cash-flow items: revenue, cost_of_revenue, gross_profit, operating_income, ebit, ebitda, pretax_income, net_income, eps_diluted, eps_basic, interest_expense, research_and_development, selling_general_admin, depreciation_amortization, operating_cash_flow, investing_cash_flow, capital_expenditures, free_cash_flow and dividends_paid_common. Every other input is a balance taken at the period end.

  • annual rows: flows cover the fiscal year.
  • quarterly rows: flows cover the quarter, except in the fourteen metrics marked "TTM on quarterly rows", which read trailing-twelve-month (TTM) flows: the quarter and the three before it, summed.
  • ttm and daily rows: every flow is TTM.

A TTM flow needs four consecutive quarterly statements with the item present in each. A trailing EPS is the four quarters' EPS summed; where one of them is null, it is the EPS filed on an annual report, named in the row's ttm_eps_basis, or null.

Preceding and comparison periods

The preceding period is used by averaged balances, piotroski_f_score, beneish_m_score and shares_buyback_ratio:

  • annual rows: the fiscal year ending a year earlier.
  • quarterly rows: the quarter ending a quarter earlier.
  • ttm and daily rows: the statement ending a year earlier, and the share count 365 days before the row's date.

"Average" means the value at this period end plus the value at the preceding period end, divided by two.

The comparison period is used by the growth metrics, peg_ratio and market_cap_performance:

  • annual rows: the fiscal year ending a year earlier.
  • quarterly rows: set by growth_basis. yoy (default) compares with the quarter ending a year earlier, qoq with the quarter ending a quarter earlier, and ttm_yoy compares TTM flows with the TTM flows ending a year earlier.
  • ttm and daily rows: TTM flows against the TTM flows ending a year earlier, and market_cap 365 days before the row's date.

A year earlier is the period ending closest to 365 days before the end of the period the row reads (period_end, or statement_period_end on daily rows), within 45 days either way. A quarter earlier is the latest period ending 60 to 125 days before it. Derived fourth quarters count as periods. Where no period ends in that window, the row has no preceding or comparison period, and a metric that needs one is null, named prior:<field>. See Metrics.

Days in the period

days_inventory, days_payable and days_sales_outstanding multiply by 365 on annual, ttm and daily rows, and by 91.25 on quarterly rows.

Valuation metrics

Category name: valuation. 18 metrics.

fieldtypeunitnullabledescription
market_capfloatmillions of USDyesMarket capitalisation of the whole company on the row's date: close times shares for each common share class that traded within 30 days of the date, summed. Depositary receipts are used where no common class trades. null unless every class in that set has a close and a share count no more than 400 days old, and null where a share count is recorded as a count of depositary shares rather than the company's own shares (market_cap:<entity_id>:depositary_count).
enterprise_valuefloatmillions of USDyesEnterprise value: market_cap + total_debt − cash_and_equivalents.
pe_ratiofloatratioyesPrice to earnings: close / eps_diluted. Uses the requested class's own close. Negative when eps_diluted is negative. null at zero EPS (eps_diluted:zero), and where the priced security is not common stock, a depositary receipt or a fund share (close:not_common_equity). TTM on quarterly rows.
ps_ratiofloatratioyesPrice to sales: market_cap / revenue. TTM on quarterly rows.
pb_ratiofloatratioyesPrice to book: market_cap / total_equity.
price_to_cash_flowfloatratioyesmarket_cap / operating_cash_flow. TTM on quarterly rows.
ev_ebitdafloatratioyesenterprise_value / ebitda. Inputs: market_cap, total_debt, cash_and_equivalents, ebitda. TTM on quarterly rows.
ev_ebitfloatratioyesenterprise_value / ebit. Inputs: market_cap, total_debt, cash_and_equivalents, ebit. TTM on quarterly rows.
ev_revenuefloatratioyesenterprise_value / revenue. Inputs: market_cap, total_debt, cash_and_equivalents, revenue. TTM on quarterly rows.
ev_gross_profitfloatratioyesenterprise_value / gross_profit. Inputs: market_cap, total_debt, cash_and_equivalents, gross_profit. TTM on quarterly rows.
price_to_fcffloatratioyesPrice to free cash flow: market_cap / free_cash_flow. TTM on quarterly rows.
price_to_cashfloatratioyesmarket_cap / cash_and_short_term_investments.
price_to_net_working_capitalfloatratioyesmarket_cap / (current_assets_total − current_liabilities_total).
tobins_qfloatratioyesTobin's Q: market_cap / total_assets.
grahams_numberfloatUSD per shareyesGraham number: square root of (22.5 × eps_diluted × total_equity / shares). null at zero EPS (eps_diluted:zero), at negative EPS against a positive book value per share (eps_diluted:negative), where book value per share is unknown (total_equity, shares_outstanding or shares_outstanding:zero), and at positive EPS against a negative book value per share.
peg_ratiofloatratioyesPrice/earnings to growth: pe_ratio / (growth of eps_diluted against the comparison period × 100). null when that growth is zero (eps_diluted_growth:zero), when the comparison period's eps_diluted is zero (prior:eps_diluted:zero), and where the priced security is not common stock, a depositary receipt or a fund share (close:not_common_equity). On quarterly rows pe_ratio uses TTM EPS and the growth compares the quarter's own eps_diluted.
earnings_yieldfloatdecimal fractionyesnet_income / market_cap. Not the exact inverse of pe_ratio, which uses the class's close and diluted EPS. TTM on quarterly rows.
dividend_yieldfloatdecimal fractionyesAbsolute value of dividends_paid_common / market_cap: cash dividends paid to common shareholders over the period, or the common dividends declared where the filing reports no payment. TTM on quarterly rows.

Profitability metrics

Category name: profitability. 13 metrics.

fieldtypeunitnullabledescription
gross_marginfloatdecimal fractionyesgross_profit / revenue.
operating_marginfloatdecimal fractionyesoperating_income / revenue.
net_marginfloatdecimal fractionyesnet_income / revenue.
ebitda_marginfloatdecimal fractionyesebitda / revenue.
fcf_marginfloatdecimal fractionyesfree_cash_flow / revenue.
pretax_marginfloatdecimal fractionyespretax_income / revenue.
roefloatdecimal fractionyesReturn on equity: net_income / total_equity at the period end, not averaged.
roafloatdecimal fractionyesReturn on assets: net_income / total_assets at the period end, not averaged.
roicfloatdecimal fractionyesReturn on invested capital: (net_income + 0.79 × interest_expense) / (total_equity + long_term_debt).
roe_adjusted_to_bookfloatdecimal fractionyesroe / (market_cap / total_equity).
return_on_total_capitalfloatdecimal fractionyesoperating_income / average of (total_equity + total_debt + minority_interest) at this and the preceding period end.
return_on_capital_employedfloatdecimal fractionyesoperating_income / average of (total_assets − current_liabilities_total) at this and the preceding period end.
operating_earnings_yieldfloatdecimal fractionyesoperating_income / market_cap. TTM on quarterly rows.

Leverage metrics

Category name: leverage. 16 metrics.

fieldtypeunitnullabledescription
debt_to_equityfloatratioyestotal_debt / total_equity.
debt_to_assetsfloatratioyestotal_debt / total_assets.
long_term_debt_to_equityfloatratioyeslong_term_debt / total_equity.
long_term_debt_to_assetsfloatratioyeslong_term_debt / total_assets.
debt_to_ebitdafloatratioyestotal_debt / ebitda. TTM on quarterly rows.
debt_to_revenuefloatratioyestotal_debt / revenue. TTM on quarterly rows.
net_debt_to_ebitdafloatratioyes(total_debt − cash_and_equivalents) / ebitda. TTM on quarterly rows.
equity_to_assetsfloatratioyestotal_equity / total_assets.
assets_to_equityfloatratioyestotal_assets / total_equity.
total_debt_to_capitalfloatratioyestotal_debt / (total_equity + total_debt).
cash_to_debtfloatratioyescash_and_short_term_investments / total_debt.
effective_interest_ratefloatdecimal fractionyesinterest_expense / average total_debt at this and the preceding period end.
interest_coveragefloatratioyesebit / interest_expense.
ebitda_interest_coveragefloatratioyesebitda / interest_expense.
ebitda_less_capex_interest_coveragefloatratioyes(ebitda − absolute value of capital_expenditures) / interest_expense.
goodwill_to_assetsfloatratioyesgoodwill / total_assets.

Liquidity metrics

Category name: liquidity. 4 metrics.

fieldtypeunitnullabledescription
current_ratiofloatratioyescurrent_assets_total / current_liabilities_total.
quick_ratiofloatratioyes(current_assets_total − inventory) / current_liabilities_total.
cash_ratiofloatratioyescash_and_short_term_investments / current_liabilities_total.
cash_conversion_cyclefloatdaysyesdays_inventory + days_sales_outstanding − days_payable. Inputs: inventory, cost_of_revenue, accounts_receivable, revenue, accounts_payable.

Efficiency metrics

Category name: efficiency. 11 metrics.

fieldtypeunitnullabledescription
asset_turnoverfloatratioyesrevenue / total_assets.
inventory_turnoverfloatratioyescost_of_revenue / inventory.
cogs_to_revenuefloatdecimal fractionyescost_of_revenue / revenue.
inventory_to_revenuefloatdecimal fractionyesinventory / revenue.
days_inventoryfloatdaysyesinventory / cost_of_revenue × days in the period.
days_payablefloatdaysyesaccounts_payable / cost_of_revenue × days in the period.
days_sales_outstandingfloatdaysyesaccounts_receivable / revenue × days in the period.
total_receivables_turnoverfloatratioyesrevenue / accounts_receivable.
fixed_assets_turnoverfloatratioyesrevenue / property_plant_equipment_net.
rd_to_revenuefloatdecimal fractionyesresearch_and_development / revenue.
sga_ratiofloatdecimal fractionyesselling_general_admin / revenue.

Per-share metrics

Category name: per_share. 11 metrics. Each divides by the company's shares on the row's date, in millions.

fieldtypeunitnullabledescription
revenue_per_sharefloatUSD per shareyesrevenue / shares.
book_value_per_sharefloatUSD per shareyestotal_equity / shares.
cash_per_sharefloatUSD per shareyescash_and_equivalents / shares.
debt_per_sharefloatUSD per shareyestotal_debt / shares.
ocf_per_sharefloatUSD per shareyesoperating_cash_flow / shares.
fcf_per_sharefloatUSD per shareyesfree_cash_flow / shares.
ebit_per_sharefloatUSD per shareyesebit / shares.
ebitda_per_sharefloatUSD per shareyesebitda / shares.
capex_per_sharefloatUSD per shareyescapital_expenditures / shares, with the sign capital_expenditures has on Fundamentals.
working_capital_per_sharefloatUSD per shareyes(current_assets_total − current_liabilities_total) / shares.
ncavpsfloatUSD per shareyesNet current asset value per share: (current_assets_total − total_liabilities − preferred_equity) / shares.

Dividend metrics

Category name: dividends. 4 metrics.

fieldtypeunitnullabledescription
dividend_payout_ratiofloatdecimal fractionyesAbsolute value of dividends_paid_common / net_income.
shares_buyback_ratiofloatdecimal fractionyes(shares in the preceding period − shares) / shares in the preceding period. Positive when the share count fell.
sustainable_growth_ratefloatdecimal fractionyesroe × (1 − dividend_payout_ratio). Inputs: net_income, total_equity, dividends_paid_common.
cash_dividend_coveragefloatratioyesoperating_cash_flow / absolute value of dividends_paid_common.

Accounting scores

Category name: scores. 9 metrics.

fieldtypeunitnullabledescription
accrualsfloatmillions of USDyesnet_income − operating_cash_flow.
quality_ratiofloatdecimal fractionyesgross_profit / total_assets.
gross_profit_to_assetsfloatdecimal fractionyesgross_profit / average total_assets at this and the preceding period end.
sloan_ratiofloatdecimal fractionyes(net_income − operating_cash_flow − investing_cash_flow) / total_assets.
altman_z_scorefloatscoreyesAltman Z-score: 1.2 × (current_assets_total − current_liabilities_total) / total_assets + 1.4 × retained_earnings / total_assets + 3.3 × ebit / total_assets + 0.6 × market_cap / total_liabilities + 1.0 × revenue / total_assets.
piotroski_f_scoreintscore, 0 to 9yesPiotroski F-score: the number of the nine tests listed below that pass, comparing with the preceding period. null when any test cannot be decided.
beneish_m_scorefloatscoreyesBeneish M-score: −4.84 + 0.920 × DSRI + 0.528 × GMI + 0.404 × AQI + 0.892 × SGI + 0.115 × DEPI − 0.172 × SGAI − 0.327 × LVGI + 4.697 × TATA, with the indices defined below, comparing with the preceding period.
springate_scorefloatscoreyesSpringate score: 1.03 × (current_assets_total − current_liabilities_total) / total_assets + 3.07 × ebit / total_assets + 0.66 × pretax_income / current_liabilities_total + 0.4 × revenue / total_assets.
zmijewski_scorefloatscoreyesZmijewski score: −4.336 − 4.513 × net_income / total_assets + 5.679 × total_liabilities / total_assets + 0.004 × current_assets_total / current_liabilities_total.

Piotroski tests

Each test scores 1 when it passes. "Preceding" is the preceding period as defined under "Units and conventions".

  • net_income is above zero.
  • operating_cash_flow is above zero.
  • net_income / total_assets is higher than in the preceding period.
  • operating_cash_flow is above net_income.
  • long_term_debt / total_assets is lower than in the preceding period.
  • current_assets_total / current_liabilities_total is higher than in the preceding period.
  • Shares are no higher than in the preceding period.
  • gross_profit / revenue is higher than in the preceding period.
  • revenue / total_assets is higher than in the preceding period.

Beneish indices

A suffix "p" marks the preceding period's value.

  • DSRI = (accounts_receivable / revenue) / (accounts_receivable p / revenue p)
  • GMI = (gross_profit p / revenue p) / (gross_profit / revenue)
  • AQI = (1 − (current_assets_total + property_plant_equipment_net) / total_assets) / (1 − (current_assets_total p + property_plant_equipment_net p) / total_assets p)
  • SGI = revenue / revenue p
  • DEPI = (depreciation_amortization p / (property_plant_equipment_net p + depreciation_amortization p)) / (depreciation_amortization / (property_plant_equipment_net + depreciation_amortization))
  • SGAI = (selling_general_admin / revenue) / (selling_general_admin p / revenue p)
  • LVGI = ((current_liabilities_total + long_term_debt) / total_assets) / ((current_liabilities_total p + long_term_debt p) / total_assets p)
  • TATA = (net_income − operating_cash_flow) / total_assets

Growth metrics

Category name: growth. 11 metrics. Each is (current − comparison) / absolute value of comparison, against the comparison period defined under "Units and conventions". null when the comparison value is zero (prior:<field>:zero in missing_inputs) or missing (prior:<field>).

fieldtypeunitnullabledescription
revenue_growthfloatdecimal fractionyesGrowth of revenue.
net_income_growthfloatdecimal fractionyesGrowth of net_income.
eps_diluted_growthfloatdecimal fractionyesGrowth of eps_diluted.
eps_basic_growthfloatdecimal fractionyesGrowth of eps_basic.
ebitda_growthfloatdecimal fractionyesGrowth of ebitda.
gross_profit_growthfloatdecimal fractionyesGrowth of gross_profit.
fcf_growthfloatdecimal fractionyesGrowth of free_cash_flow.
total_assets_growthfloatdecimal fractionyesGrowth of total_assets, a balance at each period end.
total_debt_growthfloatdecimal fractionyesGrowth of total_debt, a balance at each period end.
capex_growthfloatdecimal fractionyesGrowth of capital_expenditures.
market_cap_performancefloatdecimal fractionyesGrowth of market_cap: on annual and quarterly rows against the comparison period's end, on ttm and daily rows against 365 days before the row's date.

Volatility metrics

Category name: volatility. 3 metrics. Each is the sample standard deviation of daily log returns, ln(close on a day / close on the previous trading day), multiplied by the square root of 252. Closes are the requested class's as-traded closes, so dividends are not added back and a window that includes a split date includes that day's price change. The window ends on the row's date as defined under "Market inputs".

fieldtypeunitnullabledescription
realized_volatility_21dfloatannualised decimal fractionyesOver the last 21 daily returns.
realized_volatility_63dfloatannualised decimal fractionyesOver the last 63 daily returns.
realized_volatility_252dfloatannualised decimal fractionyesOver the last 252 daily returns.

A value needs the window's full count of returns, spanning no more than 46, 137 or 548 calendar days respectively, with a close on every trading day in the window. Otherwise it is null and missing_inputs names insufficient_price_history. A null volatility means the price history is too short or too sparse to measure, not zero volatility.

Was this page helpful?