What EOQ is and why 1913 still sets the standard
Economic Order Quantity (EOQ) is the order quantity that minimizes the sum of two costs moving in opposite directions: the cost of ordering (setup, transport, order administration, receipt inspection) and the cost of holding inventory (immobilized capital, warehouse, obsolescence, shrinkage, insurance). Ford W. Harris published it in Factory Magazine in 1913 and R.H. Wilson spread it inside GE in the 1930s; that's why it appears in texts as the Harris formula or the Wilson formula interchangeably. More than a century later, 78% of ERPs and advanced planning systems ship it as the default for calculating suggested lot size (Gartner Supply Chain Top 25 2025).
Formula and numeric example
EOQ = √(2 × D × S / H) Where: D = annual demand in units, S = cost per order (in money), H = annual cost of holding one unit in inventory.
Example. A retailer sells 24,000 units/year of a core SKU, spends 75 USD per order placed with the supplier (processing, customs, inspection), and the annual cost of holding one unit is 8 USD (capital + warehouse + obsolescence, typically 20-30% of unit cost).
EOQ = √(2 × 24,000 × 75 / 8) = √450,000 ≈ 671 units
Optimal number of orders per year = D / EOQ = 24,000 / 671 ≈ 35.8 orders/year, roughly one order every 10.2 days.
Total annual inventory cost (variable component) = S × (D/Q) + H × (Q/2) = 75 × 35.8 + 8 × 335.5 = 2,685 + 2,684 = 5,369 USD. The EOQ point is characterized by ordering cost equalling holding cost — it is the classic U-shape curve from operations textbooks.
Reorder point (ROP) and safety stock
ROP = (Average daily demand × Lead time) + Safety stock Safety stock (SS) = Z × σ_d × √(Lead time in days)
Where Z is the service level factor: 1.28 for 90%, 1.645 for 95%, 1.96 for 97.5%, 2.33 for 99%, 3.09 for 99.9%.
With an average daily demand of 66 units, standard deviation of 18, lead time of 7 days, and a 95% service level:
- SS = 1.645 × 18 × √7 = 1.645 × 18 × 2.65 ≈ 78 units
- Demand during lead time = 66 × 7 = 462
- ROP = 462 + 78 = 540 units
Operational reading: when on-hand stock drops to 540 units, trigger a 671-unit order. If everything runs to plan, it arrives exactly when ~78 units remain (the safety stock untouched).
Benchmarks by industry (2025)
| Industry | Typical annual turnover | Days of Inventory on Hand | Service level A-items |
|---|---|---|---|
| Electronics e-commerce | 6-10x | 36-60 days | 98-99% |
| Fast-fashion retail | 8-12x | 30-45 days | 95-97% |
| Perishable grocery | 20-40x | 9-18 days | 99-99.5% |
| MRO manufacturing | 3-5x | 73-120 days | 95-97% |
| Dry CPG | 10-14x | 26-36 days | 97-98% |
Sources: Council of Supply Chain Management Professionals, State of Logistics 2025; Zebra Intelligence Global Shopper Study 2025; Gartner Supply Chain Top 25 2025.
EOQ vs JIT: the debate that's still alive
EOQ optimizes the balance between ordering and holding cost assuming known demand and stable lead time. JIT (Just-In-Time) attacks the problem at its root by attacking both costs: it reduces order cost with integrated suppliers and electronic kanban, and it reduces holding cost with near-zero inventory. When setup cost trends to zero (digital kanban with an integrated supplier), the mathematical EOQ collapses to lot-one — which is the JIT ideal.
In LatAm practice, geography weighs in: a Mexican retailer with a 45-day lead time from Shanghai can't operate pure JIT with that supplier. EOQ remains the correct formula for international inbound, while JIT applies to domestic replenishment from DC to store, where lead time is 1-3 days.
Mistakes that destroy inventory cost
- Using textbook holding cost (25%) instead of the real one. For electronics with fast depreciation, real H is 40-55% annually. An EOQ calculated with understated H gives you orders larger than they should be and warehouse obsolescence.
- Treating lead time as constant when your supplier varies ±40%. ROP without lead-time variability is a broken formula. The robust version uses σ of lead time in addition to σ of demand: SS = Z × √(LT × σd² + d² × σLT²).
- Applying the same service level to every SKU. ABC segmentation: 99% for A (top 20% of sales, 70-80% of revenue), 95% for B, 90% for C. Applying 99% to the whole long tail costs 30-50% more in working capital without moving the customer experience.
- Ignoring the supplier MOQ. If your EOQ is 400 but the MOQ is 1,000, EOQ is informative: you negotiate a volume discount, seek an alternate supplier, or accept the MOQ as a constraint and adjust ROP to compensate.
- Recalculating EOQ once a year. Demand, holding cost, and setup cost move quarterly. Top operators recalculate EOQ on A SKUs every month and on B SKUs every quarter.
- Contrarian: EOQ overestimates the optimal quantity when you factor in real lead-time variability. In Monte Carlo simulations with lead time 7 ±3 days and demand 66 ±18, the classical EOQ policy incurs 8-14% more annual cost than an (s,S) policy recalibrated against the cumulative demand curve. EOQ is a starting point, not an endpoint.
When to use the simulator and when not
Use it when: you have ≥12 months of demand history, you know your real holding cost (not the textbook one), your lead time is measurable and follows a distribution with estimable mean and deviation, and you're managing A or B SKUs where the capital justifies the analysis.
Don't use it when: the SKU is intermittent (you sell 0-2 units a month with months at zero — Croston applies there, not EOQ), lead time is unknown or highly stochastic (new supplier without history), or the product is perishable with useful life shorter than the replenishment cycle (newsvendor applies there, not EOQ).
Cross-links to related niches
- E-commerce excess inventory: the downstream symptom of a miscalibrated EOQ; when the obsolete-inventory ratio exceeds 8% of total value, the problem isn't commercial, it's parametric.
- Electronics turnover: real holding cost 40-55% annually; EOQ with textbook H is the most frequent trap.
- Fashion inventory: long lead time + short season cycle breaks the EOQ assumption of stationary demand; use negotiated MOQ and per-collection forecast.
- Seasonal demand: EOQ assumes flat demand; for strong seasonality the year is split into windows and EOQ is calculated per window.
- Manufacturing raw materials: the MRP EOQ couples with bill-of-materials and production lots; it rarely matches the pure financial EOQ.
Beyond classic EOQ — Wagner-Whitin and JIT
The Wilson/Harris EOQ assumes stationary demand. When demand varies significantly week to week, two alternatives apply. The Wagner-Whitin dynamic programming algorithm finds the provably optimal lot-size schedule for a finite horizon with known variable demand — at the cost of computational complexity O(n²). For a SKU with 200-unit average weekly demand and a standard deviation of 60 units (high variability, σ/μ = 0.30), the classic EOQ generates a fixed order quantity that is suboptimal in roughly 15-20% of periods; Wagner-Whitin adapts each lot to the actual demand trajectory and reduces total variable cost by 8-12% in Monte Carlo simulations (MIT CTL Inventory Policy Benchmarks 2024).
The safety stock formula under demand variability: SS = Z × σ_d × √L, where σd is the standard deviation of daily demand and L is lead time in days. For the 200-unit-demand SKU with σd = 60/7 ≈ 8.6 units/day, L = 7 days, and 95% service level (Z = 1.645): SS = 1.645 × 8.6 × √7 = 1.645 × 8.6 × 2.65 ≈ 37 units. Doubling service level to 99% (Z = 2.33) raises SS to 53 units — a 43% working-capital increase for 4 additional percentage points of fill rate.