Signals unchanged at HOLD / HOLD / HOLD across all three horizons. Price +4.6% to C$108.37 as the daily tape recovered back above the 200-day. Pillars barely moved: Quality flat at 78, Valuation −1 to 37 (still Expensive — higher price and a higher 10-year, 4.55%→4.75%, offset each other), Timing +2 to 56 (daily trend improved from weak to recovering), Drivers flat at 60 (Neutral). Valuation-Ceiling caution persists; no Do-Not-Buy trigger. Newly noted: WiseTech’s ~US$2.1bn E2open acquisition has closed, raising competitive intensity (threat still moderate, share stable), and the Drivin last-mile bolt-on (C$30m) closed in July.
Descartes Systems Group is a Waterloo, Ontario software company that runs the plumbing of global trade. Its core business is cloud software and data for logistics and supply-chain operations — route and fleet optimisation, transportation management, e-commerce shipping, and, distinctively, customs filing, trade-compliance and global trade-data content that helps goods clear borders. What sets it apart is the Global Logistics Network, a two-sided network connecting carriers, brokers, customs authorities and shippers, plus a decades-deep library of regulatory trade content — a combination rivals find hard to replicate. Think of it as a highly profitable, net-cash “picks-and-shovels” compounder that earns more as world trade grows more complex, and that steadily buys and bolts small logistics-tech firms onto its network.
Lifecycle & sector. Growth-stage Application Software (logistics / supply-chain SaaS). Revenue grows mid-teens (+14.7% YoY) while the business is already deeply profitable and cash-generative — so it is scored on the Growth profile: Rule of 40, operating leverage, moat durability and cash generation, not on a mature dividend/ROE lens alone.
| Sub-signal | Value | Read | Score |
|---|---|---|---|
| Revenue trajectory | +14.7% YoY (TTM ~C$754m) | Steady mid-teens through a "challenging freight market"; net income +34% YoY on operating leverage | 78 |
| Profitability vs peers | Gross 77.3% · Operating 32.9% · Net 23.3% | Best-in-class SaaS margins; expanding | 84 |
| Cash generation | FCF ~C$268m · FCF margin ~35.6% | Cash converts ahead of net income — high quality | 85 |
| Balance sheet | Cash C$377m vs debt C$8m (net cash) · current ratio 2.05 · D/E 0.05 | Fortress; funds the M&A engine internally | 90 |
| ROE / ROA | ROE 11.4% · ROA 8.1% | ROE understated by a cash- and goodwill-heavy equity base; underlying ROIC is mid-teens | 62 |
| Rival | Threat type | Share trajectory | Moat-erosion vector |
|---|---|---|---|
| WiseTech Global + E2open | Scaled platform / trade compliance | Descartes stable; WiseTech scaling | Cost advantage & enterprise reach |
| project44 / FourKites | Real-time visibility specialists | Stable | Visibility layer of the stack |
| SAP / Oracle / in-house TMS | Vertical / build substitution | Stable | Enterprise budget capture |
| Trimble (Kuebix) / legacy TMS | Low-cost / bundled TMS | Stable | Transportation-management entry point |
Net effect on the moat: Switching Costs held at 80 (workflow lock-in intact); Cost Advantage trimmed to 62 as WiseTech+E2open gains scale. Overall competitive threat: moderate.
Descartes is a disciplined serial acquirer: it buys niche logistics/trade-tech assets, plugs them into the GLN and expands the network, funding deals from internal free cash flow while keeping a net-cash balance sheet. The July 2026 Drivin bolt-on (C$30m, Chilean last-mile) is textbook — small, accretive, network-extending. Capital allocation scores 80; management skin-in-the-game 56 (long-tenured CEO Ed Ryan, modest SBC, moderate insider ownership).
The anchor says Expensive; the nuance says fully-valued, not overpriced. On a trailing clean basis Descartes trades at 38.4× earnings — well above the warranted ~23× and above the 33× Information-Technology guardrail. But the same stock is on ~24× forward earnings (FY27 EPS ~C$4.56), which sits right on the warranted line. The gap between the two is simply this year's fast earnings growth (+34%). So the honest read is "priced for its growth, no margin of safety" — a HOLD — not "wildly overpriced" (which would be a SELL).
| Multiple | Value | Read |
|---|---|---|
| Clean trailing P/E | 38.4× | Expensive vs 23× warranted |
| Forward P/E (FY27) | 23.8× | ≈ warranted line — fully valued |
| EV/EBITDA (TTM) | 27.1× | Rich |
| EV/Revenue | 11.5× | Premium SaaS |
| P/B | 4.1× | Modest for the margin profile |
| FCF yield (FCF/EV) | 3.1% | Fair for a quality compounder |
| PEG | 1.58 | Growth roughly paid-for on a forward basis |
Implied growth. At 38.4× trailing, the market embeds ~18–20% sustained earnings growth for five years; our disciplined estimate is ~10–11% — so on a trailing lens the price runs ahead of the fundamentals. On a forward lens (~24×) the growth is roughly paid for, not overpaid. Both truths sit inside the "no margin of safety" verdict.
Street cross-check. Grade coverage is deep and bullish — 15 analysts, 93% Buy/Strong-Buy, 1 Hold, 0 Sell — with a consensus target near C$131 (~21% above spot). Note the hard price-target feed is thin (a single surfaced target), so the grade distribution carries more weight than the point target. Recent actions were positive (Rothschild → Buy in Apr; Loop Capital Buy maintained Jun) with no downgrades. FMP financial-health rating A- (4/5) — DCF 5, D/E 4, ROA 4, but P/E and P/B sub-scores of 2, corroborating "great business, rich price." The bullish Street sits within the Expensive band — it lifts the score off the floor but cannot override the anchor.
Primary driver: global trade volume & trade-compliance software spend. Descartes is a geared bet on the complexity of world trade, which cuts two ways — hence a Neutral read.
| Horizon | Read | Data / date |
|---|---|---|
| Historical (25%) | Tariff churn and re-routing since 2025 lifted demand for customs/compliance/trade-data content (tailwind), while soft freight and e-commerce shipment volumes pressured transaction-based revenue (headwind) | Company commentary, Q1 FY27 (Jun 2026) |
| Current (50%) | Elevated, two-sided tariff regime: rising trade friction = more demand for Global Trade Intelligence & customs modules; a "challenging freight market" caps the volume-linked side. Net neutral | Q1 FY27 call; trade newsflow, Aug 2026 |
| Forward (25%) | Trade uncertainty persists into 2027; consensus mid-teens revenue growth — neutral-to-mildly-positive | Consensus, Aug 2026 |
Driver score 60 — Neutral. In the 36–64 band, so it does not amplify the signal (no STRONG BUY/SELL). Not a commodity-leveraged name, so no price-trend overlay applies.
The latest macro report reads Information Technology (XLK) short N / medium U / long O under a “stagflation-lite, rates-up” regime, with the sector-level Underperform driven largely by the armed S&P-500 AI-concentration risk. Descartes decouples from that: beta 0.19, clean operating earnings, not an index top-weight and not levered to AI capex — so it does NOT inherit the AI-concentration de-rating tail. Net pressure is Neutral (a mild rate-driven multiple headwind on the medium horizon). Base signal is HOLD, so amplification never fires; econ leaves it unchanged.
Source: sector-map (Information Technology / XLK) — DSG not in the macro watchlist · Macro report 2026-07-30
Recovering, not confirmed. The tape is mending — the daily trend has turned up (MACD histogram positive, price back above the 200-day around C$106 after a bounce off the C$92–93 spring low), and Descartes jumped +2.9% on the session to C$108.37. But the weekly chart is still a downtrend off the C$150 high, and the recent reclaim is not volume-confirmed (daily volume ratio 0.84×). So timing scores a middling 56 — improving, but a genuine higher-timeframe "all-clear" hasn't printed.
| Component | Read | Score |
|---|---|---|
| Multi-timeframe confluence | Weekly downtrend, daily recovering, hourly/15-min up — mixed → improving | 52 |
| Risk–reward (ATR/stop) | Daily ATR ~C$4.4 (~4%); nearest weekly support ~C$100, stop below C$88 (~4.6 ATR) — a wide stop from here | 54 |
| Relative strength | ~28% below the 52-wk high; laggard vs SPY/sector but recovering; 52-wk range position ~35% | 44 |
| Sentiment (grades + news) | 15 analysts 93% bullish; net-positive grade actions, 0 downgrades 30d; Drivin bolt-on well received | 65 |
| Catalyst density | Calm calendar — Q2 FY27 not until 10 Sep (>30d); clustering 75 | 72 |
Macro weight is low (0.10 — defensive niche software). The one live macro lever is the rate path: the 10-year at 4.75% and rising is a mild headwind for premium growth multiples, consistent with the sector-level caution below.
| Date | Event | Impact | Forecast | Previous | Relevant? | Why |
|---|---|---|---|---|---|---|
| ~2026-08-12 | US CPI (YoY) | Medium | — | — | ⚠️ Medium | Rate path sets the discount rate on premium growth multiples (indirect) |
| ~2026-09-16/17 | FOMC decision | Medium | — | — | ⚠️ Medium | Same — rate path is the only material macro lever for a low-sensitivity name |
| 2026-09-10 | DSG Q2 FY27 results (co.) | High | — | — | ✅ Yes | The company-specific swing factor — beyond the update window |
| Date | Event | Actual | Forecast | Surprise | Impact |
|---|---|---|---|---|---|
| 2026-07-31 | UST 10-Year yield | 4.75% | — | Rising | Mild headwind for growth-stock valuations |
Descartes is a low macro-sensitivity name (Information Technology, defensive niche software, beta 0.19). No high-impact macro release inside the window changes the thesis; the only live macro lever is the rate path — the 10-year at 4.75% and rising is a mild headwind for premium multiples. The real catalyst is the company’s own Q2 FY27 print on 10 Sep, which sits beyond this update’s two-week horizon.
| Timeframe | Trend | Direction | RSI | MACD | Key S/R | Breakout | Vol |
|---|---|---|---|---|---|---|---|
| Monthly | n/a | Neutral | 42.8 | −, falling | S: 95.0 / R: 112.7 | — | — |
| Weekly | Downtrend | Bearish | 51.4 | hist turning + | S: 100.6 / R: 133.0 | none | 1.1× |
| Daily | Recovering | Neutral→Bull | 54.9 | +, rising | S: 96.5 / R: 106.9 | resist. breakout | 0.8× |
| Hourly | Uptrend | Bullish | 52.7 | +, flat | S: 103.2 / R: 106.9 | resist. breakout | 1.5× |
| 15-min | Uptrend | Bullish | 53.1 | +, small | S: 104.6 / R: 105.9 | resist. breakout | 5.9× |
| Confluence: Mixed → Improving · MTF Score 52 | |||||||
A textbook “lower-timeframe leading, higher-timeframe lagging” recovery. Monthly is uninformative (the yfinance monthly bar returned NaN); the weekly remains a downtrend off the C$150 high but its MACD histogram has turned positive; the daily has recovered above the 200-day (~C$106) after bouncing off the C$92–93 spring low, and the intraday charts are cleanly up on strong volume. The tell to watch: a volume-backed weekly close above ~C$111–112 would flip the weekly and confirm the turn; failure there keeps this a counter-trend bounce.
DSG.TO 6-month daily (C$) with 50-day SMA. Price has recovered off the C$92–93 spring low back above the 200-day; the C$111–112 weekly resistance is the level that would confirm a trend turn.
Tariff-complexity super-cycle drives Global Trade Intelligence and customs demand; the GLN network compounds and accretive M&A continues. Revenue holds mid-teens, margins expand, and the multiple stays ~28× on FY28 EPS ~C$5.2 → ~C$145 (retest of the prior highs).
Mid-teens revenue growth with stable margins; the forward multiple normalises toward ~24× on FY28 EPS ~C$5.0 → ~C$118. A modest re-rating from C$108 that tracks earnings — which is exactly why there is no margin of safety to buy today.
Global trade contracts, freight/e-commerce transaction revenue softens and growth decelerates to high-single-digits; the premium multiple compresses toward ~20× → ~C$88, back into the weekly-support / spring-low zone. This is the anchor’s warning made real — a rich multiple has the furthest to fall.
Probability-weighted fair value ≈ C$119 (0.25×145 + 0.55×118 + 0.20×88). Close to the Street’s ~C$131 but below it — the difference is our disciplined-growth haircut. The spread (C$88–145) is wide because a premium multiple amplifies both the up- and down-case.
Forecast: Fundamental opens on a pullback into ~C$96 (roughly −11%) — plausible on a broad growth-multiple de-rate but not the near-term base case. Technical would confirm on a volume-backed daily reclaim that also flips the weekly above ~C$111–112; the tape is recovering (daily MACD positive, price back above the 200-day) but the weekly is still a downtrend, so call it 2–5 weeks and event-dependent. Catalyst is binary on the Q2 FY27 print on 10 Sep. Net: no entry edge today — Wait.
Forecast: No exit trigger is close — the stop at C$88 is ~19% below spot and beneath both the 50-day and the recent bounce low; a hit would need a trade shock or a bad Q2 print. Profit-trim only comes into play into the C$118–131 zone.
Position sizing not computed — specify your portfolio allocation and role for sizing guidance.
{
"ticker": "DSG.TO",
"exchange": "TSX",
"exchange_ticker": "TSX:DSG",
"isin": "CA2499061083",
"api_ticker": "DSG.TO",
"finder_ticker": "DSG",
"finder_exchange": "\ud83c\udde8\ud83c\udde6 TSX \u00b7 \ud83c\uddfa\ud83c\uddf8 NASDAQ",
"date": "2026-08-04",
"version": "v6",
"brand": "Descartes",
"analysis_status": "on-going",
"company": "The Descartes Systems Group Inc.",
"currency": "CAD",
"user_context": {
"horizon": null,
"allocation_pct": null,
"portfolio_role": null
},
"price_at_rating": 108.37,
"signal_short": "HOLD",
"signal_medium": "HOLD",
"signal_long": "HOLD",
"primary_signal": "HOLD",
"short_hold_reason": "expensive",
"short_entry_confirmed": false,
"quality_score": 78,
"lifecycle_stage": "growth",
"quality_detail": {
"industry_benchmark_name": "Rule of 40 (SaaS)",
"industry_benchmark_value": 50,
"industry_benchmark_score": 80,
"moat_score": 72,
"roic_percentile_vs_peers": 62,
"capital_allocation": 80,
"management_skin_in_game": 56
},
"valuation_score": 37,
"valuation_detail": {
"fcf_yield": 3.1,
"ev_ebitda": 27.1,
"ev_revenue": 11.5,
"p_s": 12.3,
"p_b": 4.1,
"implied_growth_rate": 19.0,
"consensus_growth_rate": 14.0,
"historical_valuation_decile": 4,
"warranted_multiple": 23,
"actual_multiple": 38.4,
"val_multiple_basis": "clean trailing P/E (CAD-consistent)",
"discount_rate_r": 9.25,
"risk_free_10y": 4.75,
"g_near": 10.5,
"g_term": 3,
"warranted_ratio": 1.67,
"val_band": "expensive",
"forward_pe": 23.8
},
"timing_score": 56,
"timing_detail": {
"mtf_confluence": 52,
"risk_reward_score": 54,
"relative_strength_vs_spy": -14.0,
"relative_strength_vs_sector": -9.0,
"catalyst_clustering_score": 75,
"dynamic_macro_weight": 0.1
},
"driver_score": 60,
"driver_label": "Neutral (two-sided trade/tariff)",
"driver_amplifies": false,
"driver_commodity_trend": "n/a \u2014 not a commodity-leveraged name",
"economic_alignment_stance": "Neutral",
"economic_alignment_conviction": 48,
"economic_alignment_pressure": "Neutral",
"economic_alignment_source": "sector-map (XLK)",
"macro_report_date": "2026-07-30",
"nonop_pct_of_net_income": 1.8,
"clean_pe": 38.4,
"clean_peg": 1.58,
"competitive_share_trajectory": "stable",
"competitive_threat_level": "moderate",
"overall_confidence": 60,
"fair_value_est": 96.0,
"stop_loss": 88.0,
"target_price": 118.0,
"scenario_base_target": 118,
"scenario_bull_target": 145,
"scenario_bear_target": 88,
"entry_groups_met": 0,
"entry_conviction": "Wait",
"exit_groups_live": 0,
"exit_action": "Hold",
"hard_gate_state": "caution",
"gates_triggered": [],
"gates_caution": [
"Valuation Ceiling"
],
"do_not_buy_triggers": [],
"analyst_consensus_target": 131.0,
"analyst_target_high": 132.0,
"analyst_target_low": 118.0,
"analyst_target_upside_pct": 20.9,
"analyst_grades_consensus": "Buy",
"analyst_bullish_pct": 93,
"analyst_coverage_count": 15,
"fmp_rating": "A-",
"fmp_overall_score": 4,
"recent_upgrades_30d": 0,
"recent_downgrades_30d": 0,
"gics_sector": "Information Technology",
"short_signal": "HOLD",
"user_horizon": null,
"user_allocation_pct": null,
"portfolio_role": null,
"next_update_date": "2026-08-18",
"next_update_basis": "default +14d (Q2 FY27 earnings 2026-09-10 beyond window)"
}