Grover G-Score
Install and import#
npm install fintech-algorithmsimport { groverGScore } from "fintech-algorithms/fundamental-analysis-and-valuation/quality-and-distress/grover-g-score";Signature#
groverGScore(data)Computes the Grover G-Score, a three-variable re-estimation over working capital to assets, EBIT to assets and return on assets, and bands the result as distress, grey or non-distress.
Parameters#
| Name | Type | Notes |
|---|---|---|
data | { total_assets: number; working_capital: number; ebit: number; net_income: number } | One accounting record. total_assets is the common denominator for working_capital, ebit and net_income. |
Returns#
{ state: string; method: string; variables: { working_capital_to_assets: number; ebit_to_assets: number; roa: number }; g_score: number; zone: string; threshold_policy: string }
variables holds the three ratios and g_score weights them by 1.650, 3.404 and -0.016 plus the constant 0.057. zone is distress-zone at -0.02 or below, non-distress-zone at 0.01 or above and grey-zone between; threshold_policy restates those bounds. method is grover-2001-reported-reestimation 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 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,
"working_capital": 200,
"ebit": 160,
"net_income": 80
}Call#
groverGScore(data)Returns#
object with 6 fields: state, method, variables, g_score, zone, threshold_policy
{
"state": "calculated",
"method": "grover-2001-reported-reestimation",
"variables": {
"working_capital_to_assets": 0.2,
"ebit_to_assets": 0.16,
"roa": 0.08
},
"g_score": 0.9303600000000002,
"zone": "non-distress-zone",
"threshold_policy": "distress<=-0.02; grey=(-0.02,0.01); non-distress>=0.01"
}Other exports#
This module also exports
calculate, altmanZScore, piotroskiFScore, beneishMScore, sloanAccrualMeasure, ohlsonOScore, zmijewskiXScore, springateSScore, tafflerZScore, fulmerHScore, 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#
- Grover Model (2001) G-Score as reproduced in comparative research — Jeffrey S. Grover; later reproduction by comparative researchers
- Beginners' Guide to Financial Statements — U.S. Securities and Exchange Commission
- Conceptual Framework for Financial Reporting — International Accounting Standards Board
- Evidence boundary