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.
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.
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-signal | Value (TTM / latest Q) | Peer / sector reference | Score | Read |
|---|---|---|---|---|
| Revenue trajectory | Q2 revenue US$3,265.7m, +50.3% YoY; TTM US$11,228m | EMCOR +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 | 95 | Fastest 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 peers | Gross 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% | 90 | The 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 generation | Q2 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 phase | 88 | Strong, 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 health | Cash US$1.85bn vs reported total debt US$54m → net 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/EBITDA | 95 | Effectively 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 visibility | US$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) | 95 | Backlog 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 intensity | Capex/share US$11.08 on revenue/share US$318.79 → 3.5% of revenue | Industrials 4–6% typical | 82 | Asset-light for a business adding modular plants. Growth is funded out of working capital, not the balance sheet. |
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.
| Named competitor | Threat type | Share trajectory | Moat-erosion vector |
|---|---|---|---|
| EMCOR Group (NYSE:EME) | Direct merchant rival — the other national MEP contractor of scale | FIX gaining | EMCOR'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-led | Stable / mild share gain by IES | Updated 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 | Stable | Primarily 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 OEMs | Vertical substitution | Stable — watch item | The 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 scarcity | Constraint, not a rival — but it behaves like one | Tightening for everyone | Every 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.
| Component | Reading | Score |
|---|---|---|
| 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.
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×.
| Lens | Weight | Reading | Score |
|---|---|---|---|
| Warranted-multiple anchor | 40% | 2.58× warranted; the guardrail breached on trailing and both forward years | 12 |
| Sector / peer median | 20% | 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 decile | 15% | 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 consensus | 15% | 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.
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.
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.
| Component | Score (1–5) | Read |
|---|---|---|
| Overall | B+ (3) | Good, dragged by valuation |
| Return on equity | 5 | ROE 55.3% |
| Return on assets | 5 | ROA 17.0% |
| Debt/equity | 4 | Net cash |
| Price/earnings | 1 | The lowest score available |
| Price/book | 1 | P/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.
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.
| Horizon | Assessment | Evidence & date | Score | Weight |
|---|---|---|---|---|
| Historical (12–24m) | Explosive and accelerating | Big-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. | 95 | 25% |
| Current state | Strongly favourable, with visible scepticism | 2026 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. | 85 | 50% |
| Forward (6–12m) | Positive but genuinely uncertain | Consensus 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. | 68 | 25% |
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.
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
| Sub-signal | Reading (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 |
| MACD | Line −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 MAs | US$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 |
| Bollinger | Mid-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 / OBV | OBV 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 / volatility | ATR(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.
| Window | FIX | SPY | XLI (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 position | US$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.
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,640 — US$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.
| Sub-signal | Reading | Score |
|---|---|---|
| Fed direction | On hold with cuts priced out; the macro report describes a live hike-versus-hold debate. Funds 3.63%, 2-Y 4.15%. | 35 |
| VIX | 14.63 — below 15, risk-on | 85 |
| Yield curve | 10-Y minus 2-Y = +0.51, normal and steepening from +0.48 | 75 |
| Sector regime | XLI Outperform / Outperform / Strong Outperform — rotation into Industrials | 80 |
| Adjusted down for a discount-rate-sensitive 43× multiple in a no-cuts regime | 55 | |
Sentiment = 56 (grades weighted heaviest as the framework's primary signal; the news tone discounted for crowding).
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.
| Date | Event | Impact | Forecast | Previous | Relevant? | Why |
|---|---|---|---|---|---|---|
| 2026-08-18 | Building Permits / Housing Starts (Jul) | High | 1.37m / 1.35m | 1.374m / 1.427m | ⚠️ Medium | Non-residential read-through only — FIX's demand is tech capex, not housing |
| 2026-08-19 | FOMC Minutes | High | — | — | ✅ Yes | Rates set the discount rate that produces the 11.13% cost of capital behind the 16.9× warranted multiple |
| 2026-08-25 | CB Consumer Confidence (Aug) | High | — | 90.8 | ❌ No | Consumer sentiment has no meaningful transmission to a data-centre MEP contractor |
| 2026-08-26 | Core PCE Price Index MoM (Jul) | High | 0.3% | 0.1% | ✅ Yes | The Fed's preferred gauge. An upside surprise revives the hike debate, lifts the 10-Y and compresses a 43× multiple |
| 2026-08-26 | Durable Goods Orders MoM (Jul) | High | 0.2% | 0.3% | ⚠️ Medium | Broad industrial capex proxy for the non-tech quarter of the book |
| 2026-09-01 | ISM Manufacturing PMI (Aug) | High | 55.0 | 55.6 | ⚠️ Medium | Industrials is the sector's cleanest cycle gauge; still expansionary |
| 2026-09-04 | Non-farm Payrolls (Aug) | High | +12k | −23k | ⚠️ Medium | Regime-relevant after July's shock; skilled-trade availability is a cost input for FIX |
| Date | Event | Actual | Forecast | Surprise | Impact |
|---|---|---|---|---|---|
| 2026-08-07 | Non-farm Payrolls (Jul) | −23k | +80k | −128.8% below | Negative for the regime — a contracting labour market. Neutral for FIX's order book; mildly positive for trade availability |
| 2026-08-07 | Unemployment Rate (Jul) | 4.1% | 4.2% | −2.4% below | Mildly positive — the household survey did not confirm the payroll shock |
| 2026-08-12 | CPI YoY (Jul) | 3.4% | 3.4% | in line | Neutral. Inflation did not accelerate, which keeps the hike debate a debate |
| 2026-08-12 | Core CPI YoY (Jul) | 2.5% | 2.5% | in line | Neutral — core easing from 2.6% |
| 2026-08-13 | Producer Price Index MoM (Jul) | 0.0% | 0.2% | −100% below | Positive — soft input-cost pressure, and a contractor buying steel, copper and equipment is a direct beneficiary |
| 2026-08-14 | Retail Sales MoM (Jul) | −0.6% | +0.1% | −700% below | Negative for the economy, immaterial to FIX |
| 2026-08-14 | Michigan Consumer Sentiment (Aug) | 51.0 | 54.5 | −6.4% below | Negative 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.
| Timeframe | Trend | Direction | RSI | MACD | Key S/R | Breakout | Vol |
|---|---|---|---|---|---|---|---|
| Monthly | Uptrend ↑ | Bullish | 76.3 | +, rising | S: $273 · R: $2,074 | Resist. breakout | 0.4× |
| Weekly | Uptrend ↑ | Bullish | 59.4 | +, histogram negative | S: $1,500 · R: $2,074 | Resist. breakout | 0.8× |
| Daily | Weakening → | Neutral | 52.9 | −, histogram rising 10 sessions | S: $1,705 · R: $1,922 | Support breakdown (13 Aug) | 0.8× |
| Hourly | Strong uptrend ↑ | Bullish | 58.6 | +, rising | S: $1,719 · R: $1,797 | Resist. breakout | n/a |
| 15-min | Strong uptrend ↑ | Bullish | 51.1 | +, fading | S: $1,770 · R: $1,789 | Resist. breakout | n/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.
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.
+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.
+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.
−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.
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.
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.
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 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.
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.
{
"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.
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.