Sign in

Blog · Forecast and pipeline

Fashion demand forecasting: sizes, seasons and markdowns

Compare seasonal fashion forecasts with sales by style, color and size. Separate availability constraints from forecast errors and keep full-price demand distinct from later markdown sales.

The short answerFashion demand forecasting estimates seasonal sales by style, color, size and channel. Compare the approved forecast with sales during the same selling window and price phase, then check stock availability and returns. A style total can match its forecast while the wrong sizes remain unsold, and later markdown sales should not rewrite the original full-price demand result.

Fashion demand forecasting compares seasonal style and size plans with sales during the same selling window, before markdowns change the buying conditions. Check stock availability before reading low sales as low demand. A style can hit its total forecast while the wrong sizes sell out and the rest require discounts.

Fix the selling window and the unit of comparison

Start with one row per style, color, size, channel and week. Bring the approved unit forecast, opening sellable inventory, receipts, sales, returns, transfers and stock availability from the business's existing exports. Include launch date, season and price phase so a launch week is not compared with a clearance week.

Define sales consistently. The example below uses sold units with no customer returns. In a live review, show gross sales and returns separately if returns relate to earlier selling periods. A return received this week does not automatically prove that this week's demand was lower.

Inventory and sales describe different things. The Census Bureau defines retail inventories as merchandise held for sale at the end of the reporting period. Its published measure is at cost; the availability review here uses physical units and therefore needs a separate cost export for inventory valuation.

Use the general demand forecasting guide for the broader measurement choices. The specific issue here is how seasonal timing, size availability and price phases change the interpretation of actual sales.

Compare the same style across its sizes

A US apparel retailer reviews a navy dress during the seven-day week ended October 17, 2026. Every sold unit was priced at $100. There were no receipts, transfers, returns or inventory losses during the week. Available units therefore equal opening sellable stock.

The approved forecast was frozen before the week began. Put the following table in A:F:

Size Forecast units Available units Sold units Ending units In-stock days
S 80 100 90 10 7
M 140 150 150 0 5
L 120 150 110 40 7
XL 60 80 50 30 7
Total 400 480 400 80

Check stock in G2, using the recorded ending balance:

=E2-(C2-D2)

Fill down through G5. Every row returns zero. At style level, 480 available - 400 sold = 80 ending units. Full-price sell-through is 400 / 480 = 83.3%, rounded to one decimal place.

=SUM(D2:D5)/SUM(C2:C5)

The inventory identity proves the unit movements reconcile. It does not establish how much demand was lost when size M became unavailable.

Show the size error beneath the correct total

In H2, define signed forecast error as forecast minus sold units. Positive means overforecast. Put absolute error in I2:

=B2-D2
=ABS(H2)
Size Forecast minus sales Absolute error
S -10 10
M -10 10
L 10 10
XL 10 10
Total 0 40

The style forecast and actual sales both equal 400 units. Signed error is zero, but absolute error totals 40 units. Weighted absolute percentage error is 40 / 400 = 10.0%:

=SUM(I2:I5)/SUM(D2:D5)

The total hides a size allocation issue. S and M sold above plan while L and XL sold below plan. For repeated directional misses, the SKU and site forecast-bias review explains how to separate recurring bias from isolated differences.

Do not immediately replace next season's size curve with observed sales shares. Size M sold every available unit, so its sales were constrained. Its observed contribution understates what might have sold with continuous availability, while substitution into other sizes may distort their results too.

Treat availability adjustments as scenarios

Size M sold 150 units over five in-stock days. A simple stocked-day rate is 150 / 5 = 30 units per day. Extending that rate across seven days produces 210 units, which is 60 above recorded sales.

For size M in row 3, the scenario formula is:

=IF(F3>0,D3/F3*7,NA())

That is an assumption, not a recovered observation. It assumes the unavailable days would have sold at the same rate. If those days had different traffic, if sizes substituted for each other, or if availability records missed partial-day shortages, the estimate can be wrong.

Keep the 150 recorded sales in the actuals column and the 210 estimate in a separate scenario column. Ask the merchandise planner to review comparable days, traffic and size requests before changing the replenishment plan. Use the demand forecasting process to preserve the approved change and its rationale.

When assessing a revised forecasting approach, use periods it did not learn from. Forecasting: Principles and Practice explains that forecast accuracy must be assessed on new observations rather than the data used for fitting. Reconstructing a perfect fit after the season is over does not establish a better buying decision.

Keep markdown recovery in its own price phase

Suppose all 80 remaining units sell in the following week at $70 each, with no other movements. Those units clear the stock, but at a different price.

Selling phase Sold units Realized unit price (USD) Sales revenue (USD)
Full-price week 400 100.00 40,000.00
Following markdown week 80 70.00 5,600.00
Season to date 480 95.00 45,600.00

On a separate sheet with this table in A:D, D2 is =B2*C2. The total realized price is:

=SUM(D2:D3)/SUM(B2:B3)

The markdown is (100 - 70) / 100 = 30.0%. Selling those 80 units at the lower price produces 80 × (100 - 70) = $2,400.00 less revenue than selling the same units at the full price. That comparison is arithmetic, not a claim that full-price buyers existed for every remaining unit.

Season-to-date sell-through reaches 480 / 480 = 100.0%. The original full-price forecast result remains 400 actual units against 400 forecast units, with the size errors shown above. Clearing inventory later does not erase those errors.

Where it goes wrong

  • Style totals conceal size misses. Preserve the lowest useful planning grain before adding up results.
  • Sales are treated as unconstrained demand. Flag stockouts and keep any lost-sales estimate separate from actuals.
  • Markdown and full-price weeks are combined. Report units and realized price by phase so price changes remain visible.
  • Different seasonal ages are compared. Align weeks since launch and document calendar or channel differences.
  • Returns are assigned by receipt date alone. Keep their original sales period where the records allow it.

Review your fashion planning file in Covirage

Bring your style and size forecast, sales, stock and price-phase export to Covirage. Covirage maps the columns; its tools compute and check the comparisons, and the external AI model explains the results with every figure traced to its rows. Create a free Covirage account and bring a sample of your own data.

See forecast analysis in Covirage for the supporting workflow.

Questions people ask

Why forecast fashion demand by size?

The style total can conceal shortages in popular sizes and excess inventory in others. Review the size forecast alongside available stock and selling days. A correct total does not prove that the initial size allocation matched customer requests.

Can markdown sales be used in a full-price demand forecast?

Keep markdown sales in a separate price phase. They help explain total seasonal inventory recovery but occurred under a different selling condition. Combining them with full-price sales without identifying the price change makes the original demand assumption difficult to evaluate.

How do you forecast a new fashion style without history?

Document the comparable styles and the differences in price, launch timing, channel and size range. Treat the starting estimate as an assumption with a review date. Early sales can update the plan, but preserve the launch forecast so its accuracy remains measurable.