Descartes Systems Group is a Waterloo, Ontario-based cloud software company that runs the plumbing of global trade. Its core product is the Global Logistics Network (GLN) — a neutral, federated network on which shippers, carriers, freight forwarders, customs brokers and 3PLs connect to route shipments, file customs and security declarations, calculate duties and tariffs, and exchange the data that moves goods across borders. What sets it apart is the combination of that entrenched multi-party network with the deepest library of customs and trade-compliance content in the industry — a hard-to-replicate regulatory dataset spanning most of the world's trading nations — which makes Descartes the default "neutral integrator" rather than a single-vendor platform. It is also one of software's most disciplined serial acquirers, having rolled up dozens of niche logistics-tech assets funded almost entirely from its own cash flow. For a reader: think of it as the toll-collecting data layer that sits between everyone who ships things internationally, earning recurring SaaS revenue every time a shipment or customs filing crosses its network.
Lifecycle & sector: Growth-stage Application Software (Logistics / Supply-Chain SaaS). Scored on SaaS metrics — revenue growth, Rule of 40, gross & FCF margin, ROIC and capital-allocation discipline (it is a serial acquirer, so M&A track record is a core quality input).
| Sub-signal | Value | Benchmark | Score | Read |
|---|---|---|---|---|
| Revenue growth (Q1 FY27 YoY) | +15.7% (US$193.6M vs $168.7M) | SaaS mid-teens = solid, durable | 74 | Steady low-teens organic + bolt-on M&A; not hyper-growth but highly consistent |
| Gross margin (TTM) | 72.3% | >70% strong for SaaS | 80 | Software-class gross margin |
| FCF margin (TTM) | ~35.6% (FCF ~US$268M) | >25% elite | 88 | Cash machine; FCF/OCF conversion ~98% |
| EBITDA margin (TTM) | 42.5% | Top-decile scale software | 85 | Operating leverage evident |
| Balance sheet | Net cash ~US$369M; D/E 0.005 | Debt-free = top score | 95 | Interest coverage >300x; funds all M&A from cash |
| ROE | 11.4% | Looks low | 55 | Optically depressed: goodwill from acquisitions inflates book equity (tangible BV only ~US$3.12/sh vs book $18.97). ROIC ~14% is the truer read. |
| Competitor | Threat type | Share trajectory vs DSG | Moat-erosion vector |
|---|---|---|---|
| WiseTech Global (CargoWise) | Direct rival — single-platform forwarding TMS | WiseTech gaining in forwarding; DSG stable in customs | Unified platform + scale; absorbed E2open (~US$2.1B, Aug 2025), concentrating end-to-end orchestration |
| project44 / FourKites | Real-time visibility substitution | Stable; DSG added GLN visibility | ETA/visibility analytics |
| Manhattan Associates | TMS/WMS in retail-distribution | Stable | High-R&D TMS/WMS in DSG-adjacent segments |
| SAP / Oracle (ERP) | Bundled-suite substitution | Stable — DSG wins as neutral integrator | Deep ERP integration vs DSG neutrality |
ROIC ~14% on an asset-light base (net cash, low capex — capex <1% of revenue). The core skill is disciplined, cash-funded M&A: dozens of accretive bolt-on acquisitions of niche logistics-tech assets, integrated onto the GLN, with no reliance on debt or equity issuance. Management (CEO Ed Ryan, long-tenured) runs a returns-focused acquisition framework — the Constellation-style compounder playbook applied to logistics software. Skin-in-the-game: modest insider ownership; SBC low relative to tech peers.
Why not GAAP P/E: As a serial acquirer, Descartes' GAAP EPS is depressed by acquired-intangible amortization and its ROE by goodwill-heavy equity. The trailing GAAP P/E (~35x) and Yahoo's "forward P/E 22x" (an adjusted-EPS figure) bracket a misleading range. We therefore work from a clean P/E of ~35× (non-operating income <2% of net income) and test it against the warranted-multiple anchor above (~24×); the cash-based multiples (EV/EBITDA, FCF yield) below are corroborating context, not the primary anchor.
| Metric | DSG | Reference | Read |
|---|---|---|---|
| EV/EBITDA (TTM) | 18.1x | Quality scale-SaaS 15–22x | Fair — mid-range for the quality tier |
| FCF yield (FCF/EV) | ~4.6% | 3–5% typical for quality growth | Fair; honest cash yield |
| P/Sales (TTM) | ~8.2x | Rich but network-moat justifies | Full |
| NTM P/E (GAAP, FMP) | ~28–32x | Below its own historical ~35–40x | De-rated vs own range |
| PEG (trailing) | ~1.5 | ~1 = fair | Slightly full on growth-adjusted |
Primary driver: B2B logistics SaaS is tethered to (a) the enterprise IT / supply-chain software spending cycle and (b) global-trade activity & complexity. These pull in opposite directions right now — the defining nuance for this name.
| Horizon | Read | Source / date |
|---|---|---|
| Historical (12–24m) | Resilient supply-chain-tech spend; DSG grew revenue mid-teens through a choppy trade backdrop | Company filings, Jun 2026 |
| Current | Cross-current: softening global-trade volumes pressure GLN transaction counts, BUT rising tariffs/customs complexity lift compliance-software demand per shipment — a structural tailwind unique to DSG's customs/content niche. CEO (Jun 3) called the trade landscape "extremely challenging" while noting network data now fuels AI solutions. | Q1 FY27 release, 3 Jun 2026 |
| Forward (6–12m) | Fed-easing / soft-landing lead supports growth-software multiples; deglobalisation keeps customs demand elevated; offset by trade-volume risk | MacroDriver 2026-07-03 |
The 2026-07-03 MacroDriver report leads with a Soft Landing regime (weak June jobs +57k reviving the Fed-cut path) and rates Technology (XLK) Outperform across Short/Medium/Long. Lower rates + a soft landing are a tailwind for cash-generative growth software. Going long DSG rides that economic trend → Trend-Following, conviction 68. Note the deglobalisation/tariff driver is a cross-current that is net positive for a customs-software name specifically. This Tailwind pressure cannot lift the signal here: the base is HOLD (High Quality + Expensive Valuation), and STRONG-BUY amplification is blocked by the Expensive pillar — independent of the driver, which at 63 is also below the ≥65 threshold.
Source: sector-map (GICS Technology → XLK; not yet a macro-watchlist name) · Macro report 2026-07-03
Risk-Reward (CAD): Price C$102.69, just above the daily 50-day (~C$101) but below the 200-day (~C$112). Nearest support C$92–93, then the C$85–88 zone (52-week low C$85.26 / weekly support C$88.6). A stop below C$88 is ~C$15 / ~3.5 daily-ATR (ATR ~C$4.1) away — wider for a swing, acceptable for a position. Reward to base C$128 (+25%) vs risk to C$88 stop (-14%) ≈ 1.8:1 favourable.
Relative strength: Down ~32% from the C$150.74 52-week high and sitting at only ~27% of its 52-week range — a laggard on 3–6-month lookback, but the late-June bounce (C$94→103 with higher lows) shows near-term leadership returning. Beta 0.19 (low correlation to the tape, not low absolute risk).
Macro overlay: Favourable — Fed easing / soft landing, XLK Outperform, VIX contained. Sentiment: bullish — 14 Buy / 1 Hold consensus, recent upgrades (Rothschild→Buy Apr, Barclays→Overweight Jan, Raymond James→Outperform Dec), Loop Capital maintained Buy 4 Jun. Catalyst: calm — next earnings 2 Sep is >30 days out; no clustered events.
| Date | Event | Impact | Forecast | Previous | Relevant? | Why |
|---|---|---|---|---|---|---|
| 2026-07-06 | ISM Services PMI (Jun) | High | 54.2 | 54.5 | Low | Broad activity gauge; minimal direct DSG impact (low macro-sensitivity SaaS) |
| 2026-07-07 | LMI Logistics Managers Index (Jun) | Low | — | 69.5 | Medium | Logistics-activity proxy — soft read on GLN transaction demand |
| 2026-07-07 | Balance of Trade / Exports / Imports (May) | Medium | -78.8 | -55.9 | Medium | Trade-volume signal for the GLN transaction layer |
| 2026-09-02 | DSGX Q2 FY27 Earnings | High | EPS $0.58e | $0.51 | Yes | The next company catalyst — sets the next re-rate |
| Date | Event | Actual | Forecast | Surprise | Impact |
|---|---|---|---|---|---|
| 2026-07-02 | Non-Farm Payrolls (Jun) | 57K | 110K | -48% (below) | Dovish — revives Fed-cut path, supports growth-software multiples |
| 2026-07-02 | Unemployment Rate (Jun) | 4.2% | 4.3% | below | Mixed — labour softening but not cracking |
| 2026-07-02 | Factory Orders MoM (May) | -1.3% | -1.8% | above | Slightly better than feared |
DSG is a low-macro-sensitivity name, so no economic release forces a WAIT override. The genuinely relevant reads are logistics/trade prints (LMI, trade balance) as a proxy for GLN transaction volumes, and the Fed path — the weak June jobs report is a tailwind for growth-software valuations. No high-impact event inside the 3-day window; no timing-confidence penalty.
| Timeframe | Trend | Direction | RSI | MACD | Key S/R | Breakout | Vol |
|---|---|---|---|---|---|---|---|
| Monthly | Downtrend | Bearish | 41 | - falling | S: C$86 · R: C$116 / 129 | Support breakdown | 0.1x |
| Weekly | Downtrend | Bearish | 48 | - (hist turning up) | S: C$88 · R: C$135 / 154 | Support breakdown | 0.8x |
| Daily | Recovering | Neutral | 55 | + turning up | S: C$92 · R: C$110 / 114 (200d C$112) | — | 1.1x |
| Hourly | Uptrend | Bullish | 66 | + rising | S: C$97 · R: C$103 | Resistance breakout | 2.6x |
| 15-min | Strong Up | Bullish | 51 | + | S: C$100 · R: C$104 | Resistance breakout | 3.5x |
| Confluence: Mixed / transitioning — recovering off a base · MTF Score 50 | |||||||
The higher timeframes (monthly, weekly) remain in downtrends after the C$150→C$85 decline, and price is still below the daily 200-day (~C$112) — so this is not yet a confirmed uptrend. But the daily has flipped to 'recovering' (price back above the 50-day ~C$101, MACD histogram turning positive), and the intraday frames are firmly up on strong volume (hourly/15-min resistance breakouts). Net: a basing name with improving near-term momentum. Key trigger — a weekly close reclaiming the 200-day zone (~C$112–114) would confirm the trend turn; failure back below C$92 reopens the C$85–88 support. All levels converted from the USD (DSGX) technical read at USD→CAD 1.4107.
TSX:DSG — 6-month daily close (CAD) with 50-day SMA. Feb selloff to ~C$85, base built through Q2, late-June recovery toward C$103. Key levels: support C$88, 50-day C$101, 200-day/resistance C$112, fair value ~C$122.
Trend-turn confirms (reclaims 200-day); tariff/customs-complexity demand accelerates and GLN data monetisation gains traction; a couple of accretive acquisitions re-rate the multiple back toward its historical mid-30s P/E. Prob ~25%.
Mid-teens revenue growth continues, margins hold ~42% EBITDA, M&A stays accretive; multiple normalises modestly as rate cuts support growth software. Converges toward the low end of the analyst consensus (C$134–139) with a haircut for trade-volume risk. Prob ~50%.
Global-trade recession cuts GLN transaction volumes; WiseTech's forwarding-TMS momentum (post-E2open) pressures growth and multiple; further de-rating below the 52-week low. Competitive share loss to CargoWise is the explicit downside trigger. Prob ~25%.
Forecast: No entry path is open (0 of 3 → Wait). The Fundamental path is now closed because the multiple is Expensive (35× vs ~24× warranted); it would re-open only on a meaningful pullback toward the warranted zone. The Technical group is the swing factor: on the current recovery trajectory a reclaim of the 200-day (~C$112) is ~3–5 weeks away — but a technical entry into an Expensive name is a trade, not a value entry. The Catalyst group is event-dependent on Q2 FY27 earnings (2 Sep). Net: wait for a better price or a genuine trend-turn — there is no value-based entry edge at 35×.
Forecast: No exit trigger is live. Stop (C$88) is ~14% below spot and unlikely in 4–6 weeks absent a trade-shock or earnings miss; profit-trim (C$134+) is ~30%+ away. Principal risk trigger to watch: the 2 Sep earnings print and any WiseTech share-gain evidence.
What you're risking: ~C$15/share (-14%) to the hard stop, and the bear path to C$82 (trade recession + WiseTech share loss). The Technical entry group is not yet met — you'd be buying into unconfirmed higher-timeframe downtrends, ahead of the trend-turn signal (a 200-day reclaim). No catalyst cushions you before 2 Sep.
What you're gaining: immediate exposure to ~C$128 base (+25%) and C$155 bull (+51%) upside on a debt-free compounder ~30% below analyst consensus and ~32% off its high; a ~4.6% FCF yield and ongoing accretive-M&A optionality you own while you wait; plus the ~free tariff-complexity/data-monetisation options. Risk-reward ~1.8:1.
Read: On the warranted-multiple anchor the stock is Expensive (35× vs ~24× warranted), so there is no value-based entry edge here — the ladder reads Wait. A high-quality compounder is worth owning, but a better price (toward the warranted zone) or a confirmed trend-turn improves the odds materially; the fundamentals aren't going anywhere before September.
What you're giving up: the C$128 base (+25%) and the free tariff/data optionality; you'd be exiting ~16% below a conservative fair value (C$122) and ~30% below consensus.
What you're protecting: capital if the bear (C$82) plays out on a trade downturn or WiseTech share loss. But note: no exit rule is currently triggered — the stop isn't hit, no profit-target, thesis intact.
Read: There is no mechanical reason to sell — no exit rule is triggered, so HOLD the quality; Expensive caps the add, it does not force an exit.
No risk budget or portfolio role was supplied, so a position size is not prescribed. Framework context only: the §12 Conviction Ladder reads Wait (0 of 3 entry paths met — the Fundamental path is closed by the Expensive 35×-vs-24×-warranted multiple), i.e. no value-based entry edge here; a pullback toward the warranted zone or a confirmed trend-turn would re-open a path. Volatility: daily ATR ~C$4.1 (~4% of price); the name fell ~32% from its 52-week high, so despite a low beta (0.19) it carries real single-name drawdown risk — beta measures low correlation, not low risk. Suggested approach if entering: stagger 2–3 tranches (now / on a C$92 higher-low / on a 200-day reclaim) rather than all-in.
{
"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-07-03",
"version": "v6",
"analysis_status": "starting",
"user_context": {
"horizon": null,
"allocation_pct": null,
"portfolio_role": null
},
"price_at_rating": 102.69,
"signal_short": "HOLD",
"signal_medium": "HOLD",
"signal_long": "HOLD",
"primary_signal": "HOLD",
"quality_score": 78,
"lifecycle_stage": "growth",
"quality_detail": {
"industry_benchmark_name": "Rule of 40 (SaaS)",
"industry_benchmark_value": 51,
"industry_benchmark_score": 80,
"moat_score": 72,
"roic_percentile_vs_peers": 65,
"capital_allocation": 80,
"management_skin_in_game": 58
},
"valuation_score": 37,
"valuation_detail": {
"fcf_yield": 4.6,
"ev_ebitda": 18.1,
"implied_growth_rate": 12.0,
"consensus_growth_rate": 13.0,
"historical_valuation_decile": 3,
"warranted_multiple": 24,
"actual_multiple": 35,
"val_multiple_basis": "clean P/E",
"discount_rate_r": 9.0,
"risk_free_10y": 4.48,
"g_near": 10.5,
"g_term": 3,
"warranted_ratio": 1.48,
"val_band": "expensive"
},
"timing_score": 55,
"timing_detail": {
"mtf_confluence": 50,
"risk_reward_score": 58,
"relative_strength_vs_spy": -18.0,
"relative_strength_vs_sector": -12.0,
"catalyst_clustering_score": 75,
"dynamic_macro_weight": 0.1
},
"driver_score": 63,
"driver_label": "Neutral / mild tailwind",
"driver_amplifies": false,
"economic_alignment_stance": "Trend-Following",
"economic_alignment_conviction": 68,
"economic_alignment_pressure": "Tailwind",
"economic_alignment_source": "sector-map",
"macro_report_date": "2026-07-03",
"nonop_pct_of_net_income": 1.6,
"clean_pe": 35.0,
"clean_peg": 1.5,
"competitive_share_trajectory": "stable",
"competitive_threat_level": "moderate",
"overall_confidence": 62,
"fair_value_est": 122.0,
"stop_loss": 88.0,
"target_price": 128.0,
"scenario_base_target": 128,
"scenario_bull_target": 155,
"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": 98.5,
"analyst_target_high": 118,
"analyst_target_low": 82,
"analyst_target_upside_pct": 35,
"analyst_grades_consensus": "Buy",
"analyst_bullish_pct": 93,
"analyst_coverage_count": 13,
"fmp_rating": "A-",
"fmp_overall_score": 4,
"recent_upgrades_30d": 0,
"recent_downgrades_30d": 0,
"user_horizon": null,
"user_allocation_pct": null,
"portfolio_role": null,
"next_update_date": "2026-07-17",
"next_update_basis": "default +14d (next earnings 2026-09-02 beyond window)"
}
First report — no prior calibration, so no deltas. Signal set by the Decision Matrix from the three fundamental pillars (Q78 High, V37 Expensive on the new warranted-multiple anchor, T55 Improving): High Quality + Expensive → base HOLD across horizons, and the STRONG-BUY amplification is blocked regardless of the driver. Re-rated 2026-07-03 from BUY/BUY (M/L) to HOLD as Valuation moved to the warranted-multiple basis (35× vs ~24× warranted; above the 33× software guardrail).