The finance developer workbenchSearch the reference Development · 0.1.4 · unpublished

Public API / @insiderfinance/totalfinance

@insiderfinance/totalfinance/fundamentals

import from '@insiderfinance/totalfinance/fundamentals'

Every public export in this entry point, including type-only declarations. Search by name or concept.

Jump to an export (106)

AltmanComponent · AltmanInput · AltmanResult · AltmanVariant · AnalyzeFundamentalsInput · AnalyzeFundamentalsResult · AnalyzedRatio · BalanceSheet · BalanceSheetRatioInput · BeneishComponent · BeneishInput · BeneishResult · CashFlowStatement · CommonSizeInput · CommonSizeResult · DayMetricRatioInput · DebtServiceCoverageInput · DebtServiceRatioInput · EnterpriseMultipleRatioInput · FinancialStatements · FundamentalGrowthInput · FundamentalGrowthResult · FundamentalPeriod · FundamentalSeries · FundamentalSnapshot · IncomeStatement · IncomeStatementRatioInput · InvestedCapitalRatioInput · MarketMultipleRatioInput · MarketObservation · PairRatioInput · PerShareFundamentalsInput · PerShareFundamentalsResult · PiotroskiInput · PiotroskiResult · PiotroskiSignal · RatioCategory · RatioFacade · RatioInput · RatioPeriodIdentity · RatioReport · RawFundamentalsRecord · ReconcileStatementsInput · ReconciliationCheck · ReconciliationResult · RestatementPolicy · SelectFundamentalSnapshotInput · SingleStatementRatioInput · TrailingTwelveMonthInput · accrualRatio · altmanZScore · analyzeFundamentals · assetTurnover · beneishMScore · bookValuePerShare · cashConversionCycle · cashFlowToNetIncome · cashRatio · cashReturnOnAssets · commonSizeFinancialStatements · currentRatio · daysInventoryOutstanding · daysPayablesOutstanding · daysSalesOutstanding · debtServiceCoverage · debtToAssets · debtToEquity · dividendYield · earningsPerShare · earningsYield · ebitdaMargin · enterpriseValueToEbitda · enterpriseValueToRevenue · freeCashFlowPerShare · freeCashFlowYield · fundamentalGrowth · grossMargin · interestCoverage · inventoryTurnover · isPeriodAvailableAt · netDebtToEbitda · netProfitMargin · operatingMargin · payablesTurnover · perShareFundamentals · piotroskiFScore · priceToBook · priceToEarnings · priceToSales · quickRatio · receivablesTurnover · reconcileFinancialStatements · requireBalanceSheet · requireCashFlowStatement · requireFinancialStatements · requireFundamentalPeriod · requireIncomeStatement · requireMarketObservation · returnOnAssets · returnOnCapitalEmployed · returnOnEquity · returnOnInvestedCapital · revenuePerShare · selectFundamentalSnapshot · statementsAvailableTimestampMs · trailingTwelveMonthStatements

function

netDebtToEbitda

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const netDebtToEbitda: RatioFacade<SingleStatementRatioInput>;
Fields, parameters & returned members (24)
Name / typeMeaning & unitOptional / default
(input)
SingleStatementRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).statements
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: SingleStatementRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
SingleStatementRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).statements
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

netProfitMargin

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const netProfitMargin: RatioFacade<IncomeStatementRatioInput<Pick<IncomeStatement, 'period' | 'revenue' | 'netIncome'>>>;
Fields, parameters & returned members (52)
Name / typeMeaning & unitOptional / default
(input)
IncomeStatementRatioInput<Pick<IncomeStatement, 'period' | 'revenue' | 'netIncome'>>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).income
Pick<IncomeStatement, 'period' | 'revenue' | 'netIncome'> & Partial<IncomeStatement>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).income.costOfRevenue
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.dilutedSharesOutstanding
number
Split-adjusted weighted-average diluted shares for the period.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.grossProfit
number
Reported gross profit; when absent, consumers may derive `revenue - costOfRevenue` and say so.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.incomeFromContinuingOperations
number
When reported separately from `netIncome` (the Beneish accrual basis prefers it).
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.incomeTaxExpense
number
Positive magnitude (a net tax benefit is a negative amount and is stated as such).
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.interestExpense
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.netIncome
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.operatingExpenses
number
Positive magnitude of total operating expenses below gross profit.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.operatingIncome
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.period
import('@insiderfinance/totalfinance/fundamentals').FundamentalPeriod

unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.revenue
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.sellingGeneralAdministrativeExpense
number
Positive magnitude (Beneish SGAI consumes it).
unitless by name
Optional
No @default declared; consult the signature and description.
(input).statements
never

unitless by name
Optional
No @default declared; consult the signature and description.
explain
(input: IncomeStatementRatioInput<Pick<IncomeStatement, 'period' | 'revenue' | 'netIncome'>>) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
IncomeStatementRatioInput<Pick<IncomeStatement, 'period' | 'revenue' | 'netIncome'>>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).income
Pick<IncomeStatement, 'period' | 'revenue' | 'netIncome'> & Partial<IncomeStatement>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).income.costOfRevenue
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.dilutedSharesOutstanding
number
Split-adjusted weighted-average diluted shares for the period.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.grossProfit
number
Reported gross profit; when absent, consumers may derive `revenue - costOfRevenue` and say so.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.incomeFromContinuingOperations
number
When reported separately from `netIncome` (the Beneish accrual basis prefers it).
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.incomeTaxExpense
number
Positive magnitude (a net tax benefit is a negative amount and is stated as such).
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.interestExpense
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.netIncome
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.operatingExpenses
number
Positive magnitude of total operating expenses below gross profit.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.operatingIncome
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.period
import('@insiderfinance/totalfinance/fundamentals').FundamentalPeriod

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.revenue
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.sellingGeneralAdministrativeExpense
number
Positive magnitude (Beneish SGAI consumes it).
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).statements
never

unitless by name
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

operatingMargin

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const operatingMargin: RatioFacade<IncomeStatementRatioInput<Pick<IncomeStatement, 'period' | 'revenue' | 'operatingIncome'>>>;
Fields, parameters & returned members (52)
Name / typeMeaning & unitOptional / default
(input)
IncomeStatementRatioInput<Pick<IncomeStatement, 'period' | 'revenue' | 'operatingIncome'>>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).income
Pick<IncomeStatement, 'period' | 'revenue' | 'operatingIncome'> & Partial<IncomeStatement>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).income.costOfRevenue
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.dilutedSharesOutstanding
number
Split-adjusted weighted-average diluted shares for the period.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.grossProfit
number
Reported gross profit; when absent, consumers may derive `revenue - costOfRevenue` and say so.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.incomeFromContinuingOperations
number
When reported separately from `netIncome` (the Beneish accrual basis prefers it).
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.incomeTaxExpense
number
Positive magnitude (a net tax benefit is a negative amount and is stated as such).
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.interestExpense
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.netIncome
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.operatingExpenses
number
Positive magnitude of total operating expenses below gross profit.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.operatingIncome
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.period
import('@insiderfinance/totalfinance/fundamentals').FundamentalPeriod

unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.revenue
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).income.sellingGeneralAdministrativeExpense
number
Positive magnitude (Beneish SGAI consumes it).
unitless by name
Optional
No @default declared; consult the signature and description.
(input).statements
never

unitless by name
Optional
No @default declared; consult the signature and description.
explain
(input: IncomeStatementRatioInput<Pick<IncomeStatement, 'period' | 'revenue' | 'operatingIncome'>>) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
IncomeStatementRatioInput<Pick<IncomeStatement, 'period' | 'revenue' | 'operatingIncome'>>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).income
Pick<IncomeStatement, 'period' | 'revenue' | 'operatingIncome'> & Partial<IncomeStatement>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).income.costOfRevenue
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.dilutedSharesOutstanding
number
Split-adjusted weighted-average diluted shares for the period.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.grossProfit
number
Reported gross profit; when absent, consumers may derive `revenue - costOfRevenue` and say so.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.incomeFromContinuingOperations
number
When reported separately from `netIncome` (the Beneish accrual basis prefers it).
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.incomeTaxExpense
number
Positive magnitude (a net tax benefit is a negative amount and is stated as such).
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.interestExpense
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.netIncome
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.operatingExpenses
number
Positive magnitude of total operating expenses below gross profit.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.operatingIncome
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.period
import('@insiderfinance/totalfinance/fundamentals').FundamentalPeriod

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.revenue
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).income.sellingGeneralAdministrativeExpense
number
Positive magnitude (Beneish SGAI consumes it).
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).statements
never

unitless by name
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

payablesTurnover

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const payablesTurnover: RatioFacade<PairRatioInput>;
Fields, parameters & returned members (26)
Name / typeMeaning & unitOptional / default
(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: PairRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

perShareFundamentals

Split-aware per-share normalization: the period's diluted shares are multiplied by the supplied cumulative split factor so a pre-split period and a post-split observer meet on one basis. The factor and the shares used are echoed; shares absent or non-positive is an error, never a NaN.

export declare function perShareFundamentals(input: PerShareFundamentalsInput): PerShareFundamentalsResult;
Fields, parameters & returned members (16)
Name / typeMeaning & unitOptional / default
(input)
PerShareFundamentalsInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).splitFactorSincePeriod
number
Cumulative split factor between the period and the observer's share basis (e.g. `2` after a 2-for-1 split since the period end). Default `1` — no split; the factor used is echoed.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).statements
FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions
{ dilutedSharesUsed: number; splitFactorSincePeriod: number; unitBasis: 'absolute currency per share'; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.dilutedSharesUsed
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.splitFactorSincePeriod
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.unitBasis
'absolute currency per share'
Per-share values are ABSOLUTE currency per share (amount × monetaryScale / shares).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.bookValuePerShare
number

decimal fraction / multiple
Required / declared member
No @default declared; consult the signature and description.
return.diagnostics
{ warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.dilutedSharesUsed
number
Split-adjusted diluted shares actually used as the denominator.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.earningsPerShare
number

decimal fraction / multiple
Required / declared member
No @default declared; consult the signature and description.
return.freeCashFlowPerShare
number | null
`operatingCashFlow - capitalExpenditure` per share; `null` when capex is absent.
decimal fraction / multiple
Required / declared member
No @default declared; consult the signature and description.
return.freeCashFlowPerShareReason
string

unitless by name
Optional
No @default declared; consult the signature and description.
return.revenuePerShare
number

decimal fraction / multiple
Required / declared member
No @default declared; consult the signature and description.
return.splitFactorSincePeriod
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

piotroskiFScore

The standard nine binary signals, per the paper: profitability (return on beginning assets, operating cash flow, their improvement, accruals), leverage/liquidity/funding (falling long-term-debt ratio, improving current ratio, no net share issuance), and efficiency (improving gross margin, improving beginning-assets turnover). Each signal is reported, not only the total; a signal whose statement line is absent reports `null` with the reason and is excluded from `fScore` — never guessed to 0 or 1.

export declare function piotroskiFScore(input: PiotroskiInput): PiotroskiResult;
Fields, parameters & returned members (12)
Name / typeMeaning & unitOptional / default
(input)
PiotroskiInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).current
FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).prior
FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).priorPrior
FinancialStatements
The period before `prior`. Needed because the paper's return and turnover use BEGINNING assets, so the prior year's own signal needs the balance sheet one further back.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions
{ model: string; returnBasis: 'beginning total assets'; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.model
string
The published model name (a label, deliberately not a literal type).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.returnBasis
'beginning total assets'
Returns and turnover use BEGINNING total assets, per the paper.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.diagnostics
{ warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.diagnostics.warnings
string[]
One warning per unevaluable signal.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.evaluableSignals
number
How many of the nine signals could be evaluated; 9 when every input line was present.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.fScore
number
Sum of the evaluable signals (each 0 or 1).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.signals
PiotroskiSignal[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

priceToBook

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const priceToBook: RatioFacade<MarketMultipleRatioInput>;
Fields, parameters & returned members (28)
Name / typeMeaning & unitOptional / default
(input)
MarketMultipleRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).marketObservation
import('@insiderfinance/totalfinance/fundamentals').MarketObservation

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).maximumStalenessMs
number

milliseconds
Optional
No @default declared; consult the signature and description.
(input).statements
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: MarketMultipleRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
MarketMultipleRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).marketObservation
import('@insiderfinance/totalfinance/fundamentals').MarketObservation

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).maximumStalenessMs
number

milliseconds
Optional
No @default declared; consult the signature and description.
explain(input).statements
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

priceToEarnings

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const priceToEarnings: RatioFacade<MarketMultipleRatioInput>;
Fields, parameters & returned members (28)
Name / typeMeaning & unitOptional / default
(input)
MarketMultipleRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).marketObservation
import('@insiderfinance/totalfinance/fundamentals').MarketObservation

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).maximumStalenessMs
number

milliseconds
Optional
No @default declared; consult the signature and description.
(input).statements
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: MarketMultipleRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
MarketMultipleRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).marketObservation
import('@insiderfinance/totalfinance/fundamentals').MarketObservation

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).maximumStalenessMs
number

milliseconds
Optional
No @default declared; consult the signature and description.
explain(input).statements
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

priceToSales

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const priceToSales: RatioFacade<MarketMultipleRatioInput>;
Fields, parameters & returned members (28)
Name / typeMeaning & unitOptional / default
(input)
MarketMultipleRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).marketObservation
import('@insiderfinance/totalfinance/fundamentals').MarketObservation

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).maximumStalenessMs
number

milliseconds
Optional
No @default declared; consult the signature and description.
(input).statements
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: MarketMultipleRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
MarketMultipleRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).marketObservation
import('@insiderfinance/totalfinance/fundamentals').MarketObservation

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).maximumStalenessMs
number

milliseconds
Optional
No @default declared; consult the signature and description.
explain(input).statements
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

quickRatio

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const quickRatio: RatioFacade<BalanceSheetRatioInput<Pick<BalanceSheet, 'period' | 'currentLiabilities' | 'inventory' | 'currentAssets'>>>;
Fields, parameters & returned members (64)
Name / typeMeaning & unitOptional / default
(input)
BalanceSheetRatioInput<Pick<BalanceSheet, 'period' | 'currentLiabilities' | 'inventory' | 'currentAssets'>>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).balance
Pick<BalanceSheet, 'period' | 'currentLiabilities' | 'inventory' | 'currentAssets'> & Partial<BalanceSheet>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).balance.accountsPayable
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.accountsReceivable
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.cashAndCashEquivalents
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.currentAssets
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.currentLiabilities
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.inventory
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.longTermDebt
number
Interest-bearing debt due beyond one year.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.minorityInterest
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.period
import('@insiderfinance/totalfinance/fundamentals').FundamentalPeriod

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.preferredEquity
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.propertyPlantEquipmentNet
number
Net property, plant, and equipment.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.retainedEarnings
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.shortTermDebt
number
Interest-bearing debt due within one year.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.shortTermInvestments
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.totalAssets
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.totalDebt
number
Total interest-bearing debt. When absent and both maturities are present, consumers may derive `shortTermDebt + longTermDebt` and say so; "debt" NEVER silently means total liabilities.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.totalEquity
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).balance.totalLiabilities
number

unitless by name
Optional
No @default declared; consult the signature and description.
(input).statements
never

unitless by name
Optional
No @default declared; consult the signature and description.
explain
(input: BalanceSheetRatioInput<Pick<BalanceSheet, 'period' | 'currentLiabilities' | 'inventory' | 'currentAssets'>>) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
BalanceSheetRatioInput<Pick<BalanceSheet, 'period' | 'currentLiabilities' | 'inventory' | 'currentAssets'>>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).balance
Pick<BalanceSheet, 'period' | 'currentLiabilities' | 'inventory' | 'currentAssets'> & Partial<BalanceSheet>

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).balance.accountsPayable
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.accountsReceivable
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.cashAndCashEquivalents
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.currentAssets
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.currentLiabilities
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.inventory
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.longTermDebt
number
Interest-bearing debt due beyond one year.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.minorityInterest
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.period
import('@insiderfinance/totalfinance/fundamentals').FundamentalPeriod

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.preferredEquity
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.propertyPlantEquipmentNet
number
Net property, plant, and equipment.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.retainedEarnings
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.shortTermDebt
number
Interest-bearing debt due within one year.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.shortTermInvestments
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.totalAssets
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.totalDebt
number
Total interest-bearing debt. When absent and both maturities are present, consumers may derive `shortTermDebt + longTermDebt` and say so; "debt" NEVER silently means total liabilities.
unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.totalEquity
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).balance.totalLiabilities
number

unitless by name
Optional
No @default declared; consult the signature and description.
explain(input).statements
never

unitless by name
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

receivablesTurnover

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const receivablesTurnover: RatioFacade<PairRatioInput>;
Fields, parameters & returned members (26)
Name / typeMeaning & unitOptional / default
(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: PairRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

reconcileFinancialStatements

Accounting-identity diagnostics: the balance-sheet identity, gross-profit articulation, current-versus-total containment, and — with the prior period — cash articulation (`Δcash = operating + investing + financing`). A check whose fields are absent reports `null`, never a silent pass presented as proof.

export declare function reconcileFinancialStatements(input: ReconcileStatementsInput): ReconciliationResult;
Fields, parameters & returned members (11)
Name / typeMeaning & unitOptional / default
(input)
ReconcileStatementsInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).priorStatements
FinancialStatements
The immediately prior period, enabling the cash-articulation check across the two.
unitless by name
Optional
No @default declared; consult the signature and description.
(input).statements
FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).toleranceAmount
number
Absolute tolerance in reported units (period.monetaryScale). Default `1` — one reported unit, the rounding a scaled filing can legitimately carry. Documented and echoed in the result.
currency amount (the field or record currency)
Optional
No @default declared; consult the signature and description.
return.assumptions
{ toleranceAmount: number; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.assumptions.toleranceAmount
number
Absolute tolerance in reported units, echoed (default 1).
currency amount (the field or record currency)
Required / declared member
No @default declared; consult the signature and description.
return.checks
ReconciliationCheck[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.diagnostics
{ warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.diagnostics.warnings
string[]
One warning per failed or unevaluable check.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.reconciles
boolean
True when every evaluable check is within tolerance.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
return.toleranceAmount
number

currency amount (the field or record currency)
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

requireBalanceSheet

Validate one {@link BalanceSheet} at a public boundary.

export declare function requireBalanceSheet(functionName: string, balance: BalanceSheet): void;
Fields, parameters & returned members (21)
Name / typeMeaning & unitOptional / default
(balance)
BalanceSheet

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(balance).accountsPayable
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).accountsReceivable
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).cashAndCashEquivalents
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(balance).currentAssets
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).currentLiabilities
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).inventory
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).longTermDebt
number
Interest-bearing debt due beyond one year.
unitless by name
Optional
No @default declared; consult the signature and description.
(balance).metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
(balance).minorityInterest
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).period
FundamentalPeriod

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(balance).preferredEquity
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).propertyPlantEquipmentNet
number
Net property, plant, and equipment.
unitless by name
Optional
No @default declared; consult the signature and description.
(balance).retainedEarnings
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).shortTermDebt
number
Interest-bearing debt due within one year.
unitless by name
Optional
No @default declared; consult the signature and description.
(balance).shortTermInvestments
number

unitless by name
Optional
No @default declared; consult the signature and description.
(balance).totalAssets
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(balance).totalDebt
number
Total interest-bearing debt. When absent and both maturities are present, consumers may derive `shortTermDebt + longTermDebt` and say so; "debt" NEVER silently means total liabilities.
unitless by name
Optional
No @default declared; consult the signature and description.
(balance).totalEquity
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(balance).totalLiabilities
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(functionName)
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

requireCashFlowStatement

Validate one {@link CashFlowStatement} at a public boundary.

export declare function requireCashFlowStatement(functionName: string, cashFlow: CashFlowStatement): void;
Fields, parameters & returned members (13)
Name / typeMeaning & unitOptional / default
(cashFlow)
CashFlowStatement

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(cashFlow).acquisitions
number
Positive magnitude of cash spent on acquisitions.
unitless by name
Optional
No @default declared; consult the signature and description.
(cashFlow).capitalExpenditure
number
Positive magnitude of cash spent on property, plant, and equipment.
unitless by name
Optional
No @default declared; consult the signature and description.
(cashFlow).depreciationAndAmortization
number

unitless by name
Optional
No @default declared; consult the signature and description.
(cashFlow).dividendsPaid
number
Positive magnitude of cash paid out as dividends.
unitless by name
Optional
No @default declared; consult the signature and description.
(cashFlow).financingCashFlow
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(cashFlow).investingCashFlow
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(cashFlow).metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
(cashFlow).operatingCashFlow
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(cashFlow).period
FundamentalPeriod

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(cashFlow).shareRepurchases
number
Positive magnitude of cash spent repurchasing shares.
unitless by name
Optional
No @default declared; consult the signature and description.
(cashFlow).stockBasedCompensation
number

unitless by name
Optional
No @default declared; consult the signature and description.
(functionName)
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

requireFinancialStatements

Validate a {@link FinancialStatements} set: each statement, then the identity agreement — the three periods must share `periodEndDate`, `periodType`, `currency`, and `monetaryScale`, because every cross-statement ratio assumes one period and one unit.

export declare function requireFinancialStatements(functionName: string, statements: FinancialStatements): void;
Fields, parameters & returned members (5)
Name / typeMeaning & unitOptional / default
(functionName)
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(statements)
FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(statements).balance
BalanceSheet

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(statements).cashFlow
CashFlowStatement

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(statements).income
IncomeStatement

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

requireFundamentalPeriod

Validate a {@link FundamentalPeriod} at a public boundary (Law 12 closed request): presence, types, the strict date grammar, the literal domains, and the ordering facts a period must obey.

export declare function requireFundamentalPeriod(functionName: string, period: FundamentalPeriod): asserts period is FundamentalPeriod;
Fields, parameters & returned members (14)
Name / typeMeaning & unitOptional / default
(functionName)
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(period)
FundamentalPeriod

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(period).accession
string
Source accession identifier, when known.
unitless by name
Optional
No @default declared; consult the signature and description.
(period).availableTimestampMs
number
When the data became AVAILABLE to an observer — the point-in-time eligibility instant. A backtest or event study must not see this period before this time; `periodEndDate` never controls eligibility.
epoch milliseconds (UTC instant)
Required / declared member
No @default declared; consult the signature and description.
(period).currency
string
ISO 4217 currency of the monetary figures.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
(period).filedTimestampMs
number
When the filing was made, when known.
epoch milliseconds (UTC instant)
Optional
No @default declared; consult the signature and description.
(period).fiscalQuarter
1 | 2 | 3 | 4

unitless by name
Optional
No @default declared; consult the signature and description.
(period).fiscalYear
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(period).form
string
Source form (e.g. `10-Q`), when known.
unitless by name
Optional
No @default declared; consult the signature and description.
(period).monetaryScale
1 | 1000 | 1000000
Monetary figures are reported in units of this scale.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
(period).periodEndDate
string
Strict `YYYY-MM-DD` calendar date the period ends on.
calendar date (YYYY-MM-DD)
Required / declared member
No @default declared; consult the signature and description.
(period).periodStartDate
string
Strict `YYYY-MM-DD` calendar date; optional because some sources report only period ends.
calendar date (YYYY-MM-DD)
Optional
No @default declared; consult the signature and description.
(period).periodType
'quarter' | 'year' | 'trailing-twelve-months'

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(period).restatementOf
string
When this record restates an earlier one, the accession (or identifier) it restates.
unitless by name
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

requireIncomeStatement

Validate one {@link IncomeStatement} at a public boundary.

export declare function requireIncomeStatement(functionName: string, income: IncomeStatement): void;
Fields, parameters & returned members (15)
Name / typeMeaning & unitOptional / default
(functionName)
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(income)
IncomeStatement

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(income).costOfRevenue
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
(income).dilutedSharesOutstanding
number
Split-adjusted weighted-average diluted shares for the period.
unitless by name
Optional
No @default declared; consult the signature and description.
(income).grossProfit
number
Reported gross profit; when absent, consumers may derive `revenue - costOfRevenue` and say so.
unitless by name
Optional
No @default declared; consult the signature and description.
(income).incomeFromContinuingOperations
number
When reported separately from `netIncome` (the Beneish accrual basis prefers it).
unitless by name
Optional
No @default declared; consult the signature and description.
(income).incomeTaxExpense
number
Positive magnitude (a net tax benefit is a negative amount and is stated as such).
unitless by name
Optional
No @default declared; consult the signature and description.
(income).interestExpense
number
Positive magnitude.
unitless by name
Optional
No @default declared; consult the signature and description.
(income).metadata
Record<string, unknown>
Source-specific extras, preserved verbatim and never consumed by compute functions.
unitless by name
Optional
No @default declared; consult the signature and description.
(income).netIncome
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(income).operatingExpenses
number
Positive magnitude of total operating expenses below gross profit.
unitless by name
Optional
No @default declared; consult the signature and description.
(income).operatingIncome
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(income).period
FundamentalPeriod

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(income).revenue
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(income).sellingGeneralAdministrativeExpense
number
Positive magnitude (Beneish SGAI consumes it).
unitless by name
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

requireMarketObservation

Validate a {@link MarketObservation} at a public boundary.

export declare function requireMarketObservation(functionName: string, observation: MarketObservation): void;
Fields, parameters & returned members (6)
Name / typeMeaning & unitOptional / default
(functionName)
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(observation)
MarketObservation

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(observation).marketCapitalization
number

unitless by name
Optional
No @default declared; consult the signature and description.
(observation).observedTimestampMs
number
When the price was observed (epoch ms). Must not precede the fundamentals' availability.
epoch milliseconds (UTC instant)
Required / declared member
No @default declared; consult the signature and description.
(observation).sharePrice
number

currency amount (the field or record currency)
Required / declared member
No @default declared; consult the signature and description.
(observation).sharesOutstanding
number
Split-adjusted shares consistent with `sharePrice`.
unitless by name
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

returnOnAssets

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const returnOnAssets: RatioFacade<PairRatioInput>;
Fields, parameters & returned members (26)
Name / typeMeaning & unitOptional / default
(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: PairRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

returnOnCapitalEmployed

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const returnOnCapitalEmployed: RatioFacade<PairRatioInput>;
Fields, parameters & returned members (26)
Name / typeMeaning & unitOptional / default
(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: PairRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

returnOnEquity

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const returnOnEquity: RatioFacade<PairRatioInput>;
Fields, parameters & returned members (26)
Name / typeMeaning & unitOptional / default
(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain
(input: PairRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
PairRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.

function

returnOnInvestedCapital

Public declaration. Read the signature and parameter/member contracts below; no additional behavior is inferred.

export declare const returnOnInvestedCapital: RatioFacade<InvestedCapitalRatioInput>;
Fields, parameters & returned members (28)
Name / typeMeaning & unitOptional / default
(input)
InvestedCapitalRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
(input).taxRate
number

decimal rate (0.05 = 5%)
Optional
No @default declared; consult the signature and description.
explain
(input: InvestedCapitalRatioInput) => import('@insiderfinance/totalfinance/fundamentals').RatioReport

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions
{ category: import('@insiderfinance/totalfinance/fundamentals').RatioCategory; conventionsVersion: string; formula: string; period: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; priorPeriod?: import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity; ratioName: string; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.category
import('@insiderfinance/totalfinance/fundamentals').RatioCategory

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.conventionsVersion
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.formula
string
The fixed formula, stated as prose (also in the generated reference documentation).
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.period
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.assumptions.priorPeriod
import('@insiderfinance/totalfinance/fundamentals').RatioPeriodIdentity

unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.assumptions.ratioName
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics
{ denominator: { label: string; amount: number; } | null; marketStalenessMs?: number; notes: string[]; numerator: { label: string; amount: number; } | null; reason?: string; warnings: string[]; }

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.denominator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.marketStalenessMs
number
For market multiples: how far the price sits after the fundamentals became available.
milliseconds
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.notes
string[]
Every derivation, omission, and convention the computation relied on.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator
{ amount: number; label: string; } | null

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.amount
number

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.numerator.label
string

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.diagnostics.reason
string
Present exactly when `value` is null.
unitless by name
Optional
No @default declared; consult the signature and description.
explain().return.diagnostics.warnings
string[]

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain().return.value
number | null
A decimal ratio (never a displayed percentage), or `null` with `diagnostics.reason`.
unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input)
InvestedCapitalRatioInput

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).current
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).prior
import('@insiderfinance/totalfinance/fundamentals').FinancialStatements

unitless by name
Required / declared member
No @default declared; consult the signature and description.
explain(input).taxRate
number

decimal rate (0.05 = 5%)
Optional
No @default declared; consult the signature and description.
Stability, warnings & conventions
stable-by-law (pre-1.0; not a 1.0 stability guarantee)

Declared field units are shown above. “Unitless by name” means the name alone does not establish a unit, not that a financial quantity has none. Check source descriptions, conventions, and the returned diagnostics. Errors and warnings are part of the result contract.