一个由查询驱动的数据模型
在 ClickHouse Cloud 中创建六个对象:markets、price_ticks、trades、基于它们的 FINAL 视图、分钟级聚合表及其物化视图;并使用 UInt256 token ID、精确小数和枚举类型进行建模。
ClickHouse BUILD 系列
你将把公开的预测市场数据实时写入自己的 ClickHouse Cloud 服务,在写入时自动生成分钟级中间价序列,并发布市场动态仪表板。随后通过价差和成交速度,解释一次行情异动。
这不是交易教程, 而是一次实时数据实践。
公开预测市场提供了一类难得的数据:真正实时、结构并不规整,而且可以免费读取。本课程只使用公开的 Gamma、CLOB 和 Data API;全程无需钱包、入金、下单,也不需要 Polymarket API 密钥。
课程重点不在数据源本身,而在它对系统设计提出的要求。WebSocket 速度很快,却不是持久化日志,因此采集器会检测长时间无消息或连接卡顿的情况,自动重连,并在降级期间轮询公开的 CLOB 订单簿。另一个循环则通过确定性 ID 和五秒重叠窗口核对成交记录,确保重复到达的同一笔成交只写入一次。
每张表的键都根据实际查询模式设计:先按小时分桶,再按需要分组的 token 或 condition 排序。分钟级中间价序列会在写入时自动维护,无需每次刷新仪表板时重新计算。
最终成果
所有数据都来自公开 API,并写入你自己的 ClickHouse Cloud 服务;本地只需运行一个无状态 Docker 容器。
在 ClickHouse Cloud 中创建六个对象:markets、price_ticks、trades、基于它们的 FINAL 视图、分钟级聚合表及其物化视图;并使用 UInt256 token ID、精确小数和枚举类型进行建模。
具备心跳与卡顿检测、自动重连和降级期间的 CLOB REST 订单簿兜底;健康检查端点会如实报告 degraded 状态,而不是直接判定失败。
公开成交采集使用五秒重叠窗口和确定性 ID,并以 ReplacingMergeTree 作为第二层去重保障。
使用 AggregatingMergeTree 保存 argMin、argMax、min、max 和 count 状态,再通过对应的 Merge 函数汇总;你还会将聚合查询的读取行数与原始全表扫描进行对比。
查询当前概率、五分钟内波动最大的结果、价差与报价新鲜度以及成交速度,为行情异动提供完整背景,而不只是显示一条标题。
Polymarket market pulse 在 ClickHouse Cloud 控制台中创建并保存五个查询,其中包括分钟级折线图,无需安装任何本地仪表板工具。
课程安排 · 2 小时 30 分钟实操
沿着一条完整主线,发现市场、设计数据模型、接入实时数据、生成聚合,最后分析行情异动并发布仪表板。
准备 macOS 或 WSL 2 上的 Ubuntu 环境,安装 clickhousectl 和 ClickHouse 客户端,创建 Cloud 服务,并确保预检输出 READY。
通过 Gamma 获取交易最活跃的开放市场,并理解 condition ID 与结果 token ID 的区别。
根据实际查询中的过滤条件,创建类型明确的市场表、tick 表和成交表,再添加分钟级中间价聚合表及其物化视图。
启动采集器,了解健康检查状态,并确认数据正在写入 Cloud。当数据源受限或长时间没有更新时,可以切换到经过验证的 fixture 模式。
合并聚合状态,与等价的原始查询对比读取行数,并确认分钟级数据会随写入自动更新,无需定时刷新任务。
通过四类查询分析当前概率、波动最大的结果、价差是否扩大或报价是否过期,以及成交速度是否加快。
按指定名称保存五个查询,并组合成 Polymarket market pulse:四个当前状态视图和一张分钟级折线图。
让 ClickHouse Agent 查询实时表、发现行情异动,并结合价差、报价新鲜度和成交量分析原因;再使用结果确定的 SQL 复核结论,记录判断错误之处。
保存最终验证查询,停止采集器,并了解当生产系统已把数据写入消息流时,如何改用 ClickPipes 接入。
课程默认支持自主学习。每个模块都标明起始状态,并以可自行运行的完成检查收尾。live、带有最新 REST 时间戳的 degraded 和 fixture 都是有效的教学状态;讲师指南会说明全场当前使用哪一种状态,并明确区分 fixture 数据与实时数据。
参加之前