fintech-algorithms
Using a coding agent? Give it the skill: npx skills add IslamBaraka90/Fintech-Algorithms-Library What it does →

Springate S-Score

Install and import#

bash
npm install fintech-algorithms
ts
import { 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#

NameTypeNotes
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#

data
{
  "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#

Springate S-Score — evidence clock
Springate S-Score — model anatomy
Springate S-Score — system map
Springate S-Score — threshold and interpretation
Springate S-Score — variant boundaries

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.

Read the article →

References#

The rest of the Quality and Distress family#