Skip to content

Methods reference

Every method is available with the same id and inputs from Python (fm.run), the CLI (fairmark run), MCP and function calling (tool name fairmark_<id with underscores>). Decimals may be passed as JSON numbers or strings and are returned as strings.

dates.year_fraction

Year fraction (day count) · method version 1 · tool fairmark_dates_year_fraction

Fraction of a year between two dates under an ISDA 2006 day-count convention: Actual/365 Fixed, Actual/360, Actual/Actual ISDA, 30/360, 30E/360.

Input Type Required Default Description
start string yes Start date (ISO 8601).
end string yes End date (ISO 8601), not earlier than the start date.
day_count act_365_fixed | act_360 | act_act_isda | thirty_360 | thirty_e_360 yes Day-count convention.

rates.convert

Rate conversion between compounding conventions · method version 1 · tool fairmark_rates_convert

Equivalent annual rate under another compounding (annual, semi-annual, quarterly, monthly, continuous).

Input Type Required Default Description
rate decimal yes Annual rate as a decimal fraction (0.12 = 12% a year), quoted with from compounding.
from annual | semi_annual | quarterly | monthly | continuous yes Compounding of the given rate.
to annual | semi_annual | quarterly | monthly | continuous yes Compounding of the equivalent rate to return.

rates.real_nominal

Real and nominal rates (Fisher) · method version 1 · tool fairmark_rates_real_nominal

Converts a nominal rate to a real rate, or the reverse, with the exact Fisher relation.

Input Type Required Default Description
rate decimal yes Rate to convert, decimal fraction per period (0.08 = 8%).
inflation decimal yes Inflation over the same period, decimal fraction (0.03 = 3%).
direction to_real | to_nominal yes to_real or to_nominal.

tvm.npv

Net present value · method version 2 · tool fairmark_tvm_npv

Net present value of a cash flow series; the first flow is at t = 0.

Input Type Required Default Description
rate decimal yes Discount rate per period as a decimal fraction (0.10 = 10%).
cash_flows list of decimal yes Cash flows; the first one occurs at t = 0 (no discounting).

tvm.present_value

Present value with a constant or time-varying rate · method version 1 · tool fairmark_tvm_present_value

Present value of periodic flows for periods 1..n with one rate or one rate per period, at end, mid or beginning of period. Returns every discount factor.

Input Type Required Default Description
cash_flows list of decimal yes Cash flows of periods 1, 2, ..., n, in currency units.
rate decimal no One discount rate for every period, decimal fraction per period. Give exactly one of rate and period_rates.
period_rates array | null no One discount rate per period (forward period rates, decimal fractions), exactly one per cash flow.
timing end_of_period | mid_period | beginning_of_period yes When flows occur within each period.

tvm.xnpv

Net present value of dated cash flows (XNPV) · method version 1 · tool fairmark_tvm_xnpv

Present value of dated flows at a valuation date, with explicit day count and compounding (defaults as in ECMA-376 XNPV).

Input Type Required Default Description
rate decimal yes Annual discount rate, decimal fraction (0.09 = 9%), quoted with compounding.
cash_flows list of object yes Dated cash flows, in any order.
valuation_date no Date at which the value is computed. Default: the earliest flow date (ECMA-376 XNPV).
day_count no Day count for the time between dates. Default: act_365_fixed (ECMA-376 XNPV).
compounding no Compounding of rate. Default: annual (ECMA-376 XNPV).

tvm.irr

Internal rate of return · method version 2 · tool fairmark_tvm_irr

Rate at which the NPV of a periodic cash flow series is zero, solved deterministically; refuses inputs with more than one IRR.

Input Type Required Default Description
cash_flows list of decimal yes Cash flows; the first one occurs at t = 0. Needs at least one sign change.
guess decimal no Starting point for Newton's method, decimal fraction per period. Default: 0.10.

tvm.xirr

Internal rate of return of dated cash flows (XIRR) · method version 1 · tool fairmark_tvm_xirr

Annual rate at which the XNPV of dated flows is zero, solved deterministically; refuses inputs with more than one rate.

Input Type Required Default Description
cash_flows list of object yes Dated cash flows, in any order; at least one positive and one negative amount.
day_count no Day count for the time between dates. Default: act_365_fixed (ECMA-376 XIRR).
compounding no Compounding of the returned rate. Default: annual (ECMA-376 XIRR).
guess decimal no Starting point for Newton's method, annual decimal fraction. Default: 0.10 (ECMA-376 XIRR).

tvm.mirr

Modified internal rate of return (MIRR) · method version 1 · tool fairmark_tvm_mirr

Rate of return with negative flows financed at a finance rate and positive flows reinvested at a reinvestment rate (ECMA-376 MIRR).

Input Type Required Default Description
cash_flows list of decimal yes Periodic cash flows; the first one occurs at t = 0. At least one positive and one negative.
finance_rate decimal yes Rate paid on the money invested (applied to negative flows), decimal fraction per period.
reinvest_rate decimal yes Rate earned on reinvested positive flows, decimal fraction per period.

tvm.annuity

Annuity (level or growing, ordinary or due) · method version 1 · tool fairmark_tvm_annuity

Present and future value of a finite series of level or growing payments.

Input Type Required Default Description
payment decimal yes First payment, in currency units.
rate decimal yes Discount rate per period, decimal fraction.
periods integer yes Number of payments, from 1 to 10000.
growth decimal no Growth of the payment per period, decimal fraction. Default: 0 (level annuity).
timing ordinary | due yes ordinary (end of period) or due (beginning of period).

tvm.perpetuity

Perpetuity (level or growing) · method version 1 · tool fairmark_tvm_perpetuity

Present value of a level or growing perpetuity (Gordon), ordinary or due.

Input Type Required Default Description
payment decimal yes First payment, in currency units.
rate decimal yes Discount rate per period, decimal fraction; must exceed growth.
growth decimal no Growth of the payment per period, decimal fraction, greater than -1. Default: 0 (level perpetuity).
timing ordinary | due yes ordinary (first payment at t = 1) or due (first payment at t = 0).

tvm.future_value

Future value of a present amount and level payments · method version 1 · tool fairmark_tvm_future_value

Value at the end of n periods of a present amount and a level series of payments, ordinary or due, at a rate per period.

Input Type Required Default Description
present_value decimal no Amount at t = 0, in currency units, accumulated to t = n. Default: 0. Give at least one of present_value and payment.
payment decimal no Level payment of every period, in currency units. Default: 0. An amount of the same sign as the present value accumulates in the same direction; a negative amount is a withdrawal.
rate decimal yes Rate per period, decimal fraction (0.01 = 1% per period). No annual-rate conversion: for an annual rate, convert it first (rates.convert) and divide by the periods per year.
periods integer yes Number of periods, from 1 to 10000.
timing ordinary | due yes ordinary (payments at the end of each period) or due (at the beginning).

loans.instalment

Loan instalment (constant instalment, optional balloon) · method version 1 · tool fairmark_loans_instalment

Constant instalment of a loan from its principal, rate, number of instalments and timing, with an optional balloon amount and an explicit rounding.

Input Type Required Default Description
principal decimal yes Amount borrowed, in currency units, greater than zero.
rate decimal no Annual borrowing rate, decimal fraction (0.05 = 5% a year), quoted with compounding. Rate form (a): give it with compounding and payment_frequency, or give periodic_rate instead.
compounding no Compounding of rate (form a); required with rate, no default.
payment_frequency no Instalments per year (form a): annual, semi_annual, quarterly or monthly.
periodic_rate decimal no Rate per payment period, decimal fraction (form b), greater than -1; instead of rate, compounding and payment_frequency.
number_of_instalments integer yes Number of instalments, from 1 to 10000.
timing ordinary | due yes ordinary (in arrears: instalment k at the end of period k) or due (in advance: at the beginning of period k).
balloon_amount decimal no Amount repaid at the end of the last period on top of the last instalment, in currency units, at least 0 and lower than the principal. Default: 0.
rounding no Rounding of the instalment. Default: none (no rounding).

loans.number_of_instalments

Number of instalments of a loan · method version 1 · tool fairmark_loans_number_of_instalments

Number of instalments needed to repay a loan with a given instalment, the exact number of periods and the final instalment.

Input Type Required Default Description
principal decimal yes Amount borrowed, in currency units, greater than zero.
rate decimal no Annual borrowing rate, decimal fraction (0.05 = 5% a year), quoted with compounding. Rate form (a): give it with compounding and payment_frequency, or give periodic_rate instead.
compounding no Compounding of rate (form a); required with rate, no default.
payment_frequency no Instalments per year (form a): annual, semi_annual, quarterly or monthly.
periodic_rate decimal no Rate per payment period, decimal fraction (form b), greater than -1; instead of rate, compounding and payment_frequency.
instalment decimal yes Constant instalment, in currency units; it must exceed the interest of the first period.
timing ordinary | due yes ordinary (in arrears: instalment k at the end of period k) or due (in advance: at the beginning of period k).

loans.amortisation_schedule

Amortisation schedule (French, constant principal, bullet) · method version 1 · tool fairmark_loans_amortisation_schedule

Period-by-period schedule of a loan with instalment, interest portion, principal portion and outstanding balance; French, fixed amortisation schedule or bullet, with an optional grace period, balloon amount and rounding.

Input Type Required Default Description
principal decimal yes Amount borrowed, in currency units, greater than zero.
rate decimal no Annual borrowing rate, decimal fraction (0.05 = 5% a year), quoted with compounding. Rate form (a): give it with compounding and payment_frequency, or give periodic_rate instead.
compounding no Compounding of rate (form a); required with rate, no default.
payment_frequency no Instalments per year (form a): annual, semi_annual, quarterly or monthly.
periodic_rate decimal no Rate per payment period, decimal fraction (form b), greater than -1; instead of rate, compounding and payment_frequency.
number_of_instalments integer yes Number of instalments over the full term, grace periods included, from 1 to 10000.
timing ordinary | due yes ordinary (in arrears: instalment k at the end of period k, time k). Version 1 accepts only ordinary; due is refused with FM-E001.
amortisation_type french | fixed_amortisation_schedule | bullet yes french (constant instalment), fixed_amortisation_schedule (constant principal portion) or bullet (principal repaid with the last instalment).
principal_grace_periods integer | null no Number of interest-only periods at the start, lower than number_of_instalments. Default: 0. Not accepted with bullet.
balloon_amount decimal no Principal repaid with the last instalment on top of the amortised amount, in currency units, at least 0 and lower than the principal. Default: 0. Not accepted with bullet.
rounding no Rounding of the amount the schedule type keeps constant: the instalment (french) or the principal portion (fixed_amortisation_schedule). Interest is never rounded. Default: none (no rounding).

coc.cost_of_equity

Cost of equity (CAPM with explicit premia) · method version 1 · tool fairmark_coc_cost_of_equity

Cost of equity from risk-free rate, levered or relevered beta and equity risk premium, plus optional country, size and specific premia, each reported.

Input Type Required Default Description
risk_free_rate decimal yes Risk-free rate, annual decimal fraction.
equity_risk_premium decimal yes Equity risk premium of the market, annual decimal fraction.
levered_beta decimal no Levered beta, dimensionless. Give exactly one of levered_beta and relever.
relever no Unlevered beta and target structure to relever. Give exactly one of levered_beta and relever.
country_risk_premium decimal no Country risk premium, annual decimal fraction, not negative. Default: 0.
country_exposure decimal no Exposure of the company to the country risk (lambda), dimensionless, not negative. Default: 1.
size_premium decimal no Size premium, annual decimal fraction. Default: 0.
specific_risk_premium decimal no Company-specific risk premium, annual decimal fraction. Default: 0. When not zero, specific_risk_justification is required.
specific_risk_justification string | null no Written reason for the specific risk premium, echoed in the audit trail.

coc.beta_relever

Beta unlevering and relevering · method version 1 · tool fairmark_coc_beta_relever

Converts an unlevered beta to a levered beta at a target D/E, or the reverse, with the Hamada or Harris-Pringle formula and an optional debt beta.

Input Type Required Default Description
beta decimal yes Beta to convert (unlevered for relever, levered for unlever), dimensionless.
direction relever | unlever yes relever or unlever.
debt_to_equity decimal yes Debt-to-equity ratio D/E, decimal (0.5 = debt equal to half of equity), not negative.
tax_rate decimal yes Tax rate of the tax shield, decimal fraction from 0 to below 1.
formula hamada | harris_pringle yes hamada or harris_pringle.
debt_beta decimal no Beta of debt, dimensionless. Default: 0 (risk-free debt).

coc.beta_peers

Beta from comparable companies · method version 1 · tool fairmark_coc_beta_peers

Unlevers the betas of comparable companies, takes the mean or median and relevers it to the target capital structure.

Input Type Required Default Description
peers list of object yes Comparable companies, at least one.
formula hamada | harris_pringle yes hamada or harris_pringle, used to unlever and to relever.
statistic mean | median yes mean or median of the unlevered betas.
target_debt_to_equity decimal yes Target debt-to-equity ratio D/E of the company being valued, decimal, not negative.
target_tax_rate decimal yes Tax rate of the company being valued, decimal fraction from 0 to below 1.
debt_beta decimal no Beta of debt, dimensionless, for peers and target. Default: 0 (risk-free debt).

coc.cost_of_debt

Cost of debt · method version 1 · tool fairmark_coc_cost_of_debt

Pre-tax cost of debt, given or as risk-free rate plus credit spread, and the after-tax cost of debt.

Input Type Required Default Description
pre_tax_cost_of_debt decimal no Pre-tax cost of debt, annual decimal fraction. Give either this, or risk_free_rate and credit_spread.
risk_free_rate decimal no Risk-free rate, annual decimal fraction (with credit_spread).
credit_spread decimal no Credit spread over the risk-free rate, annual decimal fraction (with risk_free_rate).
tax_rate decimal yes Tax rate of the tax shield, decimal fraction from 0 to below 1.

coc.wacc

Weighted average cost of capital (WACC) · method version 1 · tool fairmark_coc_wacc

WACC from cost of equity, cost of debt, tax rate and target weights (D/E or D/(D+E)).

Input Type Required Default Description
cost_of_equity decimal yes Cost of equity, annual decimal fraction.
pre_tax_cost_of_debt decimal yes Pre-tax cost of debt, annual decimal fraction.
tax_rate decimal yes Tax rate of the tax shield, decimal fraction from 0 to below 1.
debt_to_equity decimal no Target debt-to-equity ratio D/E, decimal, not negative. Give exactly one of debt_to_equity and debt_weight.
debt_weight decimal no Target weight of debt D/(D + E), decimal fraction from 0 to below 1. Give exactly one of debt_to_equity and debt_weight.

tv.gordon

Terminal value, stable growth (Gordon) · method version 1 · tool fairmark_tv_gordon

Terminal value at the horizon N of a flow growing at g forever, CF_{N+1} / (r − g), from the next flow or the last flow grown by g; not discounted.

Input Type Required Default Description
rate decimal yes Discount rate of the terminal phase, decimal fraction per period; must exceed growth. It may differ from the rate of the explicit phase.
growth decimal yes Perpetual growth of the flow, decimal fraction per period, greater than -1 and below rate.
next_flow decimal no Flow of the first period after the horizon, CF_{N+1}, in currency units (for example a normalised flow). Give this or last_flow, not both.
last_flow decimal no Flow of the last explicit period, CF_N, in currency units; grown by growth to CF_{N+1}. Give this or next_flow, not both.
growth_cap decimal no Upper bound for the perpetual growth, decimal fraction per period (for example the risk-free rate or the nominal growth of the economy). Default: none, reported as absent. A growth above the cap is reported, not refused.

tv.value_driver

Terminal value, value driver (growth from reinvestment) · method version 1 · tool fairmark_tv_value_driver

Terminal value at the horizon N with growth earned by reinvesting g / RONIC of NOPAT: NOPAT_{N+1} × (1 − g / RONIC) / (r − g); reports the reinvestment rate and whether growth creates value.

Input Type Required Default Description
nopat_next decimal yes Net operating profit after tax of the first period after the horizon, NOPAT_{N+1}, in currency units.
growth decimal yes Perpetual growth, decimal fraction per period, greater than -1 and below rate.
ronic decimal yes Return on new invested capital (RONIC), decimal fraction per period, greater than 0.
rate decimal yes Discount rate of the terminal phase, decimal fraction per period; must exceed growth.
growth_cap decimal no Upper bound for the perpetual growth, decimal fraction per period. Default: none, reported as absent. A growth above the cap is reported, not refused.

tv.h_model

Terminal value, H-model (declining growth) · method version 1 · tool fairmark_tv_h_model

Terminal value at the horizon N when growth declines linearly from g_s to g_l over 2H periods: CF_N × [(1 + g_l) + H × (g_s − g_l)] / (r − g_l), an approximation.

Input Type Required Default Description
last_flow decimal yes Flow of the last explicit period, CF_N, in currency units.
short_term_growth decimal yes Growth at the start of the decline, g_s, decimal fraction per period, greater than -1.
long_term_growth decimal yes Stable growth reached after 2H periods and kept forever, g_l, decimal fraction per period, greater than -1 and below rate.
half_life decimal yes Half-life H, in periods: the decline from g_s to g_l lasts 2H periods. Zero or positive; may be fractional.
rate decimal yes Discount rate of the terminal phase, decimal fraction per period; must exceed long_term_growth.
growth_cap decimal no Upper bound for the long-term growth, decimal fraction per period. Default: none, reported as absent. A growth above the cap is reported, not refused.

tv.exit_multiple

Terminal value, exit multiple · method version 1 · tool fairmark_tv_exit_multiple

Terminal value at the horizon N as a multiple of EBITDA, EBIT, revenue (enterprise basis), earnings or book value of equity (equity basis); with a rate and the next flow, reports the implied perpetual growth.

Input Type Required Default Description
multiple decimal yes The multiple, a pure number greater than 0 (for example 8 for 8 × EBITDA).
metric ebitda | ebit | revenue | earnings | book_value yes ebitda, ebit, revenue (enterprise basis), earnings or book_value (equity basis).
metric_value decimal yes The metric at the horizon N, in currency units, greater than 0.
rate decimal no Discount rate of the terminal phase, decimal fraction per period, on the basis of the metric (WACC for enterprise, cost of equity for equity). Optional, with next_flow: both or neither. Used only for the implied growth.
next_flow decimal no Flow at N + 1 on the basis of the metric (FCFF for enterprise, FCFE for equity), in currency units. Optional, with rate: both or neither.
growth_cap decimal no Upper bound for the implied growth, decimal fraction per period. Default: none, reported as absent. Needs rate and next_flow. Exceeding it is reported, not refused.

tv.limited_horizon

Terminal value, finite horizon · method version 1 · tool fairmark_tv_limited_horizon

Terminal value at the horizon N of a flow lasting n more periods, constant or growing, plus a residual value at N + n (Italian practice); reuses the annuity factor of tvm.annuity.

Input Type Required Default Description
flow decimal yes First flow after the horizon, at the end of period N + 1, in currency units.
rate decimal yes Discount rate of the terminal phase, decimal fraction per period, greater than -1.
periods integer yes Number of further periods n during which the flow lasts, from 1 to 10000.
growth decimal no Growth of the flow per period, decimal fraction, greater than -1. Default: 0 (constant flow).
residual_value decimal no Residual value at the end of period N + n, in currency units. Default: 0.
growth_cap decimal no Upper bound for the growth, decimal fraction per period. Default: none, reported as absent. A growth above the cap is reported, not refused.

tv.normalised_income

Terminal value, capitalised normalised income · method version 1 · tool fairmark_tv_normalised_income

Terminal value at the horizon N as a normalised income capitalised at a rate i, R / i, or R / (i − g) with growth (Italian practice).

Input Type Required Default Description
income decimal yes Normalised income R of the first period after the horizon, in currency units.
capitalisation_rate decimal yes Capitalisation rate i, decimal fraction per period, greater than 0; must exceed growth.
basis enterprise | equity yes enterprise (an operating income capitalised at a rate for all capital providers) or equity (a net income capitalised at a cost of equity). Required, no default.
growth decimal no Perpetual growth of the income, decimal fraction per period, greater than -1 and below the capitalisation rate. Default: none (R / i).
growth_cap decimal no Upper bound for the growth, decimal fraction per period. Default: none, reported as absent. A growth above the cap is reported, not refused.

tv.liquidation

Terminal value, liquidation · method version 1 · tool fairmark_tv_liquidation

Net liquidation value at the horizon N: realisable values of labelled assets less labelled liabilities, liquidation costs and the tax on gains, every line in explain.

Input Type Required Default Description
assets list of object yes Assets with their realisable values at N, in currency units, each zero or positive; at least one.
liabilities list of object yes Liabilities settled at N, in currency units, each zero or positive.
liquidation_costs list of object yes Costs of the liquidation (legal fees, closure, severance), in currency units, each zero or positive.
tax_on_gains decimal yes Tax on the gains realised, as an amount in currency units, zero or positive.
basis enterprise | equity yes enterprise (the liabilities listed exclude financial debt: the value is an enterprise value) or equity (financial debt included: the value is an equity value). Required, no default.

tv.compare

Terminal value, comparison of techniques · method version 1 · tool fairmark_tv_compare

Runs several terminal value techniques on one rate, growth cap and basis and returns each terminal value at the horizon N with its implied assumptions, side by side.

Input Type Required Default Description
rate decimal yes Discount rate of the terminal phase, decimal fraction per period, shared by every technique that uses a discount rate.
basis enterprise | equity yes enterprise or equity: the basis of every terminal value compared. An exit multiple of the other basis is refused.
growth_cap decimal no Upper bound for the perpetual growth, decimal fraction per period, shared by every growth-based technique. Default: none, reported as absent.
techniques list of yes Techniques to run, at least one, each written {"tv.<name>": {terms}}; the same technique may appear more than once.

dcf.fcff

DCF — unlevered free cash flow · method version 3 · tool fairmark_dcf_fcff

Value of operations, enterprise value and equity value from FCFF discounted at the WACC over one to three explicit stages (given flows, constant growth, linear decline of growth) and a terminal value. Returns every period and step for audit.

Input Type Required Default Description
stages list of object yes One to three explicit stages, in order; the explicit horizon N is the sum of their periods. Each stage is {"periods", "projection", ...} with the fields of its projection.
base_flow decimal no FCFF of the base period CF_0, in currency units: required when the first stage is constant_growth or linear_decline, refused when it is given.
cash_flow_terms nominal | real yes nominal or real: the terms of every amount and growth rate of the input.
discount_rate_terms nominal | real yes nominal or real: the terms of the discount rates. They must equal cash_flow_terms.
wacc decimal no One WACC for every period and for the terminal value, decimal fraction per period (0.09 = 9%), greater than -1. Give this or wacc_per_period, not both.
wacc_per_period array | null no One WACC per period of the explicit horizon, decimal fractions, exactly N of them; requires terminal_wacc. Give this or wacc, not both.
terminal_wacc decimal no WACC of the terminal phase, decimal fraction per period; required with wacc_per_period, refused with wacc.
timing end_of_period | mid_period yes end_of_period (flow k at t = k) or mid_period (t = k − 0.5); no default.
terminal_discount_time no With mid_period timing, required: horizon (terminal value at t = N) or mid_period (t = N − 0.5). Refused with end_of_period.
terminal object yes The terminal technique, an object with exactly one key, the method id: {"tv.gordon": {"growth", "first_flow", ...}}, on the enterprise basis.
net_financial_position no Net financial position at the valuation date (SPEC-0007): gross debt − cash + signed other items, positive for net debt, subtracted from enterprise value. Default: none, reported.
non_operating_assets list of object no Non-operating assets at the valuation date, each a label and a value in currency units (zero or more), added to the value of operations. Default: none, reported.

ratios.profitability

Ratios — profitability · method version 1 · tool fairmark_ratios_profitability

ROE, ROI, ROA, ROS, EBITDA and EBIT margins, capital turnover and the ROE decomposition in three factors and in the leverage form, on closing or average balances. A ratio that cannot be computed is reported as not defined with the reason.

Input Type Required Default Description
balances closing | average yes Balances used by the ratios: closing, or average of opening and closing.
operating_return_base invested_capital | total_assets yes Capital on which ROI and the capital turnover are measured.
ebitda_definition string yes How EBITDA was measured, in words (for example "reported EBITDA, no adjustments"); echoed in the conventions.
income_statement object yes Flows of the period.
closing object yes Balance sheet at the end of the period.
opening no Balance sheet at the start of the period. Required with average balances; not used with closing balances.
leverage no Inputs of the leverage form of the ROE decomposition. Absent: the leverage form is not defined and the other ratios are computed.

ratios.capital_structure

Ratios — capital structure · method version 1 · tool fairmark_ratios_capital_structure

Debt to equity, net financial position to equity, equity ratio, primary and secondary structure margins and fixed-asset coverage, with the net financial position and its composition stated. A ratio that cannot be computed is reported as not defined with the reason.

Input Type Required Default Description
balances closing | average yes Balances used by the ratios: closing, or average of opening and closing.
closing object yes Balance sheet at the end of the period.
opening no Balance sheet at the start of the period. Required with average balances; not used with closing balances.

ratios.liquidity

Ratios — liquidity · method version 1 · tool fairmark_ratios_liquidity

Current, quick and cash ratios, net working capital and treasury margin, on closing or average balances. A ratio that cannot be computed is reported as not defined with the reason.

Input Type Required Default Description
balances closing | average yes Balances used by the ratios: closing, or average of opening and closing.
closing object yes Balance sheet at the end of the period.
opening no Balance sheet at the start of the period. Required with average balances; not used with closing balances.

ratios.working_capital

Ratios — working capital · method version 1 · tool fairmark_ratios_working_capital

Days sales outstanding, days inventory outstanding, days payable outstanding and the cash conversion cycle, on closing or average balances and a 360 or 365-day basis. A ratio that cannot be computed is reported as not defined with the reason.

Input Type Required Default Description
balances closing | average yes Balances used by the ratios: closing, or average of opening and closing.
day_basis 360 | 365 yes Days in the year: "360" or "365".
income_statement object yes Flows of the period (one year).
closing object yes Balance sheet at the end of the period.
opening no Balance sheet at the start of the period. Required with average balances; not used with closing balances.

ratios.debt_service

Ratios — debt service · method version 1 · tool fairmark_ratios_debt_service

Interest cover on EBIT and EBITDA, net financial position to EBITDA, DSCR per period and LLCR on a loan schedule with an explicit discount rate. A ratio that cannot be computed is reported as not defined with the reason.

Input Type Required Default Description
balances closing | average yes Balances used by the ratios: closing, or average of opening and closing.
ebitda_definition string yes How EBITDA was measured, in words (for example "reported EBITDA, no adjustments"); echoed in the conventions.
interest_definition string yes How interest was measured, in words (for example "gross interest expense" or "interest expense net of interest income"); echoed in the conventions.
income_statement object yes Flows of the period.
closing object yes Balance sheet at the end of the period.
opening no Balance sheet at the start of the period. Required with average balances; not used with closing balances.
debt_schedule no Loan schedule for DSCR and LLCR. Absent: DSCR and LLCR are not defined and the other ratios are computed.

ratios.covenants

Ratios — covenants · method version 1 · tool fairmark_ratios_covenants

Tests financial covenants on the numerator and denominator defined by the loan agreement, against a threshold with an explicit operator (at most, less than, at least, greater than) at a test date. The agreement's own rules are explicit inputs: the outcome when the denominator is zero or negative, and the rounding of the tested value. Returns for each covenant the outcome (passed, breached, or not tested with a code and the reason), decided exactly, the tested value and the headroom, absolute and relative to the threshold.

Input Type Required Default Description
covenants list of object yes The covenants to test, at least one. Each is tested on its own; the results keep this order.

analysis.goal_seek

Goal seek · method version 1 · tool fairmark_analysis_goal_seek

Value of one decimal input of any method at which one of its outputs equals a target, found with Brent's method in an explicit bracket; every evaluation is reported.

Input Type Required Default Description
method string yes Id of the method to evaluate, for example dcf.fcff. Analysis methods are not accepted.
base_input object yes Input of that method, complete, including the variable at any starting value.
variable string yes RFC 6901 JSON Pointer to the decimal input to solve for, for example /discount_rate.
output string yes RFC 6901 JSON Pointer to the decimal output of the method, in its value, for example /enterprise_value.
target decimal yes Value the output must reach, in the output's units.
bracket list of decimal yes [low, high], low < high: the variable is searched in this interval, and the output minus the target must change sign between its ends (or meet the tolerance at one end).
tolerance decimal no "0.000000001" Absolute tolerance on the output, in the output's units, greater than 0. Default: 0.000000001.
max_iterations integer no 100 Largest number of evaluations after the two bracket ends, from 1 to 1000. Default: 100.

analysis.sensitivity

Sensitivity table · method version 1 · tool fairmark_analysis_sensitivity

One output of any method across a one-way or two-way table of input values, with the base case; a combination the method refuses is recorded in its cell.

Input Type Required Default Description
method string yes Id of the method to evaluate, for example dcf.fcff. Analysis methods are not accepted.
base_input object yes Input of that method, complete: the base case.
output string yes RFC 6901 JSON Pointer to the decimal output reported in each cell, in the value of the inner result, for example /enterprise_value.
rows object yes The variable that changes along the rows, and its values.
columns no Optional second variable, along the columns, different from the row variable. Absent: a one-way table (one column).

analysis.scenarios

Scenario analysis · method version 1 · tool fairmark_analysis_scenarios

Outputs of any method under named sets of input changes, with deltas and relative deltas against the base case; a scenario the method refuses is recorded.

Input Type Required Default Description
method string yes Id of the method to evaluate, for example dcf.fcff. Analysis methods are not accepted.
base_input object yes Input of that method, complete: the base case.
outputs list of string yes RFC 6901 JSON Pointers to the decimal outputs to report, in the value of the inner result, for example ["/enterprise_value", "/equity_value"]; at least one, no repeats.
scenarios list of object yes The cases, evaluated in this order; at least one.

analysis.tornado

Tornado · method version 1 · tool fairmark_analysis_tornado

Which inputs move one output of any method the most: each input varied alone between explicit low and high values, ranked by the absolute swing of the output.

Input Type Required Default Description
method string yes Id of the method to evaluate, for example dcf.fcff. Analysis methods are not accepted.
base_input object yes Input of that method, complete: the base case. Each variable is changed alone, the others keep their base values.
output string yes RFC 6901 JSON Pointer to the decimal output to rank, in the value of the inner result, for example /equity_value.
variables list of object yes The inputs to vary; at least one.