Value
6.8/10data confidence 100%| Component | Sub-score |
|---|---|
| P/E | 3.0 |
| P/S | 9.4 |
| EV/EBITDA | 4.9 |
| Fwd P/E | 6.6 |
| PEG | 10.0 |
| Analyst target | 6.0 |
- ▸Forward P/E: 19.3x
- ▸PEG: 0.01
Updated
Model-generated analysis — not investment advice. Not a registered investment advisor. Past performance does not guarantee future results.
About TrendMatrix. TrendMatrix is a publisher of general securities research and market commentary. We publish on a regular schedule. All content is the same for every subscriber in a tier — we do not provide personalized investment advice and we do not take into account any individual subscriber's financial situation, investment objectives, risk tolerance, tax situation, or holdings.
Not investment advice. TrendMatrix is not a registered investment adviser. Our content is for informational and educational purposes only. Consult your own licensed investment adviser, broker, or tax professional before making any investment decision.
Conflicts and positions. The TrendMatrix editorial team frequently holds personal long-term positions in securities discussed. We disclose positions held at the time of publication on each piece. We maintain a trading-window policy: we do not initiate or close positions in the same direction as a TrendMatrix publication within 24 hours before or 72 hours after publication.
No paid promotion. TrendMatrix does not accept payment from any issuer, broker, or third party in exchange for coverage of any security. Our sole compensation is subscription revenue.
No fiduciary duty. No fiduciary, advisory, or agency relationship is created between you and TrendMatrix by reading our content or subscribing to our service.
Performance. Past performance is not indicative of future results. Performance figures reflect the published model only and do not reflect any individual subscriber's actual results.
A perfect four-quarter earnings beat streak with an extraordinary average surprise magnitude, a technically confirmed uptrend, and a 9/9 Piotroski score signal that the underlying business is in sound health — the setup favors holding an existing position but the stock has closed most of the gap to near-term resistance, limiting the case for adding aggressively.
Falsifiable statement — pillar-level invalidators below. Engine-derived; not personalized advice.
| Pillar | Expectation | Trend |
|---|---|---|
Four consecutive earnings beats with an average surprise of roughly 229% — including a beat of nearly 800% in one quarter — indicate the company has been consistently outperforming depressed expectations by a wide margin. Catalyst breakdown | Over 12 months, the company will extend its beat streak for at least two more quarters, with each actual result materially exceeding the prior consensus estimate. | ↓Deteriorating |
| CounterAverage surprise figures of this magnitude are almost entirely a function of very low initial consensus estimates in a recovery; as estimates reset higher to reflect the improved baseline, the beat streak will become harder to maintain and future surprises will be structurally smaller. | ||
A 9/9 Piotroski F-Score and positive free cash flow margin of 11% with a 7.3% FCF yield demonstrate that the company's balance sheet and cash generation are passing all major financial health tests simultaneously. Quality breakdown | Over 12 months, the Piotroski score will remain at 8 or above and free cash flow will continue to be positive, supporting the company's ability to service obligations without external financing. | ↑Improving |
| CounterBelow-average profitability metrics across return on equity and return on assets suggest that while the balance sheet is clean, the business is not yet generating returns above the cost of capital — financial health and economic value creation are different measures. | ||
The stock has formed a golden cross, is trading above all key moving averages, and shows volume accumulation via a rising on-balance volume — a technically confirmed uptrend that favors price continuation. Momentum breakdown | Over 12 months, the 200-day moving average will remain positively sloped and the stock will continue to set higher lows, consistent with a sustained uptrend. | ↓Deteriorating |
| CounterThe RSI is approaching 69 — near overbought territory — and the stock is within roughly 2% of resistance, which historically increases the probability of a short-term pullback before any resumption of the trend. | ||
At current prices the stock sits only about 2.2% below its near-term resistance target of $17.46, meaning the available reward at this entry is thin relative to the downside of roughly 17% to the $14.17 stop reference. Price targets | Over 12 months, if the stock cannot break and hold above $17.46, it will consolidate or retrace, and the optimal entry will emerge on a pullback toward the $15.24 support level. | ↑Improving |
| CounterA high-conviction catalyst — such as a further earnings beat or a positive news event — could push the stock cleanly through resistance, in which case the thin upside to $17.46 understates the actual move available. | ||
CounterAverage surprise figures of this magnitude are almost entirely a function of very low initial consensus estimates in a recovery; as estimates reset higher to reflect the improved baseline, the beat streak will become harder to maintain and future surprises will be structurally smaller.
CounterBelow-average profitability metrics across return on equity and return on assets suggest that while the balance sheet is clean, the business is not yet generating returns above the cost of capital — financial health and economic value creation are different measures.
CounterThe RSI is approaching 69 — near overbought territory — and the stock is within roughly 2% of resistance, which historically increases the probability of a short-term pullback before any resumption of the trend.
CounterA high-conviction catalyst — such as a further earnings beat or a positive news event — could push the stock cleanly through resistance, in which case the thin upside to $17.46 understates the actual move available.
| Component | Sub-score |
|---|---|
| P/E | 3.0 |
| P/S | 9.4 |
| EV/EBITDA | 4.9 |
| Fwd P/E | 6.6 |
| PEG | 10.0 |
| Analyst target | 6.0 |
| Component | Sub-score |
|---|---|
| ROE | 1.2 |
| ROA | 1.7 |
| Gross margin | 5.0 |
| Op margin | 7.6 |
| Net margin | 0.0 |
| Current ratio | 10.0 |
| FCF quality | 4.4 |
| Moat | 6.0 |
| Piotroski F | 10.0 |
| Component | Sub-score |
|---|---|
| Rev growth | 3.0 |
| EPS growth | 10.0 |
| Component | Sub-score |
|---|---|
| RSI | 7.8 |
| MACD | 0.0 |
| OBV | 1.0 |
| MA position | 4.0 |
| Volume | 2.2 |
| Component | Sub-score |
|---|---|
| Analyst rating | 7.0 |
| Price target | 8.1 |
| erm sentiment | 4.8 |
| Component | Sub-score |
|---|---|
| materiality | 5.0 |
| holder change | 10.0 |
| notable moves | 7.0 |
| Component | Sub-score |
|---|---|
| value rank | 2.6 |
| quality rank | 0.9 |
| growth rank | 2.9 |
| Component | Sub-score |
|---|---|
| bollinger | 10.0 |
| support resistance | 9.8 |
| 52w position | 6.3 |
| gap | 5.0 |
| Component | Sub-score |
|---|---|
| short interest | 7.6 |
| days to cover | 7.2 |
| volatility | 1.1 |
| put call | 0.0 |
| implied vol | 3.1 |
| beta | 7.3 |
| debt equity | 9.5 |
| Component | Sub-score |
|---|---|
| erm | 5.0 |
| earnings history | 10.0 |
| earnings timing | 5.0 |
| surprise avg | 10.0 |
Maintain position. Not compelling to add more.
L4:PATH_F_HOLDnone
Setup— — No clear chart pattern; technical signals are mixed
EdgeNo clear edge — No clear edge identified
SuitabilityAggressive — MCap $3.0B<$5B
None of the engine's positive-conviction paths (C-quality, D-momentum) triggered — the F-path HOLD reflects balanced signals. Strongest-cleared gate: INSIDER:OK. Top dim: Technical at 7.8; weakest: Momentum at 3.0. No conviction either direction.
The strongest dimensions are Technical at 7.8, Catalyst at 7.5, and Insider at 7.3; the weakest are Momentum at 3.0, Peer rank at 3.3, and Risk (lower is worse) at 5.1. The V9 engine flagged 2 failed gates, producing an asymmetric reward-to-risk of 0.86 and an engine sizing output of AVOID.
Falsifying conditions — when triggered, the corresponding pillar's thesis is invalidated.
Trip ifEPS surprise falls below 0% for 2 consecutive quarters, breaking the four-quarter beat streak.
Trip if200-day moving average slope turns negative and price closes below the 200-day MA for 5 consecutive trading days, reversing the confirmed uptrend.
Trip ifPiotroski F-Score falls below 6 for 2 consecutive quarters, indicating a broad deterioration in financial health.
Trip ifStock retraces below $15.24 for 5 consecutive trading days, resetting the upside to the $17.46 resistance target to more than 14%.