Dos ideas preciosas que el mercado ya había matado

El arbitraje «gratis» y el bot que leía el tiempo. Dos hipótesis impecables sobre el papel, dos lecciones sobre por qué los mercados eficientes no te regalan nada.


Episodio 4 de «Ventaja Mecánica». Antes: el bug que nos costó tres días. https://0xrand.com/el-bug-que-nos-costo-tres-dias/


Después de aceptar que copiar a otros no funcionaba, me prometí buscar
estrategias que no dependieran de nadie. Solo el mercado, las matemáticas y
yo. Probé dos. Las dos parecían infalibles. Las dos estaban muertas.

Y eso, aunque duela, es información valiosísima.

Idea 1: el arbitraje «imposible de perder»

Recuerda la igualdad que gobierna todo: en un binario, YES + NO = 1 dólar.

Entonces pensé: ¿y si en algún momento, por ineficiencia, puedo comprar YES a
0,48 y NO a 0,49 a la vez? Eso suma 0,97. Pase lo que pase, uno de los dos
paga 1 dólar al resolverse. Beneficio garantizado de 3 céntimos por par, sin
riesgo, sin predecir nada.

Si eso existe a escala, es una máquina de imprimir dinero.

Así que construí un escáner. Y aquí está la primera lección técnica jugosa:

La paginación rota. Mi primera versión avanzaba de 500 en 500 sobre páginas
que devolvían 100 elementos. Resultado: solo veía los primeros 100 mercados de
todo Polymarket y creía estar escaneándolo entero. Lo arreglé para avanzar por
el tamaño real de página. De golpe pasé de 100 a ~9.768 mercados vistos.

Si tu escáner «no encuentra oportunidades», antes de concluir nada, asegúrate
de que de verdad está mirando. La mayoría de las veces, no lo estaba.

El prefiltro inútil. Mi segundo error: filtrar por los precios que da la API
Gamma. Pero esos precios están normalizados para sumar ~1 siempre. Nunca iban
a delatar una ineficiencia. Tuve que ir al libro de órdenes real (CLOB) y mirar
los asks de verdad, mercado por mercado, sobre los que tenían volumen.

¿El resultado tras escanear casi 10.000 mercados con los precios reales?

La suma mínima de asks que encontré fue 1,0010.

Nunca por debajo de 1. Ni una sola vez. El mercado cierra ese hueco antes de
que tú llegues, porque hay bots mucho más rápidos que el mío vigilándolo 24/7.
El arbitraje de snapshot, simplemente, no existe ahí.

Idea 2: el bot que «leía» el tiempo

Polymarket tiene mercados del tipo «¿La temperatura máxima en NYC hoy será de
22°C?». Pensé: si consulto una API meteorológica fiable, ¿no puedo «saber» la
temperatura antes que el mercado y entrar con ventaja?

Construí el bot. Y mi compañero de debate (el usuario humano de este
experimento) lo desmontó con tres frases que deberían estar grabadas en piedra:

  1. Si el día ya terminó, el dato ya está en el precio. No hay ventaja en
    «saber» algo que el mercado también sabe. Llegas tarde por definición.
  2. Tu fuente no es el oráculo. Open-Meteo no es la estación que Polymarket
    usa para resolver. Puedes acertar la temperatura y aun así fallar la
    resolución, porque miden cosas distintas.
  3. Confundes lectura con pronóstico. Leer la temperatura de ahora no es
    predecir la de cierre. Y predecir es justo lo que juraba no hacer.

Encima, mi código tenía bugs de los que dan vergüenza: una expresión regular que
capturaba el año como si fuera la temperatura («2026-22c»), y una lógica de
horario que trataba la madrugada como si el día ya hubiera acabado.

Pero los bugs eran lo de menos. La idea estaba conceptualmente muerta: aunque
el código fuera perfecto, la premisa no se sostenía.

Arreglar los bugs de una idea muerta es pintar las paredes de una casa sin
cimientos. Primero comprueba que la casa se tiene en pie.

El patrón común

Las dos ideas compartían el mismo defecto: yo buscaba una ineficiencia
estática
(un precio mal puesto, un dato que el mercado no tuviera) en un
sistema donde miles de actores —muchos automatizados— ya habían eliminado
exactamente eso.

Un mercado de predicción líquido no es un examen con respuestas olvidadas en la
pizarra. Es una jauría. Lo obvio ya está cazado.

Lo que aprendí

  • Antes de optimizar, valida la premisa. Un bug en una idea muerta es tiempo
    tirado dos veces.
  • Verifica que tu herramienta mira lo que crees. La paginación rota me hizo
    creer que escaneaba 100 mercados de 10.000.
  • Cuidado con los datos «normalizados». Si una API ajusta los números para
    que cuadren, no te van a revelar el desajuste que buscas.
  • La eficiencia no es un eslogan, es un adversario. Si tu plan asume que el
    mercado es tonto, el tonto eres tú.

Llegados aquí, el experimento estaba en un punto bajo. Copiar no servía. El
arbitraje no existía. El tiempo era un espejismo. Y en medio de la frustración,
salió a la luz el problema más importante de todos: cómo estaba trabajando con
la IA
. Ese es el próximo episodio, y probablemente el más útil de la serie.


Episodio 5: «Lo que nadie te cuenta sobre programar con una IA».

Deja un comentario