Skip to content

Latest commit

 

History

History
138 lines (109 loc) · 7.72 KB

File metadata and controls

138 lines (109 loc) · 7.72 KB

Market Maker Env 配置说明

这份说明对应当前轻量版 GTC/PostOnly market maker 主路径。主策略目标是 maker 双边挂单、避免 taker cross、尽量保留队列位置。

推荐最小配置

当前 .env.env.example 只保留主策略需要频繁确认或调参的变量。代码里仍有少量旧工具/实验模式变量的默认值,但不建议放进主 .env,避免互相影响。

PK=your_private_key_here
FUNDER_ADDRESS=your_polymarket_wallet_address
SIGNATURE_TYPE=2

POLYMARKET_CLOB_HOST=https://clob.polymarket.com
CHAIN_ID=137

MARKET_SOURCE=env
CONDITION_ID=
TOKEN_ID_YES=
TOKEN_ID_NO=

DRY_RUN=true
ORDER_NOTIONAL_USDC=5
REFRESH_INTERVAL_SECONDS=8
MIN_PRICE=0.03
MAX_PRICE=0.97

MAX_MARKET_EXPOSURE_USDC=25
MAX_TOKEN_EXPOSURE_USDC=30
MAX_GLOBAL_EXPOSURE_USDC=80
INVENTORY_SKEW_THRESHOLD_USDC=18
INVENTORY_SKEW_BPS=60
STOP_LOSS_PCT=12
TAKE_PROFIT_PCT=8
MAX_MARKET_LOSS_USDC=8
MAX_MIDPOINT_MOVE_BPS=350
CLOSE_ONLY_HOURS_BEFORE_END=24
CLOSE_ONLY_ON_GAME_START=true
RISK_OFF_AFTER_STOP=true
EMERGENCY_EXIT_ENABLED=true
EMERGENCY_EXIT_LOSS_PCT=6
EMERGENCY_EXIT_MIDPOINT_MOVE_BPS=800
EMERGENCY_EXIT_IMBALANCE_THRESHOLD=0.75
EMERGENCY_EXIT_MAX_SHARES=1000000000

DIRECTIONAL_SKEW_FACTOR=0.05
PREDICTION_LATENCY_MS=180
PREDICTION_EDGE_BPS=120
MIN_PREDICTION_CONFIDENCE=0.35
ORDERBOOK_IMBALANCE_LEVELS=3

CANCEL_ON_START=true
ORDER_TYPE=GTC
POST_ONLY=true
LOG_FILE=logs/market_maker.log

账户与连接

  • PK:钱包私钥。DRY_RUN=false 时必填。不要提交到 git。
  • FUNDER_ADDRESS:Polymarket proxy/funder wallet 地址。实盘签名和下单会用到。
  • SIGNATURE_TYPE:Polymarket CLOB 签名类型。你当前使用 1,如果认证失败再按账户类型调整。
  • POLYMARKET_CLOB_HOST:CLOB API 地址,生产环境保持 https://clob.polymarket.com
  • CHAIN_ID:Polygon 主网是 137,一般不要改。

市场选择

  • MARKET_SOURCE=env:主策略推荐固定使用 env 手动指定市场,减少自动选市场的不确定性。
  • CONDITION_ID:目标市场 condition id。用于撤该市场订单和查询市场信息。
  • TOKEN_ID_YES / TOKEN_ID_NO:YES/NO outcome token id。推荐显式填写,避免自动解析错市场。

说明:QUESTION 只是人类备注,代码不读取,所以已从 .env 移除。需要备注时建议写到单独笔记或 commit message。

运行规模

  • DRY_RUNtrue 只打印拟挂单;false 实盘下单。改成实盘前先确认市场、token、风控。
  • ORDER_NOTIONAL_USDC:单笔目标订单名义金额。资金小或盘口薄时建议小一点。
  • REFRESH_INTERVAL_SECONDS:主循环间隔。太小会更频繁查询、撤换和触发 rate pressure;太大会降低响应速度。
  • MIN_PRICE / MAX_PRICE:最终报价硬边界。防止异常预测把订单打到极端价格。

风控

  • MAX_MARKET_EXPOSURE_USDC:单市场最大持仓风险。达到后不再新增 buy quote。
  • MAX_TOKEN_EXPOSURE_USDC:单 outcome token 最大持仓风险。防止单边库存过大。
  • MAX_GLOBAL_EXPOSURE_USDC:机器人视角的全局风险上限。
  • INVENTORY_SKEW_THRESHOLD_USDC:某 token 持仓超过该值后,报价 reason 会进入库存偏斜状态。
  • INVENTORY_SKEW_BPS:库存越多,买价越保守的强度。
  • STOP_LOSS_PCT:单边仓位回撤超过该比例时触发 risk exit / close-only 逻辑。
  • TAKE_PROFIT_PCT:单边仓位盈利超过该比例时优先挂卖单退出。
  • MAX_MARKET_LOSS_USDC:当前市场未实现亏损超过该美元数时进入 close-only。
  • MAX_MIDPOINT_MOVE_BPS:midpoint 单轮跳变过大时暂停新买单,避免赛况/新闻冲击。
  • CLOSE_ONLY_HOURS_BEFORE_END:临近结束前只减仓不开新仓。填 0 表示关闭该规则。
  • CLOSE_ONLY_ON_GAME_START:体育市场使用 game_start_time 时,是否在开赛后禁止新买单。默认 true 更安全;如果你明确要做 live sports market,设为 false
  • RISK_OFF_AFTER_STOP:触发止损后是否保持 risk-off。true 更保守;false 会更快恢复。
  • EMERGENCY_EXIT_ENABLED:是否启用紧急 maker 退出。触发后不再给该 token 新增 buy,只挂 aggressive maker sell。
  • EMERGENCY_EXIT_LOSS_PCT:单 token 持仓亏损达到该比例时触发紧急退出。
  • EMERGENCY_EXIT_MIDPOINT_MOVE_BPS:midpoint 单轮向持仓反方向移动达到该 bps 时触发紧急退出。
  • EMERGENCY_EXIT_IMBALANCE_THRESHOLD:盘口深度强烈逆向时触发紧急退出,范围 01
  • EMERGENCY_EXIT_MAX_SHARES:单次紧急退出最多挂出的 shares 数。默认很大,等于尽量全仓退出;想拆单可调小。

报价与预测

  • DIRECTIONAL_SKEW_FACTOR:根据 YES/NO 市场信念调整报价的强度。当前建议 0.05。过大容易让报价偏离盘口,导致挂不上或成交质量差。
  • PREDICTION_LATENCY_MS:预测窗口。你当前实测为 180,所以保持 180
  • PREDICTION_EDGE_BPS:order book imbalance 对预测价格的影响强度。
  • MIN_PREDICTION_CONFIDENCE:低于该置信度时预测器回到当前 midpoint,不主动偏移。
  • ORDERBOOK_IMBALANCE_LEVELS:计算盘口不平衡时读取前几档深度。

当前默认预测器会记录 horizon=180ms、OBI、trade flow、volatility 和 edge,方便从日志判断预测是否过强或过弱。

下单行为

  • CANCEL_ON_START:启动时撤掉该市场旧订单。实盘建议保持 true,避免继承旧报价。
  • ORDER_TYPE=GTC:主策略。订单持续挂在簿上等待自然成交。
  • POST_ONLY=true:强制 maker。若报价会 cross book,交易所拒单,bot 记录 [POST_ONLY],不会当成成功挂单。
  • LOG_FILE:日志文件路径。

订单同步现在由 order_reconciler.py 负责:目标价格和数量不变时保留原 GTC 单;只有订单缺失、变价、变数量或出现 stale 订单时才撤换。

已移出主 .env 的变量

  • PRICE_SPREAD_BPS:旧 spread 报价参数;当前 GTC/PostOnly 主路径使用预测 fair value、库存偏斜和 tick-safe 限价。
  • FOK_PRICE_BUFFER_BPS / FOK_MIN_EDGE_BPS:只属于实验 FOK/taker 方案;当前主策略不使用。
  • CANCEL_UNFILLED_AFTER_MS:FOK 或短 TTL 思路的变量;当前 GTC 挂单通过 reconciliation 管理。
  • COUNT_EXISTING_POSITIONS_IN_GLOBAL_LIMIT:高级风控开关。默认代码仍支持,但主配置采用 bot exposure 口径,减少和账户旧仓位互相干扰。
  • AUTO_SELECT_REWARD_MARKET / PREFER_SPORTS:自动选 rewards 市场用。主策略推荐手动指定 token,避免跑错市场。
  • GOOGLE_SHEET_WORKSHEET / GOOGLE_SHEET_LIMIT / SPREADSHEET_URL:Google Sheet/旧工具链使用;当前轻量主策略不需要。
  • BROWSER_ADDRESS:旧工具或 fallback 可读;当前主策略使用 FUNDER_ADDRESS
  • CLOB_API_KEY / CLOB_SECRET / CLOB_PASS_PHRASE:可选 L2 credentials。当前实盘会用 PK 自动 derive,通常不需要放进 .env
  • QUESTION:人类备注,代码不读取。

变量之间最容易互相影响的地方

  • ORDER_TYPEPOST_ONLY:主策略必须是 GTC + trueGTC + false 可能吃单;FOK 是实验路径。
  • ORDER_NOTIONAL_USDCMAX_MARKET_EXPOSURE_USDCMAX_TOKEN_EXPOSURE_USDC:单笔金额不能大到很快撞上风险上限。
  • STOP_LOSS_PCTMAX_MARKET_LOSS_USDCRISK_OFF_AFTER_STOP:三者共同决定何时停止加仓、是否长期停机。
  • DIRECTIONAL_SKEW_FACTORINVENTORY_SKEW_BPSPREDICTION_EDGE_BPS:三者都会移动目标价格,调大时要一个一个调,不要一起加。
  • REFRESH_INTERVAL_SECONDS 和 order reconciliation:间隔越短,报价越敏感;reconciliation 会减少不必要撤单,但预测变化过大仍会触发换价。