POLYMARKET.md — Polymarket 交易系统文档


维护人: Spark ⚡ | 最后更新: 2026-04-28

📅 变更日志


每日变更记录: [docs/daily/](docs/daily/) — 最新: [2026-05-04](docs/daily/2026-05-04.md)




Weather 天气合约


🔑 结算规则(最重要!)


权威数据源: Weather Underground (WU)


每个合约的 Rules 页面明确写明:


"The resolution source for this market will be information from Wunderground, specifically the highest temperature recorded for all times on this day..."

>

"To toggle between Fahrenheit and Celsius, click the gear icon next to the search bar and switch the Temperature setting between °F and °C."

>

"The resolution source for this market measures temperatures to whole degrees Celsius (eg, 9°C)."

结算数据获取方式:


WU 页面切换到 °C 模式后显示的整数就是结算值。技术实现上:


精度类型城市WU 存储结算值示例
whole_c亚洲/欧洲/中东calendarDayTemperatureMax (°F整数)WU °C 显示值 = round((°F-32)×5/9)63°F → 17.22 → 17°C
whole_f美国城市 (LA, Chicago, etc.)calendarDayTemperatureMax (°F整数)直接用 °F74°F → 74°F

WU °C 值获取流程:

1. 从 WU history 页面的 app-root-state JSON 提取 calendarDayTemperatureMax[0](°F 整数)

2. 转换:whole_c = round((°F - 32) × 5 / 9)

3. 这与 WU 页面切换到 °C 后显示的值完全一致(WU 前端用的是同样的 Math.round()


ℹ️ 关于 TWC API units=m

  • TWC API v3 支持 units=m 参数直接返回 °C
  • calendarDayTemperatureMax 在 current observations 端点中为 null,仅在 forecast 端点有值(是预报值,不是实测值)
  • temperatureMax24Hour(滚动24h)≠ calendarDayTemperatureMax(日历天)—— 时间窗口不同,值可能不一样
  • WU 页面 JSON (app-root-state) 永远返回 °F,无参数可切换
  • 结论: 必须从 WU 页面 JSON 取 °F 再转换,没有捷径

  • 已验证的转换一致性:


    城市WU °F计算 °CWU 页面显示
    Beijing63°Fround(17.22) = 1717°C ✅
    Tokyo74°Fround(23.33) = 2323°C ✅
    Shenzhen86°Fround(30.00) = 3030°C ✅
    Singapore93°Fround(33.89) = 3434°C ✅
    Moscow53°Fround(11.67) = 1212°C ✅
    Tel Aviv84°Fround(28.89) = 2929°C ✅

    ⚠️ 例外城市 — 香港 (Hong Kong):


    香港合约的结算源不是 WU,而是 Hong Kong Observatory (HKO)


    "The resolution source for this market will be information from the Hong Kong Observatory, specifically the 'Absolute Daily Max (deg. C)' the specified date once information is finalized in the relevant 'Daily Extract'."

  • 结算数据页面: https://www.weather.gov.hk/en/cis/dailyExtract.htm
  • 数据 API: https://www.weather.gov.hk/cis/dailyExtract/dailyExtract_YYYYMM.xml
  • 格式: JSON,stn.data[].dayData[] 数组,每行 [day, pressure, abs_max, abs_min, ...]
  • 更新时间: 当天结束后次日更新

  • 香港实时数据采集(HKO Open Data API):


    数据源API / URL更新频率用途
    rhrread 当前天气weather.php?dataType=rhrread每小时27站实时温度/湿度
    1-min温度 CSVlatest_1min_temperature.csv每10分钟40+站高精度温度
    Max/Min since midnightlatest_since_midnight_maxmin.csv每10分钟⭐ 结算值实时追踪
    1-min湿度/风力/气压/太阳辐射各 CSV每10分钟预测因子
    9天预报weather.php?dataType=fnd每日2次HKO官方预报
    AWS animate CSVsanimate_J1.csv实时39站过去24h逐小时
    Daily Extract XMLdailyExtract_YYYYMM.xml每月⭐ 香港结算权威源

    多站预测模型 (hko_predict.py):


    10个信号加权集成 (v2),每10分钟更新:


    信号基准权重原理
    🌤️ HKO预报 (bias-corrected)20%fnd 官方预报 + 7天偏差 EMA
    📝 天气词 NLP8%从 flw/fnd 提取 hot/rain/sunny 关键词,调整预报
    🌧️ 降雨概率 (PSR)8%PSR → 降温抑制 (40%rain → -0.5°C)
    ⚠️ 天气警告10%WHOT +1.5°C / WRAIN -2°C / WCOLD -3°C
    🏔️ 内陆站回归18%上水/大埔/石岗/打鼓岭 max → 回归天文台
    📈 当日走势外推12%升温率 × 剩余小时 × 衰减因子
    ☀️ 太阳辐射8%W/m² → 午后升温幅度
    💨 风向信号5%南风(海风)降温 / 北风升温
    📅 7天均值+趋势8%气候基线 + 近期趋势修正
    📍 当前最高10-70%硬下界,16:00后权重升至 70%

    动态权重调整:

  • 16:00后:“当前最高”70%,其他信号×0.15
  • 14:00-16:00:“当前最高”40%,其他×0.4
  • 降雨>40%:不确定性+0.5°C
  • 气压快速下降:不确定性+0.3°C

  • 输出:预测最高温 + 结算预测(整数°C) + 概率分布 + 置信度(HIGH/MEDIUM/LOW)


    香港回测结果 (2026-03-08 ~ 2026-04-15, 39天):


    指标
    MAE1.41°C
    RMSE1.76°C
    结算准确率 (精确)28.2%
    ±1°C 准确率59.0%
    策略交易40笔 (2W)
    策略 PnL+$3.71

    注意:回测仅用日级数据(无当天多站实时数据),实盘有当日多站信号后准确率会更高。


    ⚠️ 绝对禁止用于结算的数据源:

  • Open-Meteo(与 WU 经常差 1-8°C!Tel Aviv 曾差 8°C)
  • wttr.in
  • METAR 航空气象(仅做参考,不能覆盖 WU)
  • temperatureMax24Hour(滚动24h最高温,与日历天最高温不同!)
  • 任何非 WU calendarDayTemperatureMax 来源

  • 其他数据源角色: 仅用于策略预测(概率估计、套利发现),不用于结算。




    📊 覆盖城市 (18城)


    城市ICAOWU 路径精度时区
    BeijingZBAAcn/beijing/ZBAA°CAsia/Shanghai
    ChicagoKORDus/il/chicago/KORD°FAmerica/Chicago
    Hong KongVHHHhk/hong-kong/VHHH°CAsia/Hong_Kong
    IstanbulLTFMtr/istanbul/LTFM°CEurope/Istanbul
    LondonEGLLgb/london/EGLL°CEurope/London
    Los AngelesKLAXus/ca/los-angeles/KLAX°FAmerica/Los_Angeles
    MoscowUUEEru/moscow/UUEE°CEurope/Moscow
    New YorkKJFKus/ny/new-york/KJFK°FAmerica/New_York
    ParisLFPGfr/paris/LFPG°CEurope/Paris
    SeoulRKSIkr/seoul/RKSI°CAsia/Seoul
    ShanghaiZSPDcn/shanghai/ZSPD°CAsia/Shanghai
    ShenzhenZGSZcn/shenzhen/ZGSZ°CAsia/Shanghai
    SingaporeWSSSsg/singapore/WSSS°CAsia/Singapore
    São PauloSBGRbr/sao-paulo/SBGR°CAmerica/Sao_Paulo
    TaipeiRCTPtw/taipei/RCTP°CAsia/Taipei
    Tel AvivLLBGil/tel-aviv/LLBG°CAsia/Jerusalem
    TokyoRJTTjp/tokyo/RJTT°CAsia/Tokyo
    MiamiKMIAus/fl/miami/KMIA°FAmerica/New_York



    🏗️ 系统架构


    
    ┌─────────────────────────────────────────────────────────────┐
    │                    数据采集层                                 │
    │  Open-Meteo │ WU │ HKO (39站) │ METAR │ 类比日 │ wttr.in     │
    └───────────────┬─────────────────────────────────────────────┘
                    ▼
    ┌─────────────────────────────────────────────────────────────┐
    │                    概率估计层                                 │
    │  高斯模型(30%) + 集成直方图(45%) + 贝叶斯更新(25%)            │
    │  + 偏差修正(EMA) + 类比日预测 + 过峰检测                      │
    └───────────────┬─────────────────────────────────────────────┘
                    ▼
    ┌─────────────────────────────────────────────────────────────┐
    │                    信号筛选层                                 │
    │  Edge ≥ 5-8% │ EV ≥ 2x │ 入场价 ≤ $0.15 │ 死合约过滤       │
    └───────────────┬─────────────────────────────────────────────┘
                    ▼
    ┌─────────────────────────────────────────────────────────────┐
    │                    LLM 审核层                                │
    │  DeepSeek Chat 二次验证 │ confidence ≥ 0.4 → 通过            │
    └───────────────┬─────────────────────────────────────────────┘
                    ▼
    ┌─────────────────────────────────────────────────────────────┐
    │                    执行层                                     │
    │  Paper Trade ($1-3/笔) │ 微信通知 │ Dashboard 可视化          │
    └─────────────────────────────────────────────────────────────┘
    



    📈 数据源详解


    数据源用途更新频率备注
    Open-Meteo91模型集成预报,概率分布每次扫描最重要的预报源,但不做结算
    wttr.in实时温度 + 简单预报每次扫描快速但精度有限
    Weather Underground结算源 ⭐ (香港除外)每次扫描权威,calendarDayTemperatureMax
    HKO香港结算源 ⭐每10分钟40+站实时 + Daily Extract 结算值
    METAR交叉验证每次扫描机场原始观测,0.1°C 精度,仅参考
    类比日 (Analog)相似日修正每次扫描90天历史特征匹配,新模块
    历史偏差 (Bias)预报修正每日更新EMA 跟踪每城市预报偏差



    🧮 概率模型


    三模型集成


    模型权重原理
    高斯分布30%以修正预报为均值,自适应 σ 为标准差
    集成直方图45%91个模型各预测一个最高温,直接形成概率分布
    贝叶斯更新25%当天有实测数据时,用贝叶斯公式更新先验

    类比日预测(Analog Forecast)


    用历史天气特征找相似日,基于相似日实际最高温修正预报:


    特征权重说明
    🌡️ 上午均温30%最重要的预测因子
    ☁️ 云量25%影响太阳辐射加热
    💧 湿度20%影响热容量
    💨 风速15%影响热交换
    🌧️ 降水10%直接降温效应

  • 回看 90 天历史
  • 取 Top 8 最相似日
  • 加权平均得出类比预测
  • 近期日有小幅权重加成

  • 过峰检测


    当地时间 ≥ 14:00 且温度已回落 → 最高温基本锁定,使用更窄的概率分布。


    偏差修正


  • 记录每个城市的 预报 - 实际 偏差历史
  • 使用 EMA (指数移动平均) 跟踪偏差趋势
  • 自动修正下次预报:corrected = forecast + bias_ema



  • 💰 Paper Trader 参数


    参数说明
    最大入场价$0.15只买 ≤15 美分的便宜期权
    最低公允概率2%低于 2% 视为噪音
    EV 倍数下限2.0x公允概率 ≥ 2倍市场价
    STRONG 阈值5.0xEV ≥ 5x 为强信号
    STRONG 仓位$3.00每笔强信号投 $3
    MEDIUM 仓位$1.00每笔中等信号投 $1
    LLM 最低置信度0.40DeepSeek Chat confidence < 40% 则拒绝
    Edge 阈值 (exact)5% / 10%MEDIUM / STRONG
    Edge 阈值 (range)8% / 15%MEDIUM / STRONG



    🤖 LLM 审核


  • 模型: DeepSeek Chat
  • 输入: 合约问题、预报温度、公允概率、市场价格、EV 倍数、集成分布、温度曲线、偏差历史
  • 输出: {action: BUY_YES/SKIP, confidence: 0-1, reasoning: "..."}
  • 规则: action 匹配 + confidence ≥ 0.4 → 通过
  • 容错: LLM 连续失败 3 次 → 跳过 LLM,仅用量化信号



  • ⚰️ 死合约过滤


    基于 WU 实时观测最高温,过滤已不可能的合约:


    合约类型条件动作
    =X°CWU 观测 > X跳过(已超过,不可能等于 X)
    ≤X°CWU 观测 > X跳过(已超过上限)
    ≥X°CWU 观测 ≥ X确定 YES(如果市价 < $0.90 则是套利)



    📈 有效比较符推导


    Polymarket 合约看似都是精确匹配 "be X°C",但实际:


  • 最低活跃选项 → 实际覆盖 ≤X°C(吸收已关闭的更低选项)
  • 最高活跃选项 → 实际覆盖 ≥X°C(吸收已关闭的更高选项)
  • 中间选项 → 精确匹配 =X°C



  • 📊 核心策略


    "低价才是机会" — 买 $0.001-$0.15 的便宜期权,追求高 EV 倍数。

  • 胜率低(~32%),但赢的回报是输的几十到几百倍
  • 一单 LA $0.0035 赚了 285x($854),覆盖几十个亏损单
  • 数学本质: EV=5x 意味着即使只有 20% 胜率也能盈利



  • 🗂️ 关键文件


    文件用途
    scripts/weather_arb_scanner.py核心扫描器:概率估计 + 套利发现
    scripts/weather_paper_trader.pyPaper Trading 引擎:LLM审核 + 仓位管理
    weather_market_arbitrage.py主动发现合约 (Gamma API)
    analog_forecast.py类比日预测模块
    expiry_utils.py过期检测工具库(城市时区感知)
    weather_data_collector.py完整快照采集器
    price_ticker.py每分钟价格快照
    weather_db.pyDuckDB 数据层
    web/dashboard.pyWeb Dashboard (localhost:8765)
    strategy/trend_follow.py趋势跟踪策略
    strategy/trend_monitor.py价格动量监控
    scripts/henry_copytrade.pyHenry 跟单信号
    scripts/hko_data_fetcher.pyHKO 39站数据爬取器(每10分钟 cron)
    scripts/hko_predict.pyHKO 最高温预测引擎(每10分钟 cron)
    scripts/hko_backfill.pyHKO 历史数据回填

    DuckDB HKO 表:


    表名内容
    hko_obs10分钟全站观测(temp, humidity, pressure, solar, wind, max/min since midnight)
    hko_daily每日汇总(结算值, max/min, 湿度, 降雨, 预报值)
    hko_forecast9天预报快照(跟踪预报演变)

    数据文件:


    文件位置
    weather_arb.json/Volumes/data128G/polymarket-data/ — 扫描结果
    weather_paper_state.json/Volumes/data128G/polymarket-data/ — Paper Trade 状态
    weather_paper_decisions.jsonl/Volumes/data128G/polymarket-data/ — LLM 决策记录
    weather_paper_notify.txt/Volumes/data128G/polymarket-data/ — 最新通知文本
    arbitrage_opportunities.jsondata/ — 套利机会
    last_notified_arbs.jsondata/ — 通知去重记录



    ⏰ 定时任务


    任务频率模型功能
    hko_data_fetcher10 分钟cronHKO 39站数据采集 + DB写入
    hko_predict10 分钟cronHKO 最高温预测 + 概率分布
    weather-paper-trade5 分钟chat运行 paper trader,新信号发微信
    30分钟机会查找1 小时chat套利机会扫描 + 微信通知
    weather-data-collector30 分钟chat完整快照采集
    tunnel-health-alert10 分钟chat隧道健康检查
    polymarket-position-monitor整点 9-17chat持仓监控
    DuckDB Sync15 分钟chat数据同步到 DuckDB



    📈 Paper Trade 业绩


    截至 2026-04-16:


    
    总交易:  379 笔
    已结算:  269 (胜63 / 负206)
    胜率:    23.4%
    PnL:     +$9,863
    投入:    $975
    ROI:     1012%
    



    🧠 HKO 预测模型 v3 (2026-04-16)


    架构: 15 信号加权集成 + 自适应偏差修正


    文件: scripts/hko_predict.py


    信号列表


    #信号权重数据源说明
    1HKO 预报 (bias-corrected)20%fnd API偏差修正后的官方预报最高温
    2天气描述 NLP8%fnd/flw关键词匹配: sunny/hot → 加温, rain/cloudy → 降温
    3降雨概率8%PSR降雨>40% 抑制最高温
    4天气警告10%warnsumWHOT/WRAIN/WCOLD 调整
    5内陆站回归18%hko_obs上水/打鼓岭/石岗/大埔/元朗 先行指标
    6温度轨迹 + 进度比率14%hko_obs融合线性外推 + 历史进度比率预测
    6b日变曲线预测10%hko_obs 7天EMA(α=0.4) 加权的每小时峰值 + 当前小时偏差调整
    6c峰值时间感知50%*hko_obs 7天过了平均峰值时间+1h → 锁定当前最高
    6d湿度潜力8%hko_obs湿度<65% → +1.2°C, >75% → -0.5°C
    6e升温加速6%hko_obs上下半段升温速率对比
    7太阳辐射 + 阳光指数8%+7%hko_obs + fnd icon实测 W/m² + ForecastIcon → 0.0-1.0 阳光指数
    8风向效应5%hko_obs岸上风降温 / 离岸风升温
    9气候学 + 趋势8%hko_daily 7天7天均值 + 近期趋势
    10当前最高 (硬下界)10-70%*hko_obs随时间推移权重加大
    11NWP 6模型集成12%Open-MeteoGFS/ECMWF/JMA/ICON/GEM/BestMatch
    12深圳先行指标6%Open-Meteo深圳预报最高 - 0.8°C

    *权重随时间动态调整


    偏差修正

  • 历史分析发现系统性低估 0.7°C(69% 时间偏低)
  • 自适应修正: 用最近 3 天误差动态调整

  • 不确定度

  • 数据驱动: 基于信号标准差 × 0.25
  • 硬上限 ±0.5°C,下午可收窄至 ±0.1°C

  • 实战验证 (2026-04-16)

    
    旧模型预测: 28.7°C (误差 1.4°C)
    v3 模型预测: 29.9°C (误差 0.2°C) ← 大幅改善
    实际最高:   30.1°C
    

    为什么今天比昨天高 1.2°C?(反思记录)


    因素昨天 (28.9°C)今天 (30.1°C)
    早晨温度25.5°C25.4°C (几乎一样)
    中午湿度72%64% (-8%)
    升温模式11时开始减速12时仍加速
    太阳辐射186-256 W/m²~900 W/m² (3-4倍)

    关键教训: 早上温度相似不代表下午相似。湿度下降速度和太阳辐射强度是下午分化的主因。已通过 Signal 6d (湿度潜力) 和 6e (升温加速) 捕捉。




    🔗 实时信号整合


    frontrun 策略 (strategy/frontrun.py) 对香港合约直接接入 HKO v3 预测模型:

  • predicted_max → 替代策略自带的线性外推
  • uncertainty → 替代硬编码的 sigma (从 ±1.0-2.5°C 收窄到 ±0.2-0.5°C)
  • 其他城市保持原有逻辑

  • 数据流水线


    
    hko_data_fetcher.py (cron 每10分钟)
        │
        ├─ 抓取 HKO API (rhrread/fnd/flw/1min/maxmin/solar/wind/pressure)
        ├─ 抓取 AWS GIS CSV (全港气象站)
        ├─ 写入 DuckDB + hko_latest.json
        │
        ├─ hko_predict.py (预测)
        │   └─ 写入 hko_prediction.json
        │
        ├─ weather_strategy_runner.py --scan (策略)
        │   └─ 有 CRITICAL/HIGH 信号 → 微信通知
        │
        └─ weather_paper_trader.py --once (Paper Trade)
            └─ 有新交易 → 微信通知
    



    🐛 已知问题 & 教训


    1. Open-Meteo ≠ WU: OM 与 WU 经常差 1-8°C,绝不能用 OM 结算

    2. METAR 不能覆盖 WU: METAR 可能报更高值(瞬时峰值),但 WU 的 calendarDayMax 是结算依据

    3. 微信通知 PATH 问题: cron 环境找不到 openclaw,必须用绝对路径 /opt/homebrew/bin/openclaw

    4. WU Rate Limiting: 频繁抓取 WU 可能被限流,需要控制请求频率

    5. 过期合约: 最高温合约当地 16:00 后视为过期,最低温合约当地 10:00 后

    6. 早上相似 ≠ 下午相似: 湿度和太阳辐射可以让相同早晨温度的两天下午差 1.2°C+

    7. DuckDB 锁: 多个 cron 同时写入会锁库,read_only 模式可并发读




    🌐 Dashboard


    HK 专页: https://polymkt.lt.sopher.cool:4433/weather/hk


    6 个 Tab:

  • 📡 实时温度: 今日温度曲线 + 昨日对比 + 7日EMA + 气象参数 + 预测修正过程
  • 🗺️ 全站数据: 多站温度对比(天文台/内陆均值/沿海均值 + 范围带 + 7日EMA) + 全港排行
  • 🎯 预测分析: 概率分布 + 信号权重 + AI模型(FCN3) + 7天实际最高
  • 💰 交易记录: 埋伏/跟盘策略分组展示 + PnL 统计
  • 📊 回测: MAE/RMSE/命中率 + 每日误差图 + 策略 PnL
  • 💹 市场数据: 合约价格分布 + 价格走势 + 套利机会(实时价+置信度+LLM分析) + 持仓

  • 实时更新:

  • 温度: 每 60 秒轮询 /api/weather/hk/live (HKO one_json.xml)
  • 全量数据: 每 5 分钟刷新
  • 市场数据: 点击刷新按钮获取最新

  • 决策中心: https://polymkt.lt.sopher.cool:4433/weather/decision?city=hong-kong&date=YYYY-MM-DD




    🎯 香港预测策略详解


    核心预测模型 (hko_predict.py)


    21 信号加权集成 — 每 10 分钟更新,随时间推移动态调整权重


    
    预测最高温 = Σ(signal_i × weight_i) / Σ(weight_i) + bias_correction
    

    📡 实时信号 (10个)


    #信号说明权重特殊逻辑
    1current_max当前已达最高温15-50%午后递增,16:00后主导
    2inland内陆站回归预测20%先行指标
    3trajectory温度轨迹+进度比率14%
    4diurnal_curve7日日变化曲线预测10%
    5humidity_potential湿度驱动升温潜力6-15%<55%: +2.2°C, >75%: -0.8°C
    6warming_accel升温加速度检测5-12%vs历史同期速率
    7solar太阳辐射(实测)6-12%
    8sunshine阳光指数(Icon推算)7%
    9wind风向效应5%海风-0.8°C, 陆风+0.5°C
    10past_peak已过峰值锁定50%16:00后触发,压制其他信号

    📋 预报信号 (4个)


    #信号说明权重
    11forecastHKO官方预报(偏差修正)16-18%
    12weather_text天气描述NLP解析8%
    13rain_cooling降雨降温效应8%
    14warning天气警告(酷热/暴雨/雷暴)10%

    📊 基准+外部信号 (4个)


    #信号说明权重
    15climatology7日气候学均值+趋势8%
    16nwp_ensembleNWP 6模型集成12%
    17shenzhen深圳先行指标6-10%
    18early_aggressive早期激进预测(8-11点)10-25%

    📅 气象预报信号 (5个) — Open-Meteo 逐时预报 9-17h


    #信号数据影响规则权重
    19cloud_cover日间云量%≥80%: -1.2°C, ≥65%: -0.6°C, <40%: +0.4°C8%
    20forecast_radiation日间辐射 W/m²≥700: +0.8°C, ≥500: +0.2°C, <300: -1.0°C6%
    21rain_forecast降雨概率峰值%≥60%: -1.2°C, ≥40%: -0.6°C, ≥20%: -0.2°C6%
    22capeCAPE对流指数 J/kg≥1500: -1.5°C, ≥800: -0.6°C, ≥300: -0.2°C5%
    23forecast_humidity日间湿度预报%≥80%: -0.8°C, ≥70%: -0.3°C, <55%: +0.5°C5%

    📅 相似日信号 (1个)


    #信号说明权重
    24analog_day过去7天相似日加权预测8-12%

    多个 close match (distance < 0.3) 加权集成,权重 = 1/(similarity+0.05)。匹配数越多权重越高。


    LLM 推理信号 (llm_reasoning)


    #信号说明权重
    25llm_reasoningDeepSeek-R1 综合分析预测10-30%

    模型: deepseek-reasoner (DeepSeek-R1),配置在 config/llm_config.json


    输入: 全量实时数据 + 预报 + NWP + 历史 + 规则信号结果


    输出: 结构化 JSON(predicted_max, settlement, confidence_pct, reasoning, peak_passed, risk)


    权重调度:

  • 置信度 ≥80% → 30% 权重
  • 置信度 65-80% → 20%
  • 置信度 50-65% → 15%
  • 置信度 <50% → 10%
  • 如果 LLM 检测到峰值已过但规则未触发,额外×1.3

  • 缓存: 10分钟 TTL,避免重复调用(每次调用 ~60s)


    日志: data/hko/llm_predictions_YYYYMMDD.jsonl


    为什么重要:

    1. 解决规则信号冲突(当 17 个信号方向不一致时做因果推理)

    2. 识别异常(温度回落、突发天气变化)

    3. 理解语义(“主要多云偶有阳光” ≠ “晋天”)

    4. 果断决策(不会给 50/50,必须选边)


    温度回落信号 (temp_declining)


    #信号说明权重
    26temp_declining实时温度回落检测15-55%

    触发条件:

  • 强回落: 当前温度 比 max_since_midnight 低 ≥0.5°C(11点后)
  • 轻微回落: 低 ≥0.3°C(12点后)

  • 效果:

  • 压低其他乐观信号(-30%~-70%)
  • 收窄 uncertainty(-40%~-60%)
  • 减弱 bias_correction(到 10%~50%)
  • 核心洞察: 温度回落是比时钟更可靠的峰值检测器

  • 权重动态调度


    时段模式主导信号
    8-11点激进模式early_aggressive 25% + inland 20%
    12-14点均衡模式多信号集成 + llm_reasoning 20-30%
    14-16点收敛模式current_max 30%+ / temp_declining 触发则锁定
    16点后锁定模式past_peak 50%, 其他压至 30%



    天天温差对比 (strategy/hk_day_over_day.py)


    每 5 分钟运行,22 项指标全面对比今天 vs 昨天,结果追加到 hk_dod_YYYYMMDD.jsonl 快照。


    分类指标重要性
    🎯 核心HKO天文台最高温⭐ Critical
    📡 实时同时刻温度进度 / 全站最高High
    📋 预报HKO官方预报 / 昨日预报偏差High/Medium
    🤖 模型DLWP AI / NWP集成 / 日变曲线 / 相似日High/Medium
    🌡️ 气象湿度 / 辐射 / 气压 / 风Medium/Low
    🌍 外部深圳先行指标Medium
    📊 趋势7日均值偏离Medium
    📅 气象预报云量 / 辐射 / 降雨率 / CAPE / 湿度 / 综合影响High/Critical
    🌤️ 定性天气描述 / 警告Medium

    综合信号: 所有温度类指标自动投票,投票比 ≥70% → HIGH 信心


    5分钟快照字段: 温度(predicted/observed/current/station)、气象参数、模型信号、气象预报、相似日、概率分布


    走势图 (3个面板):

  • 图1: 温度线 (预测/实测/当前/全站/昨天 + 结算带)
  • 图2: 气象参数 (湿度/云量/辐射/雨率/风速, 三轴)
  • 图3: 模型信号 (综合/NWP/DLWP/日变/深圳/相似日 + 气象修正线)



  • 相似日分析 (strategy/hk_analog_day.py)


    从过去 7 天找气象指纹最相似的若干天 (distance < 0.3)。


    气象指纹 (10 维度)


    维度权重归一化范围说明
    max_so_far1.53°C同时刻已达最高 — 最重要
    humidity1.215%湿度 — 强影响蒸发降温
    temp1.03°C同时刻 HKO 温度
    solar1.0400 W/m²太阳辐射
    cloud_avg1.030%日间云量
    station_max0.83°C全站最高
    rain_prob_max0.830%降雨概率峰值
    pressure_trend0.82 hPa3h 气压变化
    min_temp0.63°C夜间最低温
    pressure0.53 hPa绝对气压

    相似度计算: distance = sqrt( Σ(w_i × (diff_i / scale_i)²) / Σ(w_i) )


    多匹配集成: 所有 distance < 0.3 的相似日都参与预测,按 1/(sim+0.05) 加权。每个相似日的预测 = 实际最高 + 30% × 那天预报偏差。


    前端展示: 所有 close match 都展示完整指纹对比表 + 候选日排名 + 交易启示




    数据源


    数据频率
    HKO 天文台实时温度/湿度/辐射/气压/风/预报/40+站10分钟
    Open-Meteo Forecast逐时云量/辐射/降雨/CAPE/湿度30分钟缓存
    Open-Meteo Archive历史实际温度 (全城市)按需
    DLWP (CPU)AI 天气模型 6h 步长6小时
    NWP (Open-Meteo)6 个数值预报模型集成每次预测
    深圳 (Open-Meteo)深圳实时+预报温度每次预测
    DeepSeek APILLM 市场分析按需

    Cron 调度


    任务频率脚本
    HKO 采集+预测10 分钟hko_data_fetcher.py + hko_predict.py
    天天温差对比5 分钟strategy/hk_day_over_day.py
    全城市套利扫描30 分钟weather_arb_scanner.py
    DLWP AI 预测6 小时DLWP pipeline

    文件结构


    
    strategy/
    ├── hk_day_over_day.py      # 天天温差对比 (每5分钟, 22项指标)
    ├── hk_analog_day.py       # 相似日分析 (10维指纹匹配)
    ├── day_over_day.py        # 全城市温差对比
    ├── HK_WEATHER_STRATEGY.md # 策略详细文档
    └── ...
    
    data/hko/
    ├── hko_latest.json          # HKO 实时数据
    ├── hko_prediction.json      # 最新预测结果 (21信号+权重)
    ├── hko_curve_YYYYMMDD.json  # 每日逐时曲线 (40+站)
    ├── hk_day_over_day.json    # 天天对比最新结果
    ├── hk_dod_YYYYMMDD.jsonl   # 5分钟快照时序数据
    ├── hk_analog_day.json      # 相似日分析结果
    ├── om_hourly_cache.json    # Open-Meteo逐时缓存
    └── dlwp_hko_latest.json    # DLWP AI预测
    





    反思与教训


    2026-04-21: 温度回落检测 — 模型不该给五五开


    背景: 4/21 13:55,HKO 天文台今日最高 28.7°C,当前温度已回落到 27.9°C(从峰值下降 0.8°C)。模型给出 29.0°C 预测,概率分布 28°C:50% / 29°C:50%。


    问题:

    1. 五五开等于没预测 — 模型的职责是做出判断,不是两边下注。50/50 的概率分布对交易毫无指导意义。

    2. 忽视了实时回落信号 — 天文台温度已经从 28.7 跌到 27.9(-0.8°C),这是一个极强的 "峰值已过" 信号,但模型没有检测。

    3. peak 检测逻辑太粗 — 原来只有 past_peak 信号在 current_hour > avg_peak_hour + 1.0 才触发(即 14.7 时之后),但实际上温度回落本身就是峰值已过的直接证据,不需要等到固定时间。

    4. 时间阈值是死的,温度趋势是活的 — 同样是 13:55,如果温度还在涨就该给 29°C 更高概率;如果已经在跌就该偏向 28°C。原模型不区分这两种截然不同的状态。


    解决方案: 新增 temp_declining 信号

  • 检测近 30-60 分钟内温度相对 max_since_midnight 的回落幅度
  • 回落 ≥0.5°C → 强信号(峰值大概率已过,max 锁定)
  • 回落 ≥0.3°C → 中信号(温度在降,上行空间有限)
  • 仍在上升或持平 → 不触发
  • 触发后,大幅提升 current_max 权重(相当于提前进入 "锁定模式"),压低其他乐观信号
  • 同时收窄不确定性(uncertainty),避免概率分布过于均匀

  • 核心洞察:

    温度回落是比时钟更可靠的峰值检测器。14:00 温度还在涨和 13:00 温度已回落 0.8°C,后者对 "峰值已过" 的证据强度远高于前者。

    预期效果:

  • 温度回落时,模型不再给五五开,而是明确偏向当前 max
  • 例如今天的情况:28.7 max + 回落 0.8°C → 结算 28°C 概率从 50% 提升到 ~75%
  • 仍保留小概率给更高温(下午放晴反弹的可能性),但不再是均匀分布



  • 此文档随系统演化持续更新。最后更新: 2026-04-21