Phase Space AI

Financial Model Notes

Xylem [XYL]

Xylem [XYL] — Financial Model Notes & Defect Register

Screen record validation

Screen: reports/scan_universe/XYL_analysis.json, as-of 2026-07-30, Quality PASS, Valuation PASS at +8.2pp.

screen field screen value verified value source result
shares 233,486,812 233,486,812 10-Q cover page 2026-07-24 exact
revenue_ttm 8,812,000,000 9,126,000,000 four filed quarters: 2,268 + 2,397 + 2,125 + 2,336, each EDGAR-verified WRONG by −$314m, −3.44%
net_cash −1,671,000,000 −1,650,000,000 cash $1,276m − total debt $2,926m (10-Q debt note) $21m / 1.3% off — the screen took LongTermDebt = $2,947m from XBRL; the 10-Q's own debt table totals $2,926m
ev 28,902,566,884 28,881,600,000 0.07% off
ev_sales 3.2799 3.164 3.7% overstated by the revenue error
op_margin_pct 14.0 (FY2025) 13.54 (FY2025 filed) / 14.48 (TTM) 10-K close; TTM is the better base
gross_margin_pct 39.9 38.46 (FY2025 filed) 10-K 1.4pp high
revenue_cagr_demonstrated 18.1 1.3 organic 10-Q organic decomposition invalid — Evoqua acquisition
exit_multiple 23.5, GROWTH_MATCHED, peer_n: 286 9.59x ROIC identity invalid — 286-name "peer" set
required_cagr_pct 9.9 19.3 reverse_dcf wrong by 9.4pp
valuation_margin_pp +8.2 −18.0 sign flip, 26.2pp swing

The revenue defect, isolated

$9,126m is the sum of four consecutive, individually EDGAR-verified quarters:

quarter revenue $m EDGAR source
2025-07-01 → 2025-09-30 2,268 10-Q filed 2025-10-28
Q4 2025 (FY 9,035 − 9M 6,638) 2,397 10-K filed 2026-02-25
2026-01-01 → 2026-03-31 2,125 10-Q filed 2026-04-28
2026-04-01 → 2026-06-30 2,336 10-Q filed 2026-07-28
TTM 9,126

The screen's $8,812m is not any four-consecutive-quarter sum, and it is not FY2025 ($9,035m) either. The direction is conservative — understating revenue overstates EV/Sales — but it is wrong, and on a name where the memo's conclusion is a re-rating from the 6th percentile, a 3.4% revenue error moves the percentile.

Note the shape: the screen got the hardest input right (a cover-page share count updated six days before the run) and the easiest input wrong (a sum of four filed quarters). Difficulty is not a predictor of which fields are wrong.

Defects found — Alpha Vantage

Fields checked and found CLEAN on XYL — reported per instruction

The DATA_DEFECTS.md discipline is explicit that an untested defect list becomes a prior and a prior causes an agent to reject correct numbers. Every listed field was checked against the filing:

field AV value filed value result
totalRevenue, all quarters 2,336 / 2,125 / 2,397 / 2,268 identical CLEAN, byte-identical
grossProfit FY2025 38.5% of revenue 3,475 / 9,035 = 38.46% CLEAN
operatingIncome FY2025 13.5% of revenue 1,223 / 9,035 = 13.54% CLEAN — contrast KGS, where the same field is +21.9%
operatingIncome, quarterly 390 / 244 / 353 / 334 ties to segment tables CLEAN
SPLITS {"symbol":"XYL","data":[]} nil, queried explicitly and stated
cashAndShortTermInvestments not used shortTermInvestments and longTermInvestments are both absent from the balance sheet not applicable — nothing for the composite to exclude. The INSM defect does not fire
EARNINGS_ESTIMATES 41 records, full 7/30/60/90-day history CLEAN — not the empty-array-at-HTTP-200 failure
EARNINGS_CALL_TRANSCRIPT 10 of 12 quarters, speaker/title/sentiment populated partial coverage, stated
av_vs_edgar.py 5 periods compared, 0 disagreements VERIFIED

AV's normalized statements are clean on XYL across every field this project has recorded a defect in. That is the finding, and it is reported because a defect list without negative results is a prior, not evidence.

Fields deliberately not used regardless: ebit, ebitda, sellingGeneralAndAdministrative, OVERVIEW.OperatingMarginTTM, OVERVIEW.MarketCapitalization. All opex lines came from the FY2025 10-K income statement.

Our own tooling

tool result
normalized_fcf.py --ticker XYL INDETERMINATE"no growth capex identified above the maintenance rate." This is the correct output, and it was checked rather than worked around: Xylem's capex is 3.7% of revenue and it is genuinely not building. Trailing FCF (10.5%) used directly, which is the tool's own stated condition
steady_state_check.py two flags, both accepted: TERMINAL_ABOVE_EVERY_OBSERVED_YEAR (16.0% vs a 13.5% annual peak — accepted with a named mechanism: Q2'26 printed 16.7%, restructuring ends 2027 by disclosure, 350bp of quantified productivity) and EXIT_MULTIPLE_UNWARRANTED_AT_STEADY_STATE (9.59x vs 6.1x warranted at its 6.5% ROIC — not overridden; the identity multiple is used, not the market's)
reverse_dcf.py ran with --fcf-margin 0.105. Confirmed to be a DCF, not the undiscounted required-revenue test that CORZ and IREN substituted
av_vs_edgar.py VERIFIED, 5 periods. Note the KGS finding: this tool compares revenue, not operating income

Model construction notes