Metrics catalogue
Every metric the metrics endpoint serves, with its unit, formula and the input fields it reads.
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.25means 25%. Not a percentage. - "millions of USD":
4977636.9726is 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 isperiod_endonannualandquarterlyrows,priced_ononttmrows and the trading date ondailyrows.market_cap: the whole company's market capitalisation, in millions of USD. Seemarket_capbelow.- shares: the company's share count on the row's date, summed over the same share classes as
market_capand 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_inputsnamesshares_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.
annualrows: flows cover the fiscal year.quarterlyrows: 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.ttmanddailyrows: 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:
annualrows: the fiscal year ending a year earlier.quarterlyrows: the quarter ending a quarter earlier.ttmanddailyrows: 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:
annualrows: the fiscal year ending a year earlier.quarterlyrows: set bygrowth_basis.yoy(default) compares with the quarter ending a year earlier,qoqwith the quarter ending a quarter earlier, andttm_yoycompares TTM flows with the TTM flows ending a year earlier.ttmanddailyrows: TTM flows against the TTM flows ending a year earlier, andmarket_cap365 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.
| field | type | unit | nullable | description |
|---|---|---|---|---|
market_cap | float | millions of USD | yes | Market 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_value | float | millions of USD | yes | Enterprise value: market_cap + total_debt − cash_and_equivalents. |
pe_ratio | float | ratio | yes | Price 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_ratio | float | ratio | yes | Price to sales: market_cap / revenue. TTM on quarterly rows. |
pb_ratio | float | ratio | yes | Price to book: market_cap / total_equity. |
price_to_cash_flow | float | ratio | yes | market_cap / operating_cash_flow. TTM on quarterly rows. |
ev_ebitda | float | ratio | yes | enterprise_value / ebitda. Inputs: market_cap, total_debt, cash_and_equivalents, ebitda. TTM on quarterly rows. |
ev_ebit | float | ratio | yes | enterprise_value / ebit. Inputs: market_cap, total_debt, cash_and_equivalents, ebit. TTM on quarterly rows. |
ev_revenue | float | ratio | yes | enterprise_value / revenue. Inputs: market_cap, total_debt, cash_and_equivalents, revenue. TTM on quarterly rows. |
ev_gross_profit | float | ratio | yes | enterprise_value / gross_profit. Inputs: market_cap, total_debt, cash_and_equivalents, gross_profit. TTM on quarterly rows. |
price_to_fcf | float | ratio | yes | Price to free cash flow: market_cap / free_cash_flow. TTM on quarterly rows. |
price_to_cash | float | ratio | yes | market_cap / cash_and_short_term_investments. |
price_to_net_working_capital | float | ratio | yes | market_cap / (current_assets_total − current_liabilities_total). |
tobins_q | float | ratio | yes | Tobin's Q: market_cap / total_assets. |
grahams_number | float | USD per share | yes | Graham 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_ratio | float | ratio | yes | Price/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_yield | float | decimal fraction | yes | net_income / market_cap. Not the exact inverse of pe_ratio, which uses the class's close and diluted EPS. TTM on quarterly rows. |
dividend_yield | float | decimal fraction | yes | Absolute 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.
| field | type | unit | nullable | description |
|---|---|---|---|---|
gross_margin | float | decimal fraction | yes | gross_profit / revenue. |
operating_margin | float | decimal fraction | yes | operating_income / revenue. |
net_margin | float | decimal fraction | yes | net_income / revenue. |
ebitda_margin | float | decimal fraction | yes | ebitda / revenue. |
fcf_margin | float | decimal fraction | yes | free_cash_flow / revenue. |
pretax_margin | float | decimal fraction | yes | pretax_income / revenue. |
roe | float | decimal fraction | yes | Return on equity: net_income / total_equity at the period end, not averaged. |
roa | float | decimal fraction | yes | Return on assets: net_income / total_assets at the period end, not averaged. |
roic | float | decimal fraction | yes | Return on invested capital: (net_income + 0.79 × interest_expense) / (total_equity + long_term_debt). |
roe_adjusted_to_book | float | decimal fraction | yes | roe / (market_cap / total_equity). |
return_on_total_capital | float | decimal fraction | yes | operating_income / average of (total_equity + total_debt + minority_interest) at this and the preceding period end. |
return_on_capital_employed | float | decimal fraction | yes | operating_income / average of (total_assets − current_liabilities_total) at this and the preceding period end. |
operating_earnings_yield | float | decimal fraction | yes | operating_income / market_cap. TTM on quarterly rows. |
Leverage metrics
Category name: leverage. 16 metrics.
| field | type | unit | nullable | description |
|---|---|---|---|---|
debt_to_equity | float | ratio | yes | total_debt / total_equity. |
debt_to_assets | float | ratio | yes | total_debt / total_assets. |
long_term_debt_to_equity | float | ratio | yes | long_term_debt / total_equity. |
long_term_debt_to_assets | float | ratio | yes | long_term_debt / total_assets. |
debt_to_ebitda | float | ratio | yes | total_debt / ebitda. TTM on quarterly rows. |
debt_to_revenue | float | ratio | yes | total_debt / revenue. TTM on quarterly rows. |
net_debt_to_ebitda | float | ratio | yes | (total_debt − cash_and_equivalents) / ebitda. TTM on quarterly rows. |
equity_to_assets | float | ratio | yes | total_equity / total_assets. |
assets_to_equity | float | ratio | yes | total_assets / total_equity. |
total_debt_to_capital | float | ratio | yes | total_debt / (total_equity + total_debt). |
cash_to_debt | float | ratio | yes | cash_and_short_term_investments / total_debt. |
effective_interest_rate | float | decimal fraction | yes | interest_expense / average total_debt at this and the preceding period end. |
interest_coverage | float | ratio | yes | ebit / interest_expense. |
ebitda_interest_coverage | float | ratio | yes | ebitda / interest_expense. |
ebitda_less_capex_interest_coverage | float | ratio | yes | (ebitda − absolute value of capital_expenditures) / interest_expense. |
goodwill_to_assets | float | ratio | yes | goodwill / total_assets. |
Liquidity metrics
Category name: liquidity. 4 metrics.
| field | type | unit | nullable | description |
|---|---|---|---|---|
current_ratio | float | ratio | yes | current_assets_total / current_liabilities_total. |
quick_ratio | float | ratio | yes | (current_assets_total − inventory) / current_liabilities_total. |
cash_ratio | float | ratio | yes | cash_and_short_term_investments / current_liabilities_total. |
cash_conversion_cycle | float | days | yes | days_inventory + days_sales_outstanding − days_payable. Inputs: inventory, cost_of_revenue, accounts_receivable, revenue, accounts_payable. |
Efficiency metrics
Category name: efficiency. 11 metrics.
| field | type | unit | nullable | description |
|---|---|---|---|---|
asset_turnover | float | ratio | yes | revenue / total_assets. |
inventory_turnover | float | ratio | yes | cost_of_revenue / inventory. |
cogs_to_revenue | float | decimal fraction | yes | cost_of_revenue / revenue. |
inventory_to_revenue | float | decimal fraction | yes | inventory / revenue. |
days_inventory | float | days | yes | inventory / cost_of_revenue × days in the period. |
days_payable | float | days | yes | accounts_payable / cost_of_revenue × days in the period. |
days_sales_outstanding | float | days | yes | accounts_receivable / revenue × days in the period. |
total_receivables_turnover | float | ratio | yes | revenue / accounts_receivable. |
fixed_assets_turnover | float | ratio | yes | revenue / property_plant_equipment_net. |
rd_to_revenue | float | decimal fraction | yes | research_and_development / revenue. |
sga_ratio | float | decimal fraction | yes | selling_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.
| field | type | unit | nullable | description |
|---|---|---|---|---|
revenue_per_share | float | USD per share | yes | revenue / shares. |
book_value_per_share | float | USD per share | yes | total_equity / shares. |
cash_per_share | float | USD per share | yes | cash_and_equivalents / shares. |
debt_per_share | float | USD per share | yes | total_debt / shares. |
ocf_per_share | float | USD per share | yes | operating_cash_flow / shares. |
fcf_per_share | float | USD per share | yes | free_cash_flow / shares. |
ebit_per_share | float | USD per share | yes | ebit / shares. |
ebitda_per_share | float | USD per share | yes | ebitda / shares. |
capex_per_share | float | USD per share | yes | capital_expenditures / shares, with the sign capital_expenditures has on Fundamentals. |
working_capital_per_share | float | USD per share | yes | (current_assets_total − current_liabilities_total) / shares. |
ncavps | float | USD per share | yes | Net current asset value per share: (current_assets_total − total_liabilities − preferred_equity) / shares. |
Dividend metrics
Category name: dividends. 4 metrics.
| field | type | unit | nullable | description |
|---|---|---|---|---|
dividend_payout_ratio | float | decimal fraction | yes | Absolute value of dividends_paid_common / net_income. |
shares_buyback_ratio | float | decimal fraction | yes | (shares in the preceding period − shares) / shares in the preceding period. Positive when the share count fell. |
sustainable_growth_rate | float | decimal fraction | yes | roe × (1 − dividend_payout_ratio). Inputs: net_income, total_equity, dividends_paid_common. |
cash_dividend_coverage | float | ratio | yes | operating_cash_flow / absolute value of dividends_paid_common. |
Accounting scores
Category name: scores. 9 metrics.
| field | type | unit | nullable | description |
|---|---|---|---|---|
accruals | float | millions of USD | yes | net_income − operating_cash_flow. |
quality_ratio | float | decimal fraction | yes | gross_profit / total_assets. |
gross_profit_to_assets | float | decimal fraction | yes | gross_profit / average total_assets at this and the preceding period end. |
sloan_ratio | float | decimal fraction | yes | (net_income − operating_cash_flow − investing_cash_flow) / total_assets. |
altman_z_score | float | score | yes | Altman 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_score | int | score, 0 to 9 | yes | Piotroski 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_score | float | score | yes | Beneish 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_score | float | score | yes | Springate 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_score | float | score | yes | Zmijewski 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_incomeis above zero.operating_cash_flowis above zero.net_income/total_assetsis higher than in the preceding period.operating_cash_flowis abovenet_income.long_term_debt/total_assetsis lower than in the preceding period.current_assets_total/current_liabilities_totalis higher than in the preceding period.- Shares are no higher than in the preceding period.
gross_profit/revenueis higher than in the preceding period.revenue/total_assetsis higher than in the preceding period.
Beneish indices
A suffix "p" marks the preceding period's value.
- DSRI = (
accounts_receivable/revenue) / (accounts_receivablep /revenuep) - GMI = (
gross_profitp /revenuep) / (gross_profit/revenue) - AQI = (1 − (
current_assets_total+property_plant_equipment_net) /total_assets) / (1 − (current_assets_totalp +property_plant_equipment_netp) /total_assetsp) - SGI =
revenue/revenuep - DEPI = (
depreciation_amortizationp / (property_plant_equipment_netp +depreciation_amortizationp)) / (depreciation_amortization/ (property_plant_equipment_net+depreciation_amortization)) - SGAI = (
selling_general_admin/revenue) / (selling_general_adminp /revenuep) - LVGI = ((
current_liabilities_total+long_term_debt) /total_assets) / ((current_liabilities_totalp +long_term_debtp) /total_assetsp) - 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>).
| field | type | unit | nullable | description |
|---|---|---|---|---|
revenue_growth | float | decimal fraction | yes | Growth of revenue. |
net_income_growth | float | decimal fraction | yes | Growth of net_income. |
eps_diluted_growth | float | decimal fraction | yes | Growth of eps_diluted. |
eps_basic_growth | float | decimal fraction | yes | Growth of eps_basic. |
ebitda_growth | float | decimal fraction | yes | Growth of ebitda. |
gross_profit_growth | float | decimal fraction | yes | Growth of gross_profit. |
fcf_growth | float | decimal fraction | yes | Growth of free_cash_flow. |
total_assets_growth | float | decimal fraction | yes | Growth of total_assets, a balance at each period end. |
total_debt_growth | float | decimal fraction | yes | Growth of total_debt, a balance at each period end. |
capex_growth | float | decimal fraction | yes | Growth of capital_expenditures. |
market_cap_performance | float | decimal fraction | yes | Growth 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".
| field | type | unit | nullable | description |
|---|---|---|---|---|
realized_volatility_21d | float | annualised decimal fraction | yes | Over the last 21 daily returns. |
realized_volatility_63d | float | annualised decimal fraction | yes | Over the last 63 daily returns. |
realized_volatility_252d | float | annualised decimal fraction | yes | Over 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?
Thank you for helping improve xfinlink documentation.
- Need help? Get in touch.
- Building with an LLM? Read llms.txt.
- Using Claude or ChatGPT? Connect the MCP server.