Skip to main content
GMROI is a third optimization goal in Price Optimization, alongside Maximize Profit and Maximize Revenue. Where those two look only at margin or volume, GMROI (gross-margin return on inventory) weighs margin against how fast a SKU’s stock is turning - so prices protect fast movers from stocking out and clear slow movers before they age. Use it when inventory position matters to the price, not just elasticity: seasonal stock, perishable or end-of-life ranges, or any category where capital tied up in stock is the constraint.

How it reads inventory

GMROI routes each SKU by its projected days of supply - how many days current stock will last at today’s price, from the seasonal demand forecast (the same figure as the Forecasted days of supply metric). Around that it applies the guardrails you set and still runs your pricing rules as the final gate.

Configure a GMROI run

On the General tab of the Price Optimization dialog, set Optimization Goal to GMROI. Two inventory controls then apply:
  • Days of Supply min / max - the healthy band you want stock to sit in, in days. Defaults to 7 and 30. Below the minimum a SKU is heading for a stockout; above the maximum it is overstocked. The minimum must be lower than the maximum.
  • End-of-life date (optional, per SKU) - a date by which the stock should be cleared. The optimizer treats the days remaining until then as a deadline for markdowns.
Everything else on the Parameters, Rules, and Automation tabs works exactly as for a profit or revenue run.

What the optimizer does with it

GMROI adjusts to how much inventory configuration you’ve provided, so it never breaks for categories that aren’t set up yet:
  • No days-of-supply band and no end-of-life date - it falls back to profit-only and behaves like a Maximize Profit run.
  • An end-of-life date but no days-of-supply band - it adds deadline-driven markdowns as the date approaches.
  • A days-of-supply band set - it routes on projected days of supply: price up hard when a SKU is close to a stockout, optimize for profit while it sits in the healthy band, and mark down - more steeply the closer the deadline - when it is overstocked or near end-of-life.
Whatever branch a SKU takes, your pricing rules (margin floor, competitor corridor, price-change limit, rounding, and the rest) run last as guardrails on the recommendation, so a markdown can’t breach your margin floor and a price-up can’t jump further than your change limit allows.

Read the result

GMROI recommendations land in the grid’s Price Approval tab as a Proposed Price per row, with the same supporting columns as any optimization run, plus the forecasted sales impact over your chosen horizon. Open the Price Analysis panel on any row to see why that price was proposed, then review and publish through the price approval workflow. When a rule held a price during the run, Price Approval shows the blocked action rather than reporting no change.

Common pitfalls

  • No forecast, no routing. A SKU with no stock value or no forecast can’t be placed on the days-of-supply band; it falls back to profit-only. Make sure stock is loaded and the SKU has enough history to forecast.
  • Too tight a band. A very narrow days-of-supply band pushes more SKUs into the emergency and clearance branches. Start with the 7/30 default and widen or narrow once you’ve seen a run.
  • Rules still win. GMROI proposes; your pricing rules and your approval step still gate every price. Nothing goes live without your sign-off.