🇭🇰 HKO 最高温度预测模型 v2

香港天文台 · Polymarket 天气合约 · 2026-05-14

1. 系统概述

HKO 最高温度预测器为 Polymarket 的「香港每日最高温度」合约生成实时概率分布。每 10 分钟通过 cron 运行一次,将 22 个独立信号(分为 4 大类)融合为加权集成预测。

🌡️
HKO 观测
(1分钟级)
🏔️
内陆站
(5个站)
🔮
NWP 集成
(6个模型)
🧠
加权
集成
📊
概率
分布
🤖
LLM
分析
核心设计原则:模型在天气体系转换(冷→热或热→冷)时优先信任基于实时观测的信号(内陆站、当前最高温、温度轨迹),而非基于预报的信号(NWP、ECMWF)。预报信号仅在稳定天气体系下获得更高权重。
指标数值
更新频率每 10 分钟(cron: */10 * * * *
数据来源HKO API(1分钟 JSON)、DuckDB(历史数据)、Open-Meteo(NWP)、Windy(ECMWF可视化)
训练窗口滚动 7 天
输出data/hko/hko_prediction.json → Web API → Polymarket 做市
回测 MAE(v2)0.63°C(7天,2026年5月5-11日)

2. 架构与数据流

数据流

hko_data_fetcher.py
每 1 分钟拉取 HKO JSON API
→ DuckDB: hko_obs, hko_daily, hko_forecast
│ 每 10 分钟触发 │
hko_predict.py
数据采集 信号计算
(22信号)
加权集成
体系转换检测 概率分布 + 上下界约束
data/hko/hko_prediction.json
Web API(app.py)
/bracket /live /nwp-6h /ecmwf /backtest

核心脚本

文件功能调度
scripts/hko_data_fetcher.py拉取 HKO 观测数据,存入 DuckDB每 1 分钟
scripts/hko_predict.py核心预测引擎(22 信号 + 集成)每 10 分钟
scripts/hko_backtest_v2.py用历史日内数据回测按需运行
src/mm/weather_signal.py做市商公平价格计算每次扫描
src/web/app.pyFlask Web 仪表板 + API常驻(gunicorn)

3. 信号目录(22 个活跃信号)

信号按数据源类型分为四类。每个信号产生一个温度估计值(°C)和一个自适应权重(0–100%)。加权平均即为集成预测值。

3.1 实时观测信号 实时观测

来自 HKO 和内陆站的直接测量数据。这些是最可靠的信号,在体系转换期间获得最高优先级。

#信号公式权重范围说明
1inland(内陆站) 0.88×avg(内陆峰值) + 3.0 10%–49% 内陆站回归(上水、大埔、石岗、打鼓岭、元朗公园)。领先指标:比天文台早 1-2 小时升温。
2current_max(当前最高) hko_max + 时段偏移 8%–55% 硬下界:当天已观测到的最高温 + 预期进一步上升空间。偏移量随时间段递减(早间 +1.5°C,午后 +0°C)。
3temp_declining(温度回落) = 下界值 0%–22% 温度回落信号:当前温度低于已观测最高温 ≥0.5°C 时激活,表示峰值已过。
4trajectory(温度轨迹) 线性外推 + 日内进程 4%–14% 升温速率外推至预期峰值时刻。由内陆站速率校准。受天气文本阻尼约束。
5diurnal_curve(日内曲线) EMA 日内曲线峰值 3%–8% 7 天 EMA 逐时温度曲线。基于历史日内模式预测峰值。
6inland_gap_anomaly(内陆差距) hko_max + 差距×0.7 0%–12% 内陆-HKO 温差:当内陆站 ≥1.8°C 高于天文台时生成上行信号。区分升温差距与结构性脱钩。
7early_aggressive(早间激进) 条件触发 0%–8% 早间激进信号:早上 8-10 点内陆站已经很高时激活,预示全天将显著偏热。

3.2 数值预报信号 数值预报

来自 Open-Meteo 的多模型数值天气预报(6 模型:ECMWF、GFS、JMA、ICON、GEM、Best Match)。偏差修正 +1.0°C(自适应 EMA)。

#信号公式权重范围说明
8nwp_ensemble(NWP集成) mean(各模型最高温) + bias 2%–18% 6 模型 NWP 日最高温集成。早间权重 18%(内陆站未升温前),午后降至 2-5%。
9nwp_tomorrow(明日NWP) mean(明日各模型最高温) + bias 2% 明日 NWP 最高温。用于体系趋势检测(明日 − 今日 > 1.5°C = 看涨加成最高 +0.5°C)。
10ecmwf_raw(ECMWF原始) ECMWF 最高温 + bias×0.6 1%–3% ECMWF IFS 0.25° 原始预报。最保守的模型(通常低 1-2°C)。
11ecmwf_trend(ECMWF趋势) 气候基准 + 趋势分数 2%–5% ECMWF 多快照趋势分析:跟踪预报随时间的演变。预报上升 → 加热信心增强。
12shenzhen(深圳站) sz_max − 0.8 2%–10% 深圳 NWP 领先指标。通常比香港高 0.5-1.5°C。
13cloud_cover(云量) 下界 + wx_impact 1%–3% ECMWF 预测云量对最高温的影响。高云量 → 抑制升温。
14forecast_radiation(辐射预报) 下界 + wx_impact 1%–2% 短波辐射预报:低辐射(<300 W/m²)→ 偏凉。
15rain_forecast(降雨预报) 下界 + wx_impact 1%–2% 降雨概率:高降雨概率 → 降温压制。
16cape(对流潜势) 下界 + wx_impact 1% CAPE(对流有效位能):高 CAPE → 雷暴 → 降温。
17forecast_humidity(湿度预报) 下界 + wx_impact 1% 日间湿度预报:高湿度 → 降低加热效率。

3.3 天气文本信号 天气文本

基于 NLP 解析 HKO 天气描述文字和警告代码。

#信号公式权重范围说明
18weather_text(天气文本) 气候基准 + wx_score×0.8 1%–3% NLP 解析预报文字:"酷热"/"天晴" → +0.5-1.5°C,"有雨"/"多云" → -0.5-1.5°C。内陆站热度可覆盖"多云"分类。
19rain_cooling(降雨降温) 气候基准 − psr_cooling 1%–3% PSR(显著降雨概率)降温效应。
20warning(天气警告) 气候基准 + warning_boost 2% 天气警告代码:酷热 → +1-2°C 加成,暴雨/雷暴 → 抑制。
21humidity_potential(湿度潜力) 下界 + hum_factor 2% 当前湿度 → 加热潜力:低湿度 = 温度上升空间更大。
22sunshine(日照指数) 气候基准 + sunshine×3.0 1%–3% HKO ForecastIcon → 日照指数映射(0=密云,1=晴天)。已映射 50+ 图标代码。

3.4 AI 分析信号 AI分析

#信号公式权重范围说明
23llm_reasoning(LLM推理) DeepSeek V4 Pro 预测 10%–25% LLM 综合分析:接收全部信号值 + 输入数据,返回温度预测值、置信度和详细推理。缓存 30 分钟。

3.5 已禁用信号 已禁用

信号禁用原因日期
forecast(HKO官方预报) 预报通常滞后 2-3 天,在冷暖体系转换时严重偏离实际。回测:仅 3/7 天 floor 正确,冷锋日(5月5日)拖累预测 +1.9°C。 2026-05-14
climatology(7日均值) 7 天简单平均被异常冷/热日严重污染。已由体系感知的 avg_past_max_for_signals 替代。 2026-05-12

4. 体系转换检测

模型采用双向体系检测系统,处理会污染滚动 7 天均值和偏差修正的天气转换。

4.1 暖恢复(冷→热) 🔥

检测:从冷锋体系恢复到正常/炎热天气。

条件阈值
预报过时/严重低估下界 > 预报最高温 + 1.5°C
或:超过气候正常值下界 > 气候正常值 + 0.5°C
且:内陆站确认内陆最高 > 下界 + 1.0°C

触发后效果:

  • 7 天均值:排除冷锋日(<下界 − 3°C)
  • 内陆权重:×1.2(10am前)或 ×1.4(10am–2pm)
  • 权重再平衡:观测类信号 ×1.3,预报类信号 ×0.5

4.2 冷恢复(热→冷) ❄️

检测:从炎热体系降温。

条件阈值
昨日显著降温昨日最高 < 7日均 − 2.0°C
今日未回升当前最高 < 昨日最高 + 0.5°C

触发后效果:

  • 7 天均值:排除热异常日(>下界 + 2°C)
  • 权重再平衡:预报类信号 ×1.5,内陆信号 ×0.6

4.3 停滞检测

检测 HKO 最高温已 ≥15 分钟未上升。根据内陆站是否确认继续升温来调整权重。

4.4 早间冷偏修正

当日中前内陆站 ≥2.5°C 高于 7 天均值时,内陆权重最高提升至 ×1.6,以补偿被冷日污染的历史数据。

5. 权重调度

权重按时间段自适应——模型识别到信号可靠性在一天中会变化:

时段主导信号原理
08:00–10:00内陆(25%)、NWP(18%)、当前最高(12%)内陆站刚开始升温。NWP 提供前瞻指引。
10:00–12:00内陆(35%+)、当前最高(15%)内陆快速升温,最强的领先指标。
12:00–14:00当前最高(20%)、内陆(30%)、轨迹(14%)接近峰值。内陆仍领先,天文台在追赶。
14:00–16:00当前最高(30%)、轨迹(10%)接近峰值。梯度压制(非二值锁定)。
16:00+当前最高(55%)、温度回落(22%)峰值大概率已确认。软锁定,其他信号保留 25% 权重。
2026-05-14 修订:午后压制从二值锁定(16h 时其他信号×0.15)改为梯度压制(其他×0.25,内陆×0.3)。避免错过傍晚温度尖峰(如 5月8日:29.7→30.3°C)。

6. 加权集成与概率分布

6.1 加权平均

预测值 P = Σ(信号ᵢ × 权重ᵢ) / Σ(权重ᵢ) 其中: 信号ᵢ ∈ {inland, current_max, trajectory, nwp_ensemble, ...}(22个信号) 权重ᵢ ∈ [0, 1](自适应,归一化)

6.2 集成后处理

  1. 下界约束:P = max(P, lower_bound) —— 预测值绝不能低于已观测到的最高温
  2. 上界封顶:仅在回落 ≥0.5°C 确认后或 16:00 后才启用
  3. NWP 趋势加成:如果明日 NWP 集成明显更高,加 +0.05-0.5°C
  4. 结算平滑:每 10 分钟周期最多 ±1°C 变化(防止数据毛刺导致的闪崩)

6.3 概率分布

predicted_max 用高斯核生成,均值 μ、自适应 σ:

σ = 0.15(基础不确定性) if confidence == 'HIGH': σ *= 0.7 if confidence == 'LOW': σ *= 1.5 if hour < 10: σ *= 1.3(早晨:更宽) if hour > 15: σ *= 0.8(傍晚:更窄) # 温度回落时分布向已观测峰值偏移 if decline_detected: μ += decline_shift(最大偏移 +0.5°C 朝向已观测峰值) P(temp) = exp(−0.5 × ((temp − μ) / σ)²) / Σ(exp(...))

6.4 结算计算

Polymarket 使用 HKO 的 floor(最高温) 结算。模型已考虑此规则:

结算预测 = floor(预测最高温) # 例:预测最高温=29.2 → 结算=29°C

检测到温度回落(当前温度低于峰值 ≥0.5°C)时,基于已观测峰值计算 decline_anchor_settle,防止分布漂离最可能的结算值。

7. API 接口

端点方法说明
/api/weather/hk/liveGET实时 HKO 观测(温度、最高温、湿度、风、辐射)
/api/weather/hk/bracketGET全部温度档位的公平价格 + 市场价格
/api/weather/hk/tomorrowGETHKO 预报 + Open-Meteo 逐时数据(目标日期)
/api/weather/hk/nwp-6hGET未来 6 小时 NWP 预报(温度、云量、降雨、风速)
/api/weather/hk/ecmwfGETECMWF IFS 0.25° 分析:逐时表 + 趋势 + 风场
/api/weather/hk/ecmwf/gridGET3×3 周边网格分析
/api/weather/hk/llm-predictPOSTLLM 预测接口(DeepSeek V4 Pro)
/api/weather/hk/backtestGET回测结果(7/14/30 天)
/api/weather/hk/recalcGET强制重新计算预测并返回最新数据

预测 JSON 格式

// GET /api/weather/hk/bracket { "predicted_max": 29.2, // 连续预测值 °C "settlement_pred": 29, // 预期结算值(floor) "uncertainty": 0.29, // ±°C 不确定性 "lower_bound": 29.2, // 已观测最高温(硬下界) "confidence": "MEDIUM", // HIGH / MEDIUM / LOW "prob_distribution": { // 温度 → 概率 "28": 0.00, "29": 0.72, "30": 0.24, "31": 0.01, ... }, "signals": { // 全部 22 个信号值 "inland": 30.0, "current_max": 30.3, ... }, "weights": { // 全部 22 个信号权重 "inland": 0.037, "current_max": 0.183, ... } }

8. 更新日志

2026-05-14(今日)

  • 移除 HKO 官方预报信号(滞后 2-3 天,损害准确度)
  • 新增 暖恢复检测(冷→热转换,排除冷锋日)
  • 新增 冷恢复检测(热→冷转换,排除热异常日)
  • 新增 早间冷偏修正(7日均被冷日污染时提升内陆权重)
  • 改进 NWP 多模型:6 模型 × 2 天,早间权重 18%
  • 新增 nwp_tomorrow 信号(体系趋势检测)
  • 修复 午后梯度压制(原是二值锁定,现为梯度)
  • 新增 API:/api/weather/hk/nwp-6h(未来 6h NWP 预报)
  • 新增 前端:卫星云图 & ECMWF 选项卡中的 6h 预报面板

2026-05-12

  • 提高 HKO 预报权重至 18-22%(后发现有害,5月14日回退)
  • 内陆信号权重提升(25-35%)
  • 结构性脱钩检测修复(轻微午间回落不再归类为结构性)
  • 日内曲线 EMA 预测

2026-05-06

  • 关键数据守卫:HKO API 返回不完整数据时跳过预测
  • 7天 EMA/气候信号限幅,防止冷日出现 4-6°C 尖峰

2026-05-05

  • LLM 推理信号集成(DeepSeek V4 Pro)
  • Open-Meteo 逐时预报信号(云量、辐射、降雨、CAPE、湿度)
  • ECMWF 多快照趋势分析
  • 深圳 NWP 领先指标
由 HKO Predict v2 生成 · HK 天气仪表板 · 全部文档