Daily Archives: October 22, 2025

EOQ Part II: The Quantity You Need the Computer To Calculate, Though You Can’t Depend On It Until You’ve Calculated and Verified it First!

In our last article, I noted how I was reminded that most of today’s so called Supply Chain and Procurement experts could not pass a basic EOQ exam question, and that the reason for that was lack of real supply chain (cost) knowledge, math, and the intricacies of inventory carrying cost that are swept under the rug in the classic EOQ formula, which, sometimes, is not at all accurate.

I say reminded because this was something I explored in depth about 17 years ago when Charles Dominick, the founder of Next Level Purchasing (now a part of Certitrek) and co-author of The Procurement Game Plan approached me about the severe inadequacy of the EOQ formula (and how it often leads to Procurement Managers ordering too little, or too much, and never truly understanding the true cost of inventory or the levers available) and asked if I could help him come up with a better equation that he could teach to his students in his (advanced) Procurement courses.

The answer was yes, we did, but then he decided that he didn’t want to use it at the time because getting it close to right was a bit more involved than he thought and, well, math. It was a bit beyond what an average student could be expected to do in a spreadsheet. That’s because an extended EOQ equation has to take into account, at a minimum:

  • actual warehouse space utilization of an item (screws don’t take up much space, but control system boxes do), and
  • the cost of capital

Moreover, while I fully agree with Mr. Mr. Koray Köse that you shouldn’t re-invent the wheel, there’s nothing wrong with strengthening the rubber, improving the tread, and reinforcing the rims — which is where we started out. We started with the classic equation and just extended it to take into account the above.

We started by determining the actual inventory cost of a single unit of an item and the cost of capital tied up in that unit since the most inaccurate part of the classic equation is the average across-the-board CCP. This gave us this equation:

  • EOQV1 = √ ( (2 * ACPO * AUU) / ((AWC * UV / UWV) + (UC*WACC)) )

where

  • ACPO = Acquisition Cost Per Order
  • AUU = Annual Usage in Units
  • UC = Unit Cost

as before, and

  • AWC = Annual Warehouse Cost (which is the FULL operating cost, including staff)
  • UV = Unit Volume
  • UWV = Usable Warehouse Volume (i.e. just because your warehouse is 100*100*10 or 100,000 cubic ft, doesn’t mean you can use it all; it will depend on your layout, since you can’t store in the aisles and the shelves themselves take up some space; in reality, less than 50% will be usable)
  • WACC = Weighted Average Cost of Capital

To gauge how good this equation is, let’s recalculate our Spacely Sprockets example.

As before, we’ll assume:

  • ACPO = 3,400
  • AUU = 5,068
  • UC = 1300, 1250, 1200, or 1175, depending on volume

And we’ll assume the following costs and dimensions (which are reasonable given the Finance CCP):

  • AWC = 4,000,000
  • UV = 1 cu ft (they are gears for industrial moon mining equipment)
  • UWV = 40,000 cu ft
  • WACC = 0.10 (10% cost of capital)This gives us:
    • EOQV1 = √ ( 34,462,400 / (100 + 0.1*UC) )

    and we calculate for each price break:

    • 1300: √ ( 34,462,400 / (100 + 130.0) ) = √ (149837) = 387
    • 1250: √ ( 34,462,400 / (100 + 125.0) ) = √ (153166) = 391
    • 1200: √ ( 34,462,400 / (100 + 120.0) ) = √ (156647) = 396
    • 1175: √ ( 34,462,400 / (100 + 117.5) ) = √ (158448) = 398

    which is a bit closer to the EOQ, but not by much, but helps us understand that when it comes to EOQ, the primary factor to consider is often going to be the cost of capital, because, whether you use all of your warehouse space or not, your warehouse costs are relatively fixed for a year, which means your inventory costs per unit are relatively fixed as well (whether it’s in for a few days or a few months), and when you’re buying, you’re ultimately trying to balance the WACC with the fixed inventory allocation (which is typically just averaged to get the total inventory cost that is used to compute the average carrying cost percentage that goes into the standard equation).

    Moreover, the cost of capital is dependent on how long the item is in inventory! This says the equation needs to be modified to take this into account:

    • EOQV2 = √ ( (2 * ACPO * AUU) / ((AWC * UV / UWV) + (UC*WACC*EDIR)) )

    where

    • EDIR = Expected Days in Inventory Ratio (the WACC is annual, if the item is only expected to be in inventory for half a year, the ration is 0.5)

    Moreover, this also allows us to build in some consideration for price breaks! Since each price break dictates a maximum number of orders per year based upon the AUU, we can simply define

    • EDIR = (MBQ)/(2*AUU)

    where

    • MBQ = minimum break quantity

    This slight revision gives us:

    • 0400@1300: √ ( 34,462,400 / (100 + (130.0 * 0.04) ) ) = √ (34,462,400 / 105.2) = √ (327589) = 572
    • 1000@1250: √ ( 34,462,400 / (100 + (125.0 * 0.10) ) ) = √ (34,462,400 / 112.5) = √ (306332) = 553
    • 2000@1200: √ ( 34,462,400 / (100 + (120.0 * 0.20) ) ) = √ (34,462,400 / 124.0) = √ (277923) = 527
    • 5000@1175: √ ( 34,462,400 / (100 + (117.5 * 0.50) ) ) = √ (34,462,400 / 158.8) = √ (217018) = 466

    Which is closer, but certainly no cigar! The fact of the matter is that the rule of thumb of (2 * ACPO * AUU) that was developed to make the formula easy to understand and calculate while still providing a curve that is relatively cost-insensitive near the optimal quantity, is not perfect. While it will often get you close, it could still be a ways off that becomes significant when costs get into the millions. If there are no price breaks that can cause significant swings, we can see it works pretty well, but when there are, it doesn’t do as well. So we need to address this too!

    Without rewriting the equation entirely, this isn’t as easy to do as our fixes so far because the equation was designed to give a good curve that balanced inventory costs with acquisition costs without requiring deep, precise modelling. Still, when we have volume breaks, we can note that our order costs will be higher at lower volumes (which means more orders) and lower at higher volumes (which means less orders) and replace that 2 with a parameter that is defined on the volume breaks.

    More specifically, we will use:

    • EOQV3 = √ ( (C * ACPO * AUU) / ((AWC * UV / UWV) + (UC*WACC*EDIR)) )

    where

    • C = 2 x AVV/XBQ
    • XBQ = maximum break quantity (= maximum order quantity for final tier)

    This final slight revision gives us:

    • 0400@1300/c=10.0: √ (172,312,400 / (100 + (130.0 * 0.04) ) ) = √ (172,312,400 / 105.2) = √ (1637950) = 1279
    • 1000@1250/c=5.00: √ ( 86,156,400 / (100 + (125.0 * 0.10) ) ) = √ ( 86,156,400 / 112.5) = √ ( 765831) = 875
    • 2000@1200/c=2.00: √ ( 34,462,400 / (100 + (120.0 * 0.20) ) ) = √ ( 34,462,400 / 124.0) = √ ( 277923) = 527
    • 5000@1175/c=2.00: √ ( 34,462,400 / (100 + (117.5 * 0.50) ) ) = √ ( 34,462,400 / 158.8) = √ ( 217018) = 466

    Which, will still not perfect, gives us an even stronger indication that the EOQ is at the first price break, because at the 0 break, we’d have to order more than we are allowed to hit our EOQ based on our high orders, but at the first price break, our EOQ is slightly less, which means we round up and use that breakpoint, which we found out in Part I is optimal.

    So, does this mean you should scrap the classic, simple formula of

    • EOQ = √ ( (2 x ACPO x AUU) / (UC x CCP) )

    and replace it with:

    • EOQV3 = √ ( (C * ACPO * AUU) / ((AWC * UV / UWV) + (UC*WACC*EDIR)) )

    The answer is no. Even though this formula works well if there are no price breaks, the point of this exercise was not to develop a better EOQ formula, but to demonstrate that classic EOQ (still used in many inventory and classic MRP/ERP systems) is broken.

    Moreover, there is no one EOQ formula because EOQ is 100% dependent on inventory levels and costs when you order, shipping times and costs when you order, and supplier and carrier breaks. It changes all the time.

    That’s why, if you want to get it right, you need a modern optimization-backed SCP system to help you dynamically calculate it in real time so you put your orders in (against your contracts) at the right time to balance cost and risk.

    What does that system look like? We addressed some of it in our prior posts on optimization here on Sourcing Innovation and will likely address it again in the future, but for now, follow @Koray Kose for insights on what a modern supply chain solution should address from a business viewpoint and @Jennifer Rouse for what it should do from a systems viewpoint.