Conviction / Labor-Exposure Shorts Watch
EPAM
EPAM Systems
conviction
EPAM builds software for large companies, and investors have punished the stock on fears that automation will shrink the number of billable engineers it can sell. The counterpoint is that its fastest growing line of business is building AI systems for clients, which is on track to grow roughly sixfold this year.
What we judge
The view on expected return from here, 0 to 100.
Whether the thesis could succeed without this company at all. This moves slowly, and only when the company's position genuinely changes.
What we measure
Facts from market data, not judgments.
| Price | $110.82 |
| 30-day move | +23.8% |
| Position in 52-week range | 25 |
| From the 52-week high | -50.2% |
| Average daily volume | $188.8M |
Why it is in the fund
Thesis
Offshore software engineering services face margin compression as AI agents write, test, and deploy code autonomously.
Standing judgment
EPAM sits in the delivery and integration layer that Doctrine explicitly de-emphasises, but unlike a pure staffing body shop it is now a certified build partner for frontier model deployment, which gives it a real if secondary role in getting agents into production. Management cut FY2026 growth guidance to 4% to 6.5% on North American discretionary softness while AI-native revenue is genuinely scaling, exceeding $125M in Q1 and guided beyond $600M for the year versus $105M in Q4 2025. The stock is down 50.6% from its 52-week high, so a lot of the disruption fear is already in the price, but a guidance cut inside an AI-fear sell-off is not a clean entry.
What changed, and why
Every move in this number carries the reason it moved. A score does not change without new evidence.
| Date | Conviction | Change | Cause | Evidence |
|---|---|---|---|---|
| 2026-08-05 | 42 | flat | first v3 judgment (v2 score was uninformative, see L-001): The bear thesis is only half true: seat-based IT services demand is weakening, but EPAM is converting a visible share of its book to AI-native work, which makes the outcome genuinely two-sided rather than a one-way erosion. | FY2026 revenue growth guidance trimmed to 4% to 6.5% on macro and discretionary program delays; AI-native revenue >$125M in Q1 2026, up ~20% sequentially from Q4 2025's $105M, guided to >$600M for FY2026; announced Anthropic partnership with over 1,300 engineers certified in Claude; stock -50.6% off |
| 2026-08-05 | 42 | -7 | first v3 judgment (v2 score was uninformative, see L-001): The bear thesis is only half true: seat-based IT services demand is weakening, but EPAM is converting a visible share of its book to AI-native work, which makes the outcome genuinely two-sided rather than a one-way erosion. | FY2026 revenue growth guidance trimmed to 4% to 6.5% on macro and discretionary program delays; AI-native revenue >$125M in Q1 2026, up ~20% sequentially from Q4 2025's $105M, guided to >$600M for FY2026; announced Anthropic partnership with over 1,300 engineers certified in Claude; stock -50.6% off |
| 2026-07-31 | 49 | +30 | ⚠️ v2 rank-normalization artifact, unexplained move | v2 `scores` row |
| 2026-07-30 | 19 | -33 | ⚠️ v2 rank-normalization artifact, unexplained move | v2 `scores` row |
| 2026-07-29 | 52 | +2 | migrated from v2 (cause not recorded) | v2 `scores` row |
| 2026-07-28 | 50 | flat | migrated from v2 (cause not recorded) | v2 `scores` row |
| 2026-07-27 | 50 | +21 | ⚠️ v2 rank-normalization artifact, unexplained move | v2 `scores` row |
| 2026-07-26 | 29 | +5 | migrated from v2 (cause not recorded) | v2 `scores` row |
| 2026-07-25 | 24 | flat | migrated from v2 (cause not recorded) | v2 `scores` row |
| 2026-07-24 | 24 | +17 | migrated from v2 (cause not recorded) | v2 `scores` row |
| 2026-07-23 | 7 | -22 | ⚠️ v2 rank-normalization artifact, unexplained move | v2 `scores` row |
| 2026-07-22 | 29 | -14 | migrated from v2 (cause not recorded) | v2 `scores` row |
| 2026-07-21 | 43 | flat | migrated from v2 (cause not recorded) | v2 `scores` row |
| 2026-07-20 | 43 | -35 | ⚠️ v2 rank-normalization artifact, unexplained move | v2 `scores` row |