accruals_quality_low
forensic default: short
Definition
Fires when total accruals exceed 10% of total assets while net income is positive. Captures 'earnings of low cash quality' (Sloan accruals).
Trigger logic
(NetIncomeLoss - OperatingCashFlow) / TotalAssets > 0.10 AND NetIncomeLoss > 0.
Source: signals/build_signals.py:457
Calibration — gross stock return vs net of execution costs
Cost model: 5 bps half-spread each side, 10 × √($1M / 30d ADV) impact each side, ADV-tiered borrow (≥$50M ADV → 10 bps annual; ≥$5M → 30; <$5M → 100), scaled by holding_days/252 if short.
| Horizon | n events | Gross stock ret | Net PnL | Hit rate | r/σ net | Avg cost (bps) |
|---|---|---|---|---|---|---|
| 1d | 858 | -0.20% | -0.29% | +45.45% | -0.04 | 33 |
| 5d | 857 | +1.15% | -0.47% | +46.67% | -0.04 | 34 |
| 20d | 848 | +0.26% | +0.13% | +46.93% | +0.01 | 38 |
| 60d | 798 | +9.36% | -9.54% | +45.49% | -0.05 | 49 |
| 252d | 774 | +22.52% | -22.54% | +48.71% | -0.11 | 99 |
Sector breakdown (top 8 by |r/σ| at 20d)
| SIC division | n | Mean 20d | Hit rate | r/σ |
|---|---|---|---|---|
| Wholesale + Retail Trade | 73 | +17.62% | +53.42% | +0.27 |
| Transportation, Communications, Utilities | 40 | -4.01% | +40.00% | -0.18 |
| Manufacturing (light) | 171 | -2.38% | +45.03% | -0.16 |
| Mining + Construction | 80 | +3.47% | +55.00% | +0.14 |
| Manufacturing (heavy) | 223 | -2.30% | +42.60% | -0.12 |
| Finance, Insurance, Real Estate | 135 | -1.58% | +48.15% | -0.10 |
| Services (business + personal) | 102 | -1.23% | +49.02% | -0.06 |
Recent triggers
UUU— UNIVERSAL SAFETY PRODUCTS, INC. (FY2025)FEIM— FREQUENCY ELECTRONICS INC (FY2025)CLSK— CLEANSPARK, INC. (FY2025)RGS— REGIS CORP (FY2025)XOMA— XOMA Royalty Corp (FY2025)
Caveats
- Short loses at 60d/252d (-9.54% / -22.54% net) for the same survivor-bias reason.
- Pair with beneish_m_score_high + fcf_turn_negative: long +37.09% net at 252d (n=90).
Citations
- Sloan, R.G. (1996). 'Do stock prices fully reflect information in accruals and cash flows about future earnings?' The Accounting Review 71(3).
Live data → /api/methodology/signal/accruals_quality_low · MCP → pyflo_signal_methodology(signal="accruals_quality_low")