00:00 Introducción
02:49 Demanda, precio y ganancia
09:35 Precios competitivos
15:23 Deseos vs necesidades
20:09 La historia hasta ahora
23:36 Indicaciones para hoy
25:17 La unidad de necesidad
31:03 Autos y piezas (recapitulación)
33:41 Inteligencia competitiva
36:03 Resolviendo la alineación (1/4)
39:26 Resolviendo la alineación (2/4)
43:07 Resolviendo la alineación (3/4)
46:38 Resolviendo la alineación (4/4)
56:21 Rangos de productos
59:43 Piezas sin restricciones
01:02:44 Controlando el margen
01:06:54 Rangos de visualización
01:08:29 Ajustando los pesos
01:12:45 Ajustando las compatibilidades (1/2)
01:19:14 Ajustando las compatibilidades (2/2)
01:30:41 Contrainteligencia (1/2)
01:35:25 Contrainteligencia (2/2)
01:40:49 Exceso de stock y faltante de stock
01:45:45 Condiciones de envío
01:47:58 Conclusión
01:50:33 6.2 Optimización de precios para el mercado de posventa automotriz - ¿Preguntas?

Descripción

El equilibrio entre la oferta y la demanda depende en gran medida de los precios. Por lo tanto, la optimización de precios pertenece al ámbito de la cadena de suministro, al menos en gran medida. Presentaremos una serie de técnicas para optimizar los precios de una empresa ficticia de posventa automotriz. A través de este ejemplo, veremos el peligro asociado con líneas de razonamiento abstractas que no ven el contexto adecuado. Saber qué se debe optimizar es más importante que los detalles de la optimización en sí.

Transcripción completa

Slide 1

Bienvenidos a esta serie de conferencias sobre cadena de suministro. Soy Joannes Vermorel y hoy presentaré la optimización de precios para el mercado de posventa automotriz. La fijación de precios es un aspecto fundamental de la cadena de suministro. De hecho, no se puede considerar la adecuación de un determinado volumen de suministro o un determinado volumen de inventario sin tener en cuenta la cuestión de los precios, ya que los precios tienen un impacto significativo en la demanda. Sin embargo, la mayoría de los libros de cadena de suministro y, en consecuencia, la mayoría de los software de cadena de suministro ignoran por completo la fijación de precios. Incluso cuando se discute o se modela la fijación de precios, generalmente se hace de manera ingenua y a menudo se interpreta incorrectamente la situación.

La fijación de precios es un proceso altamente dependiente del dominio. Los precios son, en primer lugar, un mensaje enviado por una empresa al mercado en general, a los clientes, pero también a los proveedores y competidores. Los detalles de análisis de precios dependen en gran medida de la empresa de interés. Si bien abordar los precios en términos generales, como lo hacen los microeconomistas, puede ser intelectualmente atractivo, también puede ser equivocado. Estos enfoques pueden no ser lo suficientemente precisos como para respaldar la producción de estrategias de precios de calidad profesional.

Esta conferencia se centra en la optimización de precios para una empresa de posventa automotriz. Volveremos a visitar Stuttgart, una empresa ficticia presentada en el tercer capítulo de esta serie de conferencias. Nos centraremos exclusivamente en el segmento minorista en línea de Stuttgart que distribuye piezas de automóviles. El objetivo de esta conferencia es comprender lo que implica la fijación de precios una vez que dejamos de lado las generalidades y cómo abordar la fijación de precios con una mentalidad del mundo real. Aunque consideraremos un sector estrecho, como las piezas de automóviles de repuesto para el mercado de posventa automotriz, la forma de pensar, la mentalidad y la actitud adoptadas en esta conferencia al buscar estrategias de precios superiores serían esencialmente las mismas al considerar sectores completamente diferentes.

Slide 2

La demanda disminuye a medida que aumenta el precio. Este es un patrón económico universal. La existencia misma de productos que contradicen este patrón sigue siendo esquiva en el mejor de los casos. Estos productos se llaman bienes de Veblen. Sin embargo, en 15 años en Lokad, incluso al tratar con marcas de lujo, nunca he tenido acceso a ninguna prueba tangible de que estos productos realmente existan. Este patrón universal se ilustra mediante la curva a la izquierda de la pantalla, generalmente llamada curva de demanda. Cuando un mercado se establece en un precio, por ejemplo, el precio de una pieza de automóvil de repuesto, este mercado genera un cierto volumen de demanda y, con suerte, también un cierto volumen de ganancias para los actores que satisfacen esta demanda.

En lo que respecta a las piezas de repuesto para automóviles, estas piezas definitivamente no son bienes de Veblen. La demanda disminuye a medida que aumenta el precio. Sin embargo, como las personas no tienen muchas opciones al comprar piezas de automóviles, al menos si quieren seguir conduciendo sus autos, se puede esperar que la demanda sea relativamente inelástica. Un punto de precio más alto o más bajo para las pastillas de freno realmente no altera su decisión de comprar nuevas pastillas de freno. De hecho, la mayoría de las personas preferirían comprar nuevas pastillas de freno, incluso si tienen que pagar el doble del precio habitual por ellas, en lugar de dejar de usar su vehículo por completo.

Para Stuttgart, identificar la mejor etiqueta de precio para cada pieza es fundamental por una miríada de razones. Exploraremos las dos más obvias. En primer lugar, Stuttgart quiere maximizar sus ganancias, lo cual no es trivial, ya que no solo la demanda varía con el precio, sino que el costo también varía con el volumen. Stuttgart debe ser capaz de satisfacer la demanda que generará en el futuro, lo cual es aún más complicado, ya que el inventario debe asegurarse con días de anticipación, si no semanas, debido a las restricciones de tiempo de entrega.

Basándose en esta exposición limitada, algunos libros de texto e incluso algunos software empresariales, proceden con la curva ilustrada a la derecha. Esta curva ilustra conceptualmente el volumen esperado de ganancias que se puede anticipar para cualquier etiqueta de precio. Dado que la demanda disminuye a medida que aumenta el precio y el costo por unidad disminuye a medida que aumenta el volumen, esta curva debería mostrar un punto óptimo de ganancias que maximice el beneficio. Una vez que se identifica este punto óptimo, ajustar el suministro de inventario se presenta como una cuestión sencilla de orquestación. De hecho, el punto óptimo proporciona no solo una etiqueta de precio, sino también un volumen de demanda.

Slide 3

Sin embargo, esta perspectiva es profundamente equivocada. El problema no tiene nada que ver con la dificultad de cuantificar la elasticidad. Mi propuesta no es que la curva de la izquierda sea incorrecta; es fundamentalmente correcta. Mi argumento es que el salto de la curva de la izquierda a la curva de la derecha es incorrecto. De hecho, este salto es tan sorprendentemente incorrecto que sirve como una especie de prueba de fuego. Cualquier proveedor de software o libro de precios que presente los precios de esta manera demuestra un peligroso grado de analfabetismo económico, especialmente si presentan la evaluación de la elasticidad como el desafío central asociado con esta perspectiva. Esto ni siquiera se acerca remotamente a ser el caso. Confiar en una cadena de suministro del mundo real a tal proveedor o experto invita al dolor y la miseria. Si hay algo que tu cadena de suministro no necesita, es una interpretación defectuosa de la microeconomía mal entendida a gran escala.

En esta serie de conferencias, este es otro ejemplo de racionalismo ingenuo o cientificismo, que ha demostrado una y otra vez ser una amenaza significativa para las cadenas de suministro modernas. El razonamiento económico abstracto es poderoso porque captura una amplia gama de situaciones. Sin embargo, el razonamiento abstracto también es susceptible a interpretaciones erróneas graves. Pueden ocurrir importantes errores intelectuales que no son inmediatamente evidentes cuando se piensa en términos muy generales.

Para entender por qué el salto de la curva de la izquierda a la curva de la derecha es incorrecto, debemos analizar más de cerca lo que realmente sucede en una cadena de suministro del mundo real. Esta conferencia se centra en las piezas de repuesto para automóviles. Volveremos a examinar los precios desde el punto de vista de Stuttgart, una empresa ficticia de cadena de suministro presentada en el tercer capítulo de esta serie de conferencias. No volveremos a visitar los detalles de esta empresa. Si aún no has visto la conferencia 3.4, te invito a hacerlo después de esta conferencia.

Hoy, estamos analizando el segmento minorista en línea de Stuttgart, una división de comercio electrónico que vende piezas de automóviles. Estamos explorando las formas más apropiadas para que Stuttgart determine sus precios y los revise en cualquier momento. Esta tarea debe realizarse para cada pieza vendida por Stuttgart.

Slide 4

Stuttgart no está solo en este mercado. En cada país europeo donde Stuttgart opera, hay media docena de competidores destacados. Esta breve lista de empresas, incluida Stuttgart, representa la mayoría de la cuota de mercado en línea de piezas de repuesto para automóviles. Si bien Stuttgart vende exclusivamente algunas piezas, para la mayoría de las piezas vendidas, hay al menos un competidor destacado que vende la misma pieza exacta. Este hecho tiene implicaciones significativas para la optimización de precios de Stuttgart.

Consideremos qué sucede si, para una determinada pieza, Stuttgart decide poner la etiqueta de precio de esta pieza un euro por debajo de la etiqueta de precio ofrecida por un competidor que vende la misma pieza. Concebiblemente, esto hará que Stuttgart sea más competitivo y ayude a capturar cuota de mercado. Pero no tan rápido. El competidor monitorea todos los precios establecidos por Stuttgart. De hecho, el mercado de accesorios para automóviles es un mercado altamente competitivo. Todos tienen herramientas de inteligencia competitiva. Stuttgart recopila todos los precios de sus competidores destacados diariamente, y los competidores hacen lo mismo. Por lo tanto, si Stuttgart decide poner la etiqueta de precio de una pieza un euro por debajo de la etiqueta de precio ofrecida por un competidor, es seguro asumir que en uno o dos días, el competidor habrá bajado su etiqueta de precio en represalia, anulando el movimiento de precio de Stuttgart.

Aunque Stuttgart puede ser una empresa ficticia, este comportamiento competitivo descrito aquí no es ficticio en absoluto en el mercado de accesorios para automóviles. Los competidores alinean agresivamente sus precios. Si Stuttgart intenta repetidamente bajar sus precios, esto conducirá a una guerra de precios algorítmica, dejando a ambas empresas con poco o ningún margen al final de la guerra.

Consideremos qué sucede si, para una determinada pieza, Stuttgart decide poner la etiqueta de precio de esta pieza un euro por encima de la etiqueta de precio ofrecida por un competidor. Suponiendo que todo lo demás permanezca igual además de la etiqueta de precio, Stuttgart simplemente ya no es competitivo. Por lo tanto, aunque la base de clientes de Stuttgart puede no abandonar inmediatamente a favor del competidor (ya que es posible que ni siquiera sean conscientes de la diferencia de precio o que sigan siendo leales a Stuttgart), con el tiempo, la cuota de mercado de Stuttgart está garantizada a desaparecer.

Hay sitios web de comparación de precios disponibles en Europa para piezas de automóviles. Si bien los clientes pueden no comparar precios cada vez que necesiten una nueva pieza para su automóvil, la mayoría de los clientes revisarán sus opciones de vez en cuando. No es una solución viable que Stuttgart sea descubierto invariablemente como el distribuidor más caro.

Por lo tanto, hemos visto que Stuttgart no puede tener una etiqueta de precio por debajo de la competencia, ya que desencadena una guerra de precios. Por otro lado, Stuttgart no puede tener una etiqueta de precio por encima de la competencia, ya que garantiza la erosión de su cuota de mercado con el tiempo. La única opción que queda para Stuttgart es buscar la alineación de precios. Esto no es una afirmación teórica: la alineación de precios es el principal impulsor para las empresas de comercio electrónico reales que venden piezas de automóviles en Europa.

La curva de beneficios intelectualmente atractiva que presentamos anteriormente, donde las empresas supuestamente podían elegir el beneficio óptimo, es completamente falsa en su mayor parte. Stuttgart ni siquiera tiene opción cuando se trata de sus precios. En gran medida, a menos que haya algún tipo de ingrediente secreto involucrado, la alineación de precios es la única opción para Stuttgart.

Los mercados libres son una bestia extraña, como lo expresó Engels en su correspondencia de 1819: “La voluntad de cada individuo es obstaculizada por todos los demás, y lo que surge es algo que nadie quiso”. Veremos a continuación que Stuttgart mantiene cierta flexibilidad residual para establecer sus precios. Sin embargo, la proposición principal sigue siendo: la optimización de precios para Stuttgart es, ante todo, un problema fuertemente restringido, que no tiene nada en común con una perspectiva de maximización ingenua impulsada por una curva de demanda.

La elasticidad precio de la demanda es un concepto que tiene sentido para un mercado en su conjunto, pero generalmente no tanto para algo tan localizado como un número de pieza.

Slide 45

La idea de que la fijación de precios se puede abordar como un simple problema de maximización de beneficios aprovechando la curva de demanda es falsa, o al menos, es falsa en el caso de Stuttgart.

De hecho, se podría argumentar que Stuttgart pertenece a un mercado de necesidades, y la perspectiva de las curvas de beneficios seguiría funcionando si estuviéramos considerando un mercado de deseos. En marketing, es una distinción clásica separar los mercados de deseos de los mercados de necesidades. Un mercado de deseos se caracteriza típicamente por ofertas en las que los clientes pueden optar por no consumir sin sufrir consecuencias negativas. En los mercados de deseos, las ofertas exitosas tienden a estar fuertemente vinculadas a la marca del vendedor, y la marca misma es el motor que genera la demanda en primer lugar. Por ejemplo, la moda es el arquetipo de los mercados de deseos. Si quieres un bolso de Louis Vuitton, entonces este bolso solo se puede comprar en Louis Vuitton. Aunque hay cientos de vendedores que venden bolsos que son funcionalmente equivalentes, no serán un bolso de Louis Vuitton. Si decides no comprar un bolso de Louis Vuitton, entonces no te pasará nada grave.

Un mercado de necesidades se caracteriza típicamente por ofertas en las que los clientes no pueden optar por no consumir sin sufrir consecuencias negativas. En los mercados de necesidades, las marcas no son motores de demanda; son más como motores de elección. Las marcas guían a los clientes en la elección de quién consumir una vez que se presenta la necesidad de consumo. Por ejemplo, los alimentos y las necesidades básicas son el arquetipo de los mercados de necesidades. Incluso si las piezas de automóviles no son estrictamente necesarias para sobrevivir, muchas personas dependen de un vehículo para ganar dinero y, por lo tanto, no pueden optar por no mantener adecuadamente su vehículo, ya que el costo para ellos de la falta de mantenimiento superaría ampliamente el costo del mantenimiento en sí.

Aunque el mercado de accesorios para automóviles está firmemente establecido en el mercado de necesidades, hay matices. Hay componentes como los tapacubos que son más deseos que necesidades. Más en general, todos los accesorios son más deseos que necesidades. Sin embargo, para Stuttgart, las necesidades impulsan la gran mayoría de la demanda.

La crítica que estoy proponiendo aquí contra la curva de beneficios para la fijación de precios se generaliza a casi todas las situaciones en los mercados de necesidades. Stuttgart no es una excepción en cuanto a estar severamente limitado en cuanto a precios por sus competidores; esta situación es casi ubicua en los mercados de necesidades. Este argumento no desacredita la viabilidad de la curva de beneficios al considerar los mercados de deseos.

De hecho, se podría argumentar en contra de que en un mercado de deseos, si el vendedor tiene un monopolio sobre su propia marca, entonces este vendedor debería ser libre de elegir cualquier precio que maximice su beneficio, lo que nos lleva de nuevo a la perspectiva de la curva de beneficios para la fijación de precios. Una vez más, este contraargumento demuestra los peligros del razonamiento económico abstracto en la cadena de suministro.

En un mercado de deseos, la perspectiva de la curva de beneficios también es incorrecta, aunque por un conjunto completamente diferente de razones. Los detalles de esta demostración están más allá del alcance de la presente conferencia, ya que requeriría otra conferencia propia. Sin embargo, como ejercicio para el público, simplemente sugeriría echar un vistazo más de cerca a la lista de bolsos y sus precios que se muestran en el sitio web de comercio electrónico de Louis Vuitton. La razón por la cual la perspectiva de la curva de beneficios es inapropiada debería ser evidente por sí misma. Si no es así, es probable que volvamos a este caso en una conferencia posterior.

Slide 6

Esta serie de conferencias está destinada, entre otras cosas, como material de capacitación para los Supply Chain Scientists en Lokad. Sin embargo, también espero que estas conferencias puedan ser de interés para una audiencia mucho más amplia de profesionales de la cadena de suministro. Estoy tratando de mantener estas conferencias algo desacopladas, pero utilizaré algunos conceptos técnicos que se han presentado en las conferencias anteriores. No dedicaré demasiado tiempo a reintroducir estos conceptos. Si no has visto las conferencias anteriores, no dudes en echarles un vistazo después.

En el primer capítulo de esta serie, exploramos por qué las cadenas de suministro deben volverse programáticas. Es muy deseable poner una receta numérica en producción debido a la creciente complejidad de las cadenas de suministro. La automatización es más urgente que nunca y existe un imperativo financiero para convertir la práctica de la cadena de suministro en una empresa capitalista.

En el segundo capítulo, dedicamos tiempo a las metodologías. Las cadenas de suministro son sistemas competitivos y esta combinación derrota a las metodologías ingenuas. Vimos que esta combinación también derrota a los modelos que interpretan o caracterizan erróneamente la microeconomía.

El tercer capítulo examinó los problemas encontrados en las cadenas de suministro, dejando de lado las soluciones. Presentamos a Stuttgart como una de las personas de la cadena de suministro. Este capítulo intentó caracterizar las clases de problemas de toma de decisiones que deben resolverse y mostró que las perspectivas simplistas, como elegir la cantidad correcta de stock, no se ajustan a situaciones del mundo real. Invariablemente, hay una profundidad en la forma de las decisiones que se deben tomar.

El cuarto capítulo examinó los elementos que se requieren para comprender las prácticas modernas de la cadena de suministro, donde los elementos de software son omnipresentes. Estos elementos son fundamentales para comprender el contexto más amplio en el que opera la cadena de suministro digital.

Los capítulos cinco y seis están dedicados a la modelización predictiva y la toma de decisiones, respectivamente. Estos capítulos recopilan técnicas que funcionan bien en manos de los científicos de la cadena de suministro hoy en día. El sexto capítulo se centra en la fijación de precios, un tipo de decisión que debe tomarse entre muchas otras.

Finalmente, el séptimo capítulo está dedicado a la ejecución de una iniciativa de Supply Chain Quantitativa y abarca la perspectiva organizativa.

Slide 7

La conferencia de hoy se dividirá en dos segmentos amplios. En primer lugar, discutiremos cómo abordar la alineación competitiva de precios para Stuttgart. La alineación de precios con los de los competidores debe abordarse desde la perspectiva del cliente debido a la estructura única del mercado de piezas de repuesto para automóviles. Si bien la alineación competitiva es muy compleja, se beneficia de una solución relativamente sencilla que cubriremos en detalle.

En segundo lugar, aunque la alineación competitiva es la fuerza dominante, no es la única. Stuttgart puede necesitar o querer desviarse selectivamente de esta alineación. Sin embargo, los beneficios de estas desviaciones deben superar los riesgos. La calidad de la alineación depende de la calidad de los insumos utilizados para construir la alineación, por lo que presentaremos una técnica de aprendizaje auto-supervisado para refinar el grafo de compatibilidades mecánicas.

Por último, abordaremos una serie breve de preocupaciones relacionadas con los precios. Estas preocupaciones pueden no ser estrictamente de precios, pero en la práctica, es mejor abordarlas conjuntamente con los precios.

Slide 8

Stuttgart necesita poner un precio a cada pieza que vende, pero esto no implica que el análisis de precios deba realizarse principalmente a nivel de número de pieza. El precio es, ante todo, una forma de comunicarse con los clientes.

Tomémonos un momento para considerar cómo perciben los clientes los precios ofrecidos por Stuttgart. Como veremos, la aparentemente sutil distinción que existe entre la etiqueta de precio y la percepción de la etiqueta de precio, de hecho, no es sutil en absoluto.

Cuando un cliente comienza a buscar una nueva pieza de automóvil, generalmente una pieza consumible como las pastillas de freno, es poco probable que conozca el número de pieza específico que necesita. Puede haber algunos aficionados al automóvil que tengan un profundo conocimiento sobre el tema, hasta el punto de tener un número de pieza específico en mente, pero son una minoría pequeña. La mayoría de las personas solo saben que necesitan cambiar sus pastillas de freno, pero no conocen el número de pieza exacto.

Esta situación lleva a otra preocupación seria: la compatibilidad mecánica. Hay miles de referencias de pastillas de freno disponibles en el mercado, sin embargo, para cualquier vehículo dado, generalmente solo hay unas pocas docenas de referencias que son compatibles. Por lo tanto, la compatibilidad mecánica no puede dejarse al azar.

Stuttgart, al igual que todos sus competidores, es muy consciente de este problema. Al visitar el sitio web de comercio electrónico de Stuttgart, se invita al visitante a especificar el modelo de su automóvil y luego el sitio web filtra inmediatamente las piezas que no son mecánicamente compatibles con el vehículo especificado. Los sitios web de los competidores siguen el mismo patrón de diseño: primero elija el vehículo, luego elija la pieza.

Cuando un cliente busca comparar dos proveedores, generalmente compara las ofertas, no los números de pieza. Un cliente visitaría el sitio web de Stuttgart, identificaría el costo de las pastillas de freno compatibles, y luego repetiría el proceso en el sitio web de un competidor. El cliente podría identificar el número de pieza de las pastillas de freno en el sitio web de Stuttgart, y luego buscar exactamente el mismo número de pieza en el sitio del competidor, pero en la práctica, rara vez se hace esto.

Stuttgart y sus competidores diseñan cuidadosamente sus surtidos para poder atender a casi todos los vehículos con una fracción de los números de pieza de automóviles disponibles. Como resultado, generalmente tienen entre 100,000 y 200,000 números de pieza listados en sus sitios web, y solo 10,000 a 20,000 números de pieza en stock.

En cuanto a nuestra preocupación inicial sobre los precios, está claro que el análisis de precios debe realizarse principalmente no a través del número de pieza, sino a través de la unidad de necesidad. En el contexto del mercado de accesorios automotrices, una unidad de necesidad se caracteriza por el tipo de pieza que necesita reemplazo y el modelo del automóvil que requiere el reemplazo.

Sin embargo, esta perspectiva de la unidad de necesidad presenta una complicación técnica inmediata. Stuttgart no puede confiar en coincidencias de precios uno a uno entre números de pieza para alinear sus precios con los de sus competidores. Por lo tanto, la alineación de precios no es tan obvia como podría parecer a primera vista, especialmente al reconocer las restricciones bajo las cuales Stuttgart opera en comparación con sus competidores.

Slide 9

Como ya hemos visto en la conferencia 3.4, el problema de la compatibilidad mecánica entre automóviles y piezas se aborda en Europa, así como en otras regiones importantes de todo el mundo, a través de la existencia de empresas especializadas. Estas empresas venden conjuntos de datos de compatibilidad mecánica, que consisten en tres listas: una lista de modelos de automóviles, una lista de piezas de automóviles y una lista de compatibilidades entre automóviles y piezas. Esta estructura de conjunto de datos se conoce técnicamente como un grafo bipartito.

En Europa, estos conjuntos de datos suelen incluir más de 100,000 vehículos, más de un millón de piezas y más de 100 millones de conexiones que vinculan automóviles con piezas. Mantener estos conjuntos de datos requiere mucho trabajo, lo que explica por qué existen empresas especializadas para vender estos conjuntos de datos. Stuttgart, al igual que sus competidores, compra una suscripción de una de estas empresas especializadas para acceder a versiones actualizadas de estos conjuntos de datos. Las suscripciones son necesarias porque, aunque la industria automotriz es madura, continuamente se introducen nuevos automóviles y piezas. Para mantenerse estrechamente alineados con el panorama automotriz, estos conjuntos de datos deben actualizarse al menos trimestralmente.

Stuttgart, al igual que sus competidores, utiliza este conjunto de datos para respaldar el mecanismo de selección de vehículos en sus sitios web de comercio electrónico. Una vez que un cliente ha seleccionado un vehículo, solo se muestran las piezas que son compatible comprobada con el vehículo elegido, según el conjunto de datos de compatibilidad. Este conjunto de datos de compatibilidad también es fundamental para nuestro análisis de precios. A través de este conjunto de datos, Stuttgart puede evaluar el punto de precio ofrecido para cada unidad de necesidad.

Slide 10

El último ingrediente significativo que falta para construir la estrategia de alineación competitiva de Stuttgart es la inteligencia competitiva. En Europa, al igual que en todas las principales regiones económicas, existen especialistas en inteligencia competitiva, empresas que brindan servicios de extracción de precios. Estas empresas extraen los precios de Stuttgart y sus competidores a diario. Si bien una empresa como Stuttgart puede intentar mitigar la extracción automatizada de sus precios, este esfuerzo es en su mayoría inútil debido a varias razones:

En primer lugar, Stuttgart, al igual que sus competidores, quiere ser amigable con los robots. Los bots más importantes son los motores de búsqueda, y Google, a partir de 2023, tiene ligeramente más del 90% de la cuota de mercado. Sin embargo, no es el único motor de búsqueda, y aunque podría ser posible identificar a Googlebot, el rastreador principal de Google, es difícil hacer lo mismo con todos los demás rastreadores que aún representan aproximadamente el 10% del tráfico.

En segundo lugar, los especialistas en inteligencia competitiva se han convertido en expertos en la última década en hacerse pasar por tráfico de internet residencial regular. Estos servicios afirman tener acceso a millones de direcciones IP residenciales, lo cual logran mediante asociaciones con aplicaciones, aprovechando las conexiones a internet de usuarios regulares y asociándose con proveedores de servicios de internet (ISP) que pueden prestarles direcciones IP.

Por lo tanto, asumimos que Stuttgart se beneficia de una lista de precios de alta calidad de sus competidores destacados. Estos precios se extraen a nivel de número de pieza y se actualizan diariamente. Esta suposición no es especulativa; es el estado actual del mercado europeo.

Slide 11

Ahora hemos recopilado todos los elementos que Stuttgart necesita para calcular precios alineados, es decir, precios que coincidan con los de sus competidores desde una perspectiva de unidad de necesidad.

En pantalla, tenemos el pseudocódigo del problema de satisfacción de restricciones que queremos resolver. Simplemente enumeramos todas las unidades de necesidad, es decir, todas las combinaciones de tipos de piezas y modelos de automóviles. Para cada unidad de necesidad, establecemos que el precio más competitivo ofrecido por Stuttgart debe ser igual al precio más competitivo ofrecido por un competidor.

Veamos rápidamente el número de variables y restricciones. Stuttgart puede establecer una etiqueta de precio para cada número de pieza que ofrece, lo que significa que tenemos alrededor de 100,000 variables. El número de restricciones es un poco más complejo. Técnicamente, tenemos alrededor de 1,000 tipos de piezas y alrededor de 100,000 modelos de automóviles, lo que sugiere aproximadamente 100 millones de restricciones. Sin embargo, no todos los tipos de piezas se encuentran en todos los modelos de automóviles. Las mediciones del mundo real indican que el número de restricciones se acerca a los 10 millones.

A pesar de este menor número de restricciones, todavía tenemos 100 veces más restricciones de las que tenemos variables. Nos enfrentamos a un sistema ampliamente sobreconstruido. Por lo tanto, sabemos que es poco probable que encontremos una solución que satisfaga todas las restricciones. El mejor resultado es una solución de compromiso que satisface la mayoría de ellas.

Además, los competidores no son del todo consistentes con sus precios. A pesar de nuestros mejores esfuerzos, Stuttgart puede verse envuelto en una guerra de precios por un número de pieza debido a que su etiqueta de precio es demasiado baja. Al mismo tiempo, puede perder cuota de mercado en el mismo número de pieza debido a que su etiqueta de precio es demasiado alta para otro competidor. Este escenario no es teórico; los datos empíricos sugieren que estas situaciones ocurren regularmente, aunque para un pequeño porcentaje de números de pieza.

Dado que hemos optado por una resolución aproximada de este sistema de restricciones, debemos aclarar el peso que se debe dar a cada restricción. No todos los modelos de automóviles son iguales: algunos están asociados con vehículos más antiguos que han desaparecido casi por completo de las carreteras. Proponemos ponderar estas restricciones según el volumen respectivo de demanda, expresado en euros.

Slide 12

Ahora que hemos establecido el marco formal para nuestra lógica de precios, procedamos con el código de software real. Como veremos, la resolución de este sistema es más sencilla de lo esperado.

En la pantalla, un esquema relacional mínimo ilustra las seis tablas involucradas en este sistema. Los rectángulos con esquinas redondeadas representan las seis tablas de interés y las flechas representan las relaciones de uno a muchos entre las tablas.

Repasemos brevemente estas tablas:

  1. Tipos de Piezas: Como su nombre indica, esta tabla enumera los tipos de piezas, por ejemplo, “pastillas de freno delanteras”. Estos tipos se utilizan para identificar qué pieza se puede utilizar como reemplazo de otra. La pieza de repuesto no solo debe ser compatible con el vehículo, sino que también debe tener el mismo tipo. Hay alrededor de mil tipos de piezas.

  2. Modelos de Automóviles: Esta tabla enumera los modelos de automóviles, por ejemplo, “Peugeot 3008 Fase 2 diésel”. Cada vehículo tiene un modelo y se espera que todos los vehículos de un modelo dado tengan el mismo conjunto de compatibilidades mecánicas. Hay alrededor de cien mil modelos de automóviles.

  3. Números de Pieza (PNs): Esta tabla enumera los números de pieza que se encuentran en el mercado de accesorios automotrices. Cada número de pieza tiene un, y solo un, tipo de pieza. Hay alrededor de 1 millón de números de pieza en esta tabla.

  4. Compatibilidad (Compat): Esta tabla representa las compatibilidades mecánicas y recopila todas las combinaciones válidas de números de pieza y modelos de automóviles. Con aproximadamente 100 millones de líneas de compatibilidad, esta tabla es, con mucho, la más grande.

  5. Competencia: Esta tabla contiene toda la inteligencia competitiva del día. Para cada número de pieza, hay media docena de competidores destacados que tienen el número de pieza en exhibición con un precio. Esto resulta en aproximadamente 10 millones de precios competitivos.

  6. Pedidos: Esta tabla contiene los pedidos de clientes anteriores de Stuttgart durante un período de aproximadamente un año. Cada línea de pedido incluye un número de pieza y un modelo de automóvil. Técnicamente, es posible comprar una pieza de automóvil sin especificar el modelo de automóvil, aunque esto es raro. Se pueden filtrar las líneas de pedido sin un modelo de automóvil. Según el tamaño de Stuttgart, debería haber alrededor de 10 millones de líneas de pedido.

Slide 13

Ahora examinaremos el código que carga los datos relacionales. En la pantalla se muestra un script que carga seis tablas, escrito en Envision, un lenguaje de programación específico del dominio diseñado por Lokad específicamente para la optimización predictiva de cadenas de suministro. Aunque Envision ha sido creado para aumentar la eficiencia y reducir errores en contextos de cadena de suministro, el script se puede reescribir en otros lenguajes como Python, aunque esto conlleva un aumento en la verbosidad y el riesgo de errores.

En la primera parte del script, se cargan cuatro archivos de texto plano. Desde las líneas 1 a 5, el archivo ‘path.csv’ proporciona tanto los números de pieza como los tipos de pieza, incluidos los precios actuales mostrados en Stuttgart. El campo ’name is active’ indica si un número de pieza específico es atendido por Stuttgart. En esta primera tabla, la variable ‘PN’ se refiere a la dimensión principal de la tabla, mientras que ‘PN type’ es una dimensión secundaria introducida por la palabra clave ’expect’.

Desde las líneas 7 a 9, el archivo ‘compat.tsv’ suministra la lista de compatibilidad entre piezas y vehículos y los modelos de automóviles. Esta es la tabla más grande del script. Las líneas 11 a 14 cargan el archivo ‘competition.tsv’, proporcionando una instantánea de la inteligencia competitiva del día, es decir, los precios por número de pieza y por competidor. El archivo ‘orders.tsv’, cargado en las líneas 16 a 19, nos da la lista de números de pieza que se están comprando y los modelos de automóviles asociados, asumiendo que todas las líneas asociadas con modelos de automóviles no especificados han sido filtradas.

Finalmente, en las líneas 21 y 22, la tabla ’tipos de piezas’ se establece como upstream de las dos tablas, ‘compat’ y ‘orders’. Esto significa que para cada línea en ‘compat’ o ‘orders’, hay un, y solo un, tipo de pieza que coincide. En otras palabras, ‘PN type’ se ha agregado como una dimensión secundaria a las tablas ‘compat’ y ‘orders’. Esta primera parte del script de Envision es sencilla; simplemente estamos cargando datos de archivos de texto plano y restableciendo la estructura de datos relacionales en el proceso.

Slide 14

La segunda parte del script, que es visible en la pantalla, es donde ocurre la lógica de alineación real. Esta sección es una continuación directa de la primera parte y, como puedes ver, son solo 12 líneas de código. Una vez más, estamos utilizando programación diferenciable. Para la audiencia que puede no estar familiarizada con la programación diferenciable, es una fusión de diferenciación automática y descenso de gradiente estocástico. Es un paradigma de programación que también se extiende al aprendizaje automático y la optimización. En el contexto de la cadena de suministro, la programación diferenciable resulta increíblemente útil en diversas situaciones. A lo largo de esta serie de conferencias, hemos demostrado cómo la programación diferenciable se puede utilizar para aprender modelos, generar pronósticos de demanda probabilísticos y lograr pronósticos de tiempo de entrega balísticos. Si no estás familiarizado con la programación diferenciable, te recomiendo revisar las conferencias anteriores de esta serie.

En la conferencia de hoy, veremos cómo la programación diferenciable es adecuada para abordar problemas de optimización a gran escala que involucran cientos de miles de variables y millones de restricciones. Sorprendentemente, estos problemas se pueden resolver en solo unos minutos en una sola CPU con unos pocos gigabytes de RAM. Además, podemos utilizar precios anteriores como punto de partida, actualizando nuestros precios en lugar de recalcularlos desde cero.

Ten en cuenta un pequeño inconveniente. La palabra clave ‘join’ aún no es compatible con Envision, pero está en nuestro plan técnico para el futuro. Existen soluciones alternativas, pero para mayor claridad, utilizaré la sintaxis futura de Envision en esta conferencia.

En la línea 24, calculamos el precio observado más bajo en el mercado para cada número de pieza. Si un número de pieza se vende exclusivamente por Stuttgart y no tiene competidores, utilizamos el precio propio de Stuttgart como predeterminado.

Desde las líneas 26 a 30, se calcula la oferta más competitiva actual para cada pieza en el historial de pedidos de los clientes de Stuttgart.

En la línea 27, iteramos sobre cada línea de pedido de la tabla de pedidos con ’each order’.

En la línea 28, utilizamos ‘join pns’ para traer la tabla completa de números de pieza para cada línea de pedidos.

En la línea 29, nos unimos con ‘others’, pero esta unión está restringida por dos dimensiones secundarias: modelo y tipo de pieza. Esto significa que para cada línea en pedidos, seleccionamos los números de pieza que coinciden con una combinación de modelo de pieza y tipo de pieza, reflejando las piezas compatibles con la unidad de necesidad que coincide con el pedido del cliente.

Desde la línea 32 hasta la 37, resolvemos la alineación utilizando programación diferenciable, indicada por la palabra clave ‘Auto diff’. El bloque ‘Auto diff’ se declara en la línea 32, aprovechando la tabla de ‘orders’ como tabla de observación. Esto significa que estamos ponderando implícitamente las restricciones según el volumen de ventas propio de Stuttgart. Las líneas 33 y 44 cumplen el mismo propósito que las líneas 28 y 29; iteran sobre la tabla de ‘orders’, proporcionando acceso completo a la tabla de números de pieza (‘PN’) y una selección de las entradas compatibles.

En la línea 35, declaramos ‘pns.price’ como los parámetros a optimizar mediante el descenso de gradiente estocástico. No es necesario inicializar estos parámetros, ya que partimos de los precios utilizados hasta ahora por Stuttgart, actualizando efectivamente la alineación.

En la línea 36, calculamos ‘mi precio’, que es la oferta más competitiva de Stuttgart para la unidad de necesidad asociada con la línea de pedido. Este cálculo es un mecanismo bastante similar al cálculo del precio observado más bajo, como se hace en la línea 24, una vez más basándose en la lista de compatibilidades mecánicas. Sin embargo, las compatibilidades están restringidas a los números de pieza que son atendidos por Stuttgart. Históricamente, los clientes pueden o no haber seleccionado la parte más económicamente ventajosa para su vehículo. Sin embargo, el propósito de utilizar los pedidos de los clientes en este contexto es asignar pesos a las unidades de necesidad.

En la línea 37, empleamos la diferencia absoluta entre el mejor precio ofrecido por Stuttgart y el mejor precio ofrecido por un competidor para guiar la alineación. Dentro de este bloque alternativo, los gradientes se aplican retroactivamente a los parámetros. La diferencia que encontramos al final forma la función de pérdida. A partir de esta función de pérdida, los gradientes fluyen hacia el único vector de parámetros que tenemos aquí: ‘pns.price’. Ajustando incrementalmente los parámetros (los precios) en cada iteración (una iteración aquí siendo una línea de pedido), el script converge hacia una aproximación adecuada de la alineación de precios deseada.

En términos de complejidad algorítmica, la línea 36 domina. Sin embargo, dado que el número de compatibilidades para cualquier modelo de automóvil y tipo de pieza es limitado (generalmente no más de unas pocas docenas), cada iteración de ‘Auto diff’ se realiza en lo que equivale a un tiempo constante. Este tiempo constante no es muy pequeño, como 10 ciclos de CPU, pero tampoco será un millón de ciclos de CPU. Aproximadamente, mil ciclos de CPU suenan razonables para 20 piezas compatibles.

Si asumimos una sola CPU funcionando a dos gigahertzios y realizando 100 épocas (una época siendo un descenso completo sobre toda la tabla de observación), anticiparíamos un tiempo de ejecución objetivo de aproximadamente 10 minutos. Resolver un problema con 100,000 variables y 10 millones de restricciones en 10 minutos en una sola CPU es bastante impresionante. De hecho, Lokad logra un rendimiento aproximadamente en línea con esta expectativa. Sin embargo, en la práctica, para este tipo de problemas, nuestro cuello de botella suele ser más la velocidad de E/S que la CPU.

Una vez más, este ejemplo muestra el poder de emplear paradigmas de programación adecuados para aplicaciones de la cadena de suministro. Comenzamos con un problema no trivial, ya que no era evidente de inmediato cómo aprovechar este conjunto de datos de compatibilidad mecánica desde una perspectiva de precios. A pesar de esto, la implementación real es sencilla.

Si bien este script no cubre todos los aspectos que estarían presentes en una configuración del mundo real, la lógica principal solo requiere seis líneas de código, dejando amplio espacio para acomodar las complejidades adicionales que los escenarios del mundo real podrían introducir.

Slide 15

El algoritmo de alineación, como se presentó anteriormente, prioriza la simplicidad y la claridad sobre la exhaustividad. En una configuración del mundo real, se esperarían factores adicionales. Pronto analizaré estos factores, pero comencemos reconociendo que estos factores se pueden abordar mediante la ampliación de este algoritmo de alineación.

Vender a pérdida no solo es imprudente, sino también ilegal en muchos países, como Francia, aunque hay excepciones en circunstancias especiales. Para evitar vender a pérdida, se puede agregar una restricción al algoritmo de alineación que exija que el precio de venta supere el precio de compra. Sin embargo, también es útil ejecutar el algoritmo sin esta restricción de “sin pérdidas” para identificar posibles problemas de abastecimiento. De hecho, si un competidor puede permitirse vender una pieza por debajo del precio de compra de Stuttgart, Stuttgart debe abordar el problema subyacente. Lo más probable es que sea un problema de abastecimiento o compra.

Simplemente agrupar todos los números de pieza es ingenuo. Los clientes no tienen la misma disposición a pagar por todos los fabricantes de equipos originales (OEM). Por ejemplo, es más probable que los clientes valoren una marca conocida como Bosch en comparación con un OEM chino menos conocido en Europa. Para abordar esta preocupación, Stuttgart, al igual que sus competidores, clasifica los OEM en una lista corta de rangos de productos, desde el más caro hasta el más barato. Podemos tener, por ejemplo, la gama de deportes de motor, la gama doméstica, la gama de marcas de distribuidores y la gama económica.

Luego, la alineación se construye para asegurar que cada número de pieza esté alineado dentro de su propio rango de productos. Además, el algoritmo de alineación debe exigir que los precios sean estrictamente decrecientes al pasar de la gama de deportes de motor a la gama económica, ya que cualquier inversión confundiría a los clientes. En teoría, si los competidores fijaran con precisión los precios de sus propias ofertas, no se producirían tales inversiones. Sin embargo, en la práctica, a veces los clientes fijan incorrectamente los precios de sus propias piezas y ocasionalmente tienen razones para establecer sus piezas a un precio diferente.

Solo hay unos pocos cientos de OEM, clasificar esos OEM en sus respectivos rangos de productos se puede hacer manualmente y posiblemente con la ayuda de encuestas a los clientes si hay ambigüedades que no se pueden resolver directamente por los expertos del mercado en Stuttgart.

Slide 16

A pesar de la adopción de rangos de productos, muchos precios de números de pieza no terminan siendo impulsados activamente por la lógica de alineación. De hecho, solo los números de pieza que contribuyen activamente a ser el mejor precio entre una unidad de necesidad se ajustan efectivamente mediante el descenso de gradiente para crear la alineación aproximada que buscamos dentro del mismo rango de productos.

De dos números de pieza que tienen compatibilidades mecánicas idénticas, solo uno de ellos tendrá su precio ajustado por el solucionador de alineación. El otro número de pieza siempre obtendrá gradientes cero y, por lo tanto, su precio original quedará intacto. Por lo tanto, en resumen, si bien el sistema tiene un conjunto completo de restricciones, muchas variables no están restringidas en absoluto. Dependiendo de la granularidad de los rangos de productos y el alcance de la inteligencia competitiva, estos números de pieza no restringidos pueden representar una fracción considerable del catálogo, posiblemente la mitad de los números de pieza. Aunque la fracción, una vez expresada en volumen de ventas, es mucho menor.

Para estos números de pieza, Stuttgart requiere una estrategia de precios alternativa. Si bien no tengo un proceso algorítmico estricto para sugerir para estas partes no restringidas, propondría dos principios orientadores.

En primer lugar, debería haber una diferencia de precio no trivial, digamos del 10%, entre la parte más competitiva dentro del rango de productos y la siguiente parte. Con algo de suerte, algunos competidores pueden no ser tan hábiles como Stuttgart para reconstruir las unidades de necesidad. Por lo tanto, esos competidores pueden pasar por alto la etiqueta de precio que realmente impulsa la alineación, lo que los lleva a revisar su precio al alza, lo cual es deseable para Stuttgart.

En segundo lugar, puede haber algunas partes con una etiqueta de precio mucho más alta, digamos un 30% más caras, siempre y cuando esas partes no se superpongan con otros rangos de productos. Estas partes sirven como señuelos para sus contrapartes de mejor precio, una estrategia conocida técnicamente como fijación de precios señuelo. El señuelo está diseñado deliberadamente para ser una opción menos atractiva que la opción objetivo, haciendo que la opción objetivo parezca más valiosa y llevando al cliente a elegirla con más frecuencia. Estos dos principios son suficientes para extender suavemente los precios no restringidos más allá de sus umbrales competitivos.

Slide 17

La alineación competitiva más una dosis de fijación de precios señuelo son suficientes para asignar una etiqueta de precio a cada número de pieza que se muestra en Stuttgart. Sin embargo, es probable que la tasa de margen bruto resultante sea demasiado baja para Stuttgart. De hecho, alinear a Stuttgart con todos sus competidores destacados ejerce una tremenda presión sobre su margen.

Por un lado, alinear los precios es una necesidad; de lo contrario, Stuttgart será expulsado del mercado con el tiempo. Pero por otro lado, Stuttgart no puede quebrar en el proceso de preservar su cuota de mercado. Es crucial recordar que la futura tasa de margen bruto asociada con una estrategia de precios determinada solo se puede estimar o pronosticar. No hay una forma exacta de derivar la tasa de crecimiento futuro a partir de un conjunto de precios, ya que tanto los clientes como los competidores se adaptan.

Suponiendo que tenemos una estimación razonablemente precisa de la tasa de margen bruto que Stuttgart debería esperar la próxima semana, es importante señalar que la parte de “precisión” de esta suposición no es tan irrazonable como puede parecer. Stuttgart, al igual que sus competidores, opera bajo restricciones severas. A menos que la estrategia de precios de Stuttgart se modifique fundamentalmente, el margen bruto de toda la empresa no cambiará mucho de una semana a otra. Incluso podemos considerar la tasa de margen bruto observada de la semana pasada como un proxy razonable de lo que Stuttgart debería esperar la próxima semana, asumiendo naturalmente que la estrategia de precios permanezca sin cambios.

Digamos que se proyecta que la tasa de margen bruto de Stuttgart sea del 13%, pero Stuttgart necesita una tasa de margen bruto del 15% para mantenerse. ¿Qué debería hacer Stuttgart cuando se enfrenta a esta situación? Una respuesta consiste en seleccionar aleatoriamente una selección de “unidades de necesidad” y aumentar sus precios en un 20% aproximadamente. Los tipos de piezas preferidos por los clientes por primera vez, como los limpiaparabrisas, deben excluirse de esta selección. Ganar esos clientes por primera vez es costoso y difícil, y Stuttgart no debe arriesgar estas compras iniciales. De manera similar, para los tipos de piezas muy caras, como los inyectores, es probable que los clientes busquen mucho más. Por lo tanto, Stuttgart probablemente no debería arriesgarse a parecer no competitivo en esas compras más grandes.

Sin embargo, excepto en estas dos situaciones, argumentaría que seleccionar aleatoriamente “unidades de necesidad” y hacerlas no competitivas a través de precios más altos es una opción razonable. De hecho, Stuttgart necesita aumentar algunos de sus precios, una consecuencia inevitable de buscar una tasa de margen de crecimiento más alta. Si Stuttgart adopta un patrón discernible al hacerlo, es probable que las reseñas en línea señalen esos patrones. Por ejemplo, si Stuttgart decide renunciar a ser competitivo en piezas de Bosch o decide renunciar a ser competitivo en piezas compatibles con vehículos Peugeot, hay un peligro real de que Stuttgart se convierta en el distribuidor que no es una buena oferta para los vehículos Bosch o Peugeot. La aleatoriedad hace que Stuttgart sea algo inescrutable, que es precisamente el efecto deseado.

Slide 18

Los rangos de visualización son otro factor crucial en el catálogo en línea de Stuttgart. Más específicamente, para cada “unidad de necesidad”, Stuttgart necesita clasificar todas las piezas elegibles. Determinar la mejor manera de clasificar las piezas es un problema relacionado con el precio que merece una conferencia propia. Los rangos de visualización, desde la perspectiva presentada en esta conferencia, se esperaría que se calcularan después de resolver el problema de alineación. Sin embargo, también sería concebible optimizar tanto las etiquetas de precio como los rangos de visualización simultáneamente. Este problema presentaría alrededor de 10 millones de variables en lugar de las 100,000 variables con las que hemos tratado hasta ahora. Sin embargo, esto no altera fundamentalmente la escala del problema de optimización, ya que de todos modos tenemos que lidiar con 10 millones de restricciones. Hoy no abordaré qué tipo de criterio se podría utilizar para guiar esta optimización de rango de visualización, ni cómo aprovechar el descenso de gradiente para la optimización discreta. Esta última preocupación es bastante interesante, pero se abordará en una conferencia posterior.

Slide 19

La importancia relativa de la “unidad de necesidad” está casi completamente definida por las flotas de vehículos existentes. Stuttgart no puede esperar vender 1 millón de pastillas de freno para un modelo de automóvil que solo tiene 1,000 vehículos en Europa. Incluso se podría argumentar que los verdaderos consumidores de las piezas son los propios vehículos en lugar de sus propietarios. Si bien los vehículos no pagan por sus piezas (los propietarios sí), esta analogía ayuda a enfatizar la importancia de la flota de vehículos.

Sin embargo, es razonable esperar distorsiones sustanciales cuando se trata de que las personas compren sus piezas en línea. Después de todo, comprar piezas es principalmente una forma de ahorrar dinero en comparación con comprarlas indirectamente en un taller de reparación. Por lo tanto, la edad promedio del vehículo observada por Stuttgart se espera que sea mayor de lo que sugieren las estadísticas generales del mercado automotriz. De manera similar, las personas que conducen autos caros tienen menos probabilidades de intentar ahorrar dinero haciendo sus propias reparaciones. Por lo tanto, se espera que el tamaño y la clase promedio de los vehículos observados por Stuttgart sean más bajos de lo que sugieren las estadísticas generales del mercado.

Estas no son especulaciones ociosas. Estas distorsiones se observan de hecho en todos los principales minoristas de piezas de automóviles en línea en Europa. Sin embargo, el algoritmo de alineación, como se presentó anteriormente, aprovecha el historial de ventas de Stuttgart como un proxy de la demanda. Es concebible que estos sesgos puedan socavar el resultado del algoritmo de alineación de precios. Si estos sesgos afectan negativamente el resultado para Stuttgart es fundamentalmente un problema empírico, ya que la magnitud del problema, si existe, depende en gran medida de los datos. La experiencia de Lokad indica que el algoritmo de alineación y sus variaciones son bastante robustos contra esta clase de sesgos, incluso cuando se subestima el peso de una “unidad de necesidad” por un factor de dos o tres. La contribución principal de estos pesos, en términos de precio, parece ayudar al algoritmo de alineación a resolver conflictos cuando el mismo número de pieza pertenece a dos “unidades de necesidad” que no se pueden abordar conjuntamente. En la mayoría de estas situaciones, una “unidad de necesidad” supera ampliamente a la otra en términos de volumen. Por lo tanto, incluso una subestimación considerable de los volúmenes respectivos tiene pocas consecuencias en cuanto a precios.

Identificar los sesgos más grandes entre lo que la demanda debería haber sido para una ‘unidad de necesidad’ y lo que Stuttgart observa como ventas realizadas puede ser bastante útil. Un volumen de ventas sorprendentemente bajo para una determinada ‘unidad de necesidad’ tiende a indicar problemas mundanos con la plataforma de comercio electrónico. Algunas piezas pueden estar mal etiquetadas, algunas pueden tener imágenes incorrectas o de baja calidad, etc. En la práctica, estos sesgos se pueden identificar comparando las ratios de ventas para un determinado modelo de automóvil de los distintos tipos de piezas. Por ejemplo, si Stuttgart no vende pastillas de freno para un determinado modelo de automóvil, mientras que los volúmenes de ventas para otros tipos de piezas son consistentes con lo que se observa habitualmente, es poco probable que este modelo de automóvil tenga un consumo excepcionalmente bajo de pastillas de freno. La causa raíz casi seguramente se encuentra en otro lugar.

Slide 20

Una lista superior de compatibilidades mecánicas es una ventaja competitiva. Conocer compatibilidades desconocidas para tus competidores te permite potencialmente ofrecer precios más bajos sin desencadenar una guerra de precios, ganando así una ventaja en el aumento de tu cuota de mercado. Por otro lado, identificar compatibilidades incorrectas es fundamental para evitar devoluciones costosas por parte de los clientes.

De hecho, el costo de pedir una pieza incompatible es modesto para un taller de reparación, ya que es probable que exista un proceso establecido para devolver la pieza no utilizada al centro de distribución. Sin embargo, el proceso es mucho más tedioso para los clientes regulares que pueden incluso no tener éxito al empaquetar adecuadamente la pieza para su devolución. Por lo tanto, cada empresa de comercio electrónico tiene incentivos para construir su propia capa de enriquecimiento de datos sobre los conjuntos de datos de terceros que alquilan. La mayoría de los actores de comercio electrónico en este sector tienen su propia capa de enriquecimiento de datos de una forma u otra.

Hay pocos incentivos para compartir este conocimiento con las empresas especializadas que mantienen esos conjuntos de datos en primer lugar, ya que este conocimiento beneficiaría principalmente a la competencia. Es difícil evaluar la tasa de error en esos conjuntos de datos, pero en Lokad estimamos que ronda un porcentaje bajo de un solo dígito en ambos lados. Hay algunos porcentajes de falsos positivos, donde se declara una compatibilidad cuando no existe, y hay algunos porcentajes de falsos negativos, donde existe una compatibilidad pero no se declara. Teniendo en cuenta que la lista de compatibilidades mecánicas incluye más de 100 millones de líneas, es muy probable que haya alrededor de siete millones de errores según estimaciones conservadoras.

Por lo tanto, es de interés para Stuttgart mejorar este conjunto de datos. Las devoluciones de los clientes informadas como causadas por una compatibilidad mecánica falsa positiva ciertamente se pueden aprovechar para este propósito. Sin embargo, este proceso es lento y costoso. Además, como los clientes no son técnicos automotrices profesionales, es posible que informen que una pieza es incompatible cuando simplemente no han logrado montarla correctamente. Stuttgart puede posponer la decisión de declarar una pieza como incompatible hasta que se hayan realizado varias quejas, pero esto hace que el proceso sea aún más costoso y lento.

Por lo tanto, sería muy deseable una receta numérica para mejorar este conjunto de datos de compatibilidad. No es obvio que sea posible mejorar este conjunto de datos sin aprovechar información adicional. Sin embargo, sorprendentemente, resultó que este conjunto de datos se puede mejorar sin ninguna información adicional. Este conjunto de datos se puede utilizar para iniciar una versión superior de sí mismo.

Personalmente me encontré con esta realización en el primer trimestre de 2017 mientras realizaba una serie de experimentos de deep learning para Lokad. Utilicé una factorización de matrices, una técnica bien conocida para el filtrado colaborativo. El filtrado colaborativo es el problema central al construir un sistema de recomendación, que consiste en identificar el producto que a un usuario le podría gustar en función de las preferencias conocidas de este usuario por una lista corta de productos. Adaptar el filtrado colaborativo a las compatibilidades mecánicas es sencillo: reemplazar los usuarios por modelos de automóviles y reemplazar los productos por piezas de automóviles. Voilà, el problema está adaptado.

Más en general, la factorización de matrices es aplicable a cualquier situación que involucre un grafo bipartito. La factorización de matrices también es útil más allá del análisis de grafos. Por ejemplo, la adaptación de bajo rango de modelos de lenguaje grandes (LLMs), una técnica que se ha vuelto muy popular para ajustar finamente los LLMs, también se basa en el truco de la factorización de matrices. La factorización de matrices se ilustra en la pantalla. A la izquierda, tenemos la matriz de compatibilidad con unos para denotar una compatibilidad entre un automóvil y una pieza, y ceros para denotar incompatibilidad entre un modelo de automóvil y un número de pieza. Queremos reemplazar esta matriz grande y muy dispersa por el producto de dos matrices más pequeñas y densas. Esas dos matrices son visibles a la derecha. Estas matrices sirven para factorizar la matriz grande. En efecto, estamos sumergiendo cada modelo de automóvil y número de pieza en un espacio latente. La dimensión de este espacio latente se denota con la letra mayúscula L en la pantalla. Este espacio latente está diseñado para capturar las compatibilidades mecánicas pero con muchas menos dimensiones en comparación con la matriz original. Al mantener la dimensión de este espacio latente bastante baja, nuestro objetivo es aprender las reglas ocultas que rigen estas compatibilidades mecánicas.

Slide 21

Si bien la factorización de matrices puede sonar como un gran concepto técnico, no lo es. Es un truco básico del álgebra lineal. Lo único engañoso acerca de la factorización de matrices es que funciona tan bien a pesar de ser tan simple. En la pantalla se muestra una implementación completa de esta técnica en menos de 30 líneas de código.

Desde las líneas uno a tres, estamos leyendo el archivo plano que enumera las compatibilidades mecánicas. Este archivo se carga en una tabla llamada M por concisión, que significa matriz. Esta lista es efectivamente una representación dispersa de la matriz de compatibilidad. Al cargar esta lista, también creamos otras dos tablas llamadas car_models y pns. Estos bloques nos dan tres tablas: M, car_models y pns.

Las líneas cinco y seis implican mezclar al azar la columna que contiene los modelos de automóviles. El propósito de la mezcla es crear ceros aleatorios, o incompatibilidades aleatorias. De hecho, la matriz de compatibilidad es muy dispersa. Al elegir un automóvil al azar y una pieza al azar, casi estamos seguros de que esta pareja es incompatible. La confianza que tenemos en esta asociación aleatoria siendo cero es en realidad mayor que la confianza que tenemos en la lista de compatibilidades en primer lugar. Estos ceros aleatorios son 99.9% precisos por diseño debido a la dispersión de la matriz, mientras que las compatibilidades conocidas son tal vez 97% precisas.

La línea ocho implica crear el espacio latente con 24 dimensiones. Si bien 24 dimensiones pueden parecer muchas para las incrustaciones, es muy pequeño en comparación con los modelos de lenguaje grandes, que tienen incrustaciones de más de mil dimensiones. Las líneas nueve y diez implican crear las dos matrices pequeñas, llamadas pnl y car_L, que utilizaremos para factorizar la matriz grande. Estas dos matrices representan aproximadamente 24 millones de parámetros para pnl y 2.4 millones de parámetros para car_L. Esto se considera pequeño en comparación con la matriz grande, que tiene aproximadamente 100 mil millones de valores.

Señalemos que la matriz grande nunca se materializa en este script. Nunca se convierte explícitamente en un array; siempre se mantiene como una lista de 100 millones de compatibilidades. Convertirla en un array sería enormemente ineficiente en términos de recursos informáticos.

Las líneas 12 a 15 introducen dos funciones auxiliares llamadas sigmoid y log_loss. La función sigmoid se utiliza para convertir el producto de la matriz en bruto en probabilidades, números entre 0 y 1. La función log_loss representa la pérdida logística. La pérdida logística aplica la verosimilitud logarítmica, una métrica utilizada para evaluar la corrección de una predicción probabilística. Aquí se utiliza para evaluar una predicción probabilística para un problema de clasificación binaria. Ya hemos encontrado la verosimilitud logarítmica en la clase 5.3, dedicada al pronóstico probabilístico de los tiempos de espera. Esta es una variación más simple de la misma idea. Estas dos funciones están marcadas con la palabra clave autograd, lo que indica que pueden ser diferenciadas automáticamente. El pequeño valor de uno entre un millón es un épsilon introducido para la estabilidad numérica. No tiene ninguna influencia en la lógica en sí. Desde las líneas 17 a 29, tenemos la factorización de la matriz en sí. Una vez más, estamos utilizando la programación diferenciable. Hace unos minutos, estábamos utilizando la programación diferenciable para resolver aproximadamente un problema de satisfacción de restricciones. Aquí, estamos utilizando la programación diferenciable para abordar un problema de aprendizaje auto-supervisado.

En las líneas 18 y 19, estamos declarando los parámetros a aprender. Estos parámetros están asociados con las dos matrices pequeñas, pnl y car_L. La palabra clave ‘auto’ indica que estos parámetros se inicializan aleatoriamente como desviaciones aleatorias de una distribución gaussiana centrada en cero, con una desviación estándar de 0.1.

Las líneas 20 y 21 introducen dos parámetros especiales que aceleran la convergencia. Estos son solo 48 números en total, una gota en el océano en comparación con nuestras matrices pequeñas que aún tienen millones de números. Y sin embargo, he encontrado que la introducción de estos parámetros acelera sustancialmente la convergencia. Es importante señalar que estos parámetros no introducen ningún grado de libertad para el modelo existente. Estos parámetros solo introducen unos pocos grados de libertad adicionales en el proceso de aprendizaje. El efecto neto es que reducen más de la mitad el número de épocas necesarias.

En las líneas 22 a 24, estamos cargando las incrustaciones. En la línea 22, tenemos la incrustación para una sola parte llamada px. En la línea 23, tenemos la incrustación para un solo modelo de automóvil llamado mx. El par px y mx será nuestro borde positivo, una compatibilidad considerada como verdadera. En la línea 24, tenemos la incrustación para otro modelo de automóvil llamado mx2. El par px y mx2 será nuestro borde negativo, una compatibilidad considerada como falsa. De hecho, mx2 se ha seleccionado al azar a través de la mezcla que ocurre en la línea seis. Las tres incrustaciones px, mx y mx2 tienen exactamente 24 dimensiones, ya que pertenecen al espacio latente, representado por la tabla L en este script.

En la línea 26, expresamos la probabilidad, según lo definido por nuestro modelo, a través de un producto escalar de este borde para que sea positivo. Sabemos que este borde es positivo, al menos eso es lo que nos dice el conjunto de datos de compatibilidad. Pero aquí evaluamos lo que nuestro modelo probabilístico dice sobre este borde. En la línea 27, expresamos la probabilidad, también definida por nuestro modelo probabilístico, a través del producto escalar de este borde para que sea negativo. Suponemos que este borde es negativo ya que es un borde aleatorio. Nuevamente, evaluamos esta probabilidad para ver qué dice nuestro modelo sobre este borde. En la línea 29, devolvemos el opuesto de la verosimilitud logarítmica asociada con este borde. El valor devuelto se utiliza como una pérdida a minimizar mediante el descenso de gradiente estocástico. Aquí, significa que estamos maximizando la verosimilitud logarítmica, o criterio de clasificación binaria probabilística, entre pares compatibles e incompatibles.

Después, más allá de lo que se muestra en este script, la gran matriz se puede comparar con el producto escalar de dos matrices pequeñas. Las divergencias entre las dos representaciones destacan tanto los falsos positivos como los falsos negativos de los conjuntos de datos originales. Lo más sorprendente es que la representación factorizada de esta gran matriz resulta ser más precisa que la matriz original.

Desafortunadamente, no puedo presentar los resultados empíricos asociados con estas técnicas, ya que los conjuntos de datos de compatibilidad relevantes son todos propietarios. Sin embargo, mis hallazgos, validados por algunos actores en este mercado, indican que estas técnicas de factorización de matrices se pueden utilizar para reducir el número de falsos positivos y falsos negativos hasta en un orden de magnitud. En términos de rendimiento, pasé de aproximadamente dos semanas de cálculo para obtener una convergencia satisfactoria con la herramienta de aprendizaje profundo que estaba utilizando, CNTK, la herramienta de aprendizaje profundo de Microsoft en 2017, a aproximadamente una hora con el tiempo de ejecución actual ofrecido por Envision. Las primeras herramientas de aprendizaje profundo sí ofrecían programación diferenciable en cierto sentido; sin embargo, esas soluciones estaban muy optimizadas para productos de matrices grandes y convoluciones grandes. Las herramientas más recientes, como Jax de Google, sospecho que ofrecerían un rendimiento comparable al rendimiento de Envision.

Esto plantea la pregunta: ¿por qué las empresas especializadas que mantienen conjuntos de datos de compatibilidad no están utilizando la factorización de matrices para limpiar sus conjuntos de datos? Si lo hubieran hecho, la factorización de matrices no aportaría nada nuevo. La factorización de matrices como técnica de aprendizaje automático ha existido durante casi 20 años. Esta técnica fue popularizada en 2006 por Simon Funk. No es exactamente de vanguardia en este momento. Mi respuesta a esta pregunta original es que no lo sé. Tal vez esas empresas especializadas comiencen a utilizar la factorización de matrices después de ver esta conferencia, o tal vez no.

En cualquier caso, esto demuestra que la programación diferenciable y el modelado probabilístico son paradigmas muy versátiles. A primera vista, el pronóstico del tiempo de entrega no tiene nada que ver con la evaluación de las compatibilidades mecánicas, y sin embargo ambos pueden abordarse con el mismo instrumento, es decir, la programación diferenciable y el modelado probabilístico.

Slide 22

El conjunto de datos de compatibilidades mecánicas no es el único conjunto de datos que puede resultar inexacto. A veces, las herramientas de inteligencia competitiva también devuelven datos falsos. Incluso si el proceso de scripting web es bastante confiable al extraer millones de precios de páginas web semiestructuradas, pueden ocurrir errores. Identificar y abordar estos precios erróneos es un desafío en sí mismo. Sin embargo, esto también merecería una conferencia específica, ya que los problemas tienden a ser específicos del sitio web objetivo y de la tecnología utilizada para el scripting web.

Si bien las preocupaciones sobre el web scraping son importantes, estas preocupaciones se desarrollan antes de que se ejecute el algoritmo de alineación y, por lo tanto, deberían estar en gran medida desacopladas de la alineación en sí. Los errores de scraping no tienen que dejarse al azar. Hay dos formas de jugar el juego de la inteligencia competitiva: puedes mejorar tus números, hacerlos más precisos, o puedes empeorar los números de tus competidores, hacerlos menos precisos. De eso se trata la contra-inteligencia.

Como se discutió anteriormente, bloquear robots basados en su dirección IP no va a funcionar. Sin embargo, existen alternativas. La capa de transporte de red está lejos de ser la capa más interesante para jugar si pretendemos sembrar confusión bien dirigida. Hace aproximadamente una década, Lokad realizó una serie de experimentos de contra-inteligencia para ver si un sitio web de comercio electrónico grande, como SugAr, podría defenderse contra competidores. ¿Los resultados? Sí, puede hacerlo.

En algún momento, incluso pude confirmar la efectividad de estas técnicas de contra-inteligencia mediante la inspección directa de los datos entregados por el especialista en web scraping, que de otro modo no sospechaba nada. El nombre en clave de esta iniciativa era Bot Defender. Este proyecto ha sido descontinuado, pero aún puedes ver algunas huellas de Bot Defender en nuestro archivo de blog público.

En lugar de tratar de negar el acceso a las páginas HTML, lo cual es una propuesta perdedora, decidimos interferir selectivamente con los web scrapers mismos. El equipo de Lokad no conocía los detalles del diseño de estos web scrapers. Considerando la estructura DHTML de un sitio web de comercio electrónico determinado, no es demasiado difícil hacer una suposición educada sobre cómo procedería una empresa que opera los web scrapers. Por ejemplo, si cada página HTML del sitio web de StuttArt tiene una clase CSS demasiado conveniente llamada ‘unit price’ que destaca el precio del producto en el medio de la página, es razonable suponer que prácticamente todos los robots estarán utilizando esta clase CSS altamente conveniente para aislar el precio dentro del código HTML. De hecho, a menos que el sitio web de StuttArt ofrezca una forma aún más conveniente de obtener los precios, como una API abierta que se pueda consultar libremente, esta clase CSS es el camino obvio para extraer los precios.

Sin embargo, como la lógica de web scraping es obvia, también es obvio cómo interferir selectivamente con esta lógica. Por ejemplo, StuttArt puede decidir seleccionar algunos productos bien dirigidos y ’envenenar’ el HTML. En el ejemplo dado en la pantalla, visualmente ambas páginas HTML se mostrarán para los humanos como una etiqueta de precio de 65 euros y 50 céntimos. Sin embargo, la segunda versión de la página HTML será interpretada por los robots como 95 euros en lugar de 65 euros. El número ‘9’ se rota mediante CSS para que parezca un ‘6’. El web scraper típico, que se basa en el marcado HTML, no captará esto.

Slide 23

Diez años después, incluso un modelo de lenguaje grande y sofisticado como GPT-4, que no existía en ese momento, todavía se deja engañar por este simple truco de CSS. En la pantalla, vemos que GPT-4 no extrae un precio de 65 euros como debería haberlo hecho, sino que responde 95 euros. Marginalmente, hay docenas de formas de crear un código HTML que ofrezca una etiqueta de precio obvia para un robot que difiere de la que un ser humano leería en el sitio web. Rotar un ‘9’ en un ‘6’ es solo uno de los trucos más simples dentro de una amplia gama de trucos similares.

Un contramedida a esta técnica consistiría en renderizar la página, crear el mapa de bits completo y luego aplicar Reconocimiento Óptico de Caracteres (OCR) a este mapa de bits. Sin embargo, es bastante costoso. Las empresas de inteligencia competitiva deben volver a verificar decenas de millones de páginas web diariamente. Como regla general, ejecutar un proceso de renderizado de página web seguido de OCR aumenta el costo de procesamiento al menos en un factor de 100, y más probablemente en un factor de 1000.

Como punto de referencia, a partir de mayo de 2023, Microsoft Azure cobra un dólar por mil operaciones de OCR. Teniendo en cuenta que hay más de 10 millones de páginas que deben ser monitoreadas diariamente por los especialistas en inteligencia competitiva en Europa, eso es un presupuesto de $10,000 por día solo en OCR. Y Microsoft Azure, por cierto, es bastante competitivo en este aspecto.

Teniendo en cuenta otros costos como el ancho de banda para esas valiosas direcciones IP residenciales, es muy probable que el presupuesto anual en términos de recursos informáticos solo esté en el rango de los 5 millones de euros que se está discutiendo aquí si seguimos este camino. Un presupuesto anual de varios millones está dentro del rango de lo posible, pero los márgenes de las empresas de scraping web son estrechos y no seguirán este camino. Si a través de medios mucho más baratos pueden lograr una inteligencia competitiva precisa al 99%, eso es suficiente para mantener satisfechos a sus clientes.

Volviendo a StuttArt, sería imprudente utilizar esta técnica de contrainteligencia para envenenar todos los precios, ya que esto va a escalar la carrera armamentista con los web scrapers. En cambio, StuttArt debería elegir sabiamente el uno por ciento de las referencias que tendrán un impacto máximo en términos de competencia. Es muy probable que los web scrapers ni siquiera noten el problema. Incluso si los web scrapers notan las contramedidas, siempre y cuando se perciba como un problema de baja intensidad, no actuarán al respecto. De hecho, el web scraping viene con todo tipo de problemas de baja intensidad: el sitio web que desea analizar puede ser muy lento, puede estar caído o la página web de interés puede tener fallas. Puede haber una promoción condicional presente, lo que hace que el precio no esté claro para la parte de interés.

Desde la perspectiva de StuttArt, nos queda elegir el uno por ciento de los números de pieza que son de máximo interés en términos de inteligencia competitiva. Esas piezas suelen ser las que StuttArt quisiera descontar más, pero sin desencadenar una guerra de precios. Hay varias formas de hacer esto. Un tipo de piezas de alto interés son los consumibles baratos, como los limpiaparabrisas. Es poco probable que un cliente que quiera probar StuttArt en su primera compra comience con un inyector de 600 euros. Es mucho más probable que un cliente nuevo comience con un limpiaparabrisas de 20 euros como prueba. En general, los clientes nuevos se comportan de manera bastante diferente a los clientes habituales. Por lo tanto, el uno por ciento de las piezas que StuttArt probablemente querría hacer especialmente atractivas, sin desencadenar una guerra de precios, son las piezas que es más probable que compren los clientes nuevos.

Slide 24

Evitar una guerra de precios y la erosión de la cuota de mercado son resultados muy negativos para StuttArt, por lo que se necesitan circunstancias especiales para divergir del principio de alineación. Ya hemos visto una de estas circunstancias, que fue la necesidad de controlar el margen bruto. Sin embargo, no es la única. Los excesos de inventario y los faltantes de stock son otros dos candidatos principales a considerar para ajustar los precios. Los excesos de inventario se deben abordar de manera proactiva. Sería mejor que StuttArt evitara por completo los excesos de inventario, pero también ocurren errores y fluctuaciones del mercado, y a pesar de las políticas cuidadosas de reposición de inventario, StuttArt se enfrentará rutinariamente a excesos de inventario localizados. La fijación de precios es un mecanismo valioso para mitigar estos problemas. StuttArt todavía está mejor vendiendo las piezas en exceso con un descuento sustancial en lugar de no venderlas en absoluto, por lo que los excesos de inventario deben tenerse en cuenta en la estrategia de precios.

Limitemos el alcance de los excesos de inventario a las piezas que es muy probable que se conviertan en una cancelación de inventario. En este contexto, los excesos de inventario se pueden abordar con una anulación de alineación de costos que reduce el precio a un margen bruto cercano a cero, y posiblemente un poco menos dependiendo de las regulaciones y la magnitud del exceso de inventario.

Por el contrario, los faltantes de stock, o más bien los casi faltantes de stock, deben tener sus precios revisados al alza. Por ejemplo, si StuttArt solo tiene cinco unidades en stock de una pieza que normalmente vende una unidad al día, y el próximo reabastecimiento no llegará antes de 15 días, entonces es casi seguro que esta pieza enfrentará un faltante de stock. No tiene sentido apresurarse en el faltante de stock. StuttArt podría aumentar el precio de esta pieza. Si la disminución en la demanda es lo suficientemente pequeña como para que StuttArt evite un faltante de stock, no importará.

Las herramientas de inteligencia competitiva son cada vez más capaces de monitorear no solo los precios, sino también los retrasos en el envío anunciados para las piezas que se muestran en el sitio web de un competidor. Esto ofrece la posibilidad de que StuttArt no solo monitoree sus propios faltantes de stock, sino también monitorear los faltantes de stock a medida que se desarrollan para los competidores. Una causa frecuente detrás de un faltante de stock de un minorista es un faltante de stock de un proveedor. Si el fabricante original (OEM) también está sin stock, es probable que StuttArt, junto con todos sus competidores, también se quede sin stock. Como parte del algoritmo de alineación de precios, es razonable eliminar aquellas piezas de la alineación que están agotadas en los proveedores o que están agotadas en el sitio web del competidor. Las situaciones de faltante de stock de los competidores se pueden monitorear a través de retrasos en el envío cuando esos retrasos en el envío reflejan condiciones inusuales. Además, si un fabricante de equipos originales (OEM) comienza a anunciar retrasos inusuales en las piezas, puede ser el momento de aumentar los puntos de precio para esas piezas. Esto se debe a que indica que es probable que todos en el mercado tengan dificultades para adquirir más piezas de automóviles de este OEM en particular.

En este punto, debería quedar bastante claro que la optimización de precios y la optimización de inventario son problemas altamente relacionados, por lo que estos dos problemas deben resolverse conjuntamente en la práctica. De hecho, dentro de una unidad de necesidad determinada, la pieza que se beneficia tanto del precio más bajo como del rango de visualización más alto dentro de su gama de productos absorberá la mayor parte de las ventas. La fijación de precios dirige la demanda entre numerosas alternativas dentro de la oferta de StuttArt. No tiene sentido que un equipo de inventario intente pronosticar los precios generados por el equipo de fijación de precios. En su lugar, debería haber una función unificada de la cadena de suministro que aborde conjuntamente las dos preocupaciones.

Slide 25

Las condiciones de envío son una parte integral del servicio. Cuando se trata de piezas de automóviles, no solo los clientes tienen altas expectativas de que StuttArt cumplirá sus promesas, sino que incluso podrían estar dispuestos a pagar más si se acelera el proceso. Varias grandes empresas de comercio electrónico que venden piezas de automóviles en Europa ya ofrecen precios distintos según el tiempo de entrega. Estos precios distintos no solo reflejan opciones de envío distintas, sino posiblemente también opciones de abastecimiento distintas. Si el cliente está dispuesto a esperar una o dos semanas, entonces StuttArt obtiene opciones de abastecimiento adicionales y StuttArt puede pasar parte de los ahorros directamente a los clientes. Por ejemplo, una pieza solo puede ser adquirida por StuttArt después de que el cliente la haya pedido, eliminando así por completo el costo de mantenimiento y el riesgo de inventario.

Las condiciones de envío complican la inteligencia competitiva. En primer lugar, las herramientas de inteligencia competitiva deben recuperar información sobre retrasos, no solo precios. Muchos especialistas en inteligencia competitiva ya están haciendo esto, y StuttArt debe seguir su ejemplo. En segundo lugar, StuttArt necesita ajustar su algoritmo de alineación de precios para reflejar las diferentes condiciones de envío. La programación diferenciable puede ser utilizada para proporcionar una estimación del valor, expresado en euros, que se obtiene al ahorrar un día de tiempo. Se espera que este valor dependa del modelo de automóvil, el tipo de pieza y el número de días para el envío. Por ejemplo, pasar de un tiempo de entrega de tres días a un tiempo de entrega de dos días es mucho más valioso para el cliente que pasar de un tiempo de entrega de 21 días a un tiempo de entrega de 20 días.

Slide 26

En conclusión, se ha propuesto hoy una estrategia de precios exhaustiva para StuttArt, una persona de la cadena de suministro dedicada al mercado de accesorios de automóviles en línea. Hemos visto que la fijación de precios no es susceptible a ningún tipo de estrategia de optimización local. El problema de precios es de hecho no local debido a la compatibilidad mecánica que propaga el impacto de una etiqueta de precio para cualquier pieza dada en numerosas unidades de necesidad. Esto nos llevó a una perspectiva donde la fijación de precios se aborda como una alineación a nivel de la unidad de necesidad. Se abordaron dos subproblemas a través de la programación diferenciable. En primer lugar, tuvimos la resolución de un problema de satisfacción de restricciones aproximado para la alineación competitiva en sí. En segundo lugar, tuvimos el problema de la mejora automática de los conjuntos de datos de compatibilidad mecánica para mejorar la calidad de la alineación, pero también para mejorar la calidad de la experiencia del cliente. Podemos agregar estos dos problemas a nuestra creciente lista de problemas de la cadena de suministro que se benefician de una solución sencilla una vez que se abordan a través de la programación diferenciable.

En general, si hay algo que aprender de esta conferencia, no es que el mercado de accesorios de automóviles sea una excepción en cuanto a estrategias de precios. Al contrario, la lección es que siempre debemos esperar enfrentar numerosas especificidades, sin importar el sector de interés. Habría habido tantas especificidades si hubiéramos analizado cualquier otra persona de la cadena de suministro en lugar de centrarnos en StuttArt, como lo hicimos hoy. Por lo tanto, no tiene sentido buscar una respuesta definitiva. Cualquier solución en forma cerrada está garantizada para no abordar el flujo interminable de variaciones que surgirán con el tiempo en una cadena de suministro del mundo real. En cambio, necesitamos conceptos, métodos e instrumentos que no solo nos permitan abordar el estado actual de la cadena de suministro, sino que también sean susceptibles de modificación programática. La programabilidad es esencial para futurizar las recetas numéricas para la fijación de precios.

Slide 27

Antes de pasar a las preguntas, me gustaría anunciar que la próxima conferencia será en la primera semana de julio. Será un miércoles como de costumbre, a la misma hora del día, a las 3 p.m., hora de París. Volveré a visitar el capítulo uno con un análisis más detallado de lo que la economía, la historia y la teoría de sistemas nos dicen sobre la cadena de suministro y la planificación de la cadena de suministro.

Ahora veamos las preguntas.

Pregunta: ¿Tienes la intención de dar una conferencia sobre la visualización del costo total de propiedad para una cadena de suministro? En otras palabras, ¿un análisis del TCO de toda la cadena de suministro utilizando análisis de datos y optimización de costos generales?

Sí, esto es parte del recorrido de esta serie de conferencias. Elementos de esto se han discutido en varias conferencias. Pero lo importante es que no es realmente un problema de visualización. El punto del costo total de propiedad no es un problema de visualización de datos; es un problema de mentalidad. La mayoría de las prácticas de la cadena de suministro son extremadamente despectivas con respecto a la perspectiva financiera. Están persiguiendo niveles de servicio de error, no dólares o euros de error. La mayoría, desafortunadamente, está persiguiendo estos porcentajes. Por lo tanto, hay una necesidad de cambio de mentalidad.

La segunda cosa es que hay elementos discutidos en la conferencia que formaba parte del primer capítulo, el enfoque orientado al producto, como en la entrega orientada al producto de software para la cadena de suministro. Tenemos que pensar no solo en el primer círculo de impulsores económicos, sino también en lo que llamo el segundo círculo de impulsores económicos. Estas son fuerzas elusivas, por ejemplo, si descuentas el precio de un producto en un euro al crear una promoción, un análisis ingenuo podría sugerir que me costó un euro de margen solo porque hice este descuento de un euro. Pero la realidad es que al hacer eso, estás creando una expectativa entre tu base de clientes de esperar este descuento de un euro en el futuro nuevamente. Y por lo tanto, esto conlleva un costo. Es un costo de segundo orden, pero es muy real. Todos estos impulsores económicos de segundo círculo son impulsores importantes que no aparecen en tu libro mayor o tus libros. Sí, continuaré con más elementos que describen estos costos. Sin embargo, en su mayoría no es un problema analítico en términos de visualización o gráficos; es una cuestión de mentalidad. Debemos llegar a un acuerdo con la idea de que estas cosas deben cuantificarse, incluso si son increíblemente difíciles de cuantificar.

Cuando comenzamos a discutir el costo total de propiedad, también tenemos que discutir cuántas personas necesito para operar esta solución de cadena de suministro. Esa es una de las razones por las que, en esta serie de conferencias, digo que necesitamos tener soluciones programáticas. No podemos tener un ejército de empleados ajustando hojas de cálculo o tablas y haciendo cosas que son increíblemente ineficientes en términos de costos, como lidiar con alertas de excepciones en el software de la cadena de suministro. Las alertas y excepciones consisten en tratar a toda tu fuerza laboral en la empresa como coprocesadores humanos para el sistema. Esto es increíblemente costoso.

El análisis del costo total de propiedad es principalmente un problema de mentalidad, de tener la perspectiva correcta. En la próxima conferencia, también volveré a visitar más ángulos, especialmente lo que la economía nos dice sobre la cadena de suministro. Es muy interesante porque tenemos que pensar en lo que realmente significa el costo total de propiedad para una solución de cadena de suministro, especialmente si comenzamos a pensar en el valor que aporta a la empresa.

Pregunta: Para referencias técnicamente compatibles a una unidad de necesidad, hay diferencias percibidas en la calidad, actividad, plata, oro, etc. ¿Cómo tienes esto en cuenta en una comparación de precios de competidores?

Eso es completamente correcto. Por eso es necesario introducir rangos de productos. Este nivel de atractivo generalmente se puede enmarcar en unas seis clases que representan estándares de calidad para las piezas. Por ejemplo, tienes la gama de deportes de motor, que incluye las piezas más lujosas con una excelente compatibilidad mecánica. Estas piezas también se ven bien y el empaque en sí mismo es de alta calidad.

Mi experiencia en este mercado es que, aunque hay infinitas variaciones en cómo se puede mejorar ligeramente la calidad de una pieza, el mercado se ha convergido en gran medida hacia unas seis gamas de productos que van desde muy caras hasta no tan caras. Cuando agrupamos las piezas de StuttArt, necesitamos agrupar esas piezas dentro de rangos de productos. Lo mismo ocurre con las piezas de los competidores, lo que significa que necesitamos saber cuál es el rango de calidad de una pieza, incluso si la pieza no es vendida por StuttArt.

StuttArt necesita tener conocimiento de todas las piezas del mercado. Esto no es tan difícil como parece porque la mayoría de los fabricantes proporcionan información sobre la calidad esperada de sus piezas. Estas cosas están bastante codificadas por los propios fabricantes de equipos originales (OEM). Nos beneficiamos del hecho de que el mercado automotriz es un mercado increíblemente establecido y maduro que ha existido durante más de un siglo. Las empresas que venden estos conjuntos de datos de compatibilidad, conjuntos de datos para automóviles y compatibilidades de piezas, también proporcionan una gran cantidad de atributos para piezas y modelos de automóviles. Estamos hablando de cientos de atributos. Estos conjuntos de datos son extensos y ricos. Originalmente, estos conjuntos de datos eran utilizados por personas en centros de reparación para descubrir cómo realizar reparaciones. Incluso vienen con archivos adjuntos en PDF y documentación técnica. Es muy rico; tienes docenas de gigabytes de datos, incluyendo imágenes y fotos. Apenas estaba rascando la superficie en términos del valor de mercado de estos conjuntos de datos.

Pregunta: ¿Cómo afectan las regulaciones variables en diferentes regiones a la optimización de precios para las empresas automotrices? Por ejemplo, mencionaste a Peugeot, una empresa francesa. ¿Cómo diferiría tu enfoque para Peugeot de una empresa similar en Escandinavia o Asia?

Escandinavia es prácticamente el mismo mercado automotriz. Tienen algunas marcas diferentes, pero es demasiado pequeño para mantener su propia industria automotriz. En lo que respecta a la industria automotriz, Escandinavia es igual que el resto de los 350 millones de europeos. Sin embargo, Asia es realmente diferente. India y China son mercados propios.

En cuanto a la optimización de precios, las regulaciones no tanto impidieron, sino que retrasaron la existencia de distribuidores de piezas de automóviles en línea. Por ejemplo, en Europa hace 20 años, hubo una batalla legal. Pioneros como StuttArt, que fueron las primeras empresas en vender piezas de automóviles en línea, enfrentaron controversias legales. Vendían piezas de automóviles y afirmaban en su sitio web que eran idénticas a las vendidas por los fabricantes originales de automóviles.

Empresas como StuttArt decían: “No te estoy vendiendo ninguna pieza de automóvil, te estoy vendiendo la misma pieza de automóvil que el fabricante de automóviles usaría”. Podían hacer esta afirmación porque estaban comprando la misma pieza exacta de la misma fábrica. Si una pieza proviene, digamos, de Valeo y se monta en un automóvil Peugeot, hay una asociación conocida. Lo que se dictaminó hace unas dos décadas, varios tribunales en Europa dictaminaron que era legal que un sitio web afirmara vender la misma pieza exacta que las que califican como piezas originales de un automóvil. Esta incertidumbre regulatoria retrasó el surgimiento de la venta de repuestos de automóviles en línea, probablemente unos cinco años. Los pioneros estaban luchando en los tribunales contra los fabricantes de automóviles por el derecho de vender repuestos de automóviles en línea mientras afirmaban que eran piezas originales para el automóvil. Una vez que se aclaró, pudieron hacerlo siempre y cuando fueran honestos y realmente estuvieran comprando la misma pieza de automóvil exacta de Valeo o Bosch, exactamente como la pieza que se monta en el automóvil.

Sin embargo, todavía existen limitaciones. Por ejemplo, todavía hay piezas que caracterizan la apariencia visual del automóvil, y solo el fabricante de automóviles puede venderlas como piezas originales. Por ejemplo, el capó del automóvil. Estas regulaciones tienen un impacto en términos de restringir el alcance de las piezas que se pueden vender libremente en línea mientras se afirma que la pieza es exactamente la misma que la del fabricante original. Estamos hablando de piezas que tienen implicaciones no solo en términos de compatibilidad mecánica, sino también de seguridad. Algunas de estas piezas son críticas para la seguridad.

En Asia, un problema que no he discutido aquí son las falsificaciones. Lidiar con las falsificaciones es muy diferente en Europa en comparación con Asia. Las falsificaciones existen en Europa, pero el mercado es maduro y catalizado. Los OEM y los fabricantes de automóviles se conocen muy bien. Aunque existen falsificaciones, es un problema muy mínimo. En mercados como Asia, específicamente India y China, todavía hay bastantes problemas con las falsificaciones. No es realmente un problema de regulación, ya que las falsificaciones son tan ilegales en China como en Europa. El problema es la aplicación, con un grado de aplicación mucho menor en Asia que en Europa.

Pregunta: ¿Estamos tratando de optimizar un precio en general o en relación con los competidores?

La función de optimización es conceptualmente para cada unidad de necesidad, siendo una unidad de necesidad un modelo de automóvil y un tipo de pieza. Para cada unidad de necesidad, tienes una diferencia de precio en euros entre el punto de precio de StuttArt, que es la mejor oferta de StuttArt, y el punto de precio del competidor. Tomas la diferencia absoluta de estos dos precios y los sumas; esta es tu función. No vamos a usar ingenuamente esta suma de diferencias de precios; vamos a agregar un peso que refleje el volumen de ventas anuales de cada unidad de necesidad.

Por lo tanto, la función de optimización para tu problema de satisfacción de restricciones es una suma de diferencias absolutas entre el mejor precio ofrecido por StuttArt para la unidad de necesidad y el mejor precio ofrecido por la competencia. Agregas un factor de ponderación que refleja la importancia anual, también ponderada en euros, para esta unidad de necesidad. Estás haciendo todo lo posible para reflejar el estado del mercado europeo.

La razón por la que quieres ponderar en contra de la importancia de la unidad de necesidad en lugar de la unidad de necesidad de StuttArt es que si StuttArt es tan poco competitivo que no vende nada de la unidad de necesidad, puedes tener un problema donde no es competitivo. Por lo tanto, esta unidad se desecha en términos de alineación, lo que lleva a cero ventas. Luego tienes un círculo vicioso donde no es competitivo, por lo tanto no vende nada, y así la unidad de necesidad en sí misma se descuenta como insignificante.

Pregunta: ¿Ves consecuencias inesperadas si un enfoque de modelado diferenciable de aprendizaje automático se convierte en el estándar de la industria, con el riesgo de que los modelos compitan con otros modelos muy similares?

Esta pregunta es difícil porque, por diseño, si es una consecuencia inesperada, entonces nadie lo esperaba, ni siquiera yo. Es muy difícil prever qué tipo de consecuencias podrían ser inesperadas.

Sin embargo, más seriamente, esta industria ha sido impulsada por técnicas algorítmicas durante una década. Es un refinamiento en términos de precisión de intención. Quieres un método numérico que esté más estrechamente alineado con tu intención. Pero fundamentalmente, no es como si estuviéramos empezando desde cero donde ahora se hace manualmente y dentro de diez años se hará automáticamente con recetas numéricas. Ya se hace mediante recetas numéricas. Cuando tienes que mantener y actualizar 100,000 precios todos los días, necesitas tener alguna forma de automatización.

Tal vez tu automatización sea una hoja de cálculo de Excel gigante donde estás realizando todo tipo de magia negra, pero sigue siendo un proceso algorítmico. Las personas no ajustan manualmente los precios excepto por algunas partes en raras ocasiones. En su mayoría, ya es un proceso algorítmico, y ya tenemos numerosas consecuencias no deseadas. Por ejemplo, durante los confinamientos en Europa, las personas pasaban más tiempo en casa, comprando en línea. Esto puede parecer contraintuitivo, pero aún así usaban sus autos bastante y, por lo tanto, compraban más. Sin embargo, muchas empresas que venden piezas de automóviles en línea se volvieron menos activas en términos de promociones porque organizarlas se volvió más complicado ya que todos estaban trabajando desde casa.

En consecuencia, durante un par de meses durante los confinamientos de 2020, hubo mucho menos ruido algorítmico generado por las promociones. Las respuestas algorítmicas fueron mucho más directas por parte de todos. Hubo días en los que se podían ver respuestas algorítmicas mucho más marcadas que se activaban en una base de actualización diaria.

Este es un modelo bastante maduro en una industria bien establecida, ya que todo se realiza a través del comercio electrónico. En cuanto a las consecuencias no deseadas o inesperadas, es más difícil predecirlas.

Permíteme ofrecerte un pensamiento final sobre un área potencial de sorpresa. Muchos esperan que los vehículos eléctricos simplifiquen todo porque tienen menos piezas en comparación con los motores de combustión interna. Sin embargo, desde la perspectiva de una empresa como StuttArt, durante los próximos 10 años, los vehículos eléctricos significarán muchas más piezas en el mercado.

Hasta que, y si, los vehículos eléctricos se vuelven dominantes, todavía tendremos todos los vehículos más antiguos con motores de combustión. Estos vehículos durarán alrededor de 20 años. Recuerda que StuttArt, como empresa, se ocupa de vehículos que no son exactamente nuevos. Muchos de estos vehículos son de buena calidad y seguirán existiendo dentro de 20 años. Pero mientras tanto, tendremos numerosos vehículos eléctricos adicionales que ingresarán al mercado con muchas partes diferentes. Esto podría hacer que el número de partes diferentes aumente constantemente, creando aún más desafíos y complicaciones.

Creo que esto nos lleva al final de la conferencia de hoy. Si no hay más preguntas, espero verte en la próxima conferencia que será en la primera semana de julio, el miércoles a las 3 p.m. hora de París, como de costumbre. Muchas gracias y nos vemos entonces.