07 Analista de mercado con IA
Entrega tus tablas de mercado en vivo a un ClickHouse Agent, haz que detecte e investigue un movimiento por sí mismo y arbitra la respuesta con SQL determinista.
Punto de partida
El colector está saludable en modo live, degraded o fixture, las consultas del Módulo 05
responden y has iniciado sesión en la organización propietaria de polymarket-workshop. No hace
falta una nueva clave de API ni un proceso local: ClickHouse Agents se ejecuta en Cloud bajo la
identidad creada en el Módulo 00.
Por qué
El Módulo 05 respondió cuatro preguntas ya escritas. El mercado no espera tu lista de preguntas. La forma útil es un analista de guardia: detectar un movimiento, formular una hipótesis, escribir consultas para probarla e informar de un veredicto con pruebas. Ese bucle también puede fallar en silencio, así que los dos últimos pasos arbitran al agente en vez de confiar en él.
Paso 1 — Abrir ClickHouse Agents y conectar este servicio
open 'https://ai.clickhouse.cloud'La consola de Cloud lleva al mismo lugar: tu servicio y después ClickHouse agents.
Crea un agente llamado Polymarket analyst, añade la herramienta ClickHouse, conéctala a
polymarket-workshop y confirma que muestre Connected. Sin herramienta conectada, el agente
adivina el esquema. Pega estas instrucciones; cada línea evita un error habitual:
You answer questions about live public prediction-market data in the polymarket database
of this service. Rules:
- Probability is the quote midpoint: polymarket.price_ticks where midpoint > 0, or the
merged close of polymarket.market_midpoints_1m. A last_trade_price tick is not one.
- market_midpoints_1m holds AggregateFunction states. Read them only through
argMinMerge(open), maxMerge(high), minMerge(low), argMaxMerge(close) and
countMerge(updates), grouped by minute, token_id.
- Metadata comes from polymarket.markets FINAL, trades from polymarket.trades_clean.
- One condition_id per market, one token_id per outcome. A Yes move and its No
counterpart are one event, not two findings.
- Timestamps are UTC and the newest minute is usually still filling.
- Show the SQL you ran and the age of the data behind every number.
- Public-data analysis only. Never give trading advice.Paso 2 — Primer turno: dejar que encuentre el movimiento
Using the ClickHouse tool, find the largest midpoint move in the last 30 minutes of
polymarket.market_midpoints_1m. For each token_id compare the merged close of the most
recent complete minute with the merged close five minutes earlier. Report the question,
the outcome, the token_id, both probabilities in percent, the move in percentage points,
and the two minutes you compared. Show the SQL.Resultado esperado: un resultado identificado, un movimiento con signo en puntos y SQL que fusiona los estados agregados en lugar de seleccionar columnas de estado sin procesar.
Paso 3 — Segundo turno: hacer que investigue su propio hallazgo
Investigate that move before you believe it. From polymarket.price_ticks report the
latest best_bid, best_ask, spread in percentage points, and quote age in seconds for that
token_id. From polymarket.trades_clean compare matched volume as price * size over the
five minutes covering the move against the previous five minutes. Then give a verdict of
corroborated, weakly corroborated, or likely artifact, and name the evidence behind it.No has indicado cómo combinar las tres señales. Elegirlo convierte esto en un agente y no en una caja de texto a SQL.
Paso 4 — Tercer turno: hacer que ataque su propio veredicto
List every assumption in that verdict that could be wrong, and for each one the single
query that would falsify it. Run the two you consider most likely to be wrong, then tell
me whether the verdict survives.Una respuesta útil menciona el minuto parcial más reciente, la antigüedad de la cotización y las pocas actualizaciones que sustentan un minuto débil. Registra si el veredicto sobrevivió.
Paso 5 — Arbitrar el agente con SQL determinista
Ejecuta esto en SQL Console de Cloud. Responde al Paso 2 sin agente, así que su primera fila es la referencia:
WITH per_minute AS
(
SELECT
token_id,
minute,
argMaxMerge(close) AS close_midpoint
FROM polymarket.market_midpoints_1m
WHERE minute >= now() - INTERVAL 30 MINUTE
AND minute < toStartOfMinute(now())
GROUP BY token_id, minute
)
SELECT
m.question,
m.outcome,
p.token_id,
round(argMax(p.close_midpoint, p.minute) * 100, 2) AS latest_percent,
round(argMin(p.close_midpoint, p.minute) * 100, 2) AS oldest_percent,
round(latest_percent - oldest_percent, 2) AS move_points,
min(p.minute) AS window_start,
max(p.minute) AS window_end
FROM per_minute AS p
INNER JOIN
(
SELECT token_id, question, outcome
FROM polymarket.markets FINAL
) AS m ON m.token_id = p.token_id
GROUP BY m.question, m.outcome, p.token_id
ORDER BY abs(move_points) DESC
LIMIT 5;Las ventanas difieren a propósito: esta abarca los minutos completos más antiguo y reciente,
mientras que al agente se le pidió un salto de cinco minutos. Compara token_id, el signo de
move_points y la magnitud, no los decimales. Contrasta luego las cifras de confirmación con
Spread and freshness y Volume velocity, guardadas en el Módulo 06.
Paso 6 — Anotar qué entendió mal el agente
Suele aparecer al menos uno de estos errores. Encuentra el tuyo en la conversación:
- seleccionar
closeohighdemarket_midpoints_1msin funciónMergey explicar el resultado con plena confianza; - tratar el minuto más reciente, aún incompleto, como completo y exagerar el último tramo;
- presentar un token Yes y su token No como dos movimientos independientes;
- omitir
FINALenpolymarket.markets, haciendo que un mercado redescubierto se una dos veces; - llamar al punto medio precio negociable o citar un movimiento sin su antigüedad.
Si las cifras coinciden exactamente con el árbitro, prueba directamente el minuto parcial: pregunta
si el minuto más reciente estaba completo y compara max(minute) de
polymarket.market_midpoints_1m con toStartOfMinute(now()). Si son iguales, no estaba completo;
un agente que afirmara lo contrario dijo algo falso sobre datos en vivo.
Terminado cuando
- el SQL de detección lea
market_midpoints_1mmediante funcionesMerge; - el veredicto cite spread, antigüedad de cotización y volumen, no solo precio;
- la primera fila del árbitro coincida en token y dirección, o puedas explicar la diferencia; y
- hayas anotado algo que el agente entendió mal o exageró.
Siguiente: cerrar y limpiar.