¿Qué problema resuelve el LSAMM?
Los mercados con order book sufren en los mercados de predicción de cola larga. Simplemente no hay suficientes compradores y vendedores simultáneos para mantener el libro profundo, especialmente para preguntas de nicho que los mercados de predicción están únicamente equipados para responder — como "¿Va a recortar tasas el Banco Central dos veces en el T3?" o "¿OpenAI lanzará GPT-6 antes de diciembre?". Los market makers automatizados (AMMs) resuelven esto actuando como contraparte siempre disponible para cada operación.
LSAMM (Logarithmic Scoring Automated Market Maker) es un descendiente moderno del LMSR de Robin Hanson. Conserva toda propiedad deseable del LMSR — pérdida limitada para el operador, subsidios aditivos, precificación suave — y añade liquidez dinámica para que el mercado se expanda mientras el volumen crece. El resultado es un AMM que cotiza precios útiles desde la primera operación y aún se comporta racionalmente cuando el volumen diario llega a millones de dólares.
El modelo mental más limpio es este: LSAMM es softmax para mercados de predicción, con una temperatura que escala con el tamaño del mercado.
Esa frase hace mucho trabajo pesado. Al final de este artículo verás exactamente por qué es cierta, cómo luce la implementación y dónde gana — y pierde — LSAMM frente a sus alternativas. Si eres nuevo en el escenario más amplio, parte por nuestra introducción a los mercados de predicción antes de continuar.
Repaso rápido del LMSR
El Logarithmic Market Scoring Rule original de Hanson define una función de costo:
C(q1, q2, ..., qn) = b * ln(Σ exp(qi / b))
Donde qi es el número de acciones en circulación del resultado i y b es un parámetro fijo de liquidez. El precio del resultado i es la derivada parcial ∂C/∂qi, que simplifica a:
p_i = exp(qi / b) / Σ exp(qj / b)
Eso es solo un softmax sobre cantidades de acciones. La pérdida máxima del operador es b * ln(n) para n resultados, así que elegir b equivale a presupuestar cuánto subsidio estás dispuesto a comprometer.
El LMSR es elegante, demostradamente limitado, y se desplegó en producción por dos décadas. Pero tiene una limitación importante: b es fijo en la creación del mercado. Si lo eliges muy bajo, los precios oscilan violentamente con operaciones pequeñas. Muy alto y subsidias menos operaciones de las que quisieras — y peor, participantes tardíos pagan casi el mismo slippage que el primer trader. LSAMM arregla exactamente eso.
La función de costo del LSAMM
LSAMM se construye en torno a una única función de costo:
C(q1, q2, ..., qn) = L_dynamic * (q_max / L_dynamic + ln(Σ exp((qi - q_max) / L_dynamic)))
Donde:
qi— cantidad efectiva del resultado i (acciones reales + reserva de liquidez virtual)q_max— cantidad máxima entre todos los resultadosL_dynamic = α × Σ qi— liquidez que escala con el tamaño total del mercadoα— coeficiente de liquidez (calibrado por mercado)
Un trader que compra Δq del resultado i paga exactamente C(después) − C(antes). El mercado nunca cotiza precio negativo ni suma a probabilidad superior a 1. El desplazamiento por q_max antes de la exponenciación es un truco de estabilidad numérica tomado directo de las implementaciones de softmax en frameworks modernos de deep learning.
Si la forma algebraica te intimida, aquí está la misma idea en pseudocódigo:
def lsamm_cost(cantidades, alpha):
q_max = max(cantidades)
L = alpha * sum(cantidades)
if L <= 1e-12:
return 0.0
estab = [(q - q_max) / L for q in cantidades]
return L * (q_max / L + math.log(sum(math.exp(s) for s in estab)))
La función es monótona, convexa y continua. Eso basta para garantizar una cotización bien comportada en cualquier estado del mercado.
¿Por qué el logaritmo?
El logaritmo le da al LSAMM dos superpoderes, ambos derivados del cálculo básico.
Convexidad protege contra ballenas
Comprar más acciones cuesta progresivamente más, lo que impide que un solo actor bien capitalizado "acapare" un resultado barato. El costo marginal crece con la cantidad, así que un atacante intentando empujar el precio de 50¢ a 90¢ paga exponencialmente más que lo que el shift implícito de probabilidad sugeriría. Es la misma propiedad que mantiene estables a los mercados con order book cuando una orden grande come el libro.
Estabilidad numérica en volúmenes extremos
Restar q_max antes de exponenciar evita el overflow exp(enorme) incluso para billones de acciones. La aritmética de punto flotante IEEE-754 empieza a fallar alrededor de exp(709), así que sin el desplazamiento, cualquier mercado con cantidades por sobre ~700 se caería. Con el desplazamiento, puedes correr un mercado con cantidades efectivas en cuatrillones sin overflow. Es el mismo truco usado en softmax para redes neuronales y la cross-entropy loss en PyTorch.
Precio marginal = probabilidad del mercado
El precio marginal del resultado i es la derivada parcial de la función de costo. Para resultados no-máximos simplifica hermosamente:
∂C / ∂qi = exp((qi - q_max) / L_dynamic) / Σ exp((qj - q_max) / L_dynamic)
Eso es literalmente el softmax de las cantidades efectivas. Los precios marginales siempre suman 1 entre los resultados — una distribución de probabilidad limpia por construcción. Cada trader que compra el resultado i empuja su precio hacia arriba y los otros hacia abajo, y el sistema siempre permanece un simplex de probabilidad válido.
Esta es la propiedad que permite leer un precio de mercado de predicción como una probabilidad sin matemática extra. También por eso un mercado LSAMM es una herramienta de agregación de información estrictamente mejor que una casa de apuestas con vig, donde los precios están distorsionados por el objetivo de balance de riesgo del bookmaker. Para una comparación más profunda entre engines, ve comparando modelos de liquidez en AMMs.
Liquidez dinámica en la práctica
En el LMSR, el parámetro de liquidez b es fijo en la creación. LSAMM ata la liquidez a la cantidad total apostada:
L_dynamic = α × Q_total
El resultado es un mercado auto-regulado que se comporta correctamente a lo largo del ciclo de vida completo de la pregunta.
| Fase | Q_total | Comportamiento de precio | Por qué es bueno |
|---|---|---|---|
| Cold start | Pequeño | Muy responsivo | Información inicial mueve el mercado rápidamente hacia la verdad. |
| Maduro | Grande | Estabiliza en torno al consenso | Traders tardíos ven spreads más apretados y menos slippage. |
| Choque de noticia | Pico | Re-precificación suave | La convexidad crece con el tamaño, bloqueando manipuladores. |
| Día de resolución | Suele ser máximo | Asintóticamente apretado | Precio final refleja el mayor pool de capital. |
Esta es la diferencia que hace al LSAMM production-ready. Un LMSR con b = 100 cotiza el mismo slippage en la operación 10.000 que en la 1ª. Un LSAMM con α = 0,05 se comporta como un LMSR con b = 100 cuando el mercado está vacío y como un LMSR con b = 10.000 cuando ha agregado US$ 200k en volumen — sin intervención del operador.
Eligiendo el coeficiente de liquidez α
α es el único parámetro tunable, y determina dos cosas a la vez: el presupuesto de subsidio y la curva de slippage. Rango default razonable: 0,02 ≤ α ≤ 0,10. Valores menores producen precios más responsivos y presupuestos de subsidio menores; valores mayores producen precios más suaves y requieren más capital inicial del operador.
Bucle práctico de calibración:
- Estima el notional diario esperado en el mercado.
- Define el slippage de ida-y-vuelta aceptable en, digamos, 1% del notional diario.
- Resuelve numéricamente el
αque entrega ese slippage conQ_totaligual al inventario típico. - Hace backtest con tape histórica de mercados similares — propios u order books públicos en Polymarket.
Sin datos históricos, comienza con α = 0,05 y ajusta después de los primeros 10 mercados.
Trucos de estabilidad que el código de producción debe cuidar
Cuando despliegas LSAMM de verdad, varios casos extremos hay que tratarlos. Saltárselos es la causa N°1 de incidentes en producción de código de market maker.
- Mercado vacío (
Q_total ≈ 0) → retorna precios uniformes1/n. Sin esta guarda, la función de costo evalúa0/0y obtienes unNaNen la creación. - α minúsculo → protege contra
L_dynamic ≤ εpara evitar división por cero. Un mercado conα = 0,001yQ_total = 1tieneL_dynamic = 0,001, que puede underflow antes de la próxima operación. - Desbalance extremo → normaliza las exponenciales por
q_maxantes de sumar. Si no, el términoexp(qi/L)hace overflow apenasqi/Lexcede ~709 en doble precisión. - División de operación → órdenes muy grandes deben precificarse como una integral única, no como secuencia de operaciones pequeñas. De lo contrario la fórmula de slippage acumula errores de redondeo en orden 10⁻⁶ por millones de operaciones.
- Redondeo a la moneda de liquidación → siempre redondea hacia arriba el costo cobrado al usuario, nunca hacia abajo. Un error de 1 centavo en 100.000 operaciones se vuelve un hueco de US$ 1.000 en el P&L del operador.
Estas guardas hacen al LSAMM un default robusto para producción. Errar en ellas es embarcar un AMM que se cae en la primera operación de US$ 1M en un mercado vacío.
Cómo se diferencia el LSAMM del LMSR y del CPMM
LSAMM vive en una familia con varios otros AMMs. Comparativa directa.
| Aspecto | LMSR | CPMM (estilo Uniswap) | LSAMM |
|---|---|---|---|
| Parámetro de liquidez | b fijo | Razón de reserva | α × Q_total dinámico |
| Subsidio requerido | Sí (operador funda b) | No (financiado por LPs) | Pequeño (operador-financiado, menor que LMSR) |
| Comportamiento a escala | Slippage constante | Slippage encoge con TVL | Slippage encoge con volumen |
| Invariante de probabilidad | Suma 1 | No suma 1 limpio | Suma 1 |
| Implementación | Más simple | Trivial | Algo más matemática |
| Ideal para | Cola larga de predicción | Swaps de tokens DeFi | Volumen alto en predicción |
El LMSR sigue siendo gran primer; los CPMMs son la opción cuando quieres liquidez de LPs y no necesitas simplex; el LSAMM es lo que tomas cuando el tráfico de producción en un mercado de predicción se vuelve serio.
Para pensar los trade-offs con más profundidad — incluyendo designs híbridos con order book — ve el post complementario sobre microestructura de mercado para pronosticadores.
Ejemplo trabajado: mercado electoral de 3 resultados
Imagina elección con tres candidatos A, B y C, y seed inicial de 1.000 acciones virtuales en cada lado. Con α = 0,05:
Q_total = 3.000, asíL_dynamic = 150- Todos
qi = 1.000, así cada precio esexp(0) / (3 * exp(0)) = 1/3 ≈ 33,3%
Ahora un trader compra 100 acciones de A. Nuevo estado: q = [1.100, 1.000, 1.000], Q_total = 3.100, L_dynamic = 155. Nuevo precio de A:
p_A = exp((1100 - 1100) / 155) / (exp(0) + exp(-100/155) + exp(-100/155))
= 1 / (1 + 2 * exp(-0,645))
= 1 / (1 + 2 * 0,525)
≈ 0,488
El precio de A saltó de 33,3% a 48,8% en una compra de 100 acciones. Movimiento significativo — exactamente lo que quieres en un mercado temprano donde nueva información debe precificarse rápido. La misma operación en un mercado maduro con Q_total = 30.000 movería el precio solo ~1,5 puntos porcentuales, porque L_dynamic sería 10x mayor.
Esta es la firma del LSAMM: responsivo cuando pequeño, robusto cuando grande.
Patrones de implementación y trampas
Si implementas LSAMM desde cero, algunas lecciones caras.
Usa aritmética fixed-point de 128 bits para deploys on-chain. Los enteros nativos de 256 bits de Solidity bastan para cálculos de costo, pero la versión floating-point es peligrosa en EVM. Los contratos de Polymarket y el Gnosis Conditional Tokens usan aritmética fixed-point con guardas extensas de overflow.
Pre-calcula q_max de forma perezosa. Cada operación lo recomputa, pero solo necesitas refrescar q_max en el resultado siendo operado. Actualizaciones perezosas ahorran 30–50% de gas en mercados activos.
Cachea L_dynamic entre operaciones consecutivas que no cambian Q_total materialmente. En mercado de alta frecuencia ahorra otro 10–20% de cómputo.
Snapshot antes de la operación. Calcula C_antes desde un snapshot determinístico de (qi) antes de aplicar la transacción, si no operaciones concurrentes producirán montos inconsistentes de liquidación.
Prueba la frontera de underflow. Escribe property-based tests que martillen con cantidades cercanas a 2^256 y operaciones de una sola acción en mercados con billones de acciones. Los bugs en implementaciones de LSAMM casi siempre viven en los extremos.
Cuándo LSAMM es la elección equivocada
LSAMM no es universal. Usa otro diseño cuando:
- Quieres liquidez financiada por LPs. LSAMM es operador-financiado. Si quieres usuarios proveyendo liquidez a cambio de fees, mira diseños estilo CPMM u order books híbridos.
- El mercado tiene solo dos resultados y liquidez muy profunda. Un order book centralizado cotizará precios más apretados a escala, motivo por el cual Kalshi y el Iowa Electronic Markets usan order book.
- El mercado resuelve continuamente, no en punto fijo. LSAMM supone un único evento de resolución. Mercados de streaming — como un juego continuo de Brier-score — necesitan una función de costo enteramente distinta.
- El mercado necesita redención parcial de contratos (ej.: scoring rules ligados a tablas de mortalidad). Usa una regla de puntuación propia en lugar de envolver un AMM alrededor.
La mayoría de plataformas de predicción no pega esas bordas. Para todo lo demás, LSAMM es el default moderno.
Preguntas Frecuentes
¿LSAMM y LMSR son iguales?
LSAMM es una generalización del LMSR. El LMSR usa parámetro fijo b; LSAMM usa L_dynamic = α × Q_total que escala con la cantidad total. Cuando el mercado es pequeño, LSAMM se comporta como LMSR con b pequeño; cuando es grande, como LMSR con b grande. La matemática es idéntica — ambos reducen a función de costo log-sum-exp cuyos precios son softmax sobre cantidades.
¿Puede LSAMM perder más que su subsidio inicial?
No. Al igual que LMSR, LSAMM tiene pérdida demostradamente limitada. La pérdida máxima es L_dynamic * ln(n) en cualquier momento, y como L_dynamic solo crece con Q_total, el subsidio escala suavemente. En la práctica la pérdida del operador se compensa con fees una vez el volumen es no-trivial, por eso varias plataformas embarcan LSAMM con fee de 1–2% sobre notional operado.
¿Cómo elijo el α correcto?
Comienza con α = 0,05 como default. Súbelo si los traders se quejan de slippage en mercados pequeños; bájalo si quieres descubrimiento más afilado en cold-starts. La calibración más rigurosa es correr A/B test en dos mercados paralelos con α = 0,03 y α = 0,07 y medir satisfacción del trader y quema de subsidio del operador en ventana de 30 días.
¿LSAMM funciona con resultados continuos?
No directamente. LSAMM se define sobre conjunto discreto de resultados mutuamente excluyentes. Para resultados continuos (ej.: "¿Cuál será el precio de cierre de Bitcoin el 31 de diciembre?"), puedes dividir el espacio en buckets discretos y correr LSAMM en los buckets, o usar mecanismos distintos como los diseños de árbol LMSR que manejan espacios estructurados.
¿Cómo se compara LSAMM con el CPMM de Uniswap?
Objetivos diferentes, matemática diferente. El x*y=k de Uniswap está optimizado para swaps de tokens y no produce simplex de probabilidad naturalmente — los precios no suman 1. LSAMM está optimizado para predicción y garantiza el invariante por construcción. No usarías Uniswap para precificar una elección binaria, ni LSAMM para intercambiar dos ERC-20.
¿Cuál es la conexión entre LSAMM y softmax en machine learning?
Son literalmente la misma función. La fórmula del precio marginal de LSAMM es softmax de cantidades efectivas dividido por L_dynamic. En ML, softmax convierte logits en probabilidades de clase; en LSAMM, softmax convierte conteos de acciones en probabilidades de resultado. L_dynamic hace el rol de temperatura inversa — alto produce distribuciones más planas, bajo produce más agudas.
¿LSAMM es open source?
Varias implementaciones son open source, incluyendo los contratos de referencia del Gnosis Conditional Tokens Framework y el AMM de Polymarket. La mayoría de los deploys de producción construye sobre esas primitivas con tiers de fee personalizados, KYC y oráculos de resolución. La matemática es pública — el endurecimiento de producción es donde vive la ingeniería.
¿Cómo maneja LSAMM mercados multi-outcome con popularidad muy desigual?
La estructura softmax se ocupa de la asimetría automáticamente. Si el resultado A tiene 10.000 acciones y B y C tienen 100 cada uno, el precio de A estará muy cerca de 1 y B/C muy cerca de 0 — pero nunca exactamente ahí. Siempre hay un precio no-cero en resultados de cola, que es matemáticamente necesario para cerrar el simplex y económicamente útil porque permite a contrarians apostar contra la multitud. Es una de las propiedades elegantes que LSAMM hereda del LMSR y la literatura más amplia de scoring rules.
Hacia dónde ir ahora
Ya tienes un modelo mental funcional del LSAMM. Próximos pasos naturales:
- Ve cómo se compara LSAMM con otras engines en comparando modelos de liquidez en AMMs.
- Entiende cómo la estructura de mercado afecta el descubrimiento de precio en microestructura de mercado para pronosticadores.
- Si quieres usar LSAMM para diseñar productos, lee diseño de categorías para descubrimiento y binarios vs múltiples resultados.
- Para contexto fundacional, nuestra introducción a los mercados de predicción amarra todo.
Si te llevas una cosa, que sea esta: LSAMM es softmax, pero para mercados de predicción — y la temperatura escala con el tamaño del mercado. Cuando esa imagen encaja, el resto de la matemática es solo contabilidad.