Fulmer H-Score
Install and import#
npm install fintech-algorithmsimport { fulmerHScore } from "fintech-algorithms/fundamental-analysis-and-valuation/quality-and-distress/fulmer-h-score";Signature#
fulmerHScore(data)Computes Fulmer's 1984 nine-factor small-firm H-Score, including the two base-10 logarithm terms on tangible assets and interest coverage, and reports which side of the zero cutoff the score falls on.
Parameters#
| Name | Type | Notes |
|---|---|---|
data | { total_assets: number; total_debt: number; equity: number; interest_expense: number; tangible_assets_usd_thousands: number; ebit: number; retained_earnings: number; sales: number; ebt: number; operating_cash_flow: number; current_liabilities: number; working_capital: number } | One accounting record. total_assets scales retained_earnings, sales, total_debt and current_liabilities; equity scales ebt; total_debt scales operating_cash_flow and working_capital. tangible_assets_usd_thousands must already be stated in USD thousands because it is passed straight to a base-10 logarithm, and ebit over interest_expense supplies the second logarithm. |
Returns#
{ state: string; method: string; variables: { retained_earnings_to_assets: number; sales_to_assets: number; ebt_to_equity: number; operating_cash_flow_to_debt: number; debt_to_assets: number; current_liabilities_to_assets: number; log10_tangible_assets_usd_thousands: number; working_capital_to_debt: number; log10_ebit_interest: number }; h_score: number; screen: string; index_cutoff: number; scale_policy: string }
variables holds the nine factors and h_score weights them by 5.528, 0.212, 0.073, 1.270, -0.120, 2.335, 0.575, 1.083 and 0.894 before subtracting the constant 6.075. index_cutoff is 0 and screen is distress-side for a negative score and non-distress-side otherwise. scale_policy records that tangible assets are expressed in USD thousands before the logarithm. method is fulmer-1984-small-firm-nine-factor and state is calculated.
Errors#
- When data is not a plain object — throws TypeError
- When any field read is missing or not a finite number — throws TypeError
- When total_assets, total_debt, equity, interest_expense or tangible_assets_usd_thousands is zero or negative — throws RangeError
- When ebit divided by interest_expense is zero or negative, so the base-10 logarithm is undefined — throws RangeError
Complexity: time O(1),
space O(1).
Worked example#
executed Captured by running this function on the input its own test provides. Real output of real code — but not asserted against a published figure.
Input#
{
"total_assets": 1000,
"total_debt": 550,
"equity": 450,
"interest_expense": 40,
"tangible_assets_usd_thousands": 800000,
"ebit": 160,
"retained_earnings": 300,
"sales": 1200,
"ebt": 140,
"operating_cash_flow": 110,
"current_liabilities": 250,
"working_capital": 200
}Call#
fulmerHScore(data)Returns#
object with 7 fields: state, method, variables, h_score, screen, index_cutoff, scale_policy
{
"state": "calculated",
"method": "fulmer-1984-small-firm-nine-factor",
"variables": {
"retained_earnings_to_assets": 0.3,
"sales_to_assets": 1.2,
"ebt_to_equity": 0.3111111111111111,
"operating_cash_flow_to_debt": 0.2,
"debt_to_assets": 0.55,
"current_liabilities_to_assets": 0.25,
"log10_tangible_assets_usd_thousands": 5.903089986991944,
"working_capital_to_debt": 0.36363636363636365,
"log10_ebit_interest": 0.6020599913279624
},
"h_score": 0.958597667696858,
"screen": "non-distress-side",
"index_cutoff": 0,
"scale_policy": "tangible assets expressed in USD thousands before log10"
}Other exports#
This module also exports
calculate, altmanZScore, piotroskiFScore, beneishMScore, sloanAccrualMeasure, ohlsonOScore, zmijewskiXScore, springateSScore, tafflerZScore, groverGScore, dechowFScoreForMisstatementRisk, dechowDichevAccrualQuality, modifiedJonesDiscretionaryAccrualModel. Every module additionally exports run as an alias of its
primary function, and a meta object carrying its catalog id, domain, family,
shape and article URL.
Diagrams#
How it works#
This page states the contract — how to call it correctly. The article explains the concept: why it works, and where it breaks.
References#
- A Bankruptcy Classification Model for Small Firms — John G. Fulmer Jr., James E. Moon, Thomas A. Gavin, and Michael J. Erwin
- Beginners' Guide to Financial Statements — U.S. Securities and Exchange Commission
- Conceptual Framework for Financial Reporting — International Accounting Standards Board
- Evidence boundary