I have been asked to calculate cycle and safety stock levels for one of our business units. I have very little/no knowledge on the subject of inventory theory so would like to ask what a reasonable approach to this problem might be:

  • 5 years daily demand data
  • 5 years daily inventory data
  • 1.5 days lead time from facility to storage

Data looks to be gamma distributed, which I can test:

enter image description here

I would be extremely grateful if someone could clarify the steps necessary to calculate the above? my thoughts on an approach:

  1. Aggregate data to monthly. Note: both series appear to be stationary - so whilst we might lose some variance information, this looks to be a reasonable step.

  2. Compute the parameters of a lognormal/gamma dist given the datas loc and scale.

  3. Calculate cycle and safety stock levels based on this or similar theory with some reasonable assumptions.

All help very gratefully received.


2 Answers 2


Cycle stock is used to meet the mean demand. Safety stock is used to protect against randomness in demand.

So, I would use your historical data to calculate the mean demand over time and the inventory level over time. The mean demand will equal the cycle stock and any excess is the safety stock.

You’ll have to decide how to calculate the averages — moving average maybe? Also note that the timing of the data collection matters. For example if data is only collected once per day, at the end of the day, then it masks the inventory dynamics throughout the day.

For example if you start the day with 5 units of inventory, then 10 units come in and 10 go out, so you end with 5 units again, then your cycle stock is really ~10 units and your safety stock is ~5.

  • $\begingroup$ Many thanks for your help Larry. From what I have read up on, calculating safety and cycle stock is a more complicated than moving averages - I can see in your answer here: or.stackexchange.com/questions/4093/… that you have applied a different method and here: or.stackexchange.com/questions/4045/… you follow a different method. Presumably the latter example might be applicable here? $\endgroup$
    – cmp
    Commented Aug 10, 2020 at 12:32
  • $\begingroup$ Are you trying to optimize the CS and SS levels, or just evaluate the CS and SS levels that were used historically? I understood you are trying to do the latter, but maybe you are trying to do the former? $\endgroup$ Commented Aug 10, 2020 at 18:30
  • $\begingroup$ Ah yes, I meant the former - apologies, I should have made that clear. We have a very strange u-shaped (Gamma/lognorm) sales demand profile as we front-load our sales each month. Production is daily but as a weekly forecast. I have been asked to calculate the optimal cycle and safety stock. I have read a lot of different approaches, all of which are quite different. Many thanks for your help! $\endgroup$
    – cmp
    Commented Aug 10, 2020 at 19:22
  • $\begingroup$ The two approaches you linked to are basically the same — you are estimating a fractile. In one case you’re using the distribution of the forecast error and in the other you’re using the demand distribution itself. If you don’t have historical data on forecasts then you’d need to use the demands directly. $\endgroup$ Commented Aug 12, 2020 at 13:55
  • $\begingroup$ Thanks Larry. Could you please add the mathematical expression to calculate cycle and safety stock? (that includes historical forecast error - we have this data). Thank you! $\endgroup$
    – cmp
    Commented Aug 12, 2020 at 19:33

Safety stock for a demand stream (assuming it is normally distributed without recurring lumpiness) depends on a number of factors:

  • Target service level
  • Demand accuracy
  • Lead time
  • Supplier reliability
  • Order cover (i.e. how long a period each replenishment order will cover)
  • Replenishment frequency
  • Forecast horizon (i.e. how many periods ahead you know your firm demand) Our approach to calculating the optimal safety stock takes all of these into account by simulating the actual demand and supply lead time over 100,000 periods and then finding the stock level needed to give the service level target you require. Please see https://safetystock.guru for further details.

Cycle stock is the average stock level due to the order cover period. If each order covers two weeks of demand then the cycle stock will be equal to one week of demand.

The combined stock that you should expect is a sawtooth: Typical inventory profile


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.