Canadian wholesale inventory-cycle intelligence (monthly)
Monthly Canadian wholesale inventory-cycle intelligence from Statistics Canada's Monthly Wholesale Trade Survey: sales (table 20-10-0074-01) joined with inventories (table 20-10-0076-01) for the headline aggregate and the 8 major NAICS wholesale groups (the 7 majors + petroleum [412]), Canada-national, seasonally adjusted. Inventory-to-sales ratios (months of supply), 60-month z-scores, sales/inventory momentum (MoM, 3-month-annualized, YoY), a documented 0-100 inventory pressure score with per-month industry ranks, overstock/understock flags, and an additive decomposition of headline YoY growth into industry contributions (they sum exactly to the published total). Caveats: thousands of Canadian dollars (kept verbatim); every series starts 1993-01 except petroleum [412], published from 2023-01 (petroleum sales for 2021-01–2022-12 are derived as headline minus the seven published groups; petroleum sales are null before 2021-01 and petroleum inventories stay null before 2023-01); the latest months are preliminary and may be revised. Statistics Canada Open Licence (commercial reuse allowed); source: Statistics Canada.
- Source
- Statistics Canada
- Rows
- 3,627
- Columns
- 29
- Source cadence
- Monthly
- Last refreshed
- Sep 26, 2026
- Theme
- economy
| Column | Type | Description |
|---|---|---|
| month | string | Reference month: first day of the month, ISO date. (unit: ISO date) |
| country_code | string | ISO alpha-3 country code (CAN for every row). (unit: ISO 3166-1 alpha-3) |
| industry_code | string | Industry key: 'total' for the headline 'Wholesale trade [41]' aggregate, else the NAICS group code (411/413/414/415/416/417/418). Primary join key with month. (unit: NAICS code) |
| industry_label | string | Provider-verbatim industry label. |
| is_headline | integer | 1 for the headline aggregate row, 0 for the 8 industry groups. (unit: binary) |
| sales_thousands | float | Wholesale sales, seasonally adjusted, as published: in thousands of Canadian dollars (multiply by 1,000 for dollar amounts). Non-negative float; genuine upstream gaps are missing, never zero-filled; the latest month is preliminary and may be revised. Exception: petroleum [412] sales for 2021-01–2022-12 are derived as headline minus the seven published groups (see petroleum_imputed_flag); petroleum sales are null before 2021-01. (unit: thousands of CAD, seasonally adjusted) |
| inventory_thousands | float | Wholesale inventories (book value), seasonally adjusted, as published: in thousands of Canadian dollars. Same caveats as sales_thousands. Petroleum inventories are null before 2023-01 (out of the headline scope until then) and are never imputed. (unit: thousands of CAD, seasonally adjusted) |
| petroleum_imputed_flag | integer | 1 on the 24 petroleum [412] rows for 2021-01–2022-12, whose sales_thousands is derived as headline sales minus the seven published groups (petroleum entered the headline scope in 2021-01 but StatCan only published the industry vector from 2023-01; the residual is exact — it continues smoothly across the 2022-12/2023-01 break and matches the published vector within rounding from 2023-01 on). 0 everywhere else, including pre-2021 petroleum rows, which stay null rather than fabricated as 0.0. (unit: flag 0/1) |
| inv_sales_ratio | float | Inventories divided by sales: months of supply at the current sales pace. Null when sales are null or zero. (unit: ratio) |
| ratio_z_60m | float | Z-score of inv_sales_ratio against its trailing 60-month mean/std (minimum 24 observations; null when the window std is 0). Positive = stockpiling relative to the 5-year norm. (unit: z-score) |
| ratio_change_12m_pp | float | Change in inv_sales_ratio versus 12 months earlier. (unit: pp) |
| sales_mom_pct | float | Month-over-month percent change in sales. (unit: percent) |
| sales_ann_3m_pct | float | 3-month change in sales annualized: ((sales_t / sales_{t-3}) ^ 4 - 1) * 100. (unit: percent, annualized) |
| sales_yoy_pct | float | Year-over-year percent change in sales. (unit: percent) |
| inv_mom_pct | float | Month-over-month percent change in inventories. (unit: percent) |
| inv_yoy_pct | float | Year-over-year percent change in inventories. (unit: percent) |
| inventory_pressure_score | float | Documented 0-100 composite: 100 * (0.50 * min-max(winsorized ratio_z_60m, +/-2.5) + 0.50 * min-max(winsorized -sales_yoy_pct, +/-15pp)), min-maxed within each month across the 8 industry groups. Higher = more overstock pressure (elevated inventories plus weak sales). (unit: 0-100 score) |
| inventory_pressure_rank | integer | Per-month rank of inventory_pressure_score across the 7 industry groups (1 = highest overstock pressure). Null for the headline row. (unit: rank) |
| overstock_flag | integer | 1 when ratio_z_60m exceeds +1.0 (inventories more than one std above the 5-year norm). (unit: binary) |
| understock_flag | integer | 1 when ratio_z_60m is below -1.0. (unit: binary) |
| expanding_flag | integer | 1 when sales_mom_pct is positive. (unit: binary) |
| contracting_flag | integer | 1 when sales_mom_pct is negative. (unit: binary) |
| sales_record_high_12m_flag | integer | 1 when sales equal the trailing-12-month maximum (inclusive). (unit: binary) |
| top_driver_industry | string | NAICS code of the industry contributing most to headline sales YoY in the applicable regime (headline rows only): 7-group decomposition before 2021-01 (petroleum out of the headline scope), 8-group from 2022-01; null in 2021 (no exact decomposition) and when YoY is unavailable. Deterministic: earliest NAICS code wins ties. (unit: NAICS code) |
| top_driver_industry_label | string | Provider-verbatim label of the top driver industry (headline rows only). |
| top_driver_contrib_pp | float | The top driver's contribution to headline sales YoY growth, in percentage points (headline rows only). (unit: pp) |
| industry_breadth_share | float | Share of industry groups with sales YoY growth above zero among groups with data (headline rows only; null when fewer than 6 have data) — 7 groups through 2021, 8 from 2022-01. (unit: share) |
| source_table | string | StatCan product IDs behind the row (20100074 sales + 20100076 inventories). |
| row_hash | string | Deterministic 16-hex row hash of industry_code + month (idempotency). |
First 10 sample rows — a preview, not the complete dataset.
| month | country_code | industry_code | industry_label | is_headline | sales_thousands | inventory_thousands | petroleum_imputed_flag | inv_sales_ratio | ratio_z_60m | ratio_change_12m_pp | sales_mom_pct | sales_ann_3m_pct | sales_yoy_pct | inv_mom_pct | inv_yoy_pct | inventory_pressure_score | inventory_pressure_rank | overstock_flag | understock_flag | expanding_flag | contracting_flag | sales_record_high_12m_flag | top_driver_industry | top_driver_industry_label | top_driver_contrib_pp | industry_breadth_share | source_table | row_hash |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1993-01-01 | CAN | total | Wholesale trade [41] | 1 | 16,916,924 | 23,442,321 | 0 | 1.386 | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | ddf4803161d4b7c3 |
| 1993-01-01 | CAN | 411 | Farm product merchant wholesalers [411] | 0 | 195,614 | 39,244 | 0 | 0.201 | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | fad58b83d143b799 |
| 1993-01-01 | CAN | 412 | Petroleum, petroleum products, and other hydrocarbons merchant wholesalers [412] | 0 | — | — | 0 | — | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | c237ab8813af6fe1 |
| 1993-01-01 | CAN | 413 | Food, beverage and tobacco merchant wholesalers [413] | 0 | 3,809,672 | 2,493,710 | 0 | 0.655 | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | d9c343c418964880 |
| 1993-01-01 | CAN | 414 | Personal and household goods merchant wholesalers [414] | 0 | 2,243,180 | 3,294,035 | 0 | 1.468 | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | 7a733f3c699b6c81 |
| 1993-01-01 | CAN | 415 | Motor vehicle and motor vehicle parts and accessories merchant wholesalers [415] | 0 | 2,538,775 | 4,102,705 | 0 | 1.616 | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | 8c01d24ff1cd7af8 |
| 1993-01-01 | CAN | 416 | Building material and supplies merchant wholesalers [416] | 0 | 2,672,936 | 3,892,554 | 0 | 1.456 | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | 8a24c57a1187bf43 |
| 1993-01-01 | CAN | 417 | Machinery, equipment and supplies merchant wholesalers [417] | 0 | 3,327,132 | 6,938,687 | 0 | 2.085 | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | 0196dc6a7384b3d5 |
| 1993-01-01 | CAN | 418 | Miscellaneous merchant wholesalers [418] | 0 | 2,129,615 | 2,681,384 | 0 | 1.259 | — | — | — | — | — | — | — | — | — | 0 | 0 | 0 | 0 | 0 | — | — | — | — | 20100074+20100076 | 072094905f38bef3 |
| 1993-02-01 | CAN | total | Wholesale trade [41] | 1 | 16,826,720 | 24,073,233 | 0 | 1.431 | — | — | -0.533 | — | — | 2.691 | — | — | — | 0 | 0 | 0 | 1 | 0 | — | — | — | — | 20100074+20100076 | b940d72493d7602b |
- Current
20260926T151840Z-46309c14e1e1 · sha256 46309c14e1e1…
3,627 rows · first snapshot
Point any LLM at the metadata endpoint — the documentation above is machine-readable too (JSON-LD + Croissant).
curl "https://datazimuts.com/v1/datasets/statcan_wholesale_cycle_intel/ca_wholesale_inventory_cycle_monthly" | jq '{title, rows, columns_count, license}'import requests
ds = requests.get("https://datazimuts.com/v1/datasets/statcan_wholesale_cycle_intel/ca_wholesale_inventory_cycle_monthly").json()
print(ds["title"], ds["rows"], "rows")
# Sample rows for an LLM context window
for row in ds.get("sample_rows", [])[:5]:
print(row)API endpoint: https://datazimuts.com/v1/datasets/statcan_wholesale_cycle_intel/ca_wholesale_inventory_cycle_monthly
Tip: fetch /llms.txt for the full machine-readable catalog.
Where this data comes from and what was made from it. Other people's work shows as counts; only shared projects are named.
Cite this snapshot
Pinned to snapshot 20260926T151840Z-46309c14e1e1 and its content hash, so readers get exactly the data you used.
Statistics Canada. (2026). Canadian wholesale inventory-cycle intelligence (monthly) [Data set, snapshot 20260926T151840Z-46309c14e1e1, sha256 46309c14e1e1]. Datazimuts. Retrieved 2026-09-26, from https://datazimuts.com/en/datasets/statcan_wholesale_cycle_intel/ca_wholesale_inventory_cycle_monthly?snapshot=20260926T151840Z-46309c14e1e1
@misc{dz_statcan_wholesale_cycle_intel_ca_wholesa_46309c14,
title = {{Canadian wholesale inventory-cycle intelligence (monthly)}},
author = {{Statistics Canada}},
year = {2026},
publisher = {Datazimuts},
howpublished = {\url{https://datazimuts.com/en/datasets/statcan_wholesale_cycle_intel/ca_wholesale_inventory_cycle_monthly?snapshot=20260926T151840Z-46309c14e1e1}},
note = {Snapshot 20260926T151840Z-46309c14e1e1, sha256 46309c14e1e1e7d6ac124cbeb2c8fb432b0db6dad2a42e778dd81d2582228587; accessed 2026-09-26}
}Embed a table or a chart
Paste this into any page. The embed is pinned to the same snapshot, follows the reader's light or dark setting, and always shows the source, license and a link back.
<iframe src="https://datazimuts.com/embed/chart?dataset=statcan_wholesale_cycle_intel%2Fca_wholesale_inventory_cycle_monthly&lang=en&theme=auto&snapshot=20260926T151840Z-46309c14e1e1&x=month&y=is_headline&agg=avg" title="Canadian wholesale inventory-cycle intelligence (monthly)" width="100%" height="380" style="border:0" loading="lazy"></iframe>
Ask about this dataset. Answers come only from its catalog record, measured profile and change history, and list the facts they used.