Skip to content

Beneish M-Score

4.84+0.92DSRI+0.528GMI+0.404AQI+0.892SGI+0.115DEPI0.172SGAI0.327LVGI+4.679TATA

Eight-index probabilistic earnings-manipulation detector (Beneish 1999). M > -1.78 flags potential manipulator; ≤ -1.78 reads as clean. Built from YoY indices on receivables, gross margin, asset quality, sales growth, depreciation, SG&A, leverage, and total accruals.

Direction: Lower better Category: forensic

Inputs (XBRL fallback chains):

  • current_assets: AssetsCurrent
  • net_income: NetIncomeLoss -> ProfitLoss
  • operating_cash_flow: NetCashProvidedByUsedInOperatingActivities
  • ppe_net: PropertyPlantAndEquipmentNet
  • sga_expense: SellingGeneralAndAdministrativeExpense -> GeneralAndAdministrativeExpense

Returns None when: Returns None when prior-year anchor isn't reachable or any of the index inputs is non-positive (the ratios assume positive endpoints).

Source code

Implementation: beneish_m_score in src/eqtytrk/metrics/ratios.py (or valuation.py for multiples).

See also

For full methodology — decomposition, thresholds, when each score lights up vs the others, citations to original papers — see the Forensic screening essay.

EqtyTrk methodology reference. Data from SEC EDGAR.