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
- The shares trade at 17.8× trailing earnings, lower than 86% of the company's own readings over the past five years.
- Revenue over the last four quarters was $33.7M, up 22.9% from a year earlier, accelerating from 2.5% a quarter earlier.
- Diluted EPS over the last four quarters was $0.61, up 9.6% year over year.
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 9%
- EPS growth (TTM, YoY)Top 33%
- Revenue growth, 3-year CAGRTop 41%
- Revenue growth accelerationTop 1%
Returns on capital, margins, earnings quality and balance-sheet strength.
- Return on invested capitalTop 5%
- Gross marginTop 25%
- Operating marginTop 3%
- Cash conversion (OCF / net income)Bottom 2%
- Accruals (lower is better)Bottom 1%
- Net debt / EBITDA (lower is better)Top 3%
- Interest coverTop 2%
How cheap the shares are relative to earnings, cash flow and their own history.
- Earnings yieldTop 46%
- Free-cash-flow yieldTop 21%
- EBITDA / enterprise valueBottom 29%
- Sales / enterprise valueBottom 7%
- P/E vs own 5-year history (lower is better)Top 39%
Strength and persistence of the price trend, including versus the S&P 500.
- 12-month return excluding last monthTop 47%
- 6-month returnTop 3%
- 1-year return vs S&P 500Top 36%
- Distance from 52-week highTop 19%
- Trend checklist (0–4)Top 24%
Earnings surprises and analyst sentiment (estimate-revision history is being collected).
Low volatility, shallow drawdowns, low market sensitivity and modest leverage.
- Volatility, 60 days (lower is better)Bottom 26%
- Maximum drawdown, 3 yearsBottom 28%
- Beta vs S&P 500 (lower is better)Bottom 14%
- Net debt / EBITDA (lower is better)Top 3%
What changed
Latest four quarters versus the same period a year earlier (growth: versus one quarter earlier).
| Measure | Before | Now | |
|---|---|---|---|
| Revenue growth (YoY) | 2.5% | 22.9% | ↑ |
| EPS growth (YoY) | 0.0% | 9.6% | ↑ |
| Gross margin | 66.4% | 57.8% | ↓ |
| Operating margin | 34.7% | 37.7% | ↑ |
| FCF margin | -5.1% | 14.3% | ↑ |
Fundamental momentum
| Measure | Now (TTM) | Year / quarter before | Sector rank | |
|---|---|---|---|---|
| Revenue growth (TTM, YoY) | 22.9% | 2.5% | ↑ | Top 9% |
| EPS growth (TTM, YoY) | 9.6% | 0.0% | ↑ | Top 33% |
| Gross margin | 57.8% | 66.4% | ↓ | Top 25% |
| Operating margin | 37.7% | 34.7% | ↑ | Top 3% |
| Net margin | 43.7% | 49.6% | ↓ | — |
| Free-cash-flow margin | 14.3% | -5.1% | ↑ | — |
| Return on invested capital | 6.6% | — | Top 5% | |
| Revenue growth, 3-year CAGR | 4.3% | — | Top 41% |
Quality of earnings and balance sheet
- Cash conversion (OCF / net income)Above 1× means profits are backed by cash.
- 0.52×
- Accruals (net income − OCF) / assetsLower is better; high accruals can signal weaker earnings quality.
- 4.0%
- Stock-based compensation / revenueA cost to shareholders through dilution.
- 1.3%
- Receivables growth vs revenue growthReceivables growing much faster than sales can be a warning.
- +3.7 pp
- Net debt / EBITDABelow 1× is conservative; above 3× is high leverage.
- 0.29×
- Interest cover (operating income / interest)How many times operating profit covers interest.
- 25.4×
Shareholder returns
- Dividend yield (dividends paid, TTM)
- 0.00%
- Net buyback yield (TTM)
- 0.10%
- Shareholder yield
- 0.10%
- Share count change, 1 year
- +0.1%
- Share count change, 3-year CAGR
- -0.0%
Shareholder yield = dividends + net buybacks over the last four quarters, divided by market cap.
Based on the four quarters through May 31, 2026 (filed Jul 8, 2026).
Earnings and expectations
Earnings momentum
- Average 2-day reaction, last 8
- +1.5%
- Positive 20 days after report
- 5 of 8
How the stock reacted to recent reports
| Report date | EPS surprise | 2 days | 5 days | 20 days | 60 days |
|---|---|---|---|---|---|
| Jul 8, 2026 | — | -0.1% | -1.6% | -0.7% | +3.7% |
| Apr 8, 2026 | — | +6.3% | +2.4% | +4.0% | -2.1% |
| Jan 7, 2026 | — | -1.3% | +6.1% | +4.6% | -3.5% |
| Nov 12, 2025 | — | +1.0% | -0.8% | +7.0% | -1.7% |
| Jul 9, 2025 | — | -1.0% | -6.5% | -9.2% | +2.2% |
| Apr 9, 2025 | — | +8.3% | +0.6% | +4.3% | +7.4% |
| Jan 8, 2025 | — | -0.7% | -3.1% | -2.4% | -13.5% |
| Nov 13, 2024 | — | -0.5% | +12.9% | +19.7% | -0.9% |
Returns from the close before each report. Past reactions do not determine future ones.
Earnings history
| Report date | EPS | Estimate | Surprise | Revenue |
|---|---|---|---|---|
| Jul 8, 2026 | $0.12 | — | — | $8.2M |
| Apr 8, 2026 | $0.05 | — | — | $5.2M |
| Jan 7, 2026 | $0.19 | — | — | $9.1M |
| Nov 12, 2025 | $0.25 | — | — | $11.2M |
| Jul 9, 2025 | $0.09 | — | — | $5.1M |
| Apr 9, 2025 | $0.03 | — | — | $4.0M |
| Jan 8, 2025 | $0.16 | — | — | $5.8M |
| Nov 13, 2024 | $0.27 | — | — | $12.6M |
Valuation in context
| Multiple | Now | 5-year median | 5-year percentile | Sector rank (cheapness) |
|---|---|---|---|---|
| P/E (trailing) | 17.8× | 21.6× | 14th | Top 46% |
| EV / EBITDA | 13.5× | — | — | Bottom 29% |
| EV / Sales | 7.96× | — | — | Bottom 7% |
| Free-cash-flow yield | 1.83% | — | — | Top 21% |
| Earnings yield | 5.62% | — | — | Top 46% |
P/E over the past five years
Range 15.0× – 51.6× since May 31, 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
- -1.6%
- Earnings per share growth (TTM)
- +9.6%
- Change in P/E multiple
- -8.7%
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
- 0
- Days above the 200-day average
- 0
- 50-day average slope (20 days)
- +1.0%
- 200-day average slope (20 days)
- -0.4%
- Distance from 50-day average
- -2.0%
- Distance from 200-day average
- -0.7%
- RSI (14)
- 41.6
- Relative volume
- 1.11×
Risk and drawdowns
- Volatility, 60 days (annualized)
- 21.0%
- Volatility vs own 5-year history
- 4th percentile · Low for this stock
- Beta vs S&P 500 (2 years, weekly)
- 0.69
- Correlation with S&P 500
- 0.38
- Current drawdown from 1-year high
- -9.0%
- Maximum drawdown, 3 years
- -33.4%
Largest declines in the past six years
| From peak | To low | Decline | Length | Recovery |
|---|---|---|---|---|
| Apr 16, 2021 | Oct 14, 2022 | -52.5% | 378 days | Not yet recovered |
| Oct 12, 2020 | Oct 26, 2020 | -14.3% | 10 days | 11 days (Nov 10, 2020) |
| Mar 18, 2021 | Mar 24, 2021 | -11.4% | 4 days | 13 days (Apr 13, 2021) |
| Jan 6, 2021 | Jan 29, 2021 | -11.3% | 16 days | 21 days (Mar 2, 2021) |
Declines of 10% or more from a closing high, measured on daily closes.
Financial statements
- Market cap
- $262.7M
- P/E (TTM)
- 17.8
- EPS, diluted (TTM)
- $0.61
- Revenue (TTM)
- $33.7M
- 52-week range
- $9.71 – $12.44
| FY 2021 | FY 2022 | FY 2023 | FY 2024 | FY 2025 | |
|---|---|---|---|---|---|
| Revenue | $17.1M | $23.0M | $14.6M | $28.7M | $26.1M |
| Gross profit | $10.7M | $16.4M | $8.0M | $19.8M | $16.0M |
| Operating income | $5.3M | $10.1M | $2.1M | $12.2M | $7.7M |
| Net income | $20.1M | $9.6M | $4.7M | $11.6M | $13.1M |
| EPS (diluted) | $0.83 | $0.40 | $0.19 | $0.48 | $0.54 |
| Q4 2024 | Q1 2025 | Q2 2025 | Q3 2025 | Q4 2025 | Q1 2026 | Q2 2026 | Q3 2026 | |
|---|---|---|---|---|---|---|---|---|
| Revenue | $12.6M | $5.8M | $4.0M | $5.1M | $11.2M | $9.1M | $5.2M | $8.2M |
| Net income | $6.6M | $3.9M | $809,000 | $2.3M | $6.1M | $4.6M | $1.1M | $2.9M |
| EPS (diluted) | $0.27 | $0.16 | $0.03 | $0.09 | $0.25 | $0.19 | $0.05 | $0.12 |
| FY 2021 | FY 2022 | FY 2023 | FY 2024 | FY 2025 | |
|---|---|---|---|---|---|
| Operating cash flow | $3.5M | $17.5M | -$2.3M | $2.2M | $13.2M |
| Capital expenditure | -$2.9M | -$5.7M | -$7.8M | -$2.7M | -$9.5M |
| Free cash flow | $560,000 | $11.8M | -$10.2M | -$461,000 | $3.7M |
| Dividends paid | $0 | $0 | $0 | $0 | $0 |
| Net share buybacks | $89,000 | $34,000 | $0 | -$581,000 | -$397,000 |
Cash outflows are shown as negative numbers.
- Cash and short-term investments
- $8.4M
- Total assets
- $176.0M
- Total liabilities
- $24.4M
- Total debt
- $14.1M
- Net debt
- $5.7M
- Shareholders’ equity
- $151.6M
As of May 31, 2026 (filed Jul 8, 2026).
Short interest
- Shares sold short
- 486,726
- Days to cover
- 6.10
- Change vs previous report
- +2.3%
FINRA short interest, settlement date Sep 15, 2026.
Stock splits
- Apr 26, 2004
- 1-for-10