PolymarketClickHouse Workshops

07 Analis market AI

Berikan tabel market live Anda ke sebuah ClickHouse Agent, buat ia mendeteksi dan menyelidiki sebuah pergerakan sendiri, lalu uji jawabannya dengan SQL deterministik.

Your computer
macOS terminal: Run workshop commands in Terminal using zsh or bash.

Titik awal

Collector sudah healthy dalam mode live, degraded, atau fixture, query Modul 05 mengembalikan hasil, dan Anda sudah masuk ke organization yang memiliki polymarket-workshop. Tidak perlu API key baru maupun proses lokal: ClickHouse Agents berjalan di Cloud dengan identitas yang Anda buat di Modul 00.

Mengapa

Modul 05 menjawab empat pertanyaan yang sudah Anda tuliskan sebelumnya. Market tidak menunggu daftar pertanyaan Anda. Bentuk yang berguna adalah analis on-call: memperhatikan sebuah pergerakan, menyusun hipotesis, menulis query yang mengujinya, dan melaporkan putusan beserta buktinya. Loop itu juga bisa gagal tanpa suara, jadi dua langkah terakhir menguji agent itu ketimbang mempercayainya.

Langkah 1 — Buka ClickHouse Agents dan hubungkan service ini

open 'https://ai.clickhouse.cloud'

Console Cloud menuju tempat yang sama: service Anda, lalu ClickHouse agents.

Buat agent bernama Polymarket analyst, tambahkan tool ClickHouse, arahkan ke polymarket-workshop, dan pastikan ia melaporkan Connected. Tanpa tool yang terhubung, agent akan menebak-nebak schema Anda. Tempelkan ini sebagai instruksinya; setiap baris ada di sana karena agent akan salah tanpa baris itu:

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.

Langkah 2 — Putaran satu: biarkan ia menemukan pergerakannya

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.

Diharapkan: satu outcome yang disebut namanya, pergerakan bertanda dalam poin, dan SQL yang me-merge aggregate state ketimbang memilih kolom state mentahnya.

Langkah 3 — Putaran dua: buat ia menyelidiki temuannya sendiri

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.

Anda tidak pernah memberi tahu bagaimana ketiga sinyal itu digabungkan. Membuat pilihan itulah yang menjadikannya agent alih-alih kotak text-to-SQL.

Langkah 4 — Putaran tiga: buat ia menyerang putusannya sendiri

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.

Jawaban yang berguna menyebut menit terbaru yang masih parsial, umur quote, dan sesedikit apa update yang menopang menit yang tipis. Catat apakah putusannya bertahan.

Langkah 5 — Uji agent dengan SQL deterministik

Jalankan ini di SQL console Cloud. Query ini menjawab Langkah 2 tanpa agent, jadi baris teratasnya adalah referensi Anda:

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;

Jendela waktunya memang berbeda: query ini merentang dari menit lengkap tertua sampai terbaru yang ada, sedangkan agent diminta memakai langkah lima menit. Bandingkan token_id, tanda dari move_points, dan besarannya, bukan angka desimalnya. Lalu periksa angka koroborasi milik agent terhadap query Spread and freshness dan Volume velocity yang disimpan di Modul 06.

Langkah 6 — Tuliskan apa yang salah dari agent itu

Setidaknya satu dari hal-hal ini biasanya muncul. Temukan milik Anda di transkripnya:

  • memilih close atau high dari market_midpoints_1m tanpa fungsi Merge, lalu menjelaskan apa pun yang kembali dengan penuh keyakinan;
  • memperlakukan menit terbaru yang masih terisi sebagai sudah lengkap, sehingga bagian terakhirnya terlalu dibesar-besarkan;
  • melaporkan token Yes dan token No-nya sebagai dua mover yang independen;
  • menghilangkan FINAL pada polymarket.markets, sehingga market yang ditemukan ulang ter-join dua kali;
  • menyebut midpoint sebagai harga yang bisa ditransaksikan, atau mengutip pergerakan tanpa umur datanya.

Jika angkanya persis cocok dengan penguji, uji langsung menit parsialnya: tanyakan apakah menit terbarunya sudah lengkap, lalu bandingkan max(minute) di polymarket.market_midpoints_1m dengan toStartOfMinute(now()). Nilai yang sama berarti belum lengkap, dan agent yang mengatakan sebaliknya telah menyatakan sesuatu yang salah tentang data live.

Selesai bila

  • SQL deteksi milik agent membaca market_midpoints_1m melalui fungsi Merge;
  • putusannya mengutip spread, umur quote, dan volume trade, bukan harga saja;
  • baris teratas query penguji sepakat dengan agent soal token dan arah pergerakannya, atau Anda bisa menjelaskan perbedaannya; dan
  • Anda sudah menuliskan satu hal yang salah atau dilebih-lebihkan oleh agent.

Berikutnya: penutup dan bersih-bersih.

Di halaman ini

Track your progress?

Optional. We email a link to confirm your address; progress records once you open it.

Please use your work email address, not a personal one.

Progress tracking also requires accepting the current Terms of Service in Privacy settings.

ID