预测最高温时刻 - 策略更新总结
已实现的功能
1. 温度走势图表和预测 API
/api/weather/data/temp-trend?city=<城市名>2. 前端温度走势图表
https://polymkt.lt.sopher.cool:4433/weather/data- 今日温度曲线(实测 + 预报)
- 7天平均曲线 + 范围带
- 预测最高温时刻标记
- 当前温度标记
- 当前温度
- 今日已观测最高温
- 预测最高温
- 预测最高时刻
- 7天平均最高温
3. 核心策略更新 (weather_arb_scanner.py)
新增函数:
def get_predicted_peak_hour(lat, lon, tz, days=7):
"""获取基于过去N天平均模式的预测最高温时刻"""
# 返回: (predicted_hour, confidence, avg_curve, today_curve)
更新函数:
def analyze_temp_curve(today_hourly, now_str, tz_name,
all_clouds, all_precip, all_humidity,
all_wind, all_codes, all_times,
lat=None, lon=None): # 新增经纬度参数
主要改进:
1. 时间判断逻辑更新:
- 旧: 固定判断下午2-5点 (local_hour >= 14, local_hour >= 15, etc.)
- 新: 基于预测最高温时刻 (hours_to_peak = predicted_peak_hour - local_hour)
2. 新增返回字段:
- predicted_peak_hour: 预测的最高温时刻 (0-23)
- peak_prediction_confidence: 预测置信度 (0-1)
- hours_to_predicted_peak: 距离预测峰值的小时数
3. 策略影响:
- 更准确地判断温度是否已过峰值
- 提供量化的"距离峰值时间"信息
- 支持动态交易策略调整
4. 其他策略文件更新
weather_paper_trader.py:
Predicted peak hour, Hours to predicted peakpolyweather_scraper.py:
策略应用示例
交易策略调整:
# 基于预测最高温时刻的策略
hours_to_peak = curve_analysis.get('hours_to_predicted_peak', 0)
if hours_to_peak > 2:
# 距离峰值还有2小时以上 → 温度可能继续上升
strategy = "买入较高温度合约"
elif hours_to_peak > 0:
# 接近峰值 → 谨慎操作
strategy = "部分获利了结"
else:
# 已过峰值 → 温度可能下降
strategy = "卖出较高温度合约"
概率估计优化:
estimate_probability() 函数现在使用更准确的峰值判断predicted_peak_hour 和 peak_prediction_confidence测试验证
深圳测试结果:
Predicted peak hour: 13:00
Confidence: 0.86
Hours to predicted peak: -2 (当前时间15:00,已过峰值2小时)
Peak passed: True
Confidence: 0.72
后续优化方向
1. 季节性调整: 考虑季节对每日温度曲线的影响
2. 天气条件加权: 云量、降水对峰值时间的影响
3. 机器学习模型: 使用历史数据训练更准确的预测模型
4. 实时更新: 结合实时观测数据动态调整预测
5. 多城市优化: 不同气候类型城市的个性化预测
部署状态
✅ 已完成部署:
🔄 待更新:
polyweather_scraper.py 的实时峰值判断性能考虑
1. API调用: Open-Meteo API 免费版足够使用
2. 缓存: 10分钟缓存减少API调用
3. 计算复杂度: O(24×7) 简单计算,性能无影响
4. 数据新鲜度: 实时数据 + 7天历史,足够准确
🐛 Bug Fix: progress_prediction 覆盖真实峰值 (2026-04-27)
问题描述
峰值已过场景下,progress_prediction(内陆站外推值)覆盖了 LLM 的真实峰值判断,导致预测输出错误。
案例
错误表现
| 字段 | 错误值 | 正确值 |
|---|---|---|
predicted_max | 28.0 | 27.9 |
settlement_pred | 28 | 27 |
| 27°C edge | -99.45% | +1.5% |
| 28°C action | HOLD (edge +99%) | ABANDON |
根因
预测管线中 progress_prediction 外推信号的权重在峰值已过场景下未被压制,覆盖了:
1. LLM 的真实峰值判断(peak_passed=True)
2. 实际观测值(hko_max_midnight=27.9°C)
3. 日变曲线下降趋势(14-16时 EMA 从 26.6→26.1°C)
修复方案
当 peak_passed=True 且 hko_max_midnight < progress_prediction 时:
peak_passed 判断应有权否决 progress_predictionpredicted_max = min(observed_max, progress_prediction) when peak passed验证
重新触发预测后,系统正确输出 predicted_max=27.9, settlement=27。
监控指标
1. 预测准确率: 预测vs实际峰值时间差异
2. 策略表现: 使用预测信息的交易策略回报率
3. API可用性: Open-Meteo API 成功率
4. 用户使用: 温度走势图表的访问量