NYSE:FIX Comfort Systems USA, Inc.

ISIN: US1999081045
IndustrialsEngineering & ConstructionData-centre MEPS&P 500
NYSE · Houston, Texas · Mkt cap US$62.4bn · Beta 1.70 · 22,700 employees Analysis Status: On-Going
All figures in US dollars. Priced at the Friday 14 August 2026 close — 15 August is a Saturday and US markets are shut, so that is the latest print.
$1,774.06
+2.69% on 14 Aug · +2.3% since the 25 Jul report
15 August 2026 · Signal v6

Changes Since Last Report

vs. the previous report dated 25 July 2026, which priced the name at US$1,733.60. Price is now US$1,774.06 (the 14 August close — 15 August is a Saturday), +2.3% over three weeks. That near-flat comparison hides a round trip: the stock fell a further 12.3% to close at US$1,519.96 on Wednesday 29 July — an intraday low of US$1,491.24 that session, 14.0% below the last report's price — before recovering 16.7% close-to-close.

There is no new fundamental information in this cycle. Q2 was filed on 23 July, two days before the last report, so it was already reflected there. That is why four of the five pillars barely move and one moves a great deal.

DISCLAIMER: This is a quantitative framework for educational purposes only. It is not financial advice. Always do your own research and consult a licensed financial advisor before making investment decisions.

Comfort Systems USA, Inc.

Comfort Systems USA is the largest pure-play mechanical, electrical and plumbing (MEP) contractor in the United States — a Houston-based roll-up of roughly 45 operating companies and about 22,700 employees that designs, builds, installs and then maintains the heating, cooling, power, piping, controls and fire-protection systems inside commercial and industrial buildings. It earns money twice on the same building: once on the install (a construction contract) and again for years afterwards on service, monitoring and replacement. Its distinguishing asset is scale in self-performed skilled labour combined with off-site modular manufacturing — it pre-builds pipe racks, electrical skids and cooling modules in its own plants and ships them to site, which compresses schedules in a market where the binding constraint is time and tradespeople, not money. That capability is why it has become one of the two contractors of scale that hyperscale data-centre developers can actually hand a liquid-cooled campus to; technology and industrial customers now account for about three-quarters of revenue.

HorizonSignalComposite ScoreConfidenceKey Driver
Short-term (1–3 mo)HOLD5662%Valuation-Ceiling gate — the tape has repaired but the price has not
Medium-term (6–12 mo)HOLD5762%Great business at the wrong price — 43.63× against a 16.9× warranted multiple
Long-term (3–5 yr)HOLD6462%Quality 86 carries the long horizon; the entry multiple does not
Next update: 2026-08-31 — default +14d from 15 Aug (29 Aug is a Saturday → rolled to the next trading day). Q3 earnings est. ~22 Oct 2026, far beyond the 14-day cap
Table of Contents
1Five-Pillar Scorecard2Hard Gates & Do-Not-Buy Status3Pillar Detail: Business Quality4Pillar Detail: Valuation Attractiveness5Pillar Detail: Underlying Drivers6Pillar Detail: Economic Alignment7Pillar Detail: Entry/Exit Timing8Economic Event Risk9Multi-Timeframe Technical Analysis10Price Chart (6-Month Daily)11Scenario Summary12Entry / Exit Rules13Position Sizing Context14Calibration Snapshot15Data Sources & Methodology
1

Five-Pillar Scorecard

Five independent scores — each 0–100 with its own confidence. The three fundamental pillars (Quality / Valuation / Timing) set the base BUY/HOLD/SELL via the Decision Matrix; the two context pillars (Underlying Drivers, Economic Alignment) then amplify a BUY to STRONG BUY or a SELL to STRONG SELL when both corroborate.

Business Quality

86
High — best-in-class economics
conf 78%

Valuation Attractiveness

27
Expensive — 2.58× warranted
conf 74%

Entry/Exit Timing

58
Improving — repairing, unconfirmed
conf 62%

Underlying Drivers

83
Strong Tailwind — AI capex cycle
conf 66%

Economic Alignment

78
Trend-Following (Tailwind)
conf 70%
2

Hard Gates & Do-Not-Buy Status

Binary safety checks — any TRIGGERED gate is a hard cap regardless of the scores above; CAUTION gates are sizing notes.
Financial Distress
Net cash ≈ US$1.80bn — cash of US$1.85bn against total debt of US$54m as reported in the Q2 release (long-term debt US$53.8m, down from US$139.1m at 31 Dec 2025). Interest coverage 196.7×, current ratio 1.21. Note the debt definition: FMP reports a lease-inclusive total debt of US$303.9m; this report uses the company's own reported debt throughout and says so in §15. Nothing here is close on either definition.
Earnings Event Risk
Q2 printed 23 Jul 2026. Q3 is estimated ~22 Oct 2026 — 69 days out, far outside the 14-day window. No blackout.
Valuation Ceiling
TRIGGERED. Clean trailing P/E 43.63× against a warranted 16.9× = 2.58× — deep inside the Expensive band (≥1.40×). Independently, 43.63× breaches the 23× Industrials guardrail line, and so do both forward years (36.2× FY26E, 29.5× FY27E). Caps every horizon at HOLD regardless of momentum.
Accounting / Dilution
Diluted share count is falling (35.775m → 35.254m over eight quarters). Non-operating income is −0.8% of TTM net income — earnings are, if anything, understated versus operating. No GAAP/non-GAAP gap.
Regulatory / Binary Event
No pending acquisition, regulatory ruling or binary approval. Local data-centre moratorium debates exist but are diffuse, not a dated binary.
Severe Driver Collapse
Driver score 83. Hyperscaler capex is guided ~US$725bn for 2026, up ~77% year on year. The driver is a tailwind, not a collapse.
⚠️
Insider Selling Spike
CAUTION, not triggered. 35 sales / US$152m and zero purchases over twelve months. The three-insider C-suite cluster was late February — outside the 60-day window — and the only sales inside it are one director's (Franklin Myers, 7,500 shares, 10–11 Aug). Do-Not-Buy Trigger 4 needs 3+ C-suite inside 60 days: not met. It still drags the management sub-score.
One gate is live and it is the whole story. The Valuation-Ceiling gate fires on two independent arms — the warranted-multiple ratio (2.58×, against a 1.40× threshold) and the sector guardrail (43.63× against 23×) — and it caps Short, Medium and Long at HOLD however good the business is. It is not a comment on Comfort Systems; it is a comment on the price. Nothing else is triggered: the balance sheet is net cash, the share count is shrinking, earnings are clean and there is no binary event.
3

Pillar Detail: Business Quality

A deep dive into the Quality score: business economics, moat, ROIC and the industry benchmark.
Business Quality — Pillar Score
High — the industry benchmark (ROIC vs WACC + backlog growth) is close to maxed
86
conf 78% · lifecycle: Growth · Industrials / Engineering & Construction

Lifecycle & sector classification. Comfort Systems is an Industrials name (GICS: Engineering & Construction) scored on the Growth lifecycle profile. That label needs a caveat, and it is a change from the 25 July report, which used "established". The framework's Growth band assumes a business scaling towards profitability; Comfort Systems is the opposite — a mature contracting model running at hyper-growth revenue rates (+50.3% year on year) while already earning a 12.8% net margin. So we take the Growth classification for the growth-rate arithmetic but keep the Industrials metric set — ROIC versus cost of capital, backlog growth, operating margin, capex intensity — rather than the high-growth-software set. Using unit-economics metrics on a company that has been profitable since the 1990s would be directionally wrong.

Sub-signalValue (TTM / latest Q)Peer / sector referenceScoreRead
Revenue trajectoryQ2 revenue US$3,265.7m, +50.3% YoY; TTM US$11,228mEMCOR +20% YoY (Q2, 30 Jul); IES Holdings +40% YoY to US$1.24bn (fiscal Q3 ended 30 Jun, reported 31 Jul); E&C sector median high-single-digit 95Fastest grower by revenue among the three — but note IES is now growing at 40%, not the 17% its March quarter showed, so the gap has narrowed. What distinguishes Comfort Systems is that the growth is organic: same-store backlog is US$13.70bn of the US$14.06bn total.
Profitability vs peersGross margin 25.87% (Q2); operating margin 17.09% (Q2), 16.46% TTM; net margin 12.78%EMCOR net 7.72%; IES Holdings net 11.45%90The margin expansion is now confirmed structural: Q1's 26.3% gross margin carried a one-off project close-out gain, and Q2 still printed 25.9% without one.
Cash generationQ2 operating cash flow US$1,141m (vs US$252m a year ago); TTM FCF ≈ US$2.16bn; FCF/operating cash flow 84.7%Contractor norm: FCF conversion below net income in a growth phase88Strong, but read it honestly — a large slice is customer advances and billings-in-excess on data-centre work. That is real cash today; it unwinds if bookings stall.
Balance-sheet healthCash US$1.85bn vs reported total debt US$54mnet cash ≈ US$1.80bn (≈US$51/share); interest coverage 196.7×; net debt/EBITDA negative. Long-term debt fell from US$139.1m at 31 Dec 2025 to US$53.8m. Industrials healthy < 3.0× debt/EBITDA95Effectively ungeared — reported debt/equity is 0.017×. It can self-fund the modular-capacity build and tuck-in M&A without touching the capital markets. (FMP's lease-inclusive debt of US$303.9m gives 0.10×; the conclusion is identical either way.)
Backlog / demand visibilityUS$14.06bn at 30 Jun 2026 — +73.2% YoY (from US$8.12bn), +12.9% QoQ (from US$12.45bn)EMCOR RPOs US$17.14bn, +44% YoY; IES ≈US$4.5bn, +91% since fiscal year-end (fiscal Q3, reported 31 Jul) 95Backlog is 1.25× TTM revenue — roughly fifteen months of work already signed. This is the single most important number in the report. Honest caveat: IES's backlog is compounding at least as fast on its since-year-end measure, off a base under a third the size, so Comfort Systems is not uniquely fast — it is uniquely large and fast.
Capex intensityCapex/share US$11.08 on revenue/share US$318.79 → 3.5% of revenueIndustrials 4–6% typical 82Asset-light for a business adding modular plants. Growth is funded out of working capital, not the balance sheet.
INDUSTRY BENCHMARK: ROIC vs WACC + Backlog Growth
NOPAT ≈ US$1,444m (TTM operating income US$1,848.6m × [1 − 21.9% effective tax]). Invested capital ≈ US$3,274m (equity US$3,220m + reported total debt US$54m). ROIC ≈ 44% against a cost of capital of 11.13% — a spread of about 33 percentage points. (Strip the ~US$1.85bn cash balance out and the denominator falls to ~US$1.42bn, at which point the computed return exceeds 100% and the metric stops being informative — which is exactly why we lead with the conservative 44% on total invested capital.)
Backlog growth: +73.2% YoY, positive on both the annual and the sequential comparison.
Rating: STRONG — ROIC >> WACC with a sharply growing backlog. Benchmark score: 95/100. The framework's top band is "ROIC > WACC + growing backlog: 85–100"; there is no honest way to score this lower. Context: EMCOR, the closest comparable, earns a 7.7% net margin against Comfort Systems' 12.8%.

Competitive Moat Scorecard

78
Pricing power
Gross margin has gone 20.5% → 25.9% over two years while volumes grew 50%. In a capacity-short trade, the contractor sets the price. Capped below 80 because a slice is mix (high-margin modular) rather than pure price.
50
Network effects
None — construction is not a network business. Scored neutral rather than zero, per the framework, so the company is not penalised for lacking a moat that does not apply.
58
Switching costs
Derived from the competitive read below, not asserted. Real friction — a hyperscaler mid-campus will not swap MEP contractor — but every new campus is re-bid, and EMCOR is bidding the same work. Moderate, not high.
68
Cost advantage
Self-perform labour at scale plus owned off-site modular plants is a genuine schedule-and-cost edge. Trimmed from higher because it is replicable — EMCOR and IES are building the same capability, and IES's backlog grew 62%.
58
Intangibles
Reputation, safety record and — the real scarce asset — a trained skilled-labour pool that cannot be hired quickly. No patents, no licences that block entry.

Moat score = 62/100 (average of the five). A good business with a moderate moat, not a fortress. What protects Comfort Systems is scarcity of capacity, and scarcity is a cycle condition, not a structural one.

Competitive Environment — who is attacking, and which way is share moving? The moat scores above are derived from this block, not the other way round.

The honest summary: Comfort Systems is still gaining share, and gaining it against a strong incumbent. On the two metrics that matter in contracting — backlog growth and revenue growth — it is beating EMCOR by roughly 29 and 30 points respectively. But the threat level is moderate and rising, and the "rising" has strengthened since the last report: IES Holdings' 31 July print showed backlog up 91% since its fiscal year-end and revenue up 40%, a marked acceleration on the March-quarter figures this report previously carried. The same demand that is lifting Comfort Systems is funding its rivals' capability build, and a concentration of roughly three-quarters of revenue in technology and industrial customers means a small number of buyers hold the pricing pen.
Named competitorThreat typeShare trajectoryMoat-erosion vector
EMCOR Group (NYSE:EME)Direct merchant rival — the other national MEP contractor of scaleFIX gainingEMCOR's Q2 RPOs hit a record US$17.14bn (+44% YoY) on revenue +20%; Comfort Systems' backlog grew +73% on revenue +50%. EMCOR is larger in absolute backlog but growing at roughly half the rate. Erosion vector: EMCOR is acquiring into data-centre capability and can bid the same campuses — every project is re-tendered, which is why Switching Costs are held at 58, not 80.
IES Holdings (NASDAQ:IESC)Fast-following specialist, electrical-ledStable / mild share gain by IESUpdated to its fiscal Q3 (quarter ended 30 June, reported 31 July 2026): backlog ≈US$4.5bn, +91% since fiscal year-end; revenue +40% YoY to US$1.24bn; net income more than doubled to US$153m. This is a genuine acceleration on the March-quarter figures (backlog +62%, revenue +17%) and it means IES is compounding backlog at least as fast as Comfort Systems, off a base under a third the size, while moving into the same prefabrication playbook. Erosion vector: undercuts on electrical scopes and competes for the same scarce electricians. It does not reverse Comfort Systems' share gain — FIX is still the larger and faster grower by revenue — but it is the reason the threat level is "rising" rather than merely "moderate".
Quanta Services (PWR) / MasTec (MTZ) / Sterling (STRL) Adjacent infrastructure contractors expanding into the campus StablePrimarily power delivery and site works today, but each is extending scope towards the building envelope. Erosion vector: single-source campus awards that bundle MEP into a broader civil/power package.
Hyperscaler self-perform & modular OEMsVertical substitutionStable — watch itemThe most under-priced threat. Cooling and power modules are increasingly bought as factory-built products direct from OEMs (Vertiv-type suppliers), and the largest developers have the balance sheet to internalise integration. Erosion vector: the modular advantage Comfort Systems is building could be commoditised by the equipment makers themselves.
Skilled-labour scarcityConstraint, not a rival — but it behaves like oneTightening for everyoneEvery contractor in the group flags it. It supports pricing today; it caps how much backlog can actually be converted to revenue, and it is the mechanism by which a rival with a bigger labour pool wins a campus.

Net effect on the moat: → Switching Costs trimmed to 58 (project-by-project re-bidding against a credible national rival), Cost Advantage held at 68 (real but replicable). Overall competitive_threat_level = moderate-rising, share trajectory = gaining. This propagates: the §11 Bear card carries an EMCOR/labour-driven margin-compression trigger, and the §12 thesis-invalidation rule carries an explicit competitive condition.

ROIC & Capital Allocation

ComponentReadingScore
ROIC (40%)≈44% on total invested capital (NOPAT US$1,444m ÷ US$3,274m) against an 11.13% cost of capital. Stable-to-rising across three years as the mix shifted to data centres. Top decile of Industrials.95
Capital-allocation discipline (30%)Tuck-in M&A only, funded from cash; diluted share count reduced from 35.775m to 35.254m over eight quarters; dividend raised again on 23 July, US$0.80 → US$0.90 (+12.5%), the fifth increase in the sequence US$0.35 → 0.40 → 0.45 → 0.50 → 0.60 → 0.70 → 0.80 → 0.90, on a 6.4% payout ratio. Capacity expansion is being funded out of operating cash flow.82
Management skin in the game (30%)The weak leg. Thirty-five insider sales worth about US$152m over twelve months and zero purchases. The CEO sold ~US$49m, the CFO ~US$33m. Most is scheduled disposition into a 2,000% five-year move, and the late-February cluster sits outside the 60-day Do-Not-Buy window — but a management team with no buyers at any price is a signal, and we score it as one.42

Quality = 86/100 (confidence 78%). The benchmark and ROIC legs are close to maxed, the moat is merely good, and management alignment is the drag. It moved +1 from 85 — essentially unchanged, which is the correct answer when the only new information since the last report is a backlog print that confirmed what was already known.

4

Pillar Detail: Valuation Attractiveness

Sector-appropriate multiples, FCF yield, reverse-DCF implied growth, embedded optionality, and the analyst-consensus cross-check.
Valuation Attractiveness — Pillar Score
Expensive — 43.63× actual against 16.9× warranted, and 43.63× against a 23× guardrail
27
conf 74% · basis: clean trailing P/E
THE ANCHOR — Warranted-Multiple Valuation
Discount rate r = 11.13% = 4.63% risk-free (10-Y Treasury, FRED DGS10, 13 Aug 2026) + 4.50% equity-risk premium + 2.00% risk add-on. The add-on is the maximum not because quality is poor — quality is 86 — but because beta is 1.701, above the 1.6 threshold that forces the top add-on. A stock that moves 70% more than the market gets discounted like one.
gnear = 10.0% (years 1–5). Consensus implies ~22.6% FY26→FY27 and ~25.7% FY27→FY28; the framework haircuts consensus by 25% (→ ~17%) and then caps it at the 10% cyclical/Industrials ceiling. Feeding the actual growth rate in is the banned move — an optimistic g will warrant any multiple.
gterm = 3.0% (long-run nominal GDP).

Two-stage: Σt=1..5 (1.10/1.1113)t = 4.85, plus [(1.10)5 × 1.03 / (0.1113 − 0.03)] / (1.1113)5 = 12.04.
Warranted P/E = 16.9× (below the 23× Industrials guardrail, so the guardrail does not bind the warranted figure).

Actual clean trailing P/E = 43.63× — US$1,774.06 ÷ US$40.66 trailing diluted EPS (Q3'25 8.25 + Q4'25 9.37 + Q1'26 10.51 + Q2'26 12.53).
Ratio = 43.63 ÷ 16.9 = 2.58×EXPENSIVE (threshold 1.40×).

And the guardrail fires independently. The Industrials "rich" line is 23×. Comfort Systems is at 43.63× trailing, 36.2× on FY26E EPS of US$48.97 and 29.5× on FY27E EPS of US$60.04. All three are above the line. Even paying today's price for earnings that do not exist until December 2027 leaves you 28% above the industry's rich line. The 10-Y at 4.63% is below 5%, so the guardrail is used unmodified.

Implied-growth read (narrative colour, not the score). Reverse the anchor: to warrant 43.63× at r = 11.13% and gterm = 3%, you need roughly 19–20% earnings growth sustained for a full decade, not five years. Consensus has 22.6% then 25.7% for the next two years and no visibility beyond that. The market is not paying for the backlog it can see — it is paying for a second backlog nobody has booked yet. That may well arrive. It is not, on this framework, something you underwrite at 43×.

LensWeightReadingScore
Warranted-multiple anchor40%2.58× warranted; the guardrail breached on trailing and both forward years12
Sector / peer median20%FIX 43.63× P/E vs EMCOR 26.13× and IES Holdings 33.59× — a 67% premium to EMCOR and a 30% premium to IES. On EV/EBITDA: FIX 31.1× vs EMCOR 16.1× and IES 25.1×. Comfort Systems does earn the best margin of the three (12.78% net vs 7.72% and 11.45%), which justifies a premium — not a 67% one.22
Own-history decile15%43.6× sits in roughly the 8th decile of the five-year range. Not unprecedented — it printed 47–48× in April and May 2026 — but the top third, and the whole five-year range has been re-rating upward, which is exactly the trap the absolute anchor exists to catch.25
Growth-adjusted (PEG)10%clean PEG 1.93 = 43.63× ÷ 22.6% FY26→FY27 consensus growth (matches FMP's forward PEG of 1.928). The trailing PEG of 0.40 looks seductive but divides today's multiple by a +92% EPS comparison that nobody expects to repeat — we do not score off it.42
Analyst consensus15%Consensus target US$2,057.86 (high 2,225 / median 2,110 / low 1,800) = +16.0% upside — the "10–20% below consensus" band. Yahoo's independent panel is higher still: mean US$2,210.86, median 2,172, high 2,500, n=7. Grades: 5 Buy / 4 Hold / 0 Sell → 55.6% bullish. The raw +16.0% upside maps to the framework's 70–84 band, but this lens is haircut to 65 for two documented reasons: coverage is thin (6 targets last quarter, only 3 in the last month, below the 5-analyst line), and 44% of the panel sits on Hold. It is genuinely the one lens pointing the other way.65

Weighted: 12(0.40) + 22(0.20) + 25(0.15) + 42(0.10) + 65(0.15) = 26.9 → 27. The relative lenses can order the name within the Expensive band; they cannot lift it out of one. Score up 2 points from 25 on 25 July, purely because the forward multiples came in (37×/32× then, 36.2×/29.5× now) as estimates rose and the consensus target expanded.

FCF Yield — the universal anchor. TTM free cash flow ≈ US$2,161m (US$61.32 per share × 35.25m diluted) against an enterprise value of US$60.9bn → 3.55%. Yahoo's narrower FCF of US$1,842m over its EV of US$64.8bn gives 2.84%. Call it 2.8–3.6% — the "Fair, typical for quality growth" band, at the expensive edge of it. And treat it gently: Q2's US$1,141m of operating cash flow was inflated by customer advances on data-centre awards. Cash collected ahead of work performed is real, but it is borrowed from future quarters, and it reverses if bookings pause.
Embedded Optionality / Free Upside — what are you getting that the market is valuing at roughly nothing?

1. The service annuity (unquantified but real). Every installed system becomes a maintenance, monitoring and replacement contract. The market is valuing Comfort Systems as a construction cyclical; the recurring tail on a decade of data-centre installs is nowhere in a 36× forward multiple. It is also the part of the business that survives a capex pause.
2. Modular manufacturing capacity (partly priced). The off-site plants being built now are a higher-margin, higher-throughput business than site labour. Management has been expanding capacity; the incremental plants are not yet in the numbers.
3. Net cash of ~US$1.80bn (≈US$51/share, 2.9% of the price). Small, but it is optionality: it funds tuck-ins at distressed prices in a downturn without dilution.
4. Tuck-in M&A track record. Roughly 45 operating companies assembled without balance-sheet damage. A proven acquirer with net cash in a fragmented trade is a real call option.

Net framing: on the warranted 16.9× and FY26E EPS of US$48.97, the core in-production business justifies about US$828 of the US$1,774 price. The optionality above is worth something — it is why we tilt Valuation up rather than down within the band — but it is nowhere near the US$946 gap. When optionality is this far from closing the gap, it is a reason to keep watching, not a reason the stock is cheap.

Analyst Price Target Consensus

Low $1,800Consensus $2,057.86 (+16.0%)High $2,225

Median US$2,110. Spread high/low = 1.24× — narrow, so analysts broadly agree; no confidence penalty for dispersion. Coverage is the issue: 6 targets in the last quarter, 3 in the last month — below the 5-analyst thin-coverage line on the monthly count, so we take a 5% confidence haircut. The consensus endpoint was checked for degeneracy (high = low = median = consensus) and is not degenerate, so no Yahoo fallback was required — though Yahoo's panel (mean US$2,210.86, n=7) was pulled anyway and reads higher, not lower.

Analyst Grades Distribution

5 Buy
4 Hold

55.6% bullish, zero Sell ratings — the "Buy consensus with >30% holds" band: analysts lean positive with real hesitation, and the hesitation is about price, not the business. Grade actions in the last 30 days: two maintains (KeyBanc Overweight and UBS Buy, both 27 July) and nothing else. No upgrades, no downgrades — a neutral sentiment reading. The last rating change of any kind was KeyBanc's Sector Weight → Overweight upgrade on 24 April.

FMP Ratings Cross-Reference

ComponentScore (1–5)Read
OverallB+ (3)Good, dragged by valuation
Return on equity5ROE 55.3%
Return on assets5ROA 17.0%
Debt/equity4Net cash
Price/earnings1The lowest score available
Price/book1P/B 19.4× (FMP) — the lowest score available

An independent framework, reached from different inputs, lands in exactly the same place we did: the operating scores are maximum, the valuation scores are minimum. That convergence is the strongest single argument that Valuation 27 alongside Quality 86 is not an internal contradiction — it is the shape of the situation.

5

Pillar Detail: Underlying Drivers

The dominant external force the stock is tethered to, scored 0–100. A context pillar: it does not change the base signal — it feeds amplification (tailwind ≥65 can lift BUY→STRONG BUY; headwind ≤35 can push SELL→STRONG SELL).
Primary Driver
AI / hyperscale data-centre capital-expenditure cycle
83
Strong Tailwind — amplification-eligible, but blocked (base signal is HOLD)

Driver identification. Comfort Systems' fortunes now sit almost entirely above its own execution. Technology and industrial customers are about three-quarters of revenue, with data centres the dominant slice, and the backlog is more concentrated still. The primary driver is therefore the hyperscaler capital-expenditure cycle; the secondary driver, well behind it, is US non-residential construction more broadly.

The transmission mechanism was demonstrated in late July, and it is worth stating precisely because the sequence is easy to garble. Alphabet reported Q2 on 22 July and fell about 7% on 23 July on a raised US$195–205bn capex guide. Comfort Systems then reported its own Q2 after the close on 23 July, beat on every line, and fell 5.3% the next session to US$1,733.60 — a sell-the-news reaction. It then dropped a further 12.32% over the three sessions of 27–29 July, closing at US$1,519.96 on 29 July (intraday low US$1,491.24), as the market scrutinised capex ahead of Microsoft on 29 July and Amazon on 30 July. So this is not one clean Alphabet-caused event: it is a sell-the-news on its own print compounded by sector-wide capex scrutiny. Either way the lesson holds — this stock re-prices on other companies' capital-expenditure commentary, not only its own results.

This is not a commodity-price driver, so the Step-2b commodity price-trend overlay does not apply (recorded as driver_commodity_trend: n/a). The analogous discipline is applied anyway: we score the capex cycle's trend, not only its level.

HorizonAssessmentEvidence & dateScoreWeight
Historical (12–24m)Explosive and acceleratingBig-four hyperscaler capex ≈ US$410bn in 2025 → ≈ US$725bn guided for 2026, up ~77%. Comfort Systems' backlog went US$8.12bn → US$12.45bn → US$14.06bn over four quarters. 9525%
Current stateStrongly favourable, with visible scepticism2026 capex is committed: Amazon ~US$200bn, Google up to US$205bn, Microsoft ~US$190bn, Meta up to US$145bn. Management said on the 23 July call it sees "no letdown whatsoever" and pointed to direct hyperscaler relationships for visibility, explicitly including through local moratorium debates. Against that: investors publicly questioned the returns on that spend through the late-July reporting round.8550%
Forward (6–12m)Positive but genuinely uncertainConsensus has 2027 combined capex for the four largest approaching US$1 trillion — contemporaneous estimates cluster nearer US$950bn — and analysts describe the 2027 number as unsettled and subject to revision. PwC's longer-range work has data-centre construction spend declining in the late 2020s as spend shifts from training build-out to inference and networking. Power availability, local permitting and the skilled-labour pool all cap conversion.6825%

Driver score = 95(0.25) + 85(0.50) + 68(0.25) = 83.3 → 83 (was 80). Label: Strong Tailwind.

Where the uncertainty actually sits — and why it does not undercut the Do-Not-Buy carve-out in §2. The forward leg is scored 68, not 85, because the 2028-and-beyond order book is genuinely unknowable. That is a different question from whether today's growth is durable. The US$14.06bn backlog is signed contract, 97% of it same-store, equal to 1.25× a full year of revenue — roughly fifteen months of work that is booked rather than forecast, carrying the company through to about the end of 2027. The durability claim in the Trigger-2 carve-out rests on that contracted fifteen months, not on the 2027 capex consensus. What the 68 says is that the next backlog is uncertain — which is precisely why the report is a HOLD and why the thesis-invalidation floor is a bookings number.

Amplification role. At 83 the driver is comfortably above the 65 threshold and Economic Alignment's pressure is Tailwind, so both amplification conditions are met — a base BUY would become a STRONG BUY. It does not, for two independent reasons: the base signal is HOLD, and HOLD is never amplified; and the name sits in the Expensive band, which is separately barred from STRONG BUY. The driver does not change the three fundamental pillar scores and has not been used to.

Thesis-invalidation floor. The level at which the whole case breaks is not a share price — it is a bookings number. If the sequential backlog build stalls (a quarter at or below US$14.0bn, or a same-store decline), the story changes from "fifteen months of visible work" to "a cyclical peak", and a 43× multiple on a peak-earnings contractor is not a valuation, it is a wager. Watch bookings before you watch the chart.

Driver confidence: 66%. Base 70 for fresh, well-documented current-state data; −10 because the 2027 forward leg is contested (a trillion-dollar consensus alongside a credible late-decade decline forecast); +6 because the driver-to-company link is unusually direct and measurable — this is a company whose backlog is the driver, written down.

6

Pillar Detail: Economic Alignment

How the current economic climate sits relative to this stock, read from the latest Macro-Economic report. Classifies the macro pressure (Tailwind / Neutral / Headwind) — the second amplification input — and frames a long entry as Trend-Following or Contrarian with a 0–100 conviction.
Stance · Pressure
Trend-Following · Tailwind
78
conviction

The 12 August MacroDriver report scores XLI Industrials Outperform / Outperform / Strong Outperform across Short, Medium and Long. Anchoring on the Medium horizon gives a clear Tailwind, and going long an industrial here is Trend-Following — riding the economic wind, not fighting it. Conviction 78 (up from 73): the sector signal strengthened to Strong Outperform on the long horizon, and the tape corroborates it — XLI is up 6.9% over three months against SPY's 3.8%.

The dominant regime is described as energy-shock stagflation: a supply-driven inflation impulse hitting a contracting labour market, with Fed cuts priced out (2-Y 4.22% against a 3.63% funds rate) and a live hike-versus-hold debate. That is a genuinely awkward backdrop, and the July data made it worse — non-farm payrolls came in at −23k against a +80k forecast, retail sales at −0.6% against +0.1%, and Michigan sentiment at 51.0 against 54.5. Yet CPI landed exactly in line at 3.4% year on year and PPI at 0.0%, so the inflation impulse did not accelerate.

Why the pressure is still a Tailwind for this name: Comfort Systems' demand comes from four technology balance sheets executing multi-year capital plans, not from the US consumer or the labour market. A contracting labour market is a cost input for it (tradespeople), not a demand signal. The genuine macro transmission is the discount rate — the 10-Y at 4.63% is precisely what forces the 11.13% cost of capital that makes the warranted multiple 16.9× rather than 21×. So the economy helps the earnings and hurts the multiple, which is a fair description of the whole report.

Effect on the signal: Tailwind pressure plus a driver of 83 satisfies both amplification conditions, but no horizon is amplified — the base signal is HOLD, and HOLD never amplifies. Economic Alignment left the base signal unchanged.

Source: sector-map (GICS Industrials → XLI). FIX does not carry its own line in the macro report's Economic Watchlist Forecast. · Macro report 2026-08-12

7

Pillar Detail: Entry/Exit Timing

The risk-reward framework, relative strength vs SPY and the sector ETF, the macro overlay, news-derived sentiment, and the catalyst cluster.
Entry/Exit Timing — Pillar Score
Improving — the post-earnings breakdown has repaired, but it is unconfirmed and lagging badly
59
conf 62% · Industrials = MEDIUM macro sensitivity (macro 15% / sentiment 18% / catalyst 17%)
Read this before the score. Timing moved from 33 to 58, a 25-point jump, while the price moved just +2.3%. That looks like re-scoring, so here is exactly what happened.

The 25 July report scored Timing into an unresolved post-earnings breakdown. That breakdown then completed: the stock closed at US$1,519.96 on Wednesday 29 July−12.3% from the US$1,733.60 the last report priced it at, with an intraday low of US$1,491.24 that same session, −14.0%. It has since retraced +16.7% close-to-close (+19.0% measured from that intraday low) on a clean sequence of higher swing lows — 1,491.24 (29 Jul) → 1,659.28 (7 Aug) → 1,672.79 (10 Aug) → 1,684.05 (11 Aug) → 1,710.02 (13 Aug) — with the daily MACD histogram positive for ten consecutive sessions and RSI back at 52.9 from oversold. The prior score was right about the tape; the tape has since changed.

Note also what did not happen: there is no new fundamental information this cycle. Q2 was filed on 23 July, two days before the last report, so it was already in it. That is precisely why Quality moved +1 and Valuation +2 while Timing did all the work. A large Timing delta with static pillars is the expected shape when the only thing that changed was price action.

Risk-Reward Assessment

Sub-signalReading (14 Aug 2026, RAW Polygon closes)Score
RSI(14)52.89 — the healthy 40–60 middle. Recovered from 44.9 on 10 Aug; nowhere near overbought.75
MACDLine −13.43, signal −23.49, histogram +10.06 and rising for ten straight sessions (+4.23 → +10.06). Bullish momentum turn, but the line is still below zero — a turn, not a confirmed cross.62
Price vs key MAsUS$1,774.06 is above SMA20 (1,722.06) and SMA200 (1,441.69) but below SMA50 (1,794.49) — and that 50-day is falling, from 1,816.37 on 3 Aug. This is the framework's "weakening" configuration.45
BollingerMid-band (BB5: 1,640.73 / 1,720.68 / 1,800.64). Price is in the upper half but has not tagged the band.55
Volume / OBVOBV 17.90m, flat-to-slightly-rising off the 17.12m low on 10 Aug. Volume 374.5k on the 14 Aug advance versus a ~467k average — the rally is on below-average volume, which is the single most honest caveat in this section. 50
ATR / volatilityATR(14) 98.20 = 5.54% of price, contracting from 120.76 on 3 Aug. Contraction after a flush is usually constructive. 65

Traditional indicators average 59.

Relative Strength Benchmarking

WindowFIXSPYXLI (sector)Verdict
1 month−0.1%+3.3%+3.4% Lags both by ~3.4pts
3 months−13.1%+3.8%+6.9% Lags the sector by 20pts
52-week range positionUS$1,774.06 within US$655.96–2,073.99 → 78.8th percentile — upper-middle, 14.5% below the high Mid-upper

Relative strength = 15/100. Underperforming both benchmarks on both windows is the framework's bottom band, and there is no way to dress it up: over three months Comfort Systems has lost 13% while its own sector gained 7%. Whatever is repairing on the daily chart, this is still a laggard, and the sector's Strong-Outperform macro signal is being expressed by other names.

Position-Risk Signal

Nearest daily support is US$1,705.00, then 1,659.28 and 1,621.01. A logical stop sits just under the 1,659.28 swing low, at US$1,640US$134 away = 1.37 ATR, inside the 1.5-ATR "favourable" line. On stop distance alone this scores 78.

Two adjustments pull it down. First, price is within 3% of resistance. The authoritative swing-high set from get_technical_indicators is 1,824.98 / 1,879.99 / 1,998.81 / 2,039.56 / 2,072.31 — so the nearest overhead level is US$1,824.98, just +2.87% away, inside the 3% band that carries a −15 penalty. And the binding level is nearer still: the falling 50-day at US$1,794.49 is only +1.15% overhead, and §9 and §12 both treat it as the level that must be reclaimed. Buying 1.15% under a falling 50-day and 2.9% under the nearest swing high is a poor entry location, and the score has to say so. Second, no swing-low bonus. The last major swing low was Friday 7 August at 1,659.28 — five sessions ago, at the outer edge of the framework's 5-day window — and the rebound has run on below-average volume throughout. That is not the fresh, volume-confirmed bounce the bonus is designed to reward, so no bonus is applied.

Position-risk = 78 − 15 = 63.

Risk-reward composite = (59 + 15 + 63) / 3 = 45.7 → 46. A tight stop is available; the relative weakness and the overhead supply are what hold the leg down.

Macro Regime Overlay (weight 15%)

Sub-signalReadingScore
Fed directionOn hold with cuts priced out; the macro report describes a live hike-versus-hold debate. Funds 3.63%, 2-Y 4.15%.35
VIX14.63 — below 15, risk-on85
Yield curve10-Y minus 2-Y = +0.51, normal and steepening from +0.4875
Sector regimeXLI Outperform / Outperform / Strong Outperform — rotation into Industrials80
Adjusted down for a discount-rate-sensitive 43× multiple in a no-cuts regime55

Sentiment Layer (weight 18%)

Sentiment = 56 (grades weighted heaviest as the framework's primary signal; the news tone discounted for crowding).

Catalyst Layer (weight 17%)

19
Aug
FOMC Minutes
Rate path drives the discount rate on a long-duration re-rated name.
MED
26
Aug
Core PCE (Jul) · Durable Goods (Jul)
Forecast +0.3% MoM core PCE against +0.1% prior. A hot print revives the hike debate and lifts the 10-Y — directly negative for a 43× multiple.
MED
1
Sep
ISM Manufacturing PMI (Aug)
Forecast 55.0 vs 55.6. The cleanest read on the broader industrial tape Comfort Systems' non-tech quarter sits in.
MED
4
Sep
Non-farm Payrolls (Aug)
Forecast +12k after July's −23k shock. Matters for the regime, not for this company's order book.
MED
22
Oct
Q3 2026 earnings (estimated)
The one that counts: the next backlog print. Date inferred from the filing cadence (Q3 FY25 filed 23 Oct 2025) — not confirmed by the calendar tool.
HIGH
Late Oct
Hyperscaler Q3 results & 2027 capex guidance
Microsoft, Alphabet, Amazon and Meta. This is the real driver event — capex scrutiny through the late-July reporting round cost this stock 12.3% over the three sessions of 27–29 July.
HIGH

Catalyst clustering = 62. No company-specific catalyst inside 30 days and no earnings blackout, which is calm; but a steady run of macro releases that a discount-rate- sensitive multiple reacts to, and the two events that actually decide this name — Q3 earnings and hyperscaler 2027 capex guidance — both land in late October, outside the window. That is the "one clear catalyst" band rather than the fully calm band. No position-size reduction required on catalyst density.

Timing = 67(0.30) + 46(0.20) + 55(0.15) + 56(0.18) + 62(0.17) = 58.2 → 58. (The 67 is the multi-timeframe score §9 adopts under the no-intraday fallback — not the 71 that including the degenerate intraday bars would have produced.) Just inside the "Improving" band (≥55). Confidence 62%: base 75, less 5 for the multi-timeframe divergence (monthly RSI 76 overbought against a falling daily 50-day), less 5 for degenerate intraday volume data, less 3 for the below-average volume on the rebound. It makes no difference to the signal — the Valuation-Ceiling gate caps every horizon at HOLD whatever Timing reads — but it does mean the correct label on the short HOLD is expensive, not weak timing.
8

Economic Event Risk

High-impact macro releases in the next 14 days that could swing this stock, plus the last 7 days of surprises.

Upcoming events (next 30 days)

DateEventImpactForecastPreviousRelevant?Why
2026-08-18Building Permits / Housing Starts (Jul)High1.37m / 1.35m1.374m / 1.427m⚠️ MediumNon-residential read-through only — FIX's demand is tech capex, not housing
2026-08-19FOMC MinutesHigh✅ YesRates set the discount rate that produces the 11.13% cost of capital behind the 16.9× warranted multiple
2026-08-25CB Consumer Confidence (Aug)High90.8❌ NoConsumer sentiment has no meaningful transmission to a data-centre MEP contractor
2026-08-26Core PCE Price Index MoM (Jul)High0.3%0.1%✅ YesThe Fed's preferred gauge. An upside surprise revives the hike debate, lifts the 10-Y and compresses a 43× multiple
2026-08-26Durable Goods Orders MoM (Jul)High0.2%0.3%⚠️ MediumBroad industrial capex proxy for the non-tech quarter of the book
2026-09-01ISM Manufacturing PMI (Aug)High55.055.6⚠️ MediumIndustrials is the sector's cleanest cycle gauge; still expansionary
2026-09-04Non-farm Payrolls (Aug)High+12k−23k⚠️ MediumRegime-relevant after July's shock; skilled-trade availability is a cost input for FIX

Recent surprises (last 7 days)

DateEventActualForecastSurpriseImpact
2026-08-07Non-farm Payrolls (Jul)−23k+80k−128.8% belowNegative for the regime — a contracting labour market. Neutral for FIX's order book; mildly positive for trade availability
2026-08-07Unemployment Rate (Jul)4.1%4.2%−2.4% belowMildly positive — the household survey did not confirm the payroll shock
2026-08-12CPI YoY (Jul)3.4%3.4%in lineNeutral. Inflation did not accelerate, which keeps the hike debate a debate
2026-08-12Core CPI YoY (Jul)2.5%2.5%in lineNeutral — core easing from 2.6%
2026-08-13Producer Price Index MoM (Jul)0.0%0.2%−100% belowPositive — soft input-cost pressure, and a contractor buying steel, copper and equipment is a direct beneficiary
2026-08-14Retail Sales MoM (Jul)−0.6%+0.1%−700% belowNegative for the economy, immaterial to FIX
2026-08-14Michigan Consumer Sentiment (Aug)51.054.5−6.4% belowNegative for the economy, immaterial to FIX

Industrials carries MEDIUM macro sensitivity, so the 3-trading-day WAIT-for-event override that applies to Materials, Financials and rate-linked REITs does not apply here — and nothing in the next fourteen days is a high-impact release for this specific name in any case. The one genuinely relevant pair is FOMC minutes on 19 August and core PCE on 26 August, and the transmission is entirely through the discount rate: at 43.63× trailing earnings, this stock is a long-duration asset, and the 10-Y at 4.63% is exactly what forces the 11.13% discount rate that makes the warranted multiple 16.9×. A hot PCE print does not touch Comfort Systems' backlog; it makes the backlog worth less today.

The last week's data was a genuine split: the real economy weakened badly (payrolls −23k, retail sales −0.6%, Michigan sentiment 51.0) while inflation came in exactly on forecast and PPI at zero. For most cyclicals that combination is a problem. For this one it is close to neutral — its four biggest customers are executing capital plans set in boardrooms, not responding to consumer confidence — and the soft PPI is a mild positive on input costs. No economic release in this window changes the signal. The events that would are hyperscaler Q3 capex guidance and the company's own Q3 backlog print, both in late October.

9

Multi-Timeframe Technical Analysis

Trend, RSI and breakout status across monthly / weekly / daily / hourly / 15-minute, with a confluence verdict.
TimeframeTrendDirectionRSIMACDKey S/RBreakoutVol
MonthlyUptrend ↑Bullish76.3+, risingS: $273 · R: $2,074Resist. breakout0.4×
WeeklyUptrend ↑Bullish59.4+, histogram negativeS: $1,500 · R: $2,074Resist. breakout0.8×
DailyWeakening →Neutral52.9−, histogram rising 10 sessionsS: $1,705 · R: $1,922Support breakdown (13 Aug)0.8×
HourlyStrong uptrend ↑Bullish58.6+, risingS: $1,719 · R: $1,797Resist. breakoutn/a
15-minStrong uptrend ↑Bullish51.1+, fadingS: $1,770 · R: $1,789Resist. breakoutn/a
Confluence: Mostly Bullish on the higher timeframes, Neutral on the decision timeframe · MTF Score 67

Weighting note, stated up front. The hourly and 15-minute frames came back with volume_ratio of 0.00 and 0.01 — degenerate volume data. Rather than take 86 and 82 off unverifiable bars at a combined 20% weight, this report uses the framework's own no-intraday fallback: Monthly 35% / Weekly 30% / Daily 35%. That gives 78(0.35) + 71(0.30) + 52(0.35) = 67. Including the intraday frames at the standard weights would have produced 71 — a 4-point difference that changes nothing, but the choice is disclosed rather than buried.

What the table says. The monthly and weekly frames are unambiguously bullish: price is far above every long-term average (SMA200 US$1,441.69, some 23% below spot) and both frames show a resistance breakout. The monthly RSI at 76.3 is deeply overbought, which is what a 2,000% five-year move looks like on a long chart — informative, not immediately actionable. The weekly MACD histogram has turned negative (−43.6), the first sign of the intermediate trend losing thrust.

The decision timeframe is the daily, and it is honestly mixed. Price at US$1,774.06 is above the 20-day (1,722.06) but below a falling 50-day (1,794.49, down from 1,816.37 on 3 August) — the textbook 'weakening' configuration. The multi-timeframe tool still carried a support breakdown flag from its 13 August bar (close 1,727.64); the 14 August close of 1,774.06 reclaimed that level, but one session does not repair a structure.

Cross-timeframe pattern: higher-timeframe bullish with a lower-timeframe pullback in progress. On the framework's own reading that is normally a buy setup — but the qualifier matters here: the pullback has already retraced 19% off its low, so price is no longer at support, it is mid-range and 1.1% under a falling 50-day. The levels that matter: reclaim and hold US$1,794.49 (the 50-day) turns this constructive; two closes below US$1,659.28 resumes the breakdown.

10

Price Chart (6-Month Daily)

A 6-month daily close line with SMA50 and key support/resistance — the visual companion to the MTF table.

Six months of daily closes (Polygon, RAW unadjusted) to the 14 August 2026 close, sampled every second session — 63 plotted points drawn from 125 trading days — with the 50-day simple moving average overlaid (the 50-day line begins once 50 bars of history are available). The shape of the last four months is the whole argument: a vertical run to an intraday high of US$2,073.99 on 14 May, a lower high closing at US$2,066.51 on 22 June, then a descending sequence into the US$1,491.24 intraday low on 29 July, and a +16.7% close-to-close recovery that has so far stalled just under the falling 50-day at US$1,794.49. Marked: the hard stop (US$1,640), the 7 August swing-low support that defines it (US$1,659), the 50-day that must be reclaimed, and the US$2,057.86 analyst consensus.

11

Scenario Summary

Bull / Base / Bear 12-month price paths with triggers and probability weights.

Bull — $2,400 (12m, 25%)

+35.3%. Hyperscaler 2027 capex is confirmed above US$1 trillion at the late-October results, Comfort Systems' backlog pushes through US$18bn, and FY27 EPS comes in at the top of the range (US$66.31 high estimate) with the market still paying ~36× forward. Trigger: two consecutive quarters of double-digit sequential backlog growth plus an explicit 2027 capex raise from at least two of the four hyperscalers. This is the scenario in which the multiple is retrospectively judged to have been correct — note it requires the multiple to hold, not expand.

Base — $1,950 (12m, 55%)

+9.9%. The capex cycle runs as guided through 2027, earnings compound into the multiple, and the multiple gives back some ground: FY27E EPS of US$60.04 at roughly 32.5× forward, against 36.2× on FY26E today. Earnings grow ~23%; the multiple contracts ~10%; the shareholder keeps the difference. This is deliberately below the US$2,057.86 street consensus — the Street is modelling the earnings and largely holding the multiple, and we do not think a 43× trailing contractor holds its multiple through a de-rating market. It is also why the signal is HOLD rather than BUY: +9.9% of expected return is not compensation for a −39% tail.

Bear — $1,080 (12m, 20%)

−39.1%. Three triggers, any two of which get you there. (1) The AI-cohort de-rating. The macro report still carries "S&P 500 concentration / AI earnings-quality unwind" as an armed systemic tail. Comfort Systems is a genuine member of the AI-capex cohort — roughly three-quarters of revenue is technology and industrial — so it inherits the cohort-level leg, not merely its own story: a multiple compression from 43.63× towards 20×, which on a reduced FY27 EPS of about US$54 is US$1,080. A 40–50% move, not a wobble. The tail's trigger is currently receding (breadth is broadening: RSP +3.6% against SPY +2.8% and QQQ +0.6% over one month), which is why this is a 20%-weighted bear and not a Do-Not-Buy. Falsification: continued breadth broadening with backlog still compounding. (2) A hyperscaler capex pause. PwC has data-centre construction spend declining in the late 2020s as spend rotates from training to inference and networking; a single guide-down from two of the four would stall bookings. The calibration is the late-July episode: −12.32% over the three sessions of 27–29 July, from the US$1,733.60 close of 24 July down to US$1,519.96, on sector-wide capex scrutiny compounding a sell-the-news reaction to its own beat — not on anything Comfort Systems did. (3) Competitive margin compression. EMCOR is bidding the same campuses off a larger US$17.14bn RPO base and IES Holdings has just posted backlog up 91% since its fiscal year-end with revenue up 40%, all while the skilled-labour pool tightens; if pricing normalises, the 25.9% gross margin that justifies the premium to EMCOR's economics goes with it.

Probability-weighted 12-month value: 0.25 × $2,400 + 0.55 × $1,950 + 0.20 × $1,080 = $1,888.50 — +6.5% on US$1,774.06. Probabilities sum to 100% with the base case the most probable. The number that matters is not the +6.5%; it is the shape. You are being offered about ten points of base-case upside against a thirty-nine point tail, on a business whose quality nobody disputes. That asymmetry is the entire case for HOLD, and it is why a +16% street consensus target and a HOLD signal are not in conflict.

12

Entry / Exit Rules

Three independent entry paths (Fundamental · Technical · Catalyst) and three exit triggers (Stop-Loss · Thesis · Profit-Target). Any one entry path is a valid entry — the more that agree, the larger the position the conviction ladder suggests. Exits are graded by severity, not count.

How to read this — the Conviction Ladder

The three entry groups are alternative paths to a buy, not a checklist. A group counts only when all its sub-conditions hold. How many groups are satisfied sets the suggested size — it does not gate whether you may enter: 1 group = Half-Size (a valid starter/scale-in), 2 = Full-Size, 3 = Over-Size (highest conviction); 0 = Wait (no path open yet). A strong overall signal can still read Wait here when the stock is well above its entry zones — that flags "good business, no entry edge right now," not a contradiction. Exits are graded by severity of what is live, not by a count: a hard stop is an Exit on its own.
Entry conviction: Wait0 of 3 groups met — no entry path open

Fundamental — not MET

The price is 114% above the anchor's fair value. This path is nowhere near open.
⛔ Price US$1,774.06 < fair value US$828 (warranted 16.9× × FY26E EPS US$48.97) — price is 114% above it
✅ No earnings within 7 calendar days — Q3 estimated ~22 Oct 2026
✅ Underlying-Driver score ≥ 50 — driver is 83

Technical — not MET

Two of three sub-conditions hold; the price-versus-50-day condition does not, and the group is an AND.
⛔ Breakout branch: a close above the 50-day SMA on volume > 1.5× the 20-day average — price US$1,774.06 is BELOW a falling 50-day SMA of US$1,794.49 (down from US$1,816.37 on 3 Aug), and the 14 Aug volume of 374.5k was below the ~467k average
⛔ Pullback branch: a tested bounce off weekly/monthly support with a higher low — the higher-low sequence is real (1,491.24 on 29 Jul → 1,659.28 on 7 Aug → 1,672.79 on 10 Aug → 1,684.05 on 11 Aug → 1,710.02 on 13 Aug) but price is now 19.0% above the 29 Jul intraday low and 16.7% above that session's close, i.e. mid-range and pressing into overhead resistance (the 50-DMA +1.15%, the nearest swing high +2.87%), not at support
✅ RSI 35–65 (not overbought) — RSI(14) is 52.89
✅ MACD histogram positive for ≥ 2 consecutive days — positive for 10 consecutive sessions (+4.23 on 3 Aug rising to +10.06 on 14 Aug)

Catalyst — not MET

The last catalyst resolved against the stock, and the next one is nine weeks out.
⛔ Post-earnings move within 24h > +5% — Q2 was released after the close on 23 Jul, beat on every line, and the stock fell 5.3% the next session (24 Jul) to US$1,733.60, then a further 12.32% over the three sessions of 27–29 Jul to US$1,519.96
✅ Guidance raised or maintained — MET: full-year same-store revenue growth guided to the mid-to-high 30% range, and the dividend was raised 12.5% to US$0.90
⛔ Volume > 2× the 20-day average — 374.5k against a ~467k average, i.e. 0.8×

Forecast:

ENTRY — Fundamental group: price below US$828 fair value
FORECAST: Unlikely on any horizon short of a cohort de-rating.
→ BASIS: US$828 is 53% below spot. The only path that reaches it is the §11 bear (multiple compression towards 20×), and even that lands at US$1,080. Note what would move the target rather than the price: rolling the anchor onto FY27E EPS of US$60.04 lifts fair value to about US$1,015, and each year of ~23% earnings growth lifts it a further ~20%. On current estimates the anchor's fair value crosses US$1,700 around 2029.
→ CONFIDENCE: Unlikely — the trajectory moves the threshold up towards the price rather than the price down to the threshold.

ENTRY — Technical group: a close above the 50-day SMA on >1.5× volume
FORECAST: 1–3 weeks at the current trajectory.
→ BASIS: The gap is small and closing from both directions. Price is US$20.43 (1.1%) below the 50-day, and rising — up US$99.22 over the four sessions from 10 August. The 50-day itself is falling at roughly US$4/session (1,816.37 on 3 Aug → 1,794.49 on 14 Aug), so the two converge even on flat price. A single average day closes the price gap. The binding condition is the volume qualifier: 1.5× the 20-day average means about 700k shares, and the last four sessions have run 272k–395k. That is catalyst-dependent, and there is no company catalyst before late October.
→ CONFIDENCE: Moderate on the price condition, Low on the volume condition — which is why the group forecast is 'reclaim likely, confirmation uncertain'.
→ RISK: a failed reclaim at the 50-day is the classic lower high. Two closes below US$1,659.28 invalidate it.

ENTRY — Technical group, pullback branch: a tested bounce at support
FORECAST: catalyst-dependent, not time-projectable.
→ BASIS: it needs a retest of US$1,659–1,705 with a higher low. From US$1,774.06 that is a 3.9–6.5% pullback, or 0.7–1.2 ATR — an ordinary week's range for this stock. The likeliest trigger inside the window is a hot core PCE print on 26 August.
→ CONFIDENCE: Moderate.

ENTRY — Catalyst group: a >+5% post-earnings move on >2× volume
FORECAST: ~22 October 2026 (estimated Q3 date; not calendar-confirmed).
→ BASIS: purely event-driven. The company has beaten consensus heavily for four straight quarters (Q1 US$10.51 against US$6.78; Q2 US$12.53 against US$10.42), so the probability of a beat is high. The probability of a beat producing a +5% move is not: the last two beats were sold. The condition that would actually change the tape is the backlog print, not the EPS line.
→ CONFIDENCE: Low — high beat rate, poor reaction record.

Ladder outcome: 0 of 3 groups met → WAIT. Unchanged from 25 July. The framework's own language for this state applies exactly: good business, no entry edge now. That is not a contradiction of Timing 59 — Timing says the tape is repairing; the ladder says none of the three defined paths is open at US$1,774.06.

Exit action: Holdno exit trigger is live — hold the position

Stop-Loss — not LIVE

⛔ Two consecutive daily closes below US$1,659.28 (the 7 Aug swing low; hard stop US$1,640, 7.6% / 1.37 ATR below spot) — price is US$1,774.06, 6.9% above the trigger

Thesis Invalidation — not LIVE

⛔ Full-year guidance cut — guidance was raised on 23 Jul to mid-to-high 30% same-store revenue growth
⛔ Revenue growth decelerates below the sector median — FIX +50.3% against EMCOR +20% (Q2, 30 Jul) and IES Holdings +40% (fiscal Q3 ended 30 Jun, reported 31 Jul)
⛔ The primary driver turns to a headwind — hyperscaler 2026 capex is committed at ~US$725bn, up ~77%; driver score 83
⛔ COMPETITIVE: sequential backlog stalls at or below US$14.0bn, or same-store backlog declines, while EMCOR's US$17.14bn RPO base and IES Holdings' backlog (≈US$4.5bn, +91% since its fiscal year-end, revenue +40% YoY as of its 31 Jul print) keep compounding — i.e. the share gain reverses (step 7c propagation)
⛔ CATASTROPHIC (fires alone): a financial-distress, dilution or going-concern gate triggers — none is remotely close on net cash of US$1.80bn (cash US$1.85bn less US$54m reported debt) and 196.7× interest coverage

Profit-Target — not LIVE

⛔ Price reaches the median analyst target of US$2,110 — currently US$1,774.06, 19.0% below it
⛔ RSI > 70 — RSI(14) is 52.89
· Quality has not materially improved to justify the new valuation — Quality is 86 and stable

Forecast:

EXIT — Stop-Loss: two closes below US$1,659.28
FORECAST: unlikely in the next 4–6 weeks at the current trajectory.
→ BASIS: the trigger is 6.9% below spot, or 1.17 ATR, and momentum is currently pointing the other way (MACD histogram positive ten sessions, higher swing lows since 29 July). Reaching it requires a fresh catalyst, not drift.
→ RISK TRIGGER: a hot core PCE print on 26 August, or a hyperscaler capex signal at any point. The 27–29 July precedent shows this stock can travel −12.3% in three sessions on sector-wide capex scrutiny rather than on any news of its own.

EXIT — Thesis Invalidation
FORECAST: not before the Q3 print (~22 Oct). Every leg is a quarterly disclosure; none can change intra-quarter. The one to watch is the backlog line, and the specific number is US$14.0bn.
→ CONFIDENCE: High that it stays clear through the window; the informational content arrives all at once in late October.

EXIT — Profit-Target: US$2,110 with RSI > 70
FORECAST: unlikely inside 3 months. It needs +19.0% and an overbought RSI simultaneously; the stock has not seen RSI above 70 on the daily since May.
→ NOTE: this is the one exit condition a holder should actively want to hit.

Exit outcome: 0 of 3 groups live → HOLD. Nothing mechanical says sell today. Read that precisely: the Valuation-Ceiling gate blocks buying; it does not generate a sell.

Imagine you act at the current price of $1,774.06 · as of 15 August 2026

What if you bought now?

You are risking about 7.6% to the hard stop, and a 39% bear tail, to gain about 9.9% of base-case upside.

What you're risking. Press the button at US$1,774.06 today and your hard stop sits at US$1,640 — US$134.06, or 7.6%, which is 1.37 ATR away and can be covered in a week and a half of ordinary movement for this stock. Beyond the stop, the bear path is US$1,080: −US$694, or −39.1%, driven by an armed AI-cohort de-rating that Comfort Systems genuinely belongs to. You would be buying with none of the three entry paths open — above the anchor's fair value, below a falling 50-day, and with the last catalyst having resolved against you (a comprehensive beat that the market sold 5.3%). And you would be buying a name that has lost 13% over three months while its own sector gained 7%, so you are paying for a recovery the market is not yet confirming. Path risk between now and the decisive event: FOMC minutes on 19 August, core PCE on 26 August, and — the real one — hyperscaler 2027 capex guidance in late October, nine weeks of waiting.

What you're gaining. Immediately: a business earning about 44% on invested capital against an 11.13% cost of it, with US$14.06bn of signed backlog — 1.25× a full year's revenue, up 73% year on year — and net cash of US$1.80bn. The base case is US$1,950, +US$175.94, or +9.9%; the bull is US$2,400, +35.3%. You collect a 2.8–3.6% FCF yield (not a dividend — the 0.17% yield is a rounding error) and you own the un-priced service annuity on a decade of data-centre installs, plus the modular capacity coming online. Risk-reward on the stop: US$175.94 of base-case gain against US$134.06 of stop risk = 1.31 : 1. Against the bear tail rather than the stop, it is US$175.94 against US$694 = 0.25 : 1.

The read: acting now is not obviously wrong — the business is excellent and the tape has stopped falling — but you would be accepting a 1.31 : 1 risk-reward on the stop and a 0.25 : 1 on the tail, with no entry path open, purely to avoid missing a re-rating that would have to happen from 43× trailing earnings. Waiting materially improves the deal: a reclaim of US$1,794.49 on real volume opens the Technical path, and a retest of US$1,659–1,705 opens it at a better price. Both are plausible inside a month. This is an assessment of the trade-off, not a recommendation to buy.

What if you sold now?

You are giving up about 9.9% of base-case upside and a compounding backlog to protect against a 39% tail that is armed but not triggering.

What you're giving up. Closing at US$1,774.06 forfeits US$175.94 (+9.9%) of base-case upside to US$1,950 and US$625.94 (+35.3%) in the bull case, plus the 2.8–3.6% FCF yield and the embedded optionality — the service annuity, the modular capacity and a net-cash acquirer's ability to buy in a downturn. You would also be selling a business at the strongest operating moment in its history: backlog up 73%, revenue up 50%, gross margin confirmed structural at 25.9% without the Q1 one-off, and a Street that on FMP's panel sees US$2,057.86 and on Yahoo's sees US$2,210.86. You would not be selling below fair value on the anchor — at 2.58× warranted you would be selling well above it — but you would be selling into a driver that is measurably still accelerating.

What you're protecting. US$694 per share, 39.1%, if the bear plays out. That risk is real and specific: Comfort Systems is a genuine member of the AI-capex cohort the macro report still carries as an armed systemic tail, it trades at 2.58× its warranted multiple and 1.90× the Industrials guardrail, and it has already demonstrated it will fall 12.3% over three sessions on sector-wide capex scrutiny rather than on news of its own. You would also sidestep the 14.5% drawdown from the May high that current holders are already carrying.

The read: no exit rule is triggered — 0 of 3 groups are live. The stop is 6.9% below, no thesis leg has broken, and the profit target is 19% above. There is no mechanical reason to act. The Valuation-Ceiling gate blocks adding to a position; it does not manufacture a sell. For an existing holder this is a hold-and-watch-the-backlog zone, with a defined stop at US$1,640 and a trim trigger at US$2,110. For someone with no position it is a watch, not a buy.

13

Position Sizing Context

Illustrative portfolio math (not advice) translating conviction into an allocation given risk-per-share and volatility.

Position sizing not computed — no risk budget or portfolio role was specified for this watchlist name, and the framework does not invent one. The §12 Conviction Ladder reads Wait (0 of 3 entry paths met), which sets the ladder factor to 0×: there is no entry edge at US$1,774.06, so the honest guidance is the levels to watch rather than a percentage.

Levels instead of a percentage. A reclaim of the 50-day at US$1,794.49 on volume above roughly 700k shares opens the Technical path; a retest of US$1,659–1,705 with a higher low opens it at a better price. The hard stop is US$1,640. The Fundamental path needs US$828 and is not reachable without a cohort de-rating.

Volatility context — this is the part to take seriously. ATR(14) is US$98.20 = 5.54% of price: a normal day moves this stock more than a normal month moves a utility. Beta is 1.701, so a 5% position behaves like an 8.5% position in risk terms against the market. The maximum drawdown over the last twelve months was −28.1% (an intraday US$2,073.99 on 14 May to an intraday US$1,491.24 on 29 July), and it took eleven weeks. The S&P's own realised volatility over the same window, with VIX at 14.63, is a fraction of that. Anyone sizing this name off its quality score rather than its volatility will be surprised by the P&L swings.

Catalyst clustering is 62 — above the 50 line, so no additional size reduction on event density would be warranted even if a path were open.

14

Calibration Snapshot

Machine-readable snapshot of every score, level and signal, saved alongside the HTML so the next run can compute deltas.
{
  "ticker": "FIX",
  "date": "2026-08-15",
  "version": "v6",
  "brand": "",
  "company": "Comfort Systems USA, Inc.",
  "exchange": "NYSE",
  "exchange_ticker": "NYSE:FIX",
  "isin": "US1999081045",
  "api_ticker": "FIX",
  "currency": "USD",
  "finder_ticker": "FIX",
  "finder_exchange": "\ud83c\uddfa\ud83c\uddf8 NYSE",
  "sector": "Industrials",
  "gics_sector": "Industrials",
  "analysis_status": "on-going",
  "lifecycle_stage": "growth",
  "price_at_rating": 1774.06,
  "prior_price_at_rating": 1733.6,
  "eps_trailing": 40.66,
  "trailing_pe": 43.63,
  "signal_short": "HOLD",
  "signal_medium": "HOLD",
  "signal_long": "HOLD",
  "primary_signal": "HOLD",
  "user_horizon": null,
  "short_entry_confirmed": false,
  "short_hold_reason": "expensive",
  "short_cap_reason": "moot \u2014 no BUY at any horizon. The base matrix returns HOLD on the High-Quality/Expensive row before any cap, and the Valuation-Ceiling gate independently caps all three horizons. Technical and Catalyst entry groups are both UNMET, so short_entry_confirmed=false is recorded, but no short-horizon cap was applied. The quality-starter override is barred: it requires Valuation >= 40 (not Expensive).",
  "quality_score": 86,
  "valuation_score": 27,
  "timing_score": 58,
  "driver_score": 83,
  "driver_label": "Strong Tailwind (amplification-eligible but blocked \u2014 base signal HOLD, and Expensive band bars STRONG BUY)",
  "driver_commodity_trend": "n/a \u2014 non-commodity driver (AI / hyperscale data-centre capex cycle)",
  "quality_detail": {
    "industry_benchmark_name": "ROIC vs WACC + Backlog Growth (Industrials)",
    "industry_benchmark_value": "ROIC ~44% vs WACC 11.13%; backlog +73.2% YoY",
    "industry_benchmark_score": 95,
    "moat_score": 62,
    "roic_pct": 44.0,
    "roic_basis": "NOPAT US$1,444m / invested capital US$3,274m (equity US$3,220m + REPORTED total debt US$54m, not FMP's lease-inclusive US$303.9m)",
    "net_cash_usd_bn": 1.8,
    "total_debt_reported_usd_m": 54,
    "total_debt_fmp_lease_inclusive_usd_m": 303.9,
    "capital_allocation": 82,
    "management_skin_in_game": 42,
    "backlog_usd_bn": 14.06,
    "backlog_yoy_pct": 73.2,
    "backlog_qoq_pct": 12.9,
    "backlog_to_ttm_revenue": 1.25
  },
  "valuation_detail": {
    "fcf_yield": 3.55,
    "fcf_yield_yahoo_basis": 2.84,
    "implied_growth_rate": 19.5,
    "consensus_growth_rate": 22.6,
    "historical_valuation_decile": 8,
    "fwd_pe_fy26": 36.2,
    "fwd_pe_fy27": 29.5,
    "peer_pe_eme": 26.13,
    "peer_pe_iesc": 33.59,
    "ev_ebitda": 31.1
  },
  "timing_detail": {
    "mtf_confluence": 67,
    "risk_reward_score": 46,
    "position_risk_score": 63,
    "composite_short": 56,
    "composite_medium": 57,
    "composite_long": 64,
    "relative_strength_vs_spy": -3.3,
    "relative_strength_vs_sector": -3.4,
    "relative_strength_vs_spy_3m": -16.9,
    "relative_strength_vs_sector_3m": -20.0,
    "catalyst_clustering_score": 62,
    "dynamic_macro_weight": 0.15,
    "rsi_14": 52.89,
    "sma50": 1794.49,
    "sma200": 1441.69,
    "atr_14": 98.2
  },
  "relative_strength_vs_spy": -3.3,
  "relative_strength_vs_sector": -3.4,
  "economic_alignment_stance": "Trend-Following",
  "economic_alignment_conviction": 78,
  "economic_alignment_pressure": "Tailwind",
  "economic_alignment_source": "sector-map",
  "macro_report_date": "2026-08-12",
  "warranted_multiple": 16.9,
  "actual_multiple": 43.63,
  "val_multiple_basis": "clean trailing P/E on US$40.66 diluted TTM EPS (fwd 36.2x FY26E / 29.5x FY27E \u2014 all three above the 23x Industrials guardrail)",
  "warranted_ratio": 2.58,
  "val_band": "expensive",
  "discount_rate_r": 0.1113,
  "risk_free_10y": 0.0463,
  "g_near": 0.1,
  "g_term": 0.03,
  "nonop_pct_of_net_income": -0.8,
  "clean_pe": 43.63,
  "clean_peg": 1.93,
  "competitive_share_trajectory": "gaining",
  "competitive_threat_level": "moderate",
  "hard_gate_state": "caution",
  "gates_triggered": [
    "Valuation Ceiling (43.63x clean trailing P/E vs 16.9x warranted = 2.58x; also >= the 23x Industrials guardrail on trailing, FY26E and FY27E)"
  ],
  "gates_caution": [
    "Insider selling (US$152m / 12m, zero purchases) \u2014 below the DNB Trigger-4 bar"
  ],
  "do_not_buy_triggers": [],
  "dnb_checked": "Trigger 1 (leverage + rising rates): NOT fired \u2014 net cash US$1.80bn (cash US$1.85bn less REPORTED total debt US$54m; FMP's lease-inclusive US$303.9m still leaves net cash US$1.55bn), interest coverage 196.7x. Trigger 2 relative arm: NOT fired \u2014 43.63x sits ~8th decile of the 5-yr range, not the top decile (47-48x printed Apr-May 2026). Trigger 2 absolute arm (a) deep-expensive-alone: BOTH numeric legs are satisfied (2.58x >= 2.0x warranted; 43.63x >= 1.5 x 23x guardrail = 34.5x) and the trigger is held off SOLELY by the exceptional/proven/durable-growth carve-out. Evidence: revenue +50.3% YoY (US$3,265.7m vs US$2,173.3m), diluted EPS +91.9% (US$12.53 vs US$6.53), backlog US$14.06bn = +73.2% YoY and +12.9% QoQ, of which US$13.70bn (97%) is SAME-STORE i.e. organic not acquired, backlog = 1.25x TTM revenue (~15 months of signed work), gross margin 25.87% in Q2 confirming the Q1 expansion was structural rather than a one-off close-out gain, and forward consensus of +22.6% (FY27, n=7) then +25.7% (FY28). DURABILITY, argued head-on because the carve-out requires it and S5 separately scores the forward driver leg only 68: the durability evidence is CONTRACTED, not forecast \u2014 US$14.06bn of signed backlog equal to 1.25x TTM revenue, i.e. ~15 months of work already booked, carrying to roughly end-2027, and 97% of it same-store rather than acquired. That is what separates 'proven and durable' from 'extrapolated'. The 68 on the driver's forward leg is about the NEXT backlog (2028+), which is genuinely unknowable and is precisely why this is a HOLD and why the thesis-invalidation floor is a bookings number (sequential backlog at or below US$14.0bn). Trigger 2 absolute arm (b) expensive + live de-rating catalyst: NOT fired, on three grounds. (i) FIX IS a genuine AI-capex-cohort member (~75% of revenue technology+industrial) and therefore inherits the cohort de-rating leg in the S11 Bear, which it carries in full (43.63x -> 20x, -39.1%). (ii) But the macro report's armed tail is specifically an EARNINGS-QUALITY / index-concentration unwind, and FIX has no earnings-quality gap for it to expose: nonop_pct_of_net_income is NEGATIVE at -0.8%, i.e. reported earnings are understated versus operating, and FIX is not a top-weight index constituent. (iii) The tail's trigger is RECEDING per the 2026-08-12 macro report (breadth broadening: RSP +3.6% vs SPY +2.8% vs QQQ +0.6% over 1mo). An armed-but-not-triggering systemic tail is not a LIVE de-rating catalyst; it caps via the Valuation-Ceiling gate, not via a hard prohibition. Trigger 3 (persistent negative revisions): NOT fired \u2014 estimates are RISING (FY26E 48.97, FY27E 60.04, FY28E 75.46). Trigger 4 (insider selling spike): NOT fired \u2014 the bar is 3+ C-suite selling >25% of holdings inside 60 days. The three-insider cluster (CEO Lane, CFO George, director Myers) was late FEBRUARY, ~6 months ago; the only sales inside the 60-day window are one DIRECTOR's (Myers, 7,500 shares, 10-11 Aug). Recorded as a Quality drag (management skin-in-game 42) and a caution gate, not a DNB. Trigger 5 (structural business-model threat): NOT fired \u2014 competitive threat is moderate and FIX is GAINING share (backlog +73% vs EMCOR RPO +44%; revenue +50% vs +20%).",
  "entry_groups_met": 0,
  "entry_conviction": "Wait",
  "exit_groups_live": 0,
  "exit_action": "Hold",
  "fair_value_est": 828,
  "fair_value_basis": "warranted 16.9x x FY26E EPS US$48.97 (TTM basis gives US$687; FY27E basis gives US$1,015)",
  "stop_loss": 1640,
  "target_price": 2058,
  "scenario_base_target": 1950,
  "scenario_bull_target": 2400,
  "scenario_bear_target": 1080,
  "scenario_probabilities": {
    "bull": 25,
    "base": 55,
    "bear": 20
  },
  "scenario_weighted_value": 1888.5,
  "analyst_consensus_target": 2057.86,
  "analyst_target_high": 2225,
  "analyst_target_low": 1800,
  "analyst_target_median": 2110,
  "analyst_target_upside_pct": 16.0,
  "analyst_grades_consensus": "Buy",
  "analyst_bullish_pct": 55.6,
  "analyst_coverage_count": 9,
  "fmp_rating": "B+",
  "fmp_overall_score": 3,
  "recent_upgrades_30d": 0,
  "recent_downgrades_30d": 0,
  "quality_confidence": 78,
  "valuation_confidence": 74,
  "timing_confidence": 62,
  "driver_confidence": 66,
  "overall_confidence": 62,
  "next_update_date": "2026-08-31",
  "next_update_basis": "default +14d from 2026-08-15 (2026-08-29 is a Saturday, rolled to the next trading day). Q3 earnings est. ~2026-10-22, inferred from filing cadence \u2014 far beyond the 14-day cap; no dated company catalyst inside the window",
  "next_check_date": "2026-08-31",
  "price_as_of": "2026-08-14 close (2026-08-15 is a Saturday; US markets shut)"
}

In plain English. Comfort Systems is one of the best-run businesses on the watchlist — Quality 86, roughly 44% return on invested capital against an 11.13% cost of it, US$14.06bn of signed backlog up 73% in a year, US$1.80bn of net cash, and a share count that is shrinking. It is also priced at 43.63× trailing earnings against a warranted 16.9× and an industry rich line of 23×. Both of those things are true at once, and the framework's answer when they are is HOLD on all three horizons: a great business at the wrong price.

What changed since 25 July. Almost nothing fundamental — Q2 was already in the last report. Quality 85 → 86, Valuation 25 → 27 (forward multiples came in as estimates rose), Driver 80 → 83, Economic Alignment 73 → 78. The one big move is Timing 33 → 58, and it is a tape story, not a re-score: the post-earnings breakdown the last report was scoring into completed at a US$1,519.96 close on 29 July (intraday low US$1,491.24), and price has since recovered 16.7% close-to-close on higher swing lows. The signal, the gate, the ladder and the exit action are all unchanged.

The one judgement call. Do-Not-Buy Trigger 2 is numerically satisfied on both arms — 2.58× warranted is past the 2.0× line, and 43.63× is past 1.5× the 23× guardrail. It does not fire because the trigger carves out exceptional, proven, durable growth, and this is what that looks like: revenue +50.3%, diluted EPS +91.9%, backlog +73.2% year on year and +12.9% sequentially, 97% of it same-store rather than acquired, and 1.25× a full year's revenue already signed. Arm (b) — Expensive plus a live de-rating catalyst — does not fire either: the AI-concentration tail is armed but its trigger is receding, and Comfort Systems has no earnings-quality gap for an earnings-quality unwind to expose (non-operating income is −0.8% of net income). An armed-but-not-triggering tail caps through the Valuation-Ceiling gate; it does not manufacture a hard prohibition. Reasonable people could disagree, and the §11 bear carries the cohort de-rating leg in full so the risk is visible either way.

15

Data Sources & Methodology

Audit trail of every data source: fully available (✓), fallback (⚠), or failed (✗), plus provenance-based confidence haircuts.
Data Source Status
get_company_profile Sector, ISIN US1999081045, beta 1.701, market cap US$62.44bn, CEO Brian E. Lane
get_yahoo_quote Price US$1,774.06, currency USD, EPS trailing 40.60, trailing P/E 43.70, EV US$64.80bn
get_financial_ratios TTM ratios; diluted P/E 43.63×, ROE 55.3%, interest coverage 196.7×, dividendPerShareTTM 3.00
get_income_statement 8 quarters. Q2'26 revenue US$3,265.7m, diluted EPS US$12.53; used for the step-7b decomposition
get_technical_indicators 252 daily bars to 14 Aug. AUTHORITATIVE for every price-vs-moving-average claim in this report
get_multi_timeframe_analysis Daily bar one session stale (13 Aug, 1,727.64) vs the 14 Aug indicator series; hourly/15-min volume_ratio 0.00/0.01 — degenerate. §9 therefore uses the no-intraday fallback weights
get_stock_prices (FIX/SPY/XLI) Date labels run ONE SESSION BEHIND — the tool emits bars labelled 2026-02-16 (a market holiday) and Sundays 2026-07-19 and 2026-08-02 with full volume. Close SEQUENCE is correct and is used for the chart and for relative strength. EVERY date in this report has been re-derived from get_yahoo_prices and get_technical_indicators, not from these labels
get_yahoo_prices (FIX) Pulled specifically to correct the session dating. Confirms: 2073.99 intraday high = 14 May; 2066.51 close = 22 Jun; 1491.24 intraday low / 1519.96 close = 29 Jul (28 Jul low was 1533.41, close 1626.32); 1659.28 swing low = 7 Aug; 1774.06 close = 14 Aug
get_analyst_estimates FY26E EPS US$48.97 (n=7), FY27E US$60.04 (n=7), FY28E US$75.46 (n=2)
get_price_target_consensus High 2,225 / median 2,110 / consensus 2,057.86 / low 1,800 — checked for degeneracy (high=low=median), not degenerate
get_yahoo_analyst_targets (via get_yahoo_quote) Cross-check: mean US$2,210.86, median 2,172, high 2,500, low 1,910, n=7 — higher than FMP, not lower
get_price_target_summary 6 targets last quarter, 3 last month — thin monthly coverage, −5% valuation confidence
get_stock_grades 15 actions. Last 30 days: KeyBanc Overweight maintain + UBS Buy maintain, both 27 Jul. Last change: KeyBanc upgrade 24 Apr
get_grades_consensus 5 Buy / 4 Hold / 0 Sell → 55.6% bullish
get_ratings_snapshot B+ (3/5): ROE 5, ROA 5, D/E 4, P/E 1, P/B 1 — independent confirmation of the quality/valuation split
get_stock_dividends RECONCILED: trailing four (0.90 + 0.80 + 0.70 + 0.60) = US$3.00 = dividendPerShareTTM. The US$0.90 declared 23 Jul is a genuine RAISE from US$0.80, not a re-declaration; ex-date 13 Aug 2026
get_polygon_news 15 articles with sentiment; 7 of 9 FIX-specific tags positive over 90 days
get_related_tickers EME, PWR, ETN, GEV, NVT, IESC, VRT, STRL, MYRG, MTZ — seeded the step-7c competitor set
get_financial_ratios (EME, IESC) Peer valuation lens: EME P/E 26.13× / EV/EBITDA 16.12×; IESC 33.59× / 25.12×
get_economic_calendar 35 US high-impact events, 7 Aug – 13 Sep
get_key_economic_indicators 10-Y 4.63% (13 Aug) — the risk-free input to r; VIX 14.63; curve +0.51; funds 3.63%
get_earnings_calendar Returned EMPTY for FIX. Q3 date of ~22 Oct 2026 is INFERRED from the filing cadence (Q3 FY25 filed 23 Oct 2025) and corroborated by third-party estimate pages — NOT confirmed by the calendar tool. Gate 2 and next_update_basis both rest on it
Web search (backlog, competitors, capex, insiders) Backlog US$14.06bn / US$8.12bn prior-year / US$13.70bn same-store from press-release-derived reporting of the 23 Jul release; EMCOR RPO US$17.14bn; hyperscaler 2026 capex ~US$725bn; insider Form-4 aggregation
Macro report MacroDriver-state-20260812.json Regime, XLI sector signals (O/O/SO), armed-tail status. Stamped 2026-08-12, two days old
Impact on scores:

Net effect on confidence: −13 points from a notional 75 baseline, concentrated in Timing.

Pricing date. This report is dated Saturday 15 August 2026, when US markets are shut. Every price, indicator and technical level in it is therefore taken from the Friday 14 August 2026 close — US$1,774.06 — which is the latest print in existence. No figure has been carried forward or estimated to the report date, and no price was re-pulled on a non-trading day.

Price-data hygiene (mandatory disclosure). Every price-versus-moving-average test in §7, §9, §10 and §12 uses RAW, unadjusted Polygon closes — not dividend-adjusted or total-return series. On this name the distinction is nearly immaterial (the yield is 0.17%), but the discipline is applied regardless because it has inverted moving-average reads on high-distribution names before. The SPY and XLI series are used for relative strength only, never for a level-versus-average claim. The Step-2b commodity price-trend overlay does not apply: the driver is a capital-expenditure cycle, not a commodity price (driver_commodity_trend: n/a).

Debt definition, disclosed. Net cash, the ROIC denominator and the financial-distress gate all use the company's reported total debt of US$54m (long-term debt US$53.8m at 30 June 2026, down from US$139.1m at 31 December 2025), not FMP's totalDebt of US$303.9m, which is lease-inclusive. The difference is material to the arithmetic — net cash US$1.80bn versus US$1.55bn, and ROIC 44% versus 41% — though not to any conclusion. An earlier draft of this report used the lease-inclusive figure without saying so; that is corrected here and the definition is now stated wherever the number appears.

Session dating, corrected. An earlier draft of this report took its dates from get_stock_prices, whose labels run one session behind. Every date in this report has been re-derived from get_yahoo_prices and get_technical_indicators. The corrections that mattered: the US$1,491.24 low was 29 July (not 28 July), the US$2,073.99 high was 14 May (not 13 May), the US$2,066.51 lower-high close was 22 June (not 21 June), and the US$1,659.28 swing low that defines the stop was 7 August (not 9 August — a Sunday). The last of those matters to a score, not just to prose: it makes the swing low five sessions old rather than three, which removed the freshness bonus from the position-risk sub-signal.

A causal attribution, corrected. An earlier draft attributed the late-July decline to an Alphabet Q2 report on 28 July. Alphabet reported on 22 July and fell ~7% on 23 July on its raised US$195–205bn capex guide. Comfort Systems' own decline — −12.32% over 27–29 July — was a separate episode: a sell-the-news reaction to its own 23 July print compounded by sector-wide capex scrutiny ahead of Microsoft (29 July) and Amazon (30 July). The transmission mechanism the report describes is real; the originally-named trigger was not.

Peer data, refreshed. The IES Holdings comparison previously carried its 31 March 2026 figures (backlog ~US$3.9bn, revenue +17%). IES reported fiscal Q3 on 31 July 2026: backlog ≈US$4.5bn, +91% since fiscal year-end, revenue +40% YoY to US$1.24bn, net income more than doubled to US$153m. Every IES-bearing figure in this report now carries the fiscal-Q3 numbers: the §3 revenue-trajectory and backlog rows, the §3 competitor table and threat summary, the §11 Bear competitive trigger, and both §12 legs — the COMPETITIVE leg and the revenue-deceleration leg of the thesis-invalidation rule. That last one is worth naming: it still read "+17%" after the first correction pass, because §12 carries two separate IES-bearing conditions and only one was swept. It was caught on re-audit and fixed. The rule's state never changed — FIX at +50.3% is above both benchmarks either way, so the leg was not and is not live — but a stale figure presented as current inside a live exit rule is a defect regardless of whether it moves the answer. The FMP TTM peer multiples (IESC P/E 33.59×, net margin 11.45%) are unaffected and stand.

Provider disagreement, disclosed. Yahoo reports total cash of US$70.54m; FMP reports cash per share of US$52.66 (≈US$1.86bn) and a cash ratio of 0.389 that corroborates its own figure. This report uses the FMP cash number throughout, including in the net-cash and ROIC calculations. Yahoo's trailing EPS of US$40.60 also differs slightly from the US$40.66 obtained by summing the four reported diluted quarters; the summed figure is used, giving a trailing P/E of 43.63× rather than Yahoo's 43.70×.

Author self-audit (Layer 1). Data-basis traps checked this run: (1) Earnings quality (step 7b) — TTM non-operating income is −US$11.26m, i.e. −0.8% of net income, so reported earnings are not inflated; clean P/E equals reported P/E at 43.63× and no normalisation was needed. (2) Share count — 35.254m diluted × US$1,774.06 = US$62.5bn, reconciling with the reported US$62.4bn market cap; no stale-share-count distortion. (3) Dividends — verified with the tool, not a search summary; the trailing four payments sum exactly to the provider's TTM figure, and the 23 Jul US$0.90 is a genuine raise from US$0.80, not a same-amount re-declaration. (4) Analyst consensus — tested for the degenerate high=low=median pattern; it is not degenerate, and the Yahoo panel was pulled anyway as a cross-check. (5) Economic-study check — not applicable; this is not a development-stage resource name. (6) Live-verify list — corporate status confirmed actively trading on the NYSE this run; the 23 Jul Q2 release, the 23 Jul dividend declaration with its 13 Aug ex-date, and the 10–11 Aug director Form 4s are all this-run sources. (7) Session dating — every date re-derived from get_yahoo_prices after the get_stock_prices label shift was found; see the correction note above. (8) Directional reconciliation — Quality 86 is carried by a benchmark score of 95 and ~44% ROIC and is dragged by a moat of 62 and management alignment of 42; Valuation 27 is reproduced independently by the anchor (2.58×), the peer median (a 67% premium to EMCOR) and FMP's own 1-of-5 P/E and P/B scores; Timing 59 is reconciled sub-signal by sub-signal in §7 and its 25-point move is attributed to a specific, dated tape event. Flagged for the independent auditor: the Q3 earnings date is inferred, not tool-confirmed; the backlog figures are press-release-derived rather than read from the 8-K exhibit; and the Do-Not-Buy Trigger 2 call is a genuine judgement in which both numeric arms are satisfied and only the growth carve-out and the receding-tail status prevent a hard prohibition.

DISCLAIMER: This is a quantitative framework for educational purposes only. It is not financial advice. Always do your own research and consult a licensed financial advisor before making investment decisions.