作者:Changan I Biteye內容團隊
天氣不像選舉,沒有立場;不像 NBA,沒有主隊。但偏偏是這個市場,讓國內用戶湧進來。原因很簡單,每個人都有感受,每個人都覺得自己懂上海的天氣。
但「感覺懂」和「能賺錢」,是兩回事。
Biteye 今天分享三件事:
讀懂結算規則
建立天氣的預測方法
用系統找到別人看不到的交易機會
一、先搞清楚:這個天氣市場到底怎麼結算的?
1.結算的溫度,不是你以為的那個
很多人第一次參與會有個誤區:拿手機天氣 App 對照著押最高氣溫,但 App 顯示的是上海市區的溫度,而 Polymarket 結算用的是上海浦東機場(ZSPD 氣象站)的實測數據,這個數據通過 Wunderground這個美國氣象平臺對外公開,PM 直接讀取 WU 上的記錄作為結算依據。
兩個地方,兩個數字。浦東機場位於城市東側,緊鄰長江入海口,受海風影響,氣溫通常比市區偏低。這個差距平時感覺不出來,但在檔位邊界的時候,可能就是押對和押錯的區別。
所以你在天氣市場評論區能看到這種困惑:「明明今天感覺比昨天暖,為什麼顯示的最高溫反而更低?」
2.數字對了,但單位不是你想的那個
WU 的數據直接來自機場每小時上報的 METAR 報文(全球民航通用的氣象電報格式)。
有一個細節藏在這裡:METAR 記錄的是華氏整數,WU 直接展示這個數字,不換算,不修正。
而大多數天氣預報系統、氣象模型輸出的溫度都帶小數點。你的模型算得越精細,越容易忽略這個最粗糙的地方。
3.上海氣溫規律
扒了 ZSPD 站近 1900 天的數據,上海最高氣溫的出現時段比想象中集中:
四個季節都高度集中在 11:00-13:00,
夏季 12:00 的集中度最高,單個小時佔全季的 27.6%。
秋季的峰值時段略偏早,10:00 也是高頻時段之一。
知道規律是第一步,但規律不會自己盯盤。每天最高溫什麼時候出現、有沒有刷新、離檔位還差多少。
所以小編搭了這套系統:在每天結算前,儘可能準確地預測出當天的最高溫度落在哪個攝氏度檔位。

二、五種方法,三個跑通了
市場規則搞清楚之後,下一個問題是:怎麼預測當天的最高溫度?
作為一個氣象小白,第一步是去問 ChatGPT:氣象行業到底是怎麼計算當天最高溫的,有哪些成熟方法。ChatGPT 給出了一套理論框架,Claude 把框架落地成代碼。 兩個 AI 配合著用,一個週末把系統搭起來了。
一共試了五種方法,最終只跑通三個。
跑通的:
1️⃣ WC + ECMWF 集成預報
預測最高溫,首先需要數據。採用了兩個來源:
Weather Company(WC) 是一個商業氣象 API,提供逐小時預報數據,精度高;
ECMWF 是歐洲中期天氣預報中心的全球氣象模型,對大範圍天氣系統更敏感。
兩個來源各有優劣,所以讓它們加權投票。權重根據當天天氣類型動態調整:晴天更信 WC,雲量大、風速高的天氣更信 ECMWF。
2️⃣實時訂正:用升溫數據推算峰值
預報是昨晚算出來的,但今天的天氣一直在變。所以這個模塊做的事是:用今天早上已經發生的實測數據,推算今天最高能到多少。
邏輯不復雜,小編髮現上海早上 8-9 點是升溫最快的時間段。系統拿到這個時刻的實測溫度之後,查歷史數據:同一季節、同一時刻,過去平均還能再升多少度。
然後加兩個修正:
雲多就乘以一個折扣,雲量越厚升溫越受阻。
風大也乘一個折扣,強風會加速熱量散失。算出來一個"外推估算"。
氣壓、露點、溼度也在計算之內,但由於回測後發現這些因子影響較小,相關性較低,所以刪除了。
但光靠外推還不夠穩,這裡用了一個卡爾曼增益的概念,說白了就是在「外推結果」和「原始預報」之間取一個加權平均,而且這個權重會隨著時間推移自動變化。
早上 6 點,外推才佔 20%,大部分還是信預報
到中午 12 點,外推佔 72%
下午 1 點之後,幾乎完全信實測,佔 85%
越晚,眼前發生的事越重要;越早,歷史預報的參考價值越大。
下午 2 點之後,系統判斷峰值大概率已過,直接從歷史記錄裡取今日最高溫鎖定結果,不再推算。
3️⃣ 今天是升溫日嗎?
這是整套系統裡最讓人滿意的模塊,每天凌晨做一個判斷:今天的最高溫會比昨天高嗎?
每天凌晨 2-4 點,系統會收集一批氣象數據,餵給這個模型:
氣壓在過去 3 小時、12 小時的變化
凌晨的風向和風速,雲況
昨天的升降溫幅度,近三天的溫度趨勢,昨天的溫度是偏高還是偏低
加上月份、季節、當天是一年中第幾天,昨天有沒有下雨
模型輸出分成五檔:升溫日、偏升溫、持平、偏降溫、降溫日,同時給出置信度。
不過該方法在不同季節準確率差異很大。
冬季最準:冷空氣來了,氣壓急升、北風加強,信號極其清晰,模型一眼就能看出來。
秋季最差:冷暖氣團反覆拉鋸,今天剛升溫明天就回落,歷史規律在這個季節失效最快。
淘汰的方法:
傅里葉數值預測
最早試過用傅里葉分析擬合曆史氣溫的週期規律,看能不能直接預測當天最高溫。
結果發現它能告訴你的只是"歷史上這個季節平均是多少度"。上海天氣的隨機性太高,傅里葉擬合出來的是一條平滑的平均曲線,不是真實的每日波動。誤差 3.6°C,而且 100% 系統性低估,所以直接刪掉。
ERA5 峰值時刻預測
ERA5 是歐洲氣候中心的全球歷史重分析數據集,用來預測當天最高溫出現在幾點。
回測下來
≤1小時準確率 59.6%
≤2 小時準確率 81.3%
聽起來還行,但問題是 PM 的精度更高,留給交易員判斷的時間窗口很短,如果做不到半小時以內的峰值判斷,還不如看 Polymarket 的數據,所以該方法被淘汰了。
三、系統實戰:兩個案例和不足反思
Polymarket 的天氣市場會提前 4 天開放交易,熱門溫度檔位通常在開市早期就被充分定價。直接在高概率檔位上買,盈虧比比較差。
所以小編採用的策略是:等信號,等升溫後的時間窗口再入場。
於是根據自建的天氣系統做了以下兩個操作:
案例一:
16 號凌晨,Telegram 頻道推送了夜間模式的報告:明天是降溫日。理由是當晚雲況偏厚、季節和年內日序兩個特徵都指向降溫方向。
這時候小編沒有立刻下注。凌晨的信號只是第一層參考。
到了上午 11 點,系統推送了升溫期的實時報告。當時實測最高溫已經到了 12°C,+1°C 概率評分給出結果:今天再漲 1°C 的概率是 42%,偏向不會再升溫。
結合凌晨邏輯迴歸的偏降溫信號,兩個模塊方向一致,這時候信號比凌晨清晰多了。於是押了16 號最高溫不超過 13°C。
當天結算:12°C。前一天 15 號是 15°C,降了整整 3 度。
案例二:
再比如今天 17 號的上海天氣,天氣系統還能起到預警作用:早上 7 點鐘受到的推送顯示,峰值時刻異常:22:00
正常晴天最高溫出現在下午1-3點,但今天峰值在晚上 22 點,說明這不是日照升溫,而是暖溼氣流夜間輸送。全天都在下雨,雲量97-100%,日照幾乎為零。
這時候打開 Polymarket,看到 12°C 的定價還在 53%。社區裡有人困惑:現在已經下午了,溫度才11°C,正常峰值時段早就過了,為什麼大家還在買12°C?
這個困惑的背後,是大家還在用晴天的邏輯判斷雨天的市場。
系統不會困惑。它早上就把今天的天氣類型識別清楚了,峰值時刻異常,當前溫度和市場預期之間存在明顯偏差。這是一個信息差,而信息差就是交易機會。
這正是搭這套系統的意義:在機會面前,更容易識別;在風險面前,更快預警。

系統還有哪些不足
做了一個週末的系統,不可能沒有漏洞:
秋季準確率只有63.7%,接近拋硬幣。冷暖氣團在這個季節反覆拉鋸,今天升溫明天回落,歷史規律在秋季失效最快。
氣壓特徵在實盤裡拿不到。 訓練模型的時候用了氣壓變化作為特徵,回測效果不錯。冷空氣過境的信號很清晰。但實盤運行時,當前接口拿不到實時氣壓數據。
沿海修正還在等數據激活。 浦東機場的海風效應是真實存在的,系統也建了對應的修正模塊,但回測樣本還不夠多。
一套剛跑了一個週末的系統,能發現這些問題已經算有收穫。接下來邊跑邊修。
結語
氣象學發展了幾百年,用上了衛星、超算、全球模型,天氣預報依然不敢保證明天100%準確。不是科學家不夠努力,是大氣系統本身就是混沌的,差一度初始條件,結果可能完全不同。
這套跑了一個週末的系統,當然也會出錯。秋季準確率接近拋硬幣,冷空氣來早了系統可能沒反應過來,海風效應到現在還沒完全捕捉到。
但這不重要。做預測市場不需要每次都對,只需要在賠率有優勢的時候,比市場多看一層信息。
上海天氣市場還在早期,小編會持續跟蹤這套系統,邊跑邊改。如果你也在做 Polymarket 天氣市場,歡迎在評論區討論:你用什麼方法判斷入場時機?遇到過哪些讓你意外的結算結果?






