Resumen: predecir una media y decidir una cantidad son problemas distintos
Una red que minimiza error cuadrático puede estimar perfectamente la demanda media y sugerir un pedido económicamente malo. No necesariamente falla el modelo: faltantes y excedentes cuestan distinto. En un ejemplo sintético, la media óptima para MSE es 78 unidades y coste esperado 190 euros; el cuantil pertinente elige 200 unidades y coste 122 euros, aunque empeora mucho el MSE. Derivamos el umbral, comparamos alternativas y mostramos cómo ventas limitadas por existencias distorsionan el objetivo de entrenamiento.
El contexto es un periodo de aprovisionamiento perecedero, sin reposición intermedia, sustituciones ni costes fijos. Cantidades en unidades, costes en euros por unidad y demanda no negativa. Son números hipotéticos calculados con Python, no ahorros EL-AI. Se requieren esperanza, distribución acumulada y convexidad. Es un modelo acotado, no una política completa de almacén.
1. Escribir la pérdida antes de elegir modelo
Sean D demanda y Q cantidad disponible. Faltar cuesta c_u por unidad y sobrar c_o. La pérdida es c_u(D−Q)_+ + c_o(Q−D)_+, con z_+=max(z,0). Son costes incrementales que pueden incluir margen perdido y coste neto del sobrante. No se suman de nuevo compras o ingresos incluidos en coeficientes. Fijamos c_u=9 y c_o=1 y minimizamos pérdida esperada.
Con demanda continua, aumentar Q ligeramente cuesta c_o si D<Q y ahorra c_u si D>Q. La derivada es (c_u+c_o)F(Q)−c_u, nula en F(Q)=τ. Con demanda discreta puede no existir en saltos: la condición es F(Q−)≤τ≤F(Q). El menor cuantil que alcanza τ es óptimo, pero una CDF plana justo en τ puede dar varios óptimos. No hace falta normalidad.
2. Un ejemplo discreto calculable por completo
Sea P(D=40)=0,50, P(D=80)=0,35 y P(D=200)=0,15. La media es 78. La CDF vale 0,50 en 40 y 0,85 en 80: el cuantil 0,90 es 200. Pedir 80 genera excedente esperado 0,50·40=20 y faltante 0,15·120=18: coste 20+9·18=182. Pedir 200 elimina faltantes pero deja excedente 0,50·160+0,35·120=122. Comparamos el coste definido, no solo sobrantes.
| Q | Coste EUR | MSE unidades² | Faltante medio |
|---|---|---|---|
| 40 | 342.0 | 4400.0 | 38.0 |
| 78 | 190.0 | 2956.0 | 19.0 |
| 80 | 182.0 | 2960.0 | 18.0 |
| 120 | 162.0 | 4720.0 | 12.0 |
| 200 | 122.0 | 17840.0 | 0.0 |
El script enumera Q de 0 a 240: MSE mínimo en 78, coste en 200. Comprueba cada diferencia R(Q+1)−R(Q)=10F(Q)−9. De 80 a 199 vale −0,5 euros: cada unidad reduce el coste esperado. Desde 200 vale +1 euro. Esta comprobación independiente muestra convexidad y explica el mínimo.

3. Conectar el cuantil con el objetivo de IA
La pérdida pinball ρ_τ(D−Q) pondera subestimación por τ y sobreestimación por 1−τ. La pérdida económica es (c_u+c_o)ρ_τ(D−Q). Un modelo condicionado en x puede aprender ese cuantil si datos, representación y optimización lo permiten. Cambiar arquitectura manteniendo MSE sigue buscando la media condicional. Aquí MAE tampoco decide: todos los Q entre 40 y 80 tienen MAE=38 y costes distintos.
Si faltar cuesta 4 y c_o=1, τ=0,80 y el menor óptimo es 80. Con costes iguales, τ=0,50 y todo [40,80] es óptimo. Si la capacidad máxima es 120, el óptimo restringido original es 120 y cuesta 162 euros: no puede ignorarse el límite y pedir 200. Lotes, presupuestos compartidos o costes fijos pueden impedir resolver todo con cuantiles separados.
4. Nivel de servicio y demanda invisible
τ=0,90 no implica exactamente un 90% de periodos sin faltantes. La distribución salta de F(80)=0,85 a F(200)=1. El cycle service level P(D≤Q) difiere del fill rate 1−E[(D−Q)_+]/E[D]. Con Q=80 son 85% y 76,9231%: los periodos raros contienen muchas unidades faltantes. Dos métricas de “servicio” orientan distinto si no se explicitan denominadores.
Si el stock histórico siempre se limitó a 80, las ventas S=min(D,80) son 40 la mitad de veces y 80 el resto: se pierde la distinción entre demanda 80 y 200. El cuantil de ventas del 90% es 80, con coste aparente 20 euros frente a 182 sobre demanda latente. Más entrenamiento no resuelve un objetivo censurado. Demanda 1000 durante agotamientos produciría las mismas ventas; estas no identifican la cola.
Una aplicación real necesita disponibilidad temporal, señales de agotamiento y estrategia explícita para demanda no observada. Evaluar exige particiones temporales coherentes, costes declarados y políticas simples de referencia. Fuga de futuro o ventas censuradas como demanda completa engañan offline. No entrenamos un modelo: definimos qué debe aprender y cómo medir su utilidad.
5. ¿Cuán frágil es un cuantil aprendido con pocos datos?
Hasta ahora conocíamos la distribución. Con veinte días independientes, el cuantil empírico del 90% es la decimoctava demanda ordenada. Si como máximo dos días tienen demanda 200, no supera 80. Su número K es binomial con n=20 y probabilidad 0,15. La suma exacta de tres términos da P(K≤2)=0,404896278. Aproximadamente el 40,49% de esas muestras no sugeriría 200, incluso sin censura ni error del optimizador. Es incertidumbre muestral de la cola, distinta del sesgo de ventas limitadas.
Los costes merecen sensibilidad. Entre 80 y 200, aumentar Q ayuda solo si c_u>0,85/0,15=17/3 euros por unidad. La decisión cambia bruscamente aunque el coste sea continuo: por debajo conviene 80, por encima 200 y en igualdad todas las cantidades intermedias cuestan igual. Estimar c_u=4 cuando vale 9 elige 80 y pierde 60 euros esperados por periodo frente al óptimo del modelo. Es una diferencia teórica, no ahorro comercial previsto.
En un modelo condicional, estacionalidad, promociones y plazos deben conocerse antes de pedir. Se aprende demanda del periodo protegido por la decisión, no necesariamente ventas del día siguiente. Costes dependientes del contexto cambian τ(x). Una salida al cuantil 90% no responde automáticamente a otro coste: hacen falta varios cuantiles o una distribución y evaluar sin seleccionar el modelo en el periodo usado para proclamar ventaja.
6. Conclusión y fuente metodológica
Las notas MIT del newsvendor desarrollan decisión marginal y razón de costes; consultamos derivación y ejemplos discretos y continuos. Nuestro caso es independiente. No afirma que más stock siempre sea mejor: el cuantil depende de costes y restricciones y los datos deben representar demanda, no ventas limitadas. Antes de comparar arquitecturas IA hay que comprobar que el objetivo responde a la decisión empresarial.
demand = [(40, .5), (80, .35), (200, .15)]
def cost(q):
return sum(p*(9*max(d-q,0)+max(q-d,0)) for d,p in demand)
print(sum(d*p for d,p in demand))
print(min(range(241), key=cost))
for q in [40,78,80,120,200]:
print(q,cost(q))
Código, datos e instrucciones · JSON. Cálculos didácticos ejecutados con Python 3.14.0; figuras con Matplotlib 3.11.2. Análisis asistido por IA, sin afirmar revisión por pares ni humana. Portada original ImageGen ilustrativa: no documenta personas, sedes ni instalaciones de EL-AI. Fuentes consultadas el 24 de septiembre de 2026.

