Polymarket 量化交易实战(六):产品决策复盘

96 阅读2分钟

最痛苦的不是写代码,而是推翻自己的想法。

在开发迭代中,我做了三个关键决策。每一次,都意味着要把之前的代码推倒重来。

决策一:放弃“跟单”,拥抱“做市”

Gold Digger vs Shovel Seller

最初的幻想:
预测市场是信息不对称的。只要盯着胜率高的巨鲸(Smart Money),他们买啥我买啥。

现实的打脸:

  1. 滑点杀手:巨鲸一笔大单把价格拉高 20%。我作为 Follower,进场就是高位。
  2. 成本劣势:Taker 承担滑点损失,在 15 分钟 Crypto 市场还要付手续费。

转向 Maker:
V3 版本开始,我决定 不预测方向
我在 Yes 和 No 两边同时挂买单(Bid)。

  • 逻辑:预测市场流动性差,买一卖一之间有巨大的价差(Spread)。
  • 盈利:我赚的是 流动性溢价

结论:在淘金热里,不做淘金者,做卖铲子的人。

决策二:放弃“预测模型”,转向“库存管理”

Inventory Control Logic

复杂的归宿是过拟合。
中期我曾引入 BTC 价格作为信号,试图预测市场走势。
代码写了一大堆,结果发现:预测市场要么滞后,要么过度反应。

简单的力量:
V5 版本删除了所有预测逻辑,只保留了 库存管理(Inventory Management)

# 核心逻辑比任何模型都简单
if pos_yes > max_pos_high:
    allow_buy_yes = False # 仓位重了就别买了

这个简单的 if,比任何 LSTM 模型都有效。它保证了我永远维持在 Delta Neutral(中性)状态。

决策三:禁用 HTTP 回退

Fail-Fast(快速失败)。

在 Web 开发中,WebSocket 断了会自动降级到 HTTP。
V2 版本我也这么做了。

但在实盘中,这是个坑。
WS 断开往往是市场波动最剧烈的时候。此时 HTTP 的数据有 2 秒延迟。
基于 2 秒前的价格挂单,等于闭眼开枪。

V5 版本我做了一个激进决定:Check Freshness or Die

if (src != "ws") or (now - ts > 5000):
    logger.warning("Data stale, SKIP TICK")
    return # 宁愿不交易

结论:不做单(Missed Opportunity)永远优于做错单(Bad Trade)。

SO

这三次决策,本质上是认知的升级:

  1. 博弈对手 转向 服务市场
  2. 预测未来 转向 管理当下
  3. 追求可用性 转向 追求准确性

删掉那些花哨的代码,留下的才是真正的 Alpha。