Phase Space AI

Financial Model Notes

ExlService Holdings [EXLS]

ExlService Holdings [EXLS] — Financial Model Notes

Sources and precedence

The SG&A test, run as instructed, result reported either way

FY2025
AV sellingGeneralAndAdministrative $255,308,000
Filed GeneralAndAdministrativeExpense $255,308,000 — byte-identical
Filed SellingAndMarketingExpense $172,934,000 — absent from AV
True SG&A $428,242,000
AV error 1.68x light · 8.28pp of revenue

Result: DEFECTIVE on EXLS.

The cluster result, which is the more useful finding

Name AV SG&A True SG&A Error pp of revenue
PRGS $108,215,000 $319,228,000 2.95x 21.58pp
PTC $226,058,000 $792,574,000 3.51x 20.68pp
EXLS $255,308,000 $428,242,000 1.68x 8.28pp

All three defective. All three by a different factor. The mechanism is identical every time — AV returns the filed GeneralAndAdministrativeExpense byte-for-byte and drops SellingAndMarketingExpense entirely — so the ratio is simply each company's (S&M + G&A) ÷ G&A. It is not a constant and cannot be corrected by a constant. DATA_DEFECTS.md records instances at 4.72x (NOW), 4.77x (INTU) and 6.15x (ORCL); this cluster adds 1.68x, 2.95x and 3.51x, and the clean cases (INSM, NVDA) remain clean. The prior "always ~4.7x light" would have over-corrected all three of these names.

Other AV fields on this name

Field Result
commonStockSharesOutstanding = 152,783,000 vs a filed 152,782,931 CLEAN, 0.00005%
researchAndDevelopment "None" (the string) for FY2024 and FY2025, populated FY2018–FY2023. The underlying absence is real — EXLS stopped reporting a separate R&D line — but AV returns a string, not a null, which crashes a naive float() mid-series. The documented INCOME_STATEMENT string-"None" defect, observed here.
EARNINGS_ESTIMATES 41 records returned. PRGS also returned 41 in the same run while PTC returned {"estimates": []} — so the empty-response defect is not an account-level throttle.
OVERVIEW.MarketCapitalization = $5,498.658m vs $5,303.1m verified +3.7% stale

Balance sheet — the composite-field defect avoided by construction

Cash and short-term investments were read as separate line items and summed explicitly:

At 30 June 2026 $m
Cash and cash equivalents 126.722
Short-term investments 157.102
Total liquid 283.824
Restricted cash (current $12.964m + non-current $7.086m) EXCLUDED
Total borrowings (all classified current) 381.155
Net debt 97.331

Short-term investments are 55% of the liquid balance. Trusting cashAndShortTermInvestments — the INSM failure mode, where $641.3m went missing and flipped net cash to net debt — would have given net debt of $254.4m against an actual $97.3m, a 161% error.

The longTermDebtNoncurrent = 0 reading at 30 June 2026 was checked rather than assumed missing. Per DATA_DEFECTS.md, 0 was correct for WDC and treating it as missing invents a liability. Here it is also correct: EXLS's borrowings are drawn on a revolving facility and are classified current. Total debt of $381.155m is used, not $0.

Reconciliations that tie

Check Result
Gross profit + cost of revenue = revenue (FY2025) $801.076m + $1,286.603m = $2,087.679m ✓
Gross profit − total opex = operating income $801.076m − $487.326m = $313.750m ✓
Opex bridge 255.308 + 172.934 + 59.248 − 0.164 = $487.326m ✓
Sum of Q2 2026 service-type split $362.558m + $232.205m = $594.763m ✓ (ties to the 10-Q income statement)
Sum of Q2 2026 segment revenue 197.8 + 158.0 + 133.9 + 105.1 = $594.8m ✓
Q2 2026 operating income $87.295m ÷ $594.763m = 14.68%, ties to the disclosed 14.7% ✓

TTM construction

Rolling four quarters to 30 June 2026: 2026-06-30, 2026-03-31, 2025-12-31, 2025-09-30 = $594.763 + $570.351 + $542.615 + $529.585 = $2,237.314m. Q4 is included. Cross-check against FY2025 − (Q1+Q2+Q3): $2,087.679m − ($501.019 + $514.460 + $529.585) = $542.615m — matches the AV Q4 figure to the dollar.

Splits — material on this name

SPLITS queried explicitly. Result: 5-for-1 on 2023-08-02. Nothing since.

This is the one name in the cluster where the split matters: any price series crossing 2023-08-02 on an unadjusted basis is 5x wrong, which is the KLAC failure mode ($89% market-cap understatement, 37pp of required CAGR). The Alpaca bar series used for the multiple history was requested with adjustment=split and the resulting EV/Sales series is continuous across the split date, confirming the adjustment applied.

Modelling conventions

What was NOT verified