Fórmula óptima del nivel de servicio (Supply Chain)

learn menu
Por Joannès Vermorel, última revisión enero 2012

El nivel de servicio (inventario) representa la probabilidad esperada de no tener un faltante de stock. Este porcentaje se requiere para calcular las existencias de seguridad. Intuitivamente, el nivel de servicio representa un compromiso entre el costo del inventario y el costo de los faltantes de stock (que implican ventas perdidas, oportunidades perdidas y frustración del cliente, entre otros). En este artículo, detallamos cómo optimizar el valor del nivel de servicio. Luego, el análisis se refina para el caso especial de alimentos perecederos.

El artículo ha sido escrito desde un punto de vista de pronóstico clásico en 2011. Sin embargo, unos años después, nos damos cuenta de que hay opciones mucho mejores disponibles desde la perspectiva de supply chain cuantitativa que eliminan por completo la necesidad de optimizar los niveles de servicio cuando la tecnología está impulsada por pronósticos probabilísticos.

Modelo y fórmula

La literatura clásica de la cadena de suministro es algo difusa en cuanto a los valores numéricos que se deben adoptar para el nivel de servicio. A continuación, proponemos calcular un nivel de servicio óptimo mediante la modelización del costo respectivo del inventario y los faltantes de stock.

Introduzcamos las siguientes variables:

  • $${p}$$ sea el nivel de servicio, es decir, la probabilidad de no tener un faltante de stock.
  • $${H}$$ sea el costo de mantenimiento por unidad durante el tiempo de entrega (1).
  • $${M}$$ sea el costo marginal por unidad de faltante de stock (2).

Descargar hoja de cálculo de Excel: service-level-formula.xlsx (cálculo ilustrado)

(1) El alcance temporal considerado aquí es el tiempo de entrega. Por lo tanto, en lugar de considerar el costo de mantenimiento anual más común $${H_y}$$, estamos considerando $${H = \frac{d}{365}H_y}$$ asumiendo que $$d$$ es el tiempo de entrega expresado en días.

(2) El costo de faltante de stock incluye como mínimo el margen bruto, es decir, la ganancia instantánea que se habría generado si no se hubiera producido un faltante de stock. Sin embargo, la pérdida de margen bruto no es el único costo: por ejemplo, también se deben tener en cuenta la frustración del cliente y la pérdida de lealtad del cliente. Como regla general, hemos observado que muchos minoristas de alimentos consideran que $${M}$$ es igual a 3 veces el margen bruto.

El nivel de servicio óptimo se calcula de la siguiente manera (se detalla el razonamiento a continuación):

$${p=\Phi\left(\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}\right)}$$

Donde $${\Phi}$$ es la función de distribución acumulativa asociada a la distribución normal. Este valor se puede calcular fácilmente en Excel utilizando la función NORMSDIST. Además, para fines de cálculo numérico: $${\sqrt{2 \pi} \approx 2.50}$$

Función de costo

Para modelar la función de costo, introduzcamos dos variables más:

  • $${Q}$$ la cantidad de inventario amortizada (3), una función que depende de $${p}$$.
  • $${O}$$ la demanda excedente promedio cuando se produce un faltante de stock.

(3) Aquí adoptamos un enfoque de Análisis Amortizado. El nivel de inventario varía constantemente, pero nuestro objetivo aquí, para hacer el análisis práctico, es obtener un valor de nivel de servicio que esté desacoplado del pronóstico de demanda en sí. Por lo tanto, asumiremos que $${Q}$$ es igual al punto de reorden (consulte nuestra guía sobre existencias de seguridad para más detalles).

Para un nivel de servicio dado, el costo total $${C(p)}$$ que combina tanto el costo de mantenimiento de inventario como los costos de faltante de stock se puede escribir de la siguiente manera:

$${C(p) = Q(p)H + (1-p)MO}$$

Donde $${Q(p)H}$$ es el costo de inventario y $${MO}$$ es el costo de faltante de stock, que solo ocurre con una probabilidad de $${1-p}$$. Usando la fórmula introducida en nuestro tutorial sobre existencias de seguridad y dado que $$Q(q)$$ es igual al punto de reorden, tenemos que $${Q(p) = Z + \sigma \Phi^{-1}(p)}$$ donde $${Z}$$ es la demanda de tiempo de entrega, $${\sigma}$$ es el error de pronóstico esperado y $${\Phi(p)^{-1}}$$ es la inversa de la función de distribución acumulativa asociada a la distribución normal estándar (media cero y varianza uno).

Análisis de ventas promedio perdidas

El análisis de $${O}$$, las ventas promedio perdidas, es sutil. Considerando que la distribución de la demanda es la distribución normal $${\mathcal{N}}$$ y que $${q}$$ es el inventario disponible, $${O(q)}$$ es la media condicional de la demanda $${x}$$ cuando $${x > q}$$ (menos el inventario disponible $${q}$$), es decir:

$${O(q)=\frac{\int_q^\infty{x\mathcal{N}(x)dx}}{\int_q^\infty{\mathcal{N}(x)dx}}-q=\frac{1}{q}+\mathcal{o}\left(\frac{1}{q}\right)}$$

Consulta la función en (1).

Este resultado se puede interpretar como: si la demanda sigue rigurosamente la distribución normal, entonces la cantidad promedio de ventas perdidas en el (condicional) caso de un faltante de stock converge rápidamente a cero a medida que el nivel de inventario aumenta.

Sin embargo, en nuestra experiencia, el error de pronóstico no tiene una convergencia tan buena como la que la distribución normal predeciría. Por lo tanto, a continuación, asumiremos que $${O=\sigma}$$ es decir, que la cantidad promedio de ventas perdidas es igual al error de pronóstico promedio. Obviamente, esto es más una regla general que un análisis en profundidad; pero hemos encontrado que en la práctica, esta aproximación da resultados sensatos.

Minimización de la función de costo

Aplicando las sustituciones definidas anteriormente a la expresión de $${C(p)}$$, obtenemos:

$${C(p) = \left(Z + \sigma \Phi^{-1}(p)\right)H + (1-p)M\sigma}$$

Luego, la expresión de $${C(p)}$$ se puede diferenciar en $${p}$$ con:

$${\frac{\partial C}{\partial p} = \sigma H \partial \Phi^{-1}(p) - \sigma M}$$

Dado que estamos buscando el valor mínimo, intentamos resolver $${\frac{\partial C}{\partial p} = 0}$$ lo cual nos da:

$${\sigma H \partial \Phi^{-1}(p) - \sigma M = 0}$$

Lo cual se puede simplificar en $${\sigma}$$, con:

$${H \partial \Phi^{-1}(p) - M = 0}$$

Y finalmente:

$${\partial \Phi^{-1}(p) = \frac{M}{H}}$$

Luego, utilizaremos la relación entre $${\partial \Phi^{-1}}$$ y $${\Phi^{-1}}$$ :

$${\partial \Phi^{-1}(p)=\sqrt{2\pi}e^{\frac{1}{2}\Phi^{-1}(p)^2}}$$

Para una prueba visual de la igualdad, puedes comparar (1) y (2).

Esta relación nos permite obtener:

$${\sqrt{2\pi}e^{\frac{1}{2}\Phi^{-1}(p)^2}=\frac{M}{H}}$$

$${\frac{1}{2}\Phi^{-1}(p)^2=\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}$$

Tomamos la solución de la raíz positiva de la ecuación (la raíz negativa corresponde a un máximo local de la función) con:

$${\Phi^{-1}(p)=\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}}$$

Y finalmente, aplicando $${\Phi}$$ a ambos lados, obtenemos el nivel de servicio óptimo con:

$${p=\Phi\left(\sqrt{2\ln\left(\frac{1}{\sqrt{2\pi}}\frac{M}{H}\right)}\right)}$$

Discusión de la fórmula

El primer aspecto interesante de la fórmula es que el nivel de servicio óptimo solo depende de $${H}$$ (costo de inventario) y $${M}$$ (costo de faltante de stock). Sin embargo, hay una dependencia implícita en el tiempo de entrega, ya que $${H}$$ se ha definido como el costo de mantenimiento durante el tiempo de entrega.

En segundo lugar, un mayor costo de inventario reduce el nivel de servicio óptimo; y de manera similar, un mayor costo de faltante de stock aumenta el nivel de servicio. Este comportamiento es bastante intuitivo porque el nivel de servicio es un equilibrio entre más inventario y más faltantes de stock.

Luego, la fórmula no es válida para todos los valores de $${M}$$ y $${H}$$. Necesitamos que $${\sqrt{2\pi}\frac{M}{H} > 1}$$ o el logaritmo producirá un valor negativo que no es manejable considerando la raíz cuadrada exterior. Esto da $${M > \sqrt{2 \pi} H}$$, que se puede aproximar como $${M > 2.5 H}$$. Si esta condición no se cumple, significa que la función de costo inicial $${C(p)}$$ no tiene un mínimo, o más bien que el mínimo es $${-\infty}$$ para $${p=0}$$. Desde un punto de vista práctico, $${M < 2.5 H}$$ podría interpretarse como una situación patológica donde el nivel de stock más rentable es cero (es decir, 100% de faltantes de stock).

Ejemplo práctico

Consideremos un envase de leche de 1L con un precio de venta de 1.50€ y un margen del 10% (es decir, 0.15€ de margen bruto). Supongamos que el tiempo de entrega es de 4 días. El costo de mantenimiento anual es de 1.50€ (el valor es alto porque la leche es un producto altamente perecedero). Suponemos que el costo de faltante de stock es 3 veces el margen bruto, es decir, 0.45€. Esto da $${M=0.45}$$ y $${H=\frac{4}{365} 1.5\approx 0.0055}$$.

Basándonos en esos valores y en la fórmula para el nivel de servicio óptimo obtenida anteriormente, obtenemos $$ p \approx 98.5 \text{%} $$ que es un valor típico para productos frescos imprescindibles almacenados en redes de tiendas de comestibles.

Alimentos perecederos

Pregunta planteada por Vyacheslav Grinkevych, experto en supply chain, 2012-02-13:

Estoy trabajando en la previsión y planificación de suministros para productos lácteos de corta vida útil, donde el nivel de servicio óptimo es un tema muy importante. El componente más interesante y complicado aquí es H, el costo de mantenimiento y la pregunta sobre su valor adecuado en la práctica.

Por ejemplo, para los productos lácteos de corta vida útil, una parte importante de H debería ser no solo el costo financiero puro del efectivo congelado en el inventario y el costo operativo de almacenamiento logístico, sino también el costo de posibles pérdidas debido a la eliminación de productos vencidos o ventas con descuentos cuando intentamos vender más justo antes de la expiración. Esto sucede cuando las ventas están muy por debajo de la previsión.

Este compromiso se puede describir como el riesgo de posibles excesos de inventario frente al riesgo de faltante de stock - dos riesgos que funcionan en direcciones opuestas aunque tienen el mismo origen por naturaleza, es decir, están interconectados con el stock de seguridad. En caso de una gran sobreestimación, que generalmente causa problemas de vencimiento, los errores de pronóstico no se distribuyen normalmente. Por lo tanto, me pregunto cómo expresar mejor tales riesgos de posibles excesos de inventario.

Volviendo a tu fórmula, su desarrollo posterior podría ser tratar de encontrar una relación entre H y p o hacer de H una función de p, es decir, H(p), antes de buscar la minimización del costo total C(p). ¿Qué opinas al respecto?

La fórmula del nivel de servicio dada anteriormente se basa de hecho en una suposición simplista donde los costos, tanto de almacenamiento como de faltante de stock, son estrictamente lineales. Sin embargo, en la práctica, se pueden encontrar no linealidades brutales como:

  • El almacén está lleno, y hay un punto en el que 1 unidad adicional de stock implica el enorme costo adicional de obtener una ubicación de almacenamiento adicional.
  • Los faltantes de stock causan ventas perdidas incrementales hasta llegar al punto en que un faltante de stock adicional causa la pérdida de todo el cliente recurrente.

Los productos perecederos presentan otra complicación: si la cobertura de stock, es decir, el stock expresado en días en lugar de unidades de stock, se acerca a la vida útil del producto, entonces $${H}$$, el costo de mantenimiento, aumenta hacia un valor infinito.

De hecho, $${H}$$ representa la fricción asociada con tener inventario en primer lugar. Una cobertura de stock mayor que la vida útil de vencimiento del producto representa una situación absurda donde, asumiendo un inventario FIFO (primero en entrar, primero en salir), ningún producto saldría de la ubicación de almacenamiento sin alcanzar primero su fecha de vencimiento.

Para modelar el efecto de la perecibilidad del inventario, introduzcamos un par de duraciones clave:

  • $${\lambda}$$, el tiempo de entrega.
  • $${\lambda_\infty}$$, la vida útil del producto antes de alcanzar la expiración terminal (es decir, valor de mercado cero).
  • $${\lambda_½}$$, la duración que duplica el costo de mantenimiento original del producto debido a la pérdida de su valor de mercado.
  • $${\lambda_c(p)}$$, la cobertura de stock, es decir, el stock expresado en días en lugar de unidades de producto. Esta duración depende del factor de stock de seguridad, por lo tanto, depende de $${p}$$.

Con esas duraciones, podemos modelar el costo de mantenimiento como:

$${ H(p) = H \left(1 - \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda} + \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda_c(p)} \right) }$$

Detallemos la suposición implícita aquí, porque estamos de alguna manera flexionando la noción habitual del costo de mantenimiento para tener en cuenta el riesgo de desvalorización.

Primero, tenemos $${H(0.5)=H}$$. Esto se obtiene a partir de la definición anterior. De hecho, $${\lambda_c(0.5)=\lambda}$$, con un nivel de servicio del 50%, la cobertura de stock es igual al tiempo de entrega. Por lo tanto, estamos afirmando aquí que, en este modelo, $$H$$ representa el costo de mantenimiento donde los costos de desvalorización asociados a un nivel de servicio del 50% ya se han tenido en cuenta en el costo $${H}$$. Es notable destacar que los stocks de seguridad cero no implican desvalorizaciones cero, solo desvalorizaciones poco frecuentes.

Segundo, para el nivel de servicio $${p_½}$$ tal que $${\lambda_c(p_½) = \lambda_½}$$, entonces tenemos $${H(p_½)=2H}$$. Nuevamente, esto es solo una consecuencia de la definición adoptada para $${H(p)}$$. Intuitivamente, $${\lambda_½}$$ representa la duración que duplica la combinación de costos de mantenimiento más costos de desvalorización, en comparación con la situación de stock de seguridad cero. Es claro que en la práctica, el sobrecosto involucrado con los descuentos de fin de vida y las desvalorizaciones pasará por pasos discretos. Sin embargo, creemos que tratar de expresar este sobrecosto a través de una duración típica que en la práctica se definiría como una cierta fracción de la vida útil del producto es probablemente mucho más resiliente a las diversas aproximaciones que implica todo el enfoque, en comparación con un modelo más detallado que se basa en variables aún más inciertas.

Finalmente, a medida que $${p}$$ se acerca a $${p_\infty}$$ con $${\lambda_c(p_\infty)=\lambda_\infty}$$, entonces $${H(p)}$$ tiende a infinito, nuevamente por definición de la función adoptada para $${H(p)}$$. A primera vista, parece extraño tener un costo de mantenimiento que supere el costo unitario del producto, pero no hay ningún paradójico aquí. El valor $$H(p)$$ representa el costo de fricción para enviar una unidad al cliente. Si, debido a desvalorizaciones masivas, para enviar 1 unidad al cliente final, el almacén recibe en promedio 3 unidades (2 unidades vencen antes de ser entregadas), entonces los costos de fricción serán mucho mayores que el precio unitario original del producto.

En resumen, $${\lambda_½}$$ es solo una variable incierta que se está introduciendo. $${\lambda}$$ y $${\lambda_\infty}$$ se pueden considerar conocidos de manera segura. Creemos que este modelo para $${H(p)}$$ es lo más simple posible que se puede lograr al introducir solo 1 variable adicional. Entonces, para $${\lambda_c(p)}$$, con una aproximación modesta, tenemos:

$${\lambda_c(p) = \lambda \left(1 +\frac{\sigma}{Z}\Phi^{-1}(p)\right)}$$

De hecho, $${\lambda_c}$$, el stock de cobertura se puede ver como una proporción sobre el tiempo de entrega que incluye la demanda de plomo más un factor de stock de seguridad normalizado. Esto da como resultado la función de costo alternativa:

$${C^*(p) = \left(Z + \sigma \Phi^{-1}(p)\right)H\left(1 - \frac{\lambda_\infty - \lambda_½}{\lambda_\infty - \lambda} + \frac{ \lambda_\infty - \lambda_½}{\lambda_\infty - \lambda \left(1 +\frac{\sigma}{Z}\Phi^{-1}(p)\right)} \right) + (1-p)M\sigma}$$

A diferencia de la función de costo anterior, esta función no parece tener un mínimo algebraico simple. Sin embargo, al adoptar un enfoque similar al utilizado para el cálculo de la cantidad económica de pedido, es relativamente sencillo encontrar una solución aproximada mediante la iteración de incrementos del 0.1% desde el 80% hasta el 99.9%. Esto representa 200 iteraciones para lograr una precisión del 0.1% que sería más que suficiente para fines prácticos.

Uso práctico previsto

La fórmula del nivel de servicio viene con un par de aproximaciones, por lo que los valores numéricos pueden no ser utilizables tal cual: generalmente requerirá un poco de ajuste. En particular, el factor $${\frac{1}{\sqrt(2\pi)}\approx0.4}$$ se puede ajustar según sea necesario. Sin embargo, creemos que esta fórmula proporciona una buena idea de cómo deberían compararse los niveles de servicio respectivos de sus productos. Por ejemplo, si para dos productos A y B, obtiene niveles de servicio de 95% (para A) y 90% (para B), entonces para la configuración de producción final, se esperaría que el nivel de servicio para A sea mayor que el nivel de servicio para B.

Luego, considerando la naturaleza del análisis que se ha realizado anteriormente, creemos que esta fórmula no es relevante para productos asociados a una demanda baja o intermitente. De hecho, estos productos de bajo volumen suelen estar asociados a un punto de reorden reabastecimiento de 0 o 1 unidad; y un modelado lineal del costo de almacenamiento del producto no necesariamente tiene sentido, ya que también se debe tener en cuenta la complejidad de almacenar una referencia adicional.