Springate S-Score
Install and import#
npm install fintech-algorithmsimport { springateSScore } from "fintech-algorithms/fundamental-analysis-and-valuation/quality-and-distress/springate-s-score";Signature#
springateSScore(data)Computes Springate's 1978 four-ratio discriminant S-Score from working capital, EBIT, pre-tax profit and sales, and reports which side of the 0.862 cutoff the score falls on.
Parameters#
| Name | Type | Notes |
|---|---|---|
data | { total_assets: number; current_liabilities: number; working_capital: number; ebit: number; ebt: number; sales: number } | One accounting record. total_assets scales working_capital, ebit and sales, while current_liabilities scales ebt. |
Returns#
{ state: string; method: string; ratios: { working_capital_to_assets: number; ebit_to_assets: number; ebt_to_current_liabilities: number; sales_to_assets: number }; s_score: number; screen: string; cutoff: number }
ratios holds the four discriminant inputs and s_score weights them by 1.03, 3.07, 0.66 and 0.4 with no intercept. cutoff is 0.862 and screen is distress-side below it and non-distress-side otherwise. method is springate-1978-four-ratio 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 or current_liabilities is zero or negative — 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,
"current_liabilities": 250,
"working_capital": 200,
"ebit": 160,
"ebt": 140,
"sales": 1200
}Call#
springateSScore(data)Returns#
object with 6 fields: state, method, ratios, s_score, screen, cutoff
{
"state": "calculated",
"method": "springate-1978-four-ratio",
"ratios": {
"working_capital_to_assets": 0.2,
"ebit_to_assets": 0.16,
"ebt_to_current_liabilities": 0.56,
"sales_to_assets": 1.2
},
"s_score": 1.5468000000000002,
"screen": "non-distress-side",
"cutoff": 0.862
}Other exports#
This module also exports
calculate, altmanZScore, piotroskiFScore, beneishMScore, sloanAccrualMeasure, ohlsonOScore, zmijewskiXScore, tafflerZScore, fulmerHScore, 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#
- Predicting the Possibility of Failure in a Canadian Firm: A Discriminant Analysis — Gordon L. V. Springate
- Beginners' Guide to Financial Statements — U.S. Securities and Exchange Commission
- Conceptual Framework for Financial Reporting — International Accounting Standards Board
- Evidence boundary