即時儀表板
StormBot 統計
透過以下方式公開的即時遙測 /api/state。每一個內部介面——已發現的市場、模型預報、訊號、Claude 分析、socket 健康狀況、開放部位與成交歷史——都可透過儀表板讀取所用的同一個 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 上:透過內聯 Normal 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(僅限美國的逐時+警報)、透過香港天文台開放數據 API 的 HKO(僅限香港——官方結算測站,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 前 10 名天氣交易者排行榜,含損益、持倉與活動
設定選項
設定 預設 描述
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)
PnL — 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 年歷史分布進行貝氏結合。Combined precision = forecast_precision + historical_precision,其中 precision = 1/σ²。若預報與歷史的歧異超過 1.5 × historical_σ,combined σ 會放寬 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)邊際 = 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)。套用四分之一 Kelly(×0.25)並夾限於 [0, 0.15]。機器人在單筆交易中絕不會冒超過資金 15% 的風險;典型部位為 1-5%。
6. 交易執行 Trader 類別透過 @polymarket/clob-client 連線,採用簽章類型 2(POLY_GNOSIS_SAFE)。主要方式:FOK(Fill-Or-Kill)市價單以立即成交。備援方式:以最佳賣價/買價 + 2% 滑點掛出 GTC 限價單,並四捨五入至最小跳動單位。失效的訂單簿(404)會被快取並略過。透過 Set 鎖防止同一 tokenId 上的並行執行。
7. Claude AI 提示工程 每個市場都由 Claude Sonnet 以結構化提示詞分析:市場問題、YES/NO 價格、所有模型預報(香港為 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 月