2025 wMAPE by aggregation grain — same plan, same actuals
Each bar re-slices the identical plan-vs-actual dataset. Coarser grain lets over- and under-forecasts across channels and months net out.
wMAPE by year and grain
Greyed years: under 80% of Srixon-brand actual volume matched plan line names (naming drift in older tabs) — treat as indicative. Coverage vs whole cube is lower because the cube spans all brands (Cleveland, XXIO, Asics, Tennis) while the plan file is Srixon golf only.
Plan vs actual units by month
Monthly wMAPE (product line × channel grain)
wMAPE per month = Σ|plan−actual| ÷ Σactual across all product line × channel cells in that month.
Month table
Annual plan vs actual by channel
Monthly wMAPE by channel
Channel table
Channel groups are canonical rollups — see the Data Model tab for the exact mapping. OFF/KEY/OTHER pools every bucket that lacks a clean 1:1 name on both sides.
Drill-down: monthly plan vs actual, by channel
Product line table (2025) — click headers to sort
Annual wMAPE = |Σplan−Σactual| ÷ Σactual for the year. Monthly wMAPE = Σ|plan−actual| ÷ Σactual over channel × month cells — the planning-grain error for that line.
Trace plan vs actual at any slice
Δ = plan − actual (positive = over-planned). |err| and wMAPE are computed at the grouped grain shown — regroup to watch errors cancel at coarser slices. Product filter: pick a name from the dropdown (or type it in full) for an exact match; type a fragment (e.g. SOFT FEEL) to see the whole family. Rows render up to 3,000; refine filters or download the CSV of the current slice for the full set. 2022–2024 are indicative only (plan-name coverage <80%).
How the data model was built
1 · Plan (forecast) — from Excel
- File:
SRX 2026 Live File_07072026.xlsx(04_DSA_excel/03_Data/raw) - Tabs:
2022 - SALES…2025 - SALES - Fields: Product Line (or MODEL), CHANNEL (or SOP Channel Desc), 12-column Total Units block (J…D)
- Cleaning: header auto-detected in first 8 rows (layouts differ by year);
ADJchannel dropped (internal adjustment bucket); names upper-cased & trimmed
2 · Actuals — from data cube
- File:
T02OrderData.csv(04_DSA_excel/03_Data/data_cube) - Note: file ships with no header row — 19 columns named per the T-02 field spec in DSA_Data_Request_vShare.xlsx
- Fields used: product_line_desc, year, period, sop_region_desc, qty (net units incl. returns/credits)
- Aggregation: Σqty by product line × region × year × month
3 · Join & measure
- Keys: product line name + canonical channel group + month
- Join: full outer, then scoped to product lines present in that year's plan tab
- Plan cells with no shipments and shipments with no plan both count as error
- wMAPE computed after aggregating to each reporting grain
The formula
— after summing plan and actual to that grain first.
grains: company × year | product line × year | PL × channel × year | PL × channel × month
Aggregation order is why the same data yields 0.3%, 16.8%, 42% and 95%: summing before taking the absolute value lets a +10k miss in ON COURSE cancel a −10k miss in AMAZON, and a March over-forecast cancel a June under-forecast. Planning decisions (build plans, allocations, buys) are made at PL × channel × month, so that grain is the honest baseline for the value case's K1.
What came from where
| Element | Source | Detail |
|---|---|---|
| Forecast (plan units) | Excel — live planner file | 'YYYY - SALES' Total Units monthly block, per product line × channel |
| Actual shipments | Cube — T02OrderData | Net order qty, 2020–2026, item-level rolled to product line × region × month |
| Channel dimension | Cube — T06ChannelRegionDim | Used to design the canonical rollup (SOP region → channel → on/off) |
| Field names for headerless T02 | Excel — DSA_Data_Request_vShare.xlsx | T-02 field spec sheet |
| Annual sanity check | Excel — 2017-2025 forecast accuracy.xlsx | Brian's B1/B2 vs actual revenue, product × year (B2 pooled wMAPE 18.1%) |
Canonical channel mapping
| Group | Plan CHANNEL values | T02 SOP region values |
|---|---|---|
| ON COURSE | ON COURSE, ON COURSE FITTERS | ON COURSE |
| AMAZON | AMAZON | AMAZON |
| ECOM | ECOMMERCE, GOLFBALLS.COM | ECOMMERCE, GOLFBALLS.COM |
| MASS | WALMART, TARGET | WALMART, TARGET |
| SPORTING GOODS | DICKS, SPORTING GOODS | DICKS, OTHER SPORTING GOODS |
| DISTRIBUTOR | DISTRIBUTOR | DISTRIBUTOR |
| OFF/KEY/OTHER | GALAXY, KEY, PGATSS, ROGER DUNN, CLUB CHAMPION, OFF*, NON DEALERS, OTHER DOMESTIC, SRX PARTNER, SRX VAN | OFF COURSE, PGATSS, ROGER DUNN, CLUB CHAMPION, GOLFTEC, 2ND SWING, CARL'S GOLFLAND, OTHER DOMESTIC |
PGATSS / ROGER DUNN / CLUB CHAMPION exist on both sides but the plan also carries a generic KEY bucket that can hold their volume — pooling them avoids false channel misses.
Caveats & limitations
- Live plan, not frozen submissions. The 'YYYY - SALES' tabs are continuously revised during the year (≈ B3/B4 state). A true B1 baseline needs the frozen B1–B4 submission files (data request F-01 — marked available by the client, not yet delivered).
- Name-match coverage. Within Srixon-brand actuals, plan-line name matching captures 95.7% of 2025 volume but only 45–66% in 2022–2024 (naming drift) — those years are indicative only.
- Channel rollup is approximate. Plan-only buckets (KEY, GALAXY, OFF REG…) and cube-only regions (GOLFTEC, 2ND SWING…) pool into OFF/KEY/OTHER.
- Units basis. Actuals are net order quantity including returns/credits; 2025 totals reconcile with plan within 0.3%. Revenue-weighted wMAPE would differ.
- Scope. Srixon golf only (the plan file's scope). Cleveland, XXIO, Asics in the cube are untouched.