2026-05-05 Weather MM 修改记录


问题修复


1. BUY NO 按钮不出现

  • 原因: 前端 hasMM = q._hasMM && q.fair_price > 0,state 文件没有当天 quotes 导致 _hasMM=false
  • 修复:
  • - hasMM 改为 q._hasMM(去掉 fair_price > 0 条件)

    - 后端 api_mm_weather_status 自动补当天缺失的 orderbook 合约


    2. 仿真 10x 额度独立

  • weather_quotes.py: 新增 SIM_SIZE_MULTIPLIER = 10_calculate_sizes() 接受 simulation 参数
  • weather_mm_runner.py: calculate_quote() 传入 simulation=sim_mode
  • 关键:仿真模式下跳过 risk_mgr.approve_quote()risk_mgr.record_fill(),避免污染实盘 risk state

  • 3. CLOB 盘口错误覆盖 Gamma 价格

  • 原因: 明天 (05-06) 的 23°C 合约 outcome_price=0.0045 覆盖了今天 (05-05) 的 0.775
  • 修复:
  • - Runner 只交易今天合约(target_date == today filter)

    - CLOB 价格加 sanity check:只在与 Gamma 偏差 <50% 时才覆盖

    - 优先使用 event-level outcome_price(零额外 API 调用)


    4. 仿真不受交易时段限制

  • can_tradesim_mode=True 时强制为 True,跳过小时检查

  • 5. Runner stopped 时仍保存 snapshot

  • is_stopped() 时仍拉取市场数据并保存 per-minute snapshot,供回测查看

  • 6. 回测页面实时显示

  • backtest-snap?date=today 返回实时仿真数据(paper trader + snapshots + quotes)
  • 30s 文件缓存避免重复计算
  • 只读最近 3 小时 snapshot 文件 + 500 行 quotes
  • 修复:stats-grid DOM 元素、fills 显示 YES/NO token、时间提取

  • 7. Paper trader NO 侧成交模拟

  • simulate_quote_fills() 新增 sell_biased 模式下 BUY NO 的成交判断
  • NO 市场价格从 YES 推导(NO=1-YES)

  • 架构要点

  • 仿真和实盘完全独立:独立 risk state、独立 paper trader state
  • 回测数据流:runner scan → paper trader fill → trades.jsonl + snapshots → web API → 图表
  • 盘口价格优先级:event outcome_price > Gamma API > CLOB (sanity checked)