基于 Polymarket 官方接口的温度市场交易项目。当前主路径是新的温度引擎,旧 weather/* 代码保留为冻结参考实现。
- 新温度引擎代码:
src/pm_path_arb/temperature/ - 新温度入口:
scripts/run_temperature_paper.pyscripts/run_temperature_paper_daemon.pyscripts/run_temperature_live.pyscripts/run_temperature_live_daemon.pyscripts/run_temperature_tuning.py
- 旧实现仍在:
src/pm_path_arb/weather/src/pm_path_arb/app/legacy_weather_*scripts/run_live*.py
- discovery 以全市场扫描为主,
POLYMARKET_TEMPERATURE_TARGET_CITIES只是可选过滤器,POLYMARKET_TEMPERATURE_BLACKLIST_CITIES用于禁止黑名单城市产生新下单。 - runtime 现在只参与事件本地时区下的当日市场,不再让 future-day 事件进入主流程。
- runtime 会评估
buy_yes和buy_no候选,但 scheduler 当前只会真正提交风险批准后的buy_no入场 intent。 - 次日
buy_no的专门逻辑和重锚定状态已经移除。 - 执行层不是“严格 maker-only”:
buy_yes入场仍走被动报价;- 普通
buy_no往往直接挂在best_ask,宽价差时才退到best_bid; - breakout / pullback
buy_no可以用best_ask或best_ask + tick。
- 仓位大小当前主要靠
POLYMARKET_TEMPERATURE_ORDER_SHARES、...BREAKOUT_ORDER_SHARES、...PULLBACK_ORDER_SHARES控制。 - notional cap / daily loss / bucket count 这些字段仍可配置,但当前主风险审批并不把它们作为入场阻断条件。
- live reconciliation 以交易所状态为准:
- 不一致会记录;
- 本地状态会按交易所观察结果重建;
- 不会因为 mismatch 自动暂停交易。
- 真实 CLOB 下单适配:
src/pm_path_arb/temperature/execution/live.py - 已有能力:
CREATECANCELREPLACEEXIT- live fill / order / portfolio reconciliation
- settlement / redeem watcher
- live daemon maintenance / breakout watch
- 仍未补完:
- 温度专用的手动 redeem / merge CLI
- 新温度策略统一使用
POLYMARKET_TEMPERATURE_* - 最关键的配置组:
- universe:
TARGET_CITIES、BLACKLIST_CITIES、GLOBAL_TOP_K_BUCKETS、MAX_DAYS_AHEAD - forecast:
FORECAST_PROVIDERS、FORECAST_MIN_QUORUM - execution:
T1_SECONDS、MAX_QUOTE_AGE_SECONDS、BUY_YES、BUY_NO - sizing:
ORDER_SHARES、BREAKOUT_ORDER_SHARES、PULLBACK_ORDER_SHARES - runtime:
MODE、DECISION_LOG_JSONL、SNAPSHOT_DIR、KILL_SWITCH_FILE
- universe:
- 运行契约文档从
docs/README.md开始。 - 以当前代码行为为准的核心文档:
docs/product-scope.mddocs/strategy-spec.mddocs/execution-policy.mddocs/risk-policy.mddocs/config-contract.mddocs/runtime-modes.md