🏷️ Motor de Precios Dinámicos — Elasticidad de la Demanda en Tiempo Real
Watch a price-optimization engine probe demand elasticity for a retail SKU and adjust price in real time, trading off revenue against inventory sell-through.
Acerca del Motor de Precios Dinámicos
Los minoristas rara vez conocen su curva de demanda — solo observan cuántas unidades se venden al precio que se cobró. Esta simulación oculta una curva de demanda de elasticidad constante, demanda = k·precio^(−ε), detrás de una señal de ventas ruidosa y censurada por el inventario, y deja que un motor de precios la descubra en vivo. Cada día simulado, el motor explota su mejor estimación de precio actual o explora un precio cercano para seguir aprendiendo, exactamente como un bandido multibrazo que equilibra la explotación con la ganancia de información.
Por debajo, una regresión lineal log-log móvil sobre las últimas 30 observaciones (precio, unidades vendidas) recupera una estimación de ε y de la escala de demanda k. Luego, una búsqueda en cuadrícula sobre el rango de precios permitido puntúa cada precio candidato según el ingreso esperado menos una penalización por alejarse del ritmo necesario para vender el inventario restante antes del final del horizonte — una versión simplificada del problema de gestión de ingresos con inventario terminal que aerolíneas y minoristas resuelven todos los días. Observa cómo la curva de demanda, la curva de ingresos, el indicador de venta del inventario y el registro de ajustes de precio se actualizan juntos a medida que el motor converge hacia el óptimo real (o se aleja de él).
Preguntas Frecuentes
¿Qué es la elasticidad de la demanda, y cómo la estima el motor sin verla nunca?
La elasticidad-precio de la demanda ε mide cuán bruscamente reacciona la cantidad demandada al precio: un aumento de precio del 1% reduce la demanda en aproximadamente ε%. Esta simulación genera la demanda diaria real a partir de una curva de elasticidad constante, demanda = k·precio^(−ε), pero al motor nunca se le dice k ni ε — solo observa las unidades ruidosas y limitadas por el inventario que realmente se vendieron al precio que cobró ese día. Al tomar logaritmos, ln(demanda) = ln(k) − ε·ln(precio) se convierte en una línea recta, por lo que una regresión por mínimos cuadrados ordinarios sobre los últimos 30 pares (precio, vendido) recupera estimaciones tanto de k como de ε directamente de la pendiente y el intercepto.
¿Por qué el motor "sondea" precios cercanos en lugar de saltar directamente al óptimo?
Un ajuste de regresión sobre un grupo estrecho de precios no es fiable — si todas las observaciones están cerca de $38-$42, la estimación de la pendiente apenas restringe ε fuera de ese rango, y la curva de ingresos estimada puede estar muy equivocada una vez extrapolada. Por eso el motor se comporta como un bandido multibrazo: la mayoría de los días explota el precio que su modelo actual cree que es el mejor, pero con probabilidad ε-bandido (el control deslizante de tasa de exploración) en cambio mueve el precio a un nivel cercano aleatorio, solo para recolectar un dato más informativo. Este equilibrio entre exploración y explotación es el mismo que se usa en los sistemas reales de precios en línea y subastas publicitarias.
¿Por qué a veces no hay un precio interior que maximice los ingresos?
Bajo elasticidad constante, el ingreso es R(p) = p·k·p^(−ε) = k·p^(1−ε). Si ε > 1 (demanda elástica), el exponente 1−ε es negativo, por lo que R(p) es estrictamente decreciente en p — el ingreso se maximiza cobrando el precio más bajo que el motor tiene permitido cobrar, y el volumen compensa de sobra el margen menor. Si ε < 1 (demanda inelástica), 1−ε es positivo y el ingreso sigue subiendo con el precio, por lo que el mejor precio es el más alto permitido. Solo el caso ε = 1 hace que el ingreso sea plano. Por eso este simulador siempre impone controles deslizantes explícitos de precio mínimo y máximo — los problemas reales de "precio óptimo" suelen ser optimizaciones contra un límite, no un pico interior suave.
¿Qué es la penalización de ritmo de inventario, y por qué no simplemente maximizar los ingresos cada día?
Maximizar el ingreso estimado de hoy de forma aislada puede agotar las existencias demasiado rápido (dejando sobre la mesa el dinero de clientes que habrían pagado más) o demasiado despacio (terminando la temporada con inventario sin vender, rebajado a cero). El motor calcula un ritmo objetivo — inventario restante dividido entre los días restantes — y puntúa cada precio candidato como el ingreso estimado menos λ·(demanda estimada a ese precio − ritmo objetivo)², donde λ es el control deslizante de peso de ritmo. Un λ más alto acerca el precio elegido a lo que mantenga la venta según lo previsto; un λ más bajo deja que el motor persiga el ingreso puro y arriesgue terminar con exceso de inventario o desabasto.
¿Cuál es la diferencia entre exploración y explotación en este motor de tipo bandido?
Explotación significa cobrar el precio que, según el mejor modelo actual del motor, maximiza la puntuación de ingresos ajustada por ritmo — usa lo que ya se ha aprendido. Exploración significa probar deliberadamente un precio distinto y cercano aunque el modelo no crea actualmente que sea óptimo, solo para observar cómo responde la demanda ahí y refinar la estimación de elasticidad. Con muy poca exploración, el motor puede quedarse atascado cerca de un precio localmente decente mientras pasa por alto uno mucho mejor en otra parte de la curva; con demasiada exploración, desperdicia días en precios pobres. El control deslizante de tasa de exploración controla directamente con qué frecuencia se usa un precio de sondeo aleatorio en lugar de la recomendación del modelo.
¿Por qué la demanda observada está "censurada" cuando el inventario es bajo?
La curva de demanda real del simulador puede requerir, digamos, 220 unidades en un día determinado, pero si solo quedan 40 unidades en existencia, solo se venden y observan 40 unidades. La regresión del motor solo ve las unidades vendidas, no la demanda real sin restricciones, por lo que a medida que el inventario se acerca a cero, la demanda observada subestima sistemáticamente la curva real — un sesgo bien conocido en los datos minoristas llamado censura de demanda. Esta es una razón por la que los sistemas reales de gestión de ingresos intentan dejar de rebajar precios antes de que el inventario sea críticamente bajo, en lugar de interpretar ventas cero como "sin demanda".
¿Qué técnicas del mundo real refleja esta simulación?
La forma general — una curva de elasticidad constante oculta, experimentos de precios que generan datos de ventas ruidosos, una regresión en línea que recupera la curva, y una restricción de ritmo contra un horizonte fijo — refleja la gestión de ingresos de aerolíneas y hoteles, la optimización de rebajas minoristas y los "bandidos de precios contextuales" que usan algunas plataformas de comercio electrónico. Los sistemas reales añaden mucho más (precios de la competencia, canibalización entre artículos, segmentos de clientes, políticas de exploración más ricas como el muestreo de Thompson), pero el ciclo central de sondear → estimar → optimizar → marcar el ritmo es el mismo que se usa aquí.
Una curva de demanda de elasticidad constante oculta es sondeada por una política de precios tipo bandido: una regresión log-log móvil recupera ε y k a partir de ventas ruidosas y censuradas por inventario, y una búsqueda en cuadrícula elige el precio que maximiza los ingresos estimados menos una penalización de ritmo de inventario cada día simulado.
3D · Three.js / WebGL renderer · 60 FPS target · runs fully client-side, no install