实时仪表板
StormBot 统计
通过以下方式公开实时遥测数据 /api/state。每一个内部界面——已发现的市场、模型预报、信号、Claude 分析、套接字健康状况、未平仓位和成交历史——都通过仪表盘读取的同一个 Express API 提供。
API 端点 REST 路由:/api/state、/api/scan、/api/trade、/api/bot/start、/api/bot/stop、/api/wallet/connect、/api/ai/analyze 等等
天气模型 GFS(NOAA)、ECMWF(欧洲)、UKMO(英国气象局)、NWS(美国)和 HKO(香港天文台,香港结算源)——通过 Promise.all() 并行获取
支持的城市 纽约、伦敦、东京、巴黎、柏林、首尔、迪拜、悉尼、孟买、伊斯坦布尔、圣保罗,以及另外 56 个城市
受跟踪的顶级交易者 排行榜钱包数据取自 data-api.polymarket.com——盈亏、胜率、仓位、活动
edge 阈值 Dynamic: max(0.03, min(0.08, σ × 0.02)) — tighter when forecast is confident
刷新预报 后台间隔重新获取所有天气 API,并用新数据重新加载 StreamEngine
AI 分析周期 Claude Sonnet 结合完整预报 + 交易历史上下文重新分析前 15 个市场
历史回溯 用于同一历法日期的 NOAA NCEI GHCND 站点数据——提供贝叶斯先验
引擎模块
StormBot 引擎
该平台由六个小巧的引擎文件组成,每个文件负责流水线的一个阶段。纯 ES 模块运行于 Node.js 之上——无构建步骤,无 UI 框架依赖。
StreamEngine stream.js
实时 WebSocket 连接到 wss://ws-subscriptions-clob.polymarket.com。订阅所有天气代币 ID,处理 price_change/last_trade_price/book 事件。每一个 tick:通过内联正态 CDF 重新计算边际,对未平仓位检查 5 个退出条件,触发交易信号。
核心 WebSocket
AIAnalyzer ai.js
将每个市场连同完整上下文发送给 Claude Sonnet:问题、YES/NO 价格、全部 4 份预报、共识温度、模型一致性、距结算小时数、历史数据、优势分析、近期交易历史。返回结构化 JSON:决策、结果标签、信心、推理、edge_pct、suggested_size_pct。
核心 Claude API
EdgeCalculator edge.js
生产级概率引擎。calculateSigma() 将预报时效映射为不确定性(0.8° 至 5.5°)。calculateConsensus() 进行带离群值检测的加权融合。calculate() 对每种结果类型运行正态 CDF,应用贝叶斯历史融合,输出优势、信号、信心、凯利分数和 EV。
核心 数学
ForecastEngine forecast.js
从最多 6 个真实来源获取:通过 Open-Meteo 的 GFS(16 天逐时)、通过 Open-Meteo 的 ECMWF(10 天)、通过 Open-Meteo 的 UKMO(7 天)、通过 api.weather.gov 的 NWS(仅限美国的逐时 + 预警)、通过 Hong Kong Observatory Open Data API 的 HKO(仅限 Hong Kong——官方结算量规,9 天预报 + 实时累计最高值),以及 NOAA NCEI CDO(10 年历史 TMAX)。全部并行进行。
核心 天气 API
交易者 trader.js
通过 @polymarket/clob-client 配合 ethers.js 钱包连接到 Polymarket CLOB。派生 API 密钥,在 Exchange、NegRiskExchange、NegRiskAdapter 合约上自动授权 pUSD 和 CTF 代币。先执行 FOK 市价单;在签名出错时回退到带 2% 滑点的 GTC 限价单。
核心 Polygon
MarketDiscovery markets.js
向 Polymarket Gamma API 查询带天气标签的事件(通过分页最多 400 个)。失败时回退到关键词搜索。解析市场标题以提取城市(67 城映射)、日期(4 种正则模式)、温度单位和市场类型。将结果解析为区间、阈值和精确值。
核心 Gamma API
文档
StormBot 文档
完整的操作手册:搭建、环境、每一条 API 路由、每一个配置开关,以及从市场发现到链上结算的端到端执行路径。
快速开始
git clone <repo>
cd stormbot
npm install # express, ethers, @polymarket/clob-client, viem, ws, @anthropic-ai/sdk
npm start # starts Express server on port 3778
# Open http://localhost:3778 in your browser
环境变量
ANTHROPIC_API_KEY=sk-ant-... # Claude API key for AI analysis
NOAA_CDO_TOKEN=XRHLdkB... # NOAA CDO token for historical data
PORT=3778 # Server port (default 3778)
API 端点
方法 路由 描述
GET /api/state 完整机器人状态:市场、信号、日志、流式统计、AI 分析、仓位
POST /api/scan 触发市场发现 + 预报获取 + edge 计算
POST /api/wallet/connect 连接 Polygon 钱包,自动授权 pUSD + CTF 代币
POST /api/wallet/disconnect 断开钱包并清除 Store 中的凭证
POST /api/trade 执行交易:tokenId、side、amount、negRisk、tickSize、kellyFraction
POST /api/bot/start 启动完整流水线:扫描 → 流式 → AI 循环 → 自动交易
POST /api/bot/stop 停止流式传输、清除计时器、断开 WebSocket
POST /api/config 更新 bankroll、maxPerTrade、minEdge、autoExecute、anthropicApiKey
POST /api/ai/analyze 用 Claude 分析单个市场(传入 marketId)
POST /api/ai/analyze-top 批量分析前 N 个市场(默认 15)
GET /api/traders 天气交易者十强榜,含盈亏、持仓、活动
配置选项
设置 默认 描述
bankroll $500 可用于交易的资金总额
maxPerTrade $50 单笔交易最大规模。受 bankroll 限制
minEdge 5% 生成信号所需的最小绝对 edge
autoExecute true 在检测到优势或 AI 推荐时自动执行交易
aggressiveMode false 更低阈值:最小优势 3%,11¢ 以上 BUY_NO,接受 MEDIUM
scanIntervalSec 300 后台市场重新扫描之间的秒数
多用户架构
Store 模块(store.js) 把每个用户的状态保存在一个单一的 JSON 文件中,位于 /data/users.json。每条记录包含:哈希过的凭据和一个认证令牌、一个钱包块(加密的 PK 加代理地址)、用户的风险配置、计数器、AI 分析、成交历史和日志。BotManager 为每个用户启动一个专属的 StreamEngine、Trader 和 AI 周期,同时共享底层的市场数据层。
顶级交易者
交易者 排行榜
引擎通过以下方式持续监视 Polymarket 上最赚钱的十个天气钱包 /api/traders。数据从 data-api 排行榜、Gamma 资料端点以及仓位/活动数据流实时注入。
追踪如何运作
对于每个钱包, /api/traders endpoint hits four upstream data sources in parallel: Polymarket's leaderboard API (the authoritative source for PnL and volume), the Gamma profile endpoint (username and avatar), the positions API (all resolved and active positions with cashPnL), and the activity API (the trailing 30 trades). The merged result is sorted by total PnL, descending.
监视名单上的钱包
引擎追踪 Polymarket 上最赚钱的十个天气钱包,硬编码在 cities.js。该榜单按累计盈亏和天气市场胜率精选——而不只是看原始成交量。
每个交易者的数据点
个人资料 — 用户名、头像(来自排行榜或 Gamma)
盈亏 — total profit/loss from leaderboard API
交易量 — 以美元计的总交易量
胜率 — calculated from positions: (winning / total) × 100
活跃持仓 — 当前 size > 0 的未平仓持仓
PnL 历史 — cumulative chart from sorted resolved positions
近期交易 — last 5 trades with market title, side, size, price
AI 增强的跟单信号
在自动执行模式下,Claude 会评估这些头部钱包活跃所在的具体盘口。模型会收到完整的预报简报、我们的优势数学计算,以及近期成交历史——包括一个标记,用于指示引擎是否已持有该仓位,以避免重复进场。其结果是一个跟单信号层,既由最优秀交易者的活动驱动,也由 Claude 独立的气象推理驱动。
反过度交易防护
Claude 的提示词始终携带所审查市场的近期成交历史。模型被明确指示:如果引擎刚刚在同一结果上获利退出且价格未发生变动,则跳过(SKIP);在亏损之后除非输入数据发生有意义的变化否则要谨慎重新入场;并避免在同一结果上反复进出。
技术深度剖析
StormBot 白皮书
完整的数学规范:概率核心、集合加权、sigma 动态、贝叶斯融合和四分之一凯利仓位法——为想要验证每一步的交易者而写。
1. 共识气温算法 该 EdgeCalculator.calculateConsensus() function computes a quality-weighted forecast temperature from up to 5 models. Base weights: ECMWF 0.35 (best global model), GFS 0.25, UKMO 0.20, NWS 0.20 — and for Hong Kong, HKO 0.50 (the resolution gauge), tapered by lead time. Outlier penalization: if a model's forecast deviates more than 1.5× the standard deviation from the raw mean, its weight is halved.
Model agreement is scored in 5 tiers based on inter-model standard deviation: VERY_HIGH (<0.5°), HIGH (<1.0°), MODERATE (<2.0°), LOW (<3.5°), VERY_LOW (≥3.5°).
2. 动态 sigma(σ)计算 预报不确定性 σ 是最关键的参数。基础 σ 取决于预报时效:0.8°(≤6h)、1.0°(≤12h)、1.3°(≤24h)、1.8°(≤48h)、2.2°(≤72h)、3.0°(≤120h)、3.8°(≤168h)、4.5°(≤240h)、5.5°(更久)。模型数量惩罚:1.0×(≥4)、1.1×(3)、1.25×(2)、1.5×(1)。分歧惩罚:1.0 + (stdDev / 5.0)。最终 σ 被钳制在 [0.5, 8.0]。
3. 贝叶斯历史融合 当 NOAA NCEI 历史数据可用时,预报会与同一日历日期的 10 年历史分布进行贝叶斯组合。组合精度 = forecast_precision + historical_precision,其中 precision = 1/σ²。如果预报与历史数据的分歧超过 1.5 × historical_σ,组合后的 σ 会被放宽 30%,以考虑异常状况。
4. 概率计算 对于每一个市场结果,正态 CDF(Abramowitz-Stegun 近似)计算实际气温落在该结果区间内的概率:
精确值 :P = CDF(52.5) − CDF(51.5),使用 ±0.5° 区间区间 :P = CDF(53.5) − CDF(51.5)"or higher" :P = 1 − CDF(54)"or lower" :P = CDF(50)Edge = forecastProb − marketPrice。当 |edge| 超过以下值时发出交易信号 max(0.03, min(0.08, σ × 0.02)).
5. Kelly 准则仓位规模 对于 BUY_YES: kellyFraction = edge / ((1/marketPrice) − 1)。对于 BUY_NO: |edge| / ((1/noPrice) − 1)。应用四分之一凯利(×0.25)并钳制到 [0, 0.15]。机器人在单笔交易上承担的风险永不超过本金的 15%;典型仓位为 1-5%。
6. 交易执行 Trader 类通过 @polymarket/clob-client 以签名类型 2(POLY_GNOSIS_SAFE)连接。首选:FOK(全成或取消)市价单以立即成交。回退:在最优卖价/买价 + 2% 滑点处挂 GTC 限价单,按最小变动价位取整。失效的订单簿(404)会被缓存并跳过。通过 Set 锁防止对同一 tokenId 的并发执行。
7. Claude AI 提示词工程 每个市场都由 Claude Sonnet 用结构化提示词进行分析:市场问题、YES/NO 价格、所有模型预报(Hong Kong 为 5 个,其中 HKO 被标记为结算来源)、共识气温、模型一致性、距结算的小时数、历史平均值、各结果的边缘分析,以及近期的机器人交易历史。两套规则集:BALANCED(5% 最小边缘,偏好在 5-40¢ 处 BUY_YES)和 AGGRESSIVE(3% 最小边缘,11¢ 以上 BUY_NO)。输出强制为带精确结果标签的 JSON。
安全与架构
StormBot 安全
引擎如何处理你的密钥、它会接触哪些合约,以及管控每一笔订单路由的分层风险控制。
钱包与密钥处理 钱包处理完全在客户端进行。你的私钥在本地用于派生地址,并通过 ClobClient 为 Polymarket API 凭证三件套(key、secret、passphrase)签名。使用签名类型 2(POLY_GNOSIS_SAFE),以代理地址作为出资方。私钥永远不会穿过网络,也永远不会被持久化到我们运营的任何服务器上。
自动批准的合约
合约 地址 授权
pUSD 0xC011a7E12a19f7B1f670d46F03B03f3342E82DFB ERC20 approve(MAX) — V2 抵押品
CTF 0x4D97DCd97eC945f40cF65F87097ACe5EA0476045 ERC1155 setApprovalForAll
Exchange 0x4bFb41d5B3570DeFd03C39a9A4D8dE6Bd8B8982E pUSD + CTF
NegRiskExchange 0xC5d563A36AE78145C45a50134d48A1215220f80a pUSD + CTF
NegRiskAdapter 0xd91E80cF2E7be2e162c6513ceD06f1dD0dA35296 仅 CTF
余额监控 在钱包连接时,机器人会通过 Polygon RPC 检查 POL 余额(用于 gas)和 pUSD 余额(在代理地址上)。若 POL < 0.01 或 pUSD < $1 则发出警告。在每笔交易前,机器人会核实交易金额不超过可用 pUSD,并在每次成交后在本地追踪余额。
风险管理体系 四分之一 Kelly 仓位规模 — never risks more than 25% of the optimal bet size最大占比 15% — 任何单一仓位相对于 bankroll 的硬性上限maxPerTrade 上限 — 每笔交易可配置的美元限额(默认 $50)失效订单簿检测 — skips tokens that return 404并发执行锁 — prevents double-ordering on same tokenId价格区间过滤器 — skips markets where YES is below 2¢ or above 98¢时间过滤器 — skips markets resolving within 2 hoursAI 反频繁交易 — Claude receives recent trade history5 层退出系统 — profit, convergence, trailing, drawdown, time
免责声明 StormBot 是实验性软件。在 Polymarket 上交易存在真实的财务风险——你可能损失投入的一部分或全部资金。预报是概率性的,而非承诺。AI 分析是输出,而非建议。钱包操作在客户端执行,因此密钥永远不会到达服务器。你需自行负责遵守你所在地适用的法规,且过往结果绝不保证未来结果。
法律
隐私 政策
StormBot 如何处理你的钱包数据、你的交易活动,以及任何涉及平台的信息。
1. 平台触及哪些数据 StormBot 在客户端运行。我们不会在任何服务器上存储私钥、钱包凭证或个人数据。以下数据保存在你的浏览器本地或你自己掌控的基础设施中:
钱包数据 — Polygon wallet address and proxy address used to sign and route on-chain orders. Private keys never leave the device.交易数据 — fill history, AI analyses, open positions, edge detections and risk config live locally.遥测 — scan/trade/tick/edge counts kept locally for the session.
2. 这些数据如何被使用 钱包凭证在 Polygon 上为 Polymarket 订单签名并路由。 风险配置驱动仓位规模、优势阈值和自动化范围。 近期成交历史会作为上下文喂给 Claude,以防止频繁换仓。 日志与计数器会渲染到仪表盘中,用于实时监控。
3. 数据存储 所有数据均在客户端处理。StormBot 不会在任何远程服务器或云数据库上存储用户数据。除机器人运行所需的 API 之外,没有第三方分析,也没有外部数据传输。
4. 第三方服务 Polymarket — CLOB, Gamma, WebSocket, Data APIs for market discovery, trading, streaming.Open-Meteo — Weather forecast API for GFS, ECMWF, UKMO. No auth required.NOAA / NWS — US weather (api.weather.gov) and historical climate (ncei.noaa.gov).香港天文台(HKO) — Open Data API (data.weather.gov.hk) for Hong Kong forecasts and the live resolution-gauge reading. No auth required.Anthropic — Claude API for market analysis. Your API key is used; market data sent.Polygon RPC — Public Polygon node for balance checks and approvals.
5. 数据保留 日志每位用户上限 200 条(最旧的被丢弃)。交易历史上限 100 条。AI 分析 20 条。实时优势检测 50 条。一直保留,直到手动清空服务器数据目录。
6. 安全 StormBot 在客户端运行——你的私钥永远不会传输到任何服务器或被存储在任何服务器上。所有签名和交易执行都在你的设备上本地完成。
7. 你的权利 你可以随时通过仪表盘断开你的钱包连接。断开会清除所有相关的会话数据。
8. 本政策的变更 本隐私政策可能会随着 StormBot 的演进而更新。变更将反映在本页面上。
最后更新:2026 年 3 月