研究文章
N / 260831

为什么一个 Polymarket 机器人必须学会“不交易”?

Polymarket Bot 的核心不只是判断 Up 或 Down。用公开回测中的 348 次 STOP 解释为什么 NO TRADE、市场环境过滤和候选否决是风险控制的一部分。

很多自动交易系统从一个很自然的问题开始:

下一场是 Up 还是 Down?

这个问题没有错。

但做得越久,我越觉得真正重要的问题其实是另一个:

这一场到底值不值得交易?

这两个问题只差一句话,却会把一个交易机器人变成完全不同的系统。


从二选一,变成三选一

最简单的 BTC 5分钟方向系统可能只有:

UP
DOWN

也就是说,每个窗口都必须给答案。

这种设计的隐含假设是:

市场里永远存在一个值得下注的方向。

我不认为这个假设成立。

在我们的系统里,一个候选信号形成以后,还会经过行情环境、内部状态、冲突和后置判断。

最终结果可以高层理解为:

KEEP
ADJUST
STOP

也就是:

交易原方向
调整当前候选
不交易

公开回测快照里,18,633 个历史信号中有 348 次最终 STOP,约占 1.87%。

这 348 次不是异常。

它们是系统正常输出的一部分。


为什么“有信号”不等于“有交易”

假设一个信号在过去通常有效。

到了某一个具体时刻,仍然可能出现:

  • 当前市场环境与这个信号历史上更适合的环境不同;
  • 局部结构在信号产生后发生了变化;
  • 多个候选方向发生冲突;
  • 数据完整性不足;
  • 同一类触发在短时间内过度集中;
  • 风险或执行条件不满足。

如果策略层只会说:

“我刚才看到 Up,所以现在仍然买 Up。”

那它其实没有重新回答:

“这个 Up 现在还值得相信吗?”

这也是我理解的 Signal ≠ Trade

信号是一个候选。

订单是通过完整约束之后的最终行为。


NO TRADE 不是“胆小”

很多人会自然担心:

如果 STOP 掉的交易最后本来会赢,不就亏了吗?

是的。

任何过滤器都会产生两类错误:

  1. 拦住原本会亏的交易;
  2. 也拦住原本会赢的交易。

所以 STOP 的目标从来不是:

把所有亏损都删除。

如果一个规则在回测中神奇地只删除亏损,从来不误伤盈利交易,我反而会非常警惕。

因为真实研究更常见的是权衡:

少做一些交易
↓
损失一部分正确机会
↓
但希望减少更糟糕的风险暴露

真正需要验证的是:

这个过滤在更长时间、不同市场阶段和完整策略里,是否仍然值得存在?


一个危险的思路:最近亏了,所以加一个 STOP

这件事在研究中非常常见。

你看到最近一段时间表现变差。

然后打开亏损样本。

很快就能发现某个共同特征。

于是写一个规则:

以后出现这种情况就不交易。

重新跑最近的数据:

结果变好了。

这一步极其诱人。

因为你已经知道哪些交易亏了,再去解释它们,几乎总能找到一个“看起来合理”的共同点。

但这不等于你发现了一个可以推广到未来的规律。

我们内部研究里就有过类似候选:它针对近期弱势设计,从局部窗口看有改善,但在完整策略的回撤、连续亏损和历史选择验收中没有达到上线标准。

最后的决定不是继续调参数,而是:

不进入生产版本。

对我来说,这种被否定的规则和最终留下来的规则一样重要。


为什么我们不会公开 STOP 的精确条件

可以公开的是:

  • 为什么需要 STOP;
  • STOP 在整个决策流程中的角色;
  • 它不是软件错误;
  • 如何评估一个过滤思路是否值得留下;
  • 历史总体 STOP 数量和比例。

不会公开的是:

  • 精确特征;
  • 指标组合;
  • 历史窗口;
  • 阈值;
  • 内部分支映射;
  • 动作边界;
  • 规则优先级。

原因很简单:

公开研究方法,不等于公开策略配方。

真正值得讨论的是“为什么要这样研究”,而不是把可复现条件完整贴出来。


STOP 的价值可能不体现在总胜率里

一个后置过滤是否有价值,不一定会让总胜率发生巨大变化。

因为它可能只命中非常少的一部分事件。

这类小规则的价值有时会体现在:

  • 最差周有没有改善;
  • 某些极端路径有没有收敛;
  • 连续亏损是否减少;
  • 某类明显异常的市场环境是否被排除;
  • 策略在不同年份是否更一致。

这也是量化研究里一个很重要的视角:

不要只看总收益变没变。

一条规则可能让总分略好,却把最大回撤变得更差。

也可能总分只改善一点,但极端路径更稳定。

它们不是同一种升级。


为什么“每场都交易”听起来反而让我不安

BTC 5 分钟市场每天会不断产生新窗口。

如果一个系统被设计成每个窗口都必须下注,它实际上是在假设:

无论市场状态如何,我永远有 edge。

这是一个非常强的假设。

我更愿意接受另一种系统行为:

没有足够确定的候选
→ 跳过

候选冲突
→ 跳过

状态没准备好
→ 跳过

风险条件不满足
→ 跳过

执行条件不满足
→ 跳过

少交易不是目的。

选择性才是目的。


一个好 Bot 的目标不是“更多预测”

自动化很容易给人一种错觉:

既然程序可以 24/7 跑,那就应该尽量多做交易。

但计算机最有价值的地方恰恰是它可以机械执行“什么都不做”。

人盯着行情时很容易因为无聊、FOMO、连续亏损后想追回,或者连续盈利后过度自信,而降低入场标准。

程序不需要这样。

如果我们把“不交易”定义成合法输出,它就可以严格执行同一套约束。

这比“24 小时不停下注”更接近我理解的自动交易价值。


公开回测里的 STOP

在 2026-09-01 的公开历史快照里:

Historical signals  18,633
Executed orders     18,285
STOP                348
STOP rate            1.87%

完整报告:

Public Backtest Report

如果你只看 18,285 笔已经执行的结果,很容易忽略前面还有一层:

并不是每个信号都应该变成订单。

这层差异,对我来说比再加一个指标更重要。

相关阅读:

一个规则最近表现很好,我为什么没有把它放进 Polymarket Bot?

项目:

Polymarket BTC 5m Bot

本文仅用于技术研究、教育和信息记录,不构成投资、交易或财务建议。STOP、风控和过滤机制只能限制风险,不能消除亏损。