Arte SheetsLearn. Try. Understand.

Financial

Beneish M-Score formula: 8-variable forensic earnings manipulation screen

Calculate an eight-input Beneish screening score from prepared accounting indices and compare its unrounded value with an explicit review threshold.

Use the M-score as a screening signal, not a fraud verdict

The worksheet applies the eight-variable score to supplied, already prepared accounting indices. It does not extract or verify financial statements. A result above the chosen threshold means investigate further; a result below it does not establish that accounts are accurate. False positives, false negatives and industry or accounting differences matter.

Prepare DSRI, GMI, AQI, SGI, DEPI, SGAI, TATA and LVGI consistently for comparable periods using the chosen model definitions. The numerical size of a coefficient alone does not measure importance because input scales differ. I2 contains the explicitly chosen exercise cutoff of -1.78; threshold choice changes screening results.

Company Profile8 Beneish Inputs (DSRI..LVGI)Calculated M-ScoreScreening result (chosen cutoff -1.78)
Steady Baseline FirmIndices = 1.00, TATA = 0.00M = -2.48Below chosen threshold
Aggressive Accrual / Receivables SpikeDSRI=1.45, SGI=1.50, TATA=0.08...M = -1.07Review indicated

Compute the 8-variable Beneish M-Score

A2=DSRI, B2=GMI, C2=AQI, D2=SGI, E2=DEPI, F2=SGAI, G2=TATA, H2=LVGI.

=IF(COUNT(A2:H2)<>8,"Invalid inputs",ROUND(-4.84 + 0.92 * A2 + 0.528 * B2 + 0.404 * C2 + 0.892 * D2 + 0.115 * E2 - 0.172 * F2 + 4.679 * G2 - 0.327 * H2, 2))

Compare the unrounded score with a configurable threshold

The comparison uses the unrounded score, not the two-decimal display. A strict greater-than comparison triggers review; equality does not. A threshold is a screening setting, not proof of manipulation or a clean audit opinion.

=IF(COUNT(A2:I2)<>9,"Invalid inputs",LET(m, -4.84 + 0.92 * A2 + 0.528 * B2 + 0.404 * C2 + 0.892 * D2 + 0.115 * E2 - 0.172 * F2 + 4.679 * G2 - 0.327 * H2, IF(m > I2, "Review indicated", "Below chosen threshold")))

Try the example

Use the original values or change them to test your understanding.

Further reading