Derick
1478 words
7 minutes
打造预测市场的“赛博终端”:Polymarket 实时数据监控系统架构设计

摘要:随着预测市场(Prediction Markets)的爆发式增长,Polymarket 已成为捕捉全球热点事件概率的链上预言机。但原始的链上数据和订单簿数据充满了噪音。本文将从架构师视角,深入剖析如何构建一个企业级的 Polymarket 数据监控与分析系统——PolyAlpha。我们将探讨如何处理混合交易机制数据、设计实时异常检测引擎,以及如何构建“聪明钱”追踪系统。


1. 背景与痛点#

Polymarket 与传统的 Token 交易市场(如 Uniswap 或 Binance)有着本质区别:

  1. 二元期权机制:价格代表概率,范围严格限制在 0-1 之间。
  2. 混合流动性:同时存在 CLOB(中央限价订单簿)和 AMM(自动做市商)流动性。
  3. 信息不对称:新闻、内幕消息对价格的影响比技术指标更直接。

痛点:普通用户面对成百上千的市场,无法实时捕捉到“突发新闻”导致的价格剧变,也无法分辨是“散户跟风”还是“巨鲸建仓”。我们需要一个系统,能将数据转化为信号


2. 产品功能定义#

在设计架构之前,我们先明确 PolyAlpha 的核心功能矩阵:

  • 🎯 实时异动雷达 (Real-time Anomaly Radar)
    • 毫秒级监控 100+ 热门市场的成交量飙升、价格剧烈波动。
    • 基于多因子模型的“异动评分系统”。
  • 🐋 聪明钱追踪 (Smart Money Tracker)
    • 识别高胜率地址(Smart Money)和巨鲸(Whales)。
    • 实时推送聪明钱的开仓行为。
  • ⚖️ 套利与逻辑分析 (Arbitrage & Logic Engine)
    • 监控互斥市场(Mutually Exclusive)的概率总和是否偏离 100%。
    • 发现逻辑相关的市场价差(如“特朗普胜选” vs “共和党胜选”)。

3. 系统总体架构设计#

为了满足高并发、低延迟和数据一致性的要求,我们采用 微服务 + 事件驱动 的架构。

3.1 架构全景图#

graph TD
    %% ===== 数据源层 =====
    subgraph DS
    DSLabel["数据源层"]
    PolyAPI["Polymarket CLOB API\nWebSocket"]
    ChainRPC["Polygon RPC\nOn-chain Events"]
    GammaAPI["Gamma API\nMetadata"]
    end

    %% ===== 接入层 =====
    subgraph IN
    INLabel["数据接入与清洗"]
    WS_Client["WebSocket Ingestor"]
    Chain_Indexer["Chain Event Indexer"]
    Metadata_Syncer["Metadata Syncer"]
    Normalizer["数据标准化模块"]
    end

    %% ===== 核心处理层 =====
    subgraph PROC
    PROCLabel["流式计算核心"]
    MQ["Kafka / Redpanda\n消息队列"]
    StreamEngine["流式计算引擎\nFlink / Python Rx"]
    AnomalyEngine["异常检测引擎"]
    WhaleEngine["地址画像引擎"]
    ArbEngine["套利计算引擎"]
    end

    %% ===== 存储层 =====
    subgraph STORE
    STORELabel["多级存储"]
    Redis["Redis Cluster\n实时热数据/缓存"]
    TimescaleDB["TimescaleDB\n历史K线/交易流"]
    Postgres["Postgres\n用户数据/元数据"]
    end

    %% ===== 服务层 =====
    subgraph SVC
    SVCLabel["API与推送"]
    APIGateway["API Gateway"]
    WSServer["WebSocket Server\n前端推送"]
    AlertService["通知服务\nTelegram/Discord"]
    end

    %% ===== 终端 =====
    subgraph CLIENT
    CLIENTLabel["终端"]
    WebDashboard["Web Dashboard"]
    MobileApp["Mobile App"]
    end

    %% ===== 连接关系 =====
    PolyAPI --> WS_Client
    ChainRPC --> Chain_Indexer
    GammaAPI --> Metadata_Syncer

    WS_Client --> Normalizer
    Chain_Indexer --> Normalizer
    Metadata_Syncer --> Normalizer

    Normalizer --> MQ
    MQ --> StreamEngine

    StreamEngine --> AnomalyEngine
    StreamEngine --> WhaleEngine
    StreamEngine --> ArbEngine

    AnomalyEngine --> Redis
    WhaleEngine --> TimescaleDB
    ArbEngine --> Redis

    Redis --> APIGateway
    TimescaleDB --> APIGateway
    Postgres --> APIGateway

    APIGateway --> WebDashboard
    APIGateway --> MobileApp
    Redis --> WSServer
    WSServer --> WebDashboard
    WSServer --> MobileApp
    AnomalyEngine --> AlertService

    %% 隐藏占位 label 的边框(可选美观)
    style DSLabel fill:none,stroke:none
    style INLabel fill:none,stroke:none
    style PROCLabel fill:none,stroke:none
    style STORELabel fill:none,stroke:none
    style SVCLabel fill:none,stroke:none
    style CLIENTLabel fill:none,stroke:none

4. 核心模块实现逻辑#

4.1 数据接入层 (Ingestion Layer)#

这是系统的“眼睛”。Polymarket 的数据具有双重性,我们需要同时处理:

  • CLOB 数据 (Off-chain): 通过 WebSocket 连接 Polymarket 的 Orderbook API。这是最高频的数据,包含每一笔撮合(Match)和挂单(Order)。
  • 链上数据 (On-chain): 监听 Polygon 链上的 CTF (Conditional Token Framework) 合约事件。用于验证真实的资金流转和最终结算状态。

实现难点与对策

  • 断连重连:WebSocket 必须具备心跳检测和自动重连机制,重连期间需通过 REST API 补录丢失数据。
  • 数据标准化:将链上的 Split/Merge 事件和 CLOB 的 Match 事件统一转化为标准的 Trade 结构体。

4.2 流式计算与异常检测 (The “Brain”)#

这是系统的核心。我们不只是存储数据,而是在数据流经内存时即刻进行分析。

逻辑流程

  1. 时间窗口聚合:对每个 Market ID 维护一个滑动窗口(例如 5分钟、30分钟)。
  2. 实时指标计算
    • Volume_Delta: 当前窗口成交量 vs 历史均值。
    • Price_Velocity: 价格变化速度(一阶导数)。
    • Buy_Sell_Ratio: 主动买入 vs 主动卖出比例。
  3. 评分模型 (Scoring Model)
    • 系统为每个事件打分(0-100)。
    • Score=w1Vspike+w2Pchange+w3WhaleflagScore = w_1 \cdot V_{spike} + w_2 \cdot P_{change} + w_3 \cdot Whale_{flag}
    • 如果 Score > Threshold,立即触发报警,并写入 Redis 的“热门异动”有序集合 (Sorted Set)。

4.3 聪明钱画像引擎 (Smart Money Profiling)#

如何区分“运气好”和“真大佬”?我们需要建立地址画像库。

实现逻辑

  1. 历史回溯:每日定时任务扫描历史结算数据。
  2. 指标计算
    • ROI (投资回报率): (总盈利 - 总投入) / 总投入
    • Win Rate (胜率): 盈利次数 / 总下注次数
    • Alpha Score: 该地址介入后,价格平均上涨幅度(衡量其对市场的影响力)。
  3. 标签系统
    • 根据指标将地址打标:Smart_Money, Whale, High_Frequency_Bot, Loser
  4. 实时匹配:当实时流中出现 Trade 事件时,立即查询发送方地址的标签。如果是 Smart_Money,则该笔交易的权重(Weight)瞬间放大,触发跟单信号。

4.4 存储策略 (Storage Strategy)#

为了平衡性能与成本,采用冷热分离策略:

  • Hot Data (Redis):
    • 存储实时的排行榜(Top Gainers, Top Volume)。
    • 存储最近 1 小时的 K 线数据(用于前端快速渲染)。
    • 存储最新的 50 条异动信号。
  • Warm/Cold Data (TimescaleDB):
    • 基于 PostgreSQL 的时序数据库。
    • 存储所有的历史 Tick 数据和分钟级 K 线。
    • 利用 Timescale 的 Continuous Aggregates 功能,自动计算小时级和天级的统计数据,加速历史查询。
打造预测市场的“赛博终端”:Polymarket 实时数据监控系统架构设计
https://blog.ithuo.net/posts/prddiction-polymarket-alpha-architecture-design/
Author
Derick
Published at
2025-11-11