Module: Phantom Inventory

Executive summary

This module looks for potential errors in the inventory of goods. These are items that are in stock according to the system, but are not really there or cannot be sold to the customer.

The output of the module is a report that identifies items that:

  • they have a physical stock, but the goods are not exposed to the customer or are of low quality, so the customer cannot buy them
  • they only have an accounting stock, but the actual stock does not exist

Functional description

The identification of inventory errors is calculated by comparing the frequency of past sales, including inventory, with the current date of the item’s last purchase.

The calculation takes place within the nightly STOCK recomputation.

Description of the algorithm

  • Calculation of sales frequency – what is the average frequency of sales in one day. Example: if within 30 days the goods were sold in three days is 3 sales / 30 days = frequency 0.1.
  • Cleaning of data for opening days of the branch - the sales days do not include the days when the branch is closed and sales do not take place. If the stores close at all weekends in the month, a month is regarded to have 22 days.
  • Promotion impact accounting - We distinguish the period when the item was in the promotion. The frequency at the time of the promotion is promotional, in the time outside the promotion we separate it as non-promotional. Accordingly, we will use the promotional frequency if the product is currently in a promotion, if it is not, we will use the non-promotional frequency.
  • Calculation of frequency in the pasti - We calculate the sales frequency for the past period according to the configuration (by default it should be 6 months, but can be changed).
  • Calculations take place over the table “sale” with the current DISP (filtered PLIDs with DISP = 0).

Evaluation of calculated data

  • Calculation of days without sales - for each product and warehouse we calculate on how many days there was no sale even if there is some stock of the product in the given warehouse according to the system. We do not include non-sale days (when the branch is closed) in the calculation.
  • Setting the alert threshold
    • Example: The product is sold every other day - it has a stable frequency of 0.5. If suddenly it is not sold two days in a row, the frequency shifts to 1/0.5. Statistically, there is a risk that a phantom inventory has occurred, although it is still small. When a product is not sold for 8 days, the risk and probability of phantom inventory is already high and has probably occurred.
    • We determine the probability of phantom inventory based on the length of the period when nothing was sold vs the normal frequency of sales (e.g. 8 days without sales vs normal frequency 1x in 2 days).
    • Currently, three constants are set to determine the probability rate of phantom inventory:
      • The period without sales is 4 times longer than the normal frequency of sales (probability of phantom inventory)
      • The period without sales is 6 times longer than the normal frequency of sales (high probability of phantom inventory)
      • The period without sales is 8 times longer than the normal frequency of sales (very high probability of phantom inventory)
  • In the future, phantom Inventory can be detected earlier with minor differences.
  • For products that are sold really rarely, phantom inventory cannot be calculated (so far it is hardcodes that for items with sales of less than 2 times a month, phantom inventory is not counted).