# Dechow F-Score for Misstatement Risk

`D18-F04-A11` · Fundamental Analysis and Valuation → Quality and Distress · archetype `record-transform` · difficulty 4/5 · verification **verified**

Full page: https://docs.thefintechbuilder.com/fundamental-analysis-and-valuation/quality-and-distress/dechow-f-score-for-misstatement-risk/
Agent skill: `npx skills add IslamBaraka90/Fintech-Algorithms-Library` — https://docs.thefintechbuilder.com/guides/agent-skill/

## Install and import

```bash
npm install fintech-algorithms
```

```ts
import { dechowFScoreForMisstatementRisk } from "fintech-algorithms/fundamental-analysis-and-valuation/quality-and-distress/dechow-f-score-for-misstatement-risk";
```

## Signature

```ts
dechowFScoreForMisstatementRisk(data)
```

Computes the Dechow et al. 2011 Model 1 misstatement logit from three consecutive accounting periods and divides the fitted probability by the unconditional misstatement rate to give the F-Score.

## Parameters

| Name | Type | Required | Notes |
| --- | --- | --- | --- |
| `data` | `{ current: { total_assets: number; cash: number; investments_and_advances: number; investments_at_equity: number; total_liabilities: number; preferred_stock: number; receivables: number; inventory: number; net_ppe: number; sales: number; net_income: number }; prior: { total_assets: number; cash: number; investments_and_advances: number; investments_at_equity: number; total_liabilities: number; preferred_stock: number; receivables: number; inventory: number; net_ppe: number; sales: number; net_income: number }; prior2: { total_assets: number; cash: number; investments_and_advances: number; investments_at_equity: number; total_liabilities: number; preferred_stock: number; receivables: number; inventory: number; net_ppe: number; sales: number; net_income: number }; issued_equity_or_long_term_debt: boolean }` | yes | Three nested period records plus one flag. `current` and `prior` are read for every variable; `prior2` supplies the second lag needed for the prior-year cash sales and prior-year average assets. Within each record, net operating assets are built from `total_assets`, `cash`, `investments_and_advances`, `investments_at_equity`, `total_liabilities` and `preferred_stock`, while `receivables`, `inventory`, `net_ppe`, `sales` and `net_income` feed the remaining terms. `issued_equity_or_long_term_debt` must be a boolean and becomes the 0 or 1 issuance indicator. |

## Returns

`{ state: string; method: string; variables: { rsst_accruals: number; change_receivables: number; change_inventory: number; soft_assets: number; change_cash_sales: number; change_roa: number; actual_issuance: number }; logit: number; misstatement_probability: number; f_score: number; band: string; unconditional_probability: number }`

`variables` holds the seven predictors. `logit` applies the intercept -7.893 with coefficients 0.790, 2.518, 1.191, 1.979, 0.171, -0.932 and 1.029 in that order. `misstatement_probability` is the logistic transform of the logit, `unconditional_probability` is 0.0037 and `f_score` is the probability divided by it. `band` is `at-or-below-baseline` at 1 or below, `above-baseline` below 1.85, `substantial` below 2.45 and `high-screen` at or above 2.45. `method` is `dechow-et-al-2011-model-1` and `state` is `calculated`.

## Errors

- When data is not a plain object, or current, prior or prior2 is missing or not a plain object — throws TypeError
- When issued_equity_or_long_term_debt is not a boolean — throws TypeError
- When any numeric field read is missing or not a finite number — throws TypeError
- When total_assets in any of the three period records is zero or negative — throws RangeError
- When prior-year cash sales compute to zero — throws RangeError

## Complexity

Time `O(1)`, space `O(1)`.

## Worked example

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`:

```json
{
  "current": {
    "total_assets": 1000,
    "cash": 100,
    "net_ppe": 400,
    "investments_and_advances": 20,
    "investments_at_equity": 0,
    "total_liabilities": 550,
    "preferred_stock": 0,
    "receivables": 150,
    "inventory": 180,
    "sales": 1200,
    "net_income": 80
  },
  "prior": {
    "total_assets": 900,
    "cash": 90,
    "net_ppe": 380,
    "investments_and_advances": 20,
    "investments_at_equity": 0,
    "total_liabilities": 500,
    "preferred_stock": 0,
    "receivables": 120,
    "inventory": 160,
    "sales": 1050,
    "net_income": 60
  },
  "prior2": {
    "total_assets": 820,
    "cash": 80,
    "net_ppe": 350,
    "investments_and_advances": 18,
    "investments_at_equity": 0,
    "total_liabilities": 450,
    "preferred_stock": 0,
    "receivables": 105,
    "inventory": 145,
    "sales": 950,
    "net_income": 50
  },
  "issued_equity_or_long_term_debt": false
}
```

### Call

```ts
dechowFScoreForMisstatementRisk(data)
```

### Returns

object with 8 fields: state, method, variables, logit, misstatement_probability, f_score, band, unconditional_probability

```json
{
  "state": "calculated",
  "method": "dechow-et-al-2011-model-1",
  "variables": {
    "rsst_accruals": 0.042105263157894736,
    "change_receivables": 0.031578947368421054,
    "change_inventory": 0.021052631578947368,
    "soft_assets": 0.5,
    "change_cash_sales": 0.13043478260869557,
    "change_roa": 0.014443084455324356,
    "actual_issuance": 0
  },
  "logit": -6.756803975307326,
  "misstatement_probability": 0.001161589167261127,
  "f_score": 0.313943018178683,
  "band": "at-or-below-baseline",
  "unconditional_probability": 0.0037
}
```

## Other exports

`calculate`, `altmanZScore`, `piotroskiFScore`, `beneishMScore`, `sloanAccrualMeasure`, `ohlsonOScore`, `zmijewskiXScore`, `springateSScore`, `tafflerZScore`, `fulmerHScore`, `groverGScore`, `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.

## Verification and provenance

Tier: **verified** (via D).

The worked example below is the figure published in this algorithm's article, replayed and asserted by the test suite on every build. The arithmetic cannot drift without the build failing.

Both tiers guarantee the signature. Full explanation: https://docs.thefintechbuilder.com/guides/verification/

Generated from the docs.json payload shipped inside fintech-algorithms@0.13.0.
The signature and parameter list are checked against the compiled implementation at build time,
so a description that contradicts the code fails the build rather than reaching this file.

## Links

- Article (how it works, step by step): https://thefintechbuilder.com/fundamental-analysis-and-valuation/quality-and-distress/dechow-f-score-for-misstatement-risk/
- Implementation source: https://github.com/IslamBaraka90/Fintech-Algorithms-Library/blob/main/src/fundamental-analysis-and-valuation/quality-and-distress/dechow-f-score-for-misstatement-risk/impl.ts
- Package on npm: https://www.npmjs.com/package/fintech-algorithms
- Domain index for agents: https://docs.thefintechbuilder.com/fundamental-analysis-and-valuation/llms.txt
