作者: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 天气市场,欢迎在评论区讨论:你用什么方法判断入场时机?遇到过哪些让你意外的结算结果?

