fcf_ni_divergence
forensic default: short
Definition
Fires when free cash flow diverges substantially from net income — either NI >> FCF (low-quality earnings) or FCF >> NI (under-reported earnings).
Trigger logic
ABS(NetIncomeLoss - OperatingCashFlow) / GREATEST(ABS(NetIncomeLoss), 1) > 0.50.
Source: signals/build_signals.py: (search 'fcf_ni_divergence')
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 | 1,361 | +0.07% | -0.35% | +48.05% | -0.06 | 30 |
| 5d | 1,361 | +0.65% | -0.22% | +47.54% | -0.02 | 31 |
| 20d | 1,357 | +0.02% | +0.27% | +46.20% | +0.02 | 34 |
| 60d | 1,270 | +2.92% | -3.03% | +51.18% | -0.11 | 45 |
| 252d | 1,256 | +13.28% | -13.55% | +52.79% | -0.21 | 92 |
Sector breakdown (top 8 by |r/σ| at 20d)
| SIC division | n | Mean 20d | Hit rate | r/σ |
|---|---|---|---|---|
| Manufacturing (light) | 173 | -2.42% | +39.31% | -0.17 |
| Services (health + legal + edu) | 31 | -2.70% | +45.16% | -0.14 |
| Wholesale + Retail Trade | 128 | +5.92% | +51.56% | +0.12 |
| Finance, Insurance, Real Estate | 169 | -1.53% | +43.20% | -0.12 |
| Mining + Construction | 122 | +1.50% | +47.54% | +0.07 |
| Services (business + personal) | 110 | -0.62% | +47.27% | -0.03 |
| Transportation, Communications, Utilities | 294 | -0.16% | +54.08% | -0.01 |
| Manufacturing (heavy) | 330 | -0.10% | +41.52% | -0.01 |
Recent triggers
CRK— COMSTOCK RESOURCES INC (FY2025)BA— BOEING CO (FY2025)MTW— MANITOWOC CO INC (FY2025)CPK— CHESAPEAKE UTILITIES CORP (FY2025)MOV— MOVADO GROUP INC (FY2025)
Caveats
- Short loses at all horizons net (-13.55% net at 252d).
- Use as ingredient in stacks, not stand-alone trade.
Citations
- Dechow & Dichev (2002). 'The Quality of Accruals and Earnings.' Accounting Review.
Live data → /api/methodology/signal/fcf_ni_divergence · MCP → pyflo_signal_methodology(signal="fcf_ni_divergence")