Fundamentals — ratio formulas
Generated from hfmarketdata/api/fundamentals/ratios.py (render_docs()); do not edit by hand.
Conventions: flows are trailing twelve months (sum of the last four discrete quarters — or the fiscal year with period=annual), balances are the latest balance sheet, price is the last close known at the valuation date. A ratio is null (with a reason in meta.reasons) whenever an input is missing or the denominator is not positive — nothing is ever invented.
Valuation
market_cap
market_cap = price × shares_outstanding
shares_outstanding is the cover-page share count (dei:EntityCommonStockSharesOutstanding, all
classes summed) of the latest filing known at the valuation date; falls back to weighted-average
diluted shares (flagged shares_source=weighted_diluted).
Inputs: price, shares_outstanding
enterprise_value
enterprise_value = market_cap + total_debt − cash_and_equivalents − short_term_investments
Missing short_term_investments is treated as 0 (flagged); missing total_debt is treated as 0 only
when the balance sheet has no debt account at all (flagged total_debt_assumed_zero).
Inputs: market_cap, total_debt, cash_and_equivalents, short_term_investments
pe
pe = price / eps_diluted (TTM)
Null when TTM diluted EPS ≤ 0 (a negative P/E is not meaningful).
Inputs: price, eps_diluted
forward_pe
forward_pe = price / forward_eps
HF Market Data does not carry analyst consensus estimates, so forward_eps is never available
and forward_pe is always null with reason no_estimates — we do not extrapolate.
Inputs: forward_eps
pb
pb = market_cap / total_equity
Null when book equity ≤ 0.
Inputs: market_cap, total_equity
ps
ps = market_cap / revenue (TTM)
Inputs: market_cap, revenue
ev_ebitda
ev_ebitda = enterprise_value / ebitda (TTM)
Null when EBITDA ≤ 0.
Inputs: enterprise_value, ebitda
ev_sales
ev_sales = enterprise_value / revenue (TTM)
Inputs: enterprise_value, revenue
ev_fcf
ev_fcf = enterprise_value / free_cash_flow (TTM)
Null when FCF ≤ 0.
Inputs: enterprise_value, free_cash_flow
earnings_yield
earnings_yield = net_income (TTM) / market_cap
Inputs: net_income, market_cap
fcf_yield
fcf_yield = free_cash_flow (TTM) / market_cap
Inputs: free_cash_flow, market_cap
dividend_yield
dividend_yield = dividends paid (TTM, cash flow statement) / market_cap
Inputs: dividends, market_cap
buyback_yield
buyback_yield = buybacks (TTM, cash paid for repurchases) / market_cap
Inputs: buybacks, market_cap
Profitability
gross_margin
gross_margin = gross_profit / revenue (TTM)
Inputs: gross_profit, revenue
operating_margin
operating_margin = operating_income / revenue (TTM)
Inputs: operating_income, revenue
net_margin
net_margin = net_income / revenue (TTM)
Inputs: net_income, revenue
ebitda_margin
ebitda_margin = ebitda / revenue (TTM)
Inputs: ebitda, revenue
fcf_margin
fcf_margin = free_cash_flow / revenue (TTM)
Inputs: free_cash_flow, revenue
roe
roe = net_income (TTM) / total_equity (latest)
Uses the latest book equity, not the average — simpler and point-in-time consistent. Null when equity ≤ 0.
Inputs: net_income, total_equity
roa
roa = net_income (TTM) / total_assets (latest)
Inputs: net_income, total_assets
roic
roic = operating_income × (1 − tax_rate) / (total_debt + total_equity − cash_and_equivalents)
tax_rate = income_tax / pretax_income (TTM), only accepted in [0, 1]; when the effective rate is
not computable the ratio is null (tax_rate_unavailable) — no statutory rate is assumed. Null when
invested capital ≤ 0.
Inputs: operating_income, income_tax, pretax_income, total_debt, total_equity, cash_and_equivalents
Liquidity
current_ratio
current_ratio = total_current_assets / total_current_liabilities
Inputs: total_current_assets, total_current_liabilities
quick_ratio
quick_ratio = (cash_and_equivalents + short_term_investments + receivables) / total_current_liabilities
Missing short_term_investments or receivables are treated as 0 (flagged).
Inputs: cash_and_equivalents, short_term_investments, receivables, total_current_liabilities
cash_ratio
cash_ratio = (cash_and_equivalents + short_term_investments) / total_current_liabilities
Inputs: cash_and_equivalents, short_term_investments, total_current_liabilities
Solvency
debt_to_equity
debt_to_equity = total_debt / total_equity
Null when equity ≤ 0.
Inputs: total_debt, total_equity
debt_to_assets
debt_to_assets = total_debt / total_assets
Inputs: total_debt, total_assets
net_debt_to_ebitda
net_debt_to_ebitda = net_debt / ebitda (TTM)
Null when EBITDA ≤ 0.
Inputs: net_debt, ebitda
interest_coverage
interest_coverage = operating_income / interest_expense (TTM)
Null when interest expense is 0 or not reported.
Inputs: operating_income, interest_expense
Efficiency
asset_turnover
asset_turnover = revenue (TTM) / total_assets (latest)
Inputs: revenue, total_assets
inventory_turnover
inventory_turnover = cost_of_revenue (TTM) / inventory (latest)
Inputs: cost_of_revenue, inventory
receivables_turnover
receivables_turnover = revenue (TTM) / receivables (latest)
Inputs: revenue, receivables
days_sales_outstanding
days_sales_outstanding = 365 × receivables / revenue (TTM)
Inputs: receivables, revenue
cash_conversion_cycle
cash_conversion_cycle = DSO + DIO − DPO
DSO = 365 × receivables / revenue · DIO = 365 × inventory / cost_of_revenue · DPO = 365 × accounts_payable / cost_of_revenue (all flows TTM, balances latest).
Inputs: receivables, revenue, inventory, accounts_payable, cost_of_revenue
Growth
revenue_growth_yoy
revenue_growth_yoy = revenue (TTM) / revenue (TTM one year earlier) − 1
Inputs: revenue, revenue_prev_year
revenue_growth_qoq
revenue_growth_qoq = revenue (latest quarter) / revenue (previous quarter) − 1
Inputs: revenue_q, revenue_prev_quarter
eps_growth_yoy
eps_growth_yoy = eps_diluted (TTM) / eps_diluted (TTM one year earlier) − 1
Null when the base EPS ≤ 0.
Inputs: eps_diluted, eps_diluted_prev_year
fcf_growth_yoy
fcf_growth_yoy = free_cash_flow (TTM) / free_cash_flow (TTM one year earlier) − 1
Inputs: free_cash_flow, free_cash_flow_prev_year
revenue_cagr_3y
revenue_cagr_3y = (revenue TTM / revenue TTM 3 years earlier)^(1/3) − 1
Inputs: revenue, revenue_3y
revenue_cagr_5y
revenue_cagr_5y = (revenue TTM / revenue TTM 5 years earlier)^(1/5) − 1
Inputs: revenue, revenue_5y
revenue_cagr_10y
revenue_cagr_10y = (revenue TTM / revenue TTM 10 years earlier)^(1/10) − 1
Inputs: revenue, revenue_10y
eps_cagr_5y
eps_cagr_5y = (eps_diluted TTM / eps_diluted TTM 5 years earlier)^(1/5) − 1
Inputs: eps_diluted, eps_diluted_5y
Per Share
revenue_ps
revenue_ps = revenue (TTM) / shares_diluted (weighted average, latest quarter)
Inputs: revenue, shares_diluted
book_value_ps
book_value_ps = total_equity / shares_outstanding
Inputs: total_equity, shares_outstanding
fcf_ps
fcf_ps = free_cash_flow (TTM) / shares_diluted
Inputs: free_cash_flow, shares_diluted
cash_ps
cash_ps = (cash_and_equivalents + short_term_investments) / shares_outstanding
Inputs: cash_and_equivalents, short_term_investments, shares_outstanding