07 Chuyên gia phân tích thị trường AI
Đưa các bảng thị trường trực tiếp của bạn cho một ClickHouse Agent, để nó tự phát hiện và điều tra một biến động, rồi phân xử câu trả lời của nó bằng SQL tất định.
Điểm khởi đầu
Collector đang healthy ở chế độ live, degraded hoặc fixture, các truy vấn của Module 05
đều trả về kết quả, và bạn đã đăng nhập vào tổ chức sở hữu polymarket-workshop. Không cần
API key mới hay tiến trình cục bộ nào: ClickHouse Agents chạy trên Cloud dưới danh tính bạn
đã tạo ở Module 00.
Tại sao
Module 05 đã trả lời bốn câu hỏi mà bạn viết ra sẵn. Thị trường không chờ danh sách câu hỏi của bạn. Hình dung hữu ích là một chuyên gia phân tích trực ca: nhận ra một biến động, đặt giả thuyết, viết các truy vấn để kiểm chứng nó, và báo cáo một kết luận kèm bằng chứng. Vòng lặp đó cũng có thể thất bại một cách âm thầm, nên hai bước cuối sẽ phân xử agent thay vì tin nó.
Bước 1 — Mở ClickHouse Agents và kết nối service này
open 'https://ai.clickhouse.cloud'Console của Cloud dẫn tới cùng nơi đó: service của bạn, rồi ClickHouse agents.
Tạo một agent tên Polymarket analyst, thêm tool ClickHouse, trỏ nó vào
polymarket-workshop, và xác nhận nó báo Connected. Không có tool được kết nối, agent
sẽ đoán schema của bạn. Dán đoạn sau làm chỉ dẫn cho nó; mỗi dòng đều có lý do vì
agent thường làm sai nếu thiếu nó:
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.Bước 2 — Lượt một: để nó tự tìm ra biến động
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.Mong đợi: một kết quả được nêu tên, một mức biến động có dấu tính theo điểm, và SQL có merge các aggregate state thay vì select trực tiếp các cột state thô.
Bước 3 — Lượt hai: buộc nó điều tra chính phát hiện của mình
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.Bạn chưa bao giờ nói ba tín hiệu đó kết hợp với nhau ra sao. Việc tự chọn cách kết hợp là điều biến nó thành một agent thay vì một hộp text-to-SQL.
Bước 4 — Lượt ba: buộc nó tấn công kết luận của chính nó
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.Một câu trả lời hữu ích sẽ nêu ra phút mới nhất còn chưa đầy đủ, độ tuổi của quote, và việc một phút mỏng dữ liệu chỉ dựa trên rất ít bản cập nhật. Hãy ghi lại kết luận có đứng vững hay không.
Bước 5 — Phân xử agent bằng SQL tất định
Chạy đoạn này trong SQL console của Cloud. Nó trả lời Bước 2 mà không cần agent, nên dòng đầu tiên của nó là mốc tham chiếu của bạn:
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;Các cửa sổ thời gian khác nhau là có chủ ý: truy vấn này trải từ phút hoàn chỉnh cũ nhất đến mới nhất hiện có,
trong khi agent được yêu cầu dùng bước năm phút. Hãy so sánh token_id, dấu của
move_points, và độ lớn, chứ không phải các số thập phân. Sau đó kiểm tra các con số củng cố của agent
đối chiếu với các truy vấn Spread and freshness và Volume velocity đã lưu ở
Module 06.
Bước 6 — Viết ra những gì agent làm sai
Thường có ít nhất một trong các lỗi sau. Hãy tìm lỗi của bạn trong bản ghi hội thoại:
- select
closehoặchightừmarket_midpoints_1mmà không dùng hàmMerge, rồi giải thích bất cứ thứ gì trả về với vẻ hoàn toàn tự tin; - coi phút mới nhất còn đang được điền là đã hoàn chỉnh, khiến đoạn cuối bị phóng đại;
- báo cáo một token Yes và token No của nó như hai biến động độc lập;
- bỏ
FINALkhỏipolymarket.markets, làm một thị trường được khám phá lại bị join hai lần; - gọi midpoint là giá có thể giao dịch được, hoặc dẫn ra một biến động mà không kèm độ tuổi của nó.
Nếu các con số của nó khớp chính xác với truy vấn phân xử, hãy kiểm tra trực tiếp vấn đề phút chưa đầy đủ: hỏi xem
phút mới nhất của nó có hoàn chỉnh không, rồi so sánh max(minute) trong
polymarket.market_midpoints_1m với toStartOfMinute(now()). Hai giá trị bằng nhau nghĩa là nó chưa
hoàn chỉnh, và một agent nói ngược lại đã phát biểu điều sai về dữ liệu trực tiếp.
Hoàn thành khi
- SQL phát hiện của agent đọc
market_midpoints_1mqua các hàmMerge; - kết luận của nó dẫn ra spread, độ tuổi quote và khối lượng giao dịch, chứ không chỉ giá;
- dòng đầu tiên của truy vấn phân xử đồng thuận với agent về token và hướng biến động, hoặc bạn có thể giải thích được sự khác biệt; và
- bạn đã viết ra một điều mà agent làm sai hoặc nói quá.
Tiếp theo: tổng kết và dọn dẹp.