profit_to_loss
stress default: short
Definition
Fires when a previously-profitable company swings to net loss in the current fiscal year. Often early warning of structural problems.
Trigger logic
Prior fy NetIncomeLoss > 0 AND current fy NetIncomeLoss < 0. From facts.parquet.
Source: signals/build_signals.py:191
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 | 3,667 | -0.22% | -0.13% | +42.21% | -0.02 | 35 |
| 5d | 3,667 | +0.28% | -0.21% | +43.50% | -0.01 | 36 |
| 20d | 3,616 | +0.23% | +0.79% | +44.16% | +0.04 | 40 |
| 60d | 3,386 | +4.37% | -3.72% | +49.00% | -0.06 | 51 |
| 252d | 3,297 | +20.41% | -17.43% | +51.05% | -0.13 | 102 |
Sector breakdown (top 8 by |r/σ| at 20d)
| SIC division | n | Mean 20d | Hit rate | r/σ |
|---|---|---|---|---|
| Mining + Construction | 314 | +2.78% | +52.87% | +0.10 |
| Services (health + legal + edu) | 137 | +14.49% | +42.34% | +0.10 |
| Manufacturing (light) | 555 | -1.96% | +38.38% | -0.08 |
| Manufacturing (heavy) | 812 | -1.12% | +44.33% | -0.05 |
| Wholesale + Retail Trade | 247 | +1.11% | +38.87% | +0.02 |
| Finance, Insurance, Real Estate | 773 | -0.46% | +44.89% | -0.02 |
| Services (business + personal) | 503 | +0.49% | +44.14% | +0.01 |
| Transportation, Communications, Utilities | 245 | -0.29% | +50.61% | -0.01 |
Recent triggers
DXLG— DESTINATION XL GROUP, INC. (FY2026)PLAY— Dave & Buster's Entertainment, Inc. (FY2026)CURV— Torrid Holdings Inc. (FY2026)OXM— OXFORD INDUSTRIES INC (FY2026)AP— AMPCO PITTSBURGH CORP (FY2025)
Caveats
- Short works at 20d (+0.79% net) but reverses at 60d (-3.72%) and 252d (-17.43%).
- Survivor bias: distressed names that DON'T delist tend to mean-revert hard.
Citations
- Beneish (1999). 'The Detection of Earnings Manipulation.' FAJ.
Live data → /api/methodology/signal/profit_to_loss · MCP → pyflo_signal_methodology(signal="profit_to_loss")