Scroll or pinch to zoom, drag to move. Daily prices adjusted for splits. Markers: E = earnings (green beat, red miss), S = split, D = dividend.
Three things to know
- Diluted EPS over the last four quarters was $1.11, up 246.9% year over year.
- The stock is in an uptrend: above its 200-day average for 42 trading days, with the 50-day average above the 200-day.
- Revenue over the last four quarters was $502.6M, up 10.0% from a year earlier, slowing from 14.7% a quarter earlier.
PromtFinance scores
Each score is a percentile within the Utilities sector (0–100). Under each score: how the stock ranks in its sector on every component. As of Oct 6, 2026.
How fast revenue, earnings and cash flow are growing.
- Revenue growth (TTM, YoY)Top 31%
- EPS growth (TTM, YoY)Top 1%
- FCF growth (TTM, YoY)Top 26%
- Revenue growth, 3-year CAGRTop 8%
- Revenue growth accelerationBottom 12%
Returns on capital, margins, earnings quality and balance-sheet strength.
- Return on invested capitalTop 2%
- Gross marginBottom 15%
- Operating marginBottom 10%
- Cash conversion (OCF / net income)Bottom 4%
- Accruals (lower is better)Bottom 2%
- Net debt / EBITDA (lower is better)Top 1%
- Interest coverTop 1%
How cheap the shares are relative to earnings, cash flow and their own history.
- Earnings yieldTop 28%
- Free-cash-flow yieldTop 16%
- EBITDA / enterprise valueTop 14%
- Sales / enterprise valueTop 1%
- P/E vs own 5-year history (lower is better)Bottom 26%
Strength and persistence of the price trend, including versus the S&P 500.
- 12-month return excluding last monthTop 43%
- 6-month returnTop 1%
- 1-year return vs S&P 500Top 11%
- Distance from 52-week highTop 1%
- Trend checklist (0–4)Top 1%
Earnings surprises and analyst sentiment (estimate-revision history is being collected).
- Average EPS surprise, last 4 quartersTop 11%
- Consecutive EPS beatsBottom 39%
- Share of analysts rating BuyBottom 26%
Low volatility, shallow drawdowns, low market sensitivity and modest leverage.
- Volatility, 60 days (lower is better)Bottom 27%
- Maximum drawdown, 3 yearsBottom 8%
- Beta vs S&P 500 (lower is better)Top 41%
- Net debt / EBITDA (lower is better)Top 1%
What changed
Latest four quarters versus the same period a year earlier (growth: versus one quarter earlier).
| Measure | Before | Now | |
|---|---|---|---|
| Revenue growth (YoY) | 14.7% | 10.0% | ↓ |
| EPS growth (YoY) | 36.8% | 246.9% | ↑ |
| Gross margin | 28.9% | 25.3% | ↓ |
| Operating margin | 1.4% | 4.6% | ↑ |
| FCF margin | 9.9% | 2.4% | ↓ |
Fundamental momentum
| Measure | Now (TTM) | Year / quarter before | Sector rank | |
|---|---|---|---|---|
| Revenue growth (TTM, YoY) | 10.0% | 14.7% | ↓ | Top 31% |
| EPS growth (TTM, YoY) | 246.9% | 36.8% | ↑ | Top 1% |
| Gross margin | 25.3% | 28.9% | ↓ | Bottom 15% |
| Operating margin | 4.6% | 1.4% | ↑ | Bottom 10% |
| Net margin | 4.9% | 1.8% | ↑ | — |
| Free-cash-flow margin | 2.4% | 9.9% | ↓ | — |
| Return on invested capital | 7.4% | — | Top 2% | |
| Revenue growth, 3-year CAGR | 16.7% | — | Top 8% |
Quality of earnings and balance sheet
- Cash conversion (OCF / net income)Above 1× means profits are backed by cash.
- 0.81×
- Accruals (net income − OCF) / assetsLower is better; high accruals can signal weaker earnings quality.
- 1.3%
- Stock-based compensation / revenueA cost to shareholders through dilution.
- 0.4%
- Receivables growth vs revenue growthReceivables growing much faster than sales can be a warning.
- -18.8 pp
- Net debt / EBITDABelow 1× is conservative; above 3× is high leverage.
- -5.24×
- Interest cover (operating income / interest)How many times operating profit covers interest.
- 40.2×
Shareholder returns
- Dividend yield (dividends paid, TTM)
- 1.84%
- Net buyback yield (TTM)
- 1.59%
- Shareholder yield
- 3.42%
- Share count change, 1 year
- -1.4%
- Share count change, 3-year CAGR
- -0.2%
Shareholder yield = dividends + net buybacks over the last four quarters, divided by market cap.
Based on the four quarters through Jun 30, 2026 (filed Aug 6, 2026).
Earnings and expectations
Earnings momentum
- Consecutive EPS beats
- 1
- Beats in the last 8 reports
- 2 of 4
- Average EPS surprise, last 4
- +27.5%
- Average 2-day reaction, last 8
- -2.0%
- Positive 20 days after report
- 5 of 8
Analysts
- Analysts with a rating
- 3
- Share rating Buy or Strong Buy
- 33%
- Consensus rating
- Hold
How the stock reacted to recent reports
| Report date | EPS surprise | 2 days | 5 days | 20 days | 60 days |
|---|---|---|---|---|---|
| Aug 6, 2026 | +72.0% | +4.4% | +2.3% | +8.1% | — |
| May 14, 2026 | -38.9% | -6.5% | -2.6% | +0.7% | +3.7% |
| Mar 31, 2026 | +128.6% | +1.3% | +0.8% | +0.9% | +1.4% |
| Nov 3, 2025 | -51.8% | -1.7% | -1.3% | -6.2% | -8.2% |
| Aug 7, 2025 | — | -19.3% | -19.3% | -24.5% | -26.1% |
| May 6, 2025 | — | +2.8% | +8.5% | +41.8% | +33.0% |
| Mar 10, 2025 | — | -4.3% | -4.4% | +1.3% | +46.6% |
| Nov 6, 2024 | — | +7.4% | +2.6% | -5.8% | -7.7% |
Returns from the close before each report. Past reactions do not determine future ones.
Earnings history
| Report date | EPS | Estimate | Surprise | Revenue |
|---|---|---|---|---|
| Aug 6, 2026 | $0.43 | $0.25 | +72.0% | $100.4M |
| May 14, 2026 | $0.11 | $0.18 | -38.9% | $142.3M |
| Mar 31, 2026 | $0.16 | $0.07 | +128.6% | $121.6M |
| Nov 3, 2025 | $0.27 | $0.56 | -51.8% | $138.3M |
| Aug 7, 2025 | $0.11 | — | — | $105.3M |
| May 6, 2025 | $0.42 | — | — | $136.8M |
| Mar 10, 2025 | $0.37 | — | — | $102.9M |
| Nov 6, 2024 | $0.41 | — | — | $111.9M |
Valuation in context
| Multiple | Now | 5-year median | 5-year percentile | Sector rank (cheapness) |
|---|---|---|---|---|
| P/E (trailing) | 14.5× | 15.2× | 50th | Top 28% |
| P/E (forward) | 15.8× | — | — | — |
| EV / EBITDA | 7.1× | — | — | Top 14% |
| EV / Sales | 0.50× | — | — | Top 1% |
| Free-cash-flow yield | 2.74% | — | — | Top 16% |
| Earnings yield | 6.89% | — | — | Top 28% |
P/E over the past five years
Range 2.6× – 141.4× since Jun 30, 2021. Each point: price on the filing date divided by trailing-twelve-month EPS known then.
What moved the stock over the past year
- Price return, 1 year
- +7.4%
- Earnings per share growth (TTM)
- +246.9%
- Change in P/E multiple
- -73.6%
Most of the move came from a change in the valuation multiple.
Technical state
Trend checklist
- ✓ Price above 20-day average
- ✓ Price above 50-day average
- ✓ Price above 200-day average
- ✓ 50-day average above 200-day
- ✗ MACD histogram positive
Trend quality
- Days above the 50-day average
- 42
- Days above the 200-day average
- 42
- 50-day average slope (20 days)
- +4.7%
- 200-day average slope (20 days)
- +1.2%
- Distance from 50-day average
- +5.9%
- Distance from 200-day average
- +12.1%
- RSI (14)
- 57.3
- Relative volume
- 1.57×
Risk and drawdowns
- Volatility, 60 days (annualized)
- 21.0%
- Volatility vs own 5-year history
- 0th percentile · Low for this stock
- Beta vs S&P 500 (2 years, weekly)
- 0.15
- Correlation with S&P 500
- 0.07
- Current drawdown from 1-year high
- -1.9%
- Maximum drawdown, 3 years
- -57.4%
Largest declines in the past six years
| From peak | To low | Decline | Length | Recovery |
|---|---|---|---|---|
| Dec 26, 2023 | May 14, 2026 | -57.4% | 597 days | Not yet recovered |
| Nov 10, 2020 | Nov 19, 2021 | -49.6% | 259 days | 156 days (Jul 7, 2022) |
| Feb 10, 2023 | Mar 13, 2023 | -30.6% | 20 days | 11 days (Mar 28, 2023) |
| Aug 18, 2022 | Oct 6, 2022 | -22.2% | 34 days | 80 days (Feb 1, 2023) |
| Apr 12, 2023 | Jun 23, 2023 | -19.0% | 50 days | 74 days (Oct 9, 2023) |
Declines of 10% or more from a closing high, measured on daily closes.
Financial statements
- Market cap
- $433.8M
- P/E (TTM)
- 14.5
- EPS, diluted (TTM)
- $1.11
- Revenue (TTM)
- $502.6M
- Dividend yield
- 1.86%
- 52-week range
- $12.69 – $16.83
| FY 2021 | FY 2022 | FY 2023 | FY 2024 | FY 2025 | |
|---|---|---|---|---|---|
| Revenue | $323.3M | $315.5M | $428.7M | $425.2M | $502.0M |
| Gross profit | $91.6M | $154.8M | $146.2M | $138.5M | $124.7M |
| Operating income | $24.1M | $77.8M | $10.0M | $11.3M | $29.4M |
| Net income | $29.2M | $87.8M | $19.5M | $12.6M | $24.0M |
| EPS (diluted) | $1.05 | $3.26 | $0.74 | $0.46 | $0.91 |
| Q3 2024 | Q4 2024 | Q1 2025 | Q2 2025 | Q3 2025 | Q4 2025 | Q1 2026 | Q2 2026 | |
|---|---|---|---|---|---|---|---|---|
| Revenue | $111.9M | $102.9M | $136.8M | $105.3M | $138.3M | $121.6M | $142.3M | $100.4M |
| Net income | $10.2M | -$15.3M | $10.4M | $2.8M | $6.7M | $3.8M | $2.8M | $11.4M |
| EPS (diluted) | $0.38 | -$0.57 | $0.40 | $0.11 | $0.26 | $0.30 | $0.11 | $0.44 |
| FY 2021 | FY 2022 | FY 2023 | FY 2024 | FY 2025 | |
|---|---|---|---|---|---|
| Operating cash flow | $68.4M | $80.7M | $62.5M | $70.7M | $46.3M |
| Capital expenditure | -$126,000 | -$1.0M | -$9.0M | -$8.0M | -$8.2M |
| Free cash flow | $68.3M | $79.7M | $53.5M | $62.7M | $38.2M |
| Dividends paid | -$1.5M | -$9.2M | -$8.9M | -$8.2M | -$8.0M |
| Net share buybacks | -$4.2M | -$16.4M | -$6.3M | -$11.2M | -$10.8M |
Cash outflows are shown as negative numbers.
- Cash and short-term investments
- $184.8M
- Total assets
- $369.7M
- Total liabilities
- $114.5M
- Total debt
- $1.3M
- Net debt
- -$183.5M
- Shareholders’ equity
- $261.6M
As of Jun 30, 2026 (filed Aug 6, 2026).
Dividends
| Ex-date | Amount | Paid |
|---|---|---|
| Aug 14, 2026 | $0.08 | Aug 24, 2026 |
| May 22, 2026 | $0.08 | Jun 2, 2026 |
| Feb 18, 2026 | $0.08 | Feb 26, 2026 |
| Nov 10, 2025 | $0.08 | Nov 19, 2025 |
| Aug 11, 2025 | $0.08 | Aug 19, 2025 |
| May 19, 2025 | $0.08 | May 30, 2025 |
| Feb 18, 2025 | $0.08 | Feb 26, 2025 |
| Nov 12, 2024 | $0.08 | Nov 20, 2024 |
Short interest
- Shares sold short
- 587,899
- Days to cover
- 8.36
- Change vs previous report
- +4.7%
FINRA short interest, settlement date Sep 15, 2026.