atlasHold
Open analysis → · PDF unavailable
Preview
# SHLS -- Stock Analysis (Atlas) > Date: 2026-04-02 > Quarter: Q4 FY25 (Dec-2025) > Market cap: $1.17B | EV/TTM Rev: 2.7x | Revenue growth: +19.1% FY25 YoY (+38.6% Q4 YoY) ## Verdict Shoals is a turnaround story with genuine revenue reacceleration, record backlog, and early-stage diversification into BESS and data center power -- trading at a meaningful discount to peers. The problem is margins: gross margin has structurally reset from 40%+ to low-to-mid-30s, management has explicitly retired the 40% target, and EBITDA guidance has been missed two years running. I see a company winning on volume while sacrificing unit economics, entering a more competitive landscape with Nextracker/Bentek looming. The stock is cheap on forward earnings (PEG ~0.76x), but "cheap for a reason" until margin trajectory inflects upward. Conviction: 2.5/5 (watchlist, not buy). ## Qualification Gate | Criterion | Threshold | SHLS | Status | |-----------|-----------|------|--------| | Revenue YoY growth | >30% | 19.1% FY25 (38.6% Q4) | MARGINAL -- FY fails, Q4 passes | | Gross margin | >60% | 31.6% Q4 GAAP, 35.0% FY25 | FAIL -- well below threshold | | Revenue per quarter | >$50M | $148.3M Q4 | PASS | | Data availability | 4+ quarters | 16 quarters | PASS | | Share dilution | <10% annual | ~0% net (SBC offset by buybacks) | PASS | | GAAP profitability trajectory | Improving or positive | $33.6M FY25 NI, +39% YoY | PASS (improving) | **Gate assessment: FAIL on gross margin, MARGINAL on growth.** SHLS is a hardware/manufacturing company with structurally lower margins than the SaaS companies this gate was designed for. For a solar equipment supplier, 31-37% gross margin is industry-normal (Nextracker operates at ~33%). The growth rate cleared 30% in H2 FY25 and Q1 FY26 guide implies 62% YoY. I proceed with the full analysis acknowledging this is not a high-margin compounder but a capital-light(ish) manufacturer with market leadership and secular tailwinds. ## Six-Factor Score | Factor *…truncated*