构建Polymarket BTC交易引擎
我的目标从来不是成为一个活跃的交易者。而是学习和探索一个真正让我感兴趣的领域,并写一些像这样的文章让其他人也能从我的经验中学习。
一键发币: x402兼容 | Aptos | X Layer | SUI | SOL | BNB | ETH | BASE | ARB | OP | Polygon | Avalanche
如果你一直在关注我之前发表的文章,那你应该知道我对加密货币市场产生了兴趣,并开始投资——不只是在加密货币领域,也包括其他金融市场。我在Polymarket上的交易之旅非常有趣,尤其因为我是一个相信长期价值投资的人。我的方法一直是定期定额投资或一次性买入我什么样的资产,然后让收益随着时间推移而复合增长。
我读过了伯顿·G·马尔基尔的《漫步华尔街》和本杰明·格雷厄姆的《聪明的投资者》,这两本书教会了我投资的真正含义。它们的核心思想都是:贪婪和情绪化决策是你作为投资者最大的两个敌人。通过历史案例,作者展示了这些力量如何破坏最合理的投资决策。它们还指出,专业管理基金和指数基金的长期回报大致相同,甚至某些比较显示,主动交易和被动指数投资的货币收益在长时间内趋于一致。交易可能带来短期收益,但当情绪和贪婪占据上风时,一个错误就可能抹去三个月的利润。教训永远是一样的:投资是一场长跑。
那么问题来了,为什么还要做交易?因为人性贪婪。每个人都想快速赚钱,没人愿意等。今天的比特币市场就是一个很好的例子。比特币一直在65000美元到70000美元之间波动,每当它突破70000美元后,通常会出现剧烈拉回。大家常常挂在嘴边的"低买高卖",但当价格真的下跌时,大部分人又会因为害怕而不敢出手。相反,他们在价格上涨时跟风买入,等比特币冲到70000美元以上,结果突然回调,投资就变成了浮亏。同样的剧本在黄金和股市也不断重演。人们在价格上涨时蜂拥而入,价格下跌时就怪市场。现实就是:市场一直都是这样运作的,一些人的错误决定了另一些人的利润。
交易中的道理也一样。我在YouTube上见过太多把日内交易当纯粹赌博的例子。如果你真的有某种信息优势或者内部消息,那另当别论。但仅仅靠学习蜡烛图、凭直觉做多做空,这可不是什么能带来长期收益的策略。这也是为什么你总能看到类似"我在日内交易中亏掉了XX钱"的视频。这恰恰就是格雷厄姆警告过你不要踏入的陷阱。
1、我的旅程
几个月前,我偶然发现了像Kalshi和Polymarket这样的预测市场。一开始我以为它们只是赌博网站,但在看了"Art of Problem" YouTube频道关于预测市场运作和Polymarket如何工作的视频后 ,我的看法彻底改变了。
预测市场很多时候是一个二元市场,你对某个问题的结果下注。比如说"阿森纳能赢四分之一决赛吗?"有两个结果:"YES"和"NO"。如果YES的价格是0.70,NO的价格是0.30,这意味着YES结果的概率是70%。如果你也相信YES,你就投入资金买这一方的份额。如果你判断对了,每个份额支付1.00,你赚取的差价就是利润(在这个例子中是每个份额0.30的利润)。如果你判断错了,你的份额归零,你会失去全部投资。
有趣的是,这些价格完全由集体意见驱动。当你买入YES这一方的份额时,你就是在跟NO那一方的人对赌,你相信自己知道一些他们不知道的信息。这本质上是一种博弈论:你的决策会影响其他参与者的观点,随着时间推移,市场会逐渐向正确结果收敛。我们在内幕交易中已经见过这种情况。最近的一个例子是关于委内瑞拉总统被捕的事件:在事件真正发生前的三到四天,有个"巨鲸"在YES结果上下了一个巨大的赌注,赌美国会对委内瑞拉采取行动并逮捕其总统。当这个赌注出现时,其他人注意到了,迅速把仓位调整到YES这一方,推动了YES份额价格的上涨。
很长一段时间里,Polymarket成了我获取地缘政治和全球事件新闻信息的主要来源。我当时还没有在Polymarket上做交易,只是在观察预测市场走势与黄金、比特币和股市之间的关联。我用这些信号来买入黄金并对冲更广泛的市场波动。这很有趣,直到我接触到比特币的5分钟涨跌市场。
2、比特币5分钟市场
在Polymarket上,有针对比特币、以太坊、Solana和瑞波的5分钟预测市场。每个市场都有一个目标价格叫做"击败价"。如果你能正确预测在5分钟窗口期结束时,价格会高于还是低于这个目标价,你就赢了。听起来很简单,但这种简单只是个假象。比特币是一种高波动性资产,5分钟的时间窗口对于RSI、MACD或EMA等传统指标来说,间隔太短暂,无法可靠地预测方向。时间窗口可能看起来很短,但当份额价格大幅下降而你又无法解释原因时,你就会开始更仔细地思考这些市场到底是如何运作的。
我对此产生了极大的兴趣,因为我每天都关注比特币价格走势,而且我认为自己能找到某种模式来获得优势。这原本只是一个有趣的实验,后来变成了严肃的项目。部分吸引我的是Polymarket背后的技术。它内部使用区块链进行结算,链下订单撮合以提高速度,并利用智能合约管理整个市场的生命周期。
我想知道Polymarket是如何创建这些市场合约的,条件代币框架是如何运作的,当你购买份额时你的USDC会发生什么,为什么在购买后份额不能立即卖出,击败价从哪里来的,以及谁来决定结果是上涨还是下跌。我想探索区块链上的交易是如何运作的,并深入了解Polymarket的内部机制,因为你要认真对待这个平台的话,就需要了解交易的每一步都发生了什么。
3、Polymarket的技术内幕
经过对Polymarket内部机制的深入研究,以下是一切如何运作的。从根本上说,Polymarket运行在Polygon上,这是一个以太坊Layer 2网络,使得交易成本可以忽略不计。当一个二元市场被创建时,Gnosis条件代币框架处理核心机制。对于你锁定到合约中的每一美元USDC,它会铸造两个条件代币:每个结果各一个,比如上涨和下跌。这些代币遵循ERC-1155标准,这意味着一个智能合约管理所有仓位的余额。一个完整的代币集合(一个上涨和一个下跌)总是可以兑换正好是1.00 USDC,这是维持价格理性套利的基本约束。
说到市场结算,Polymarket最初依赖UMA的乐观预言机来进行基于事件的结算。UMA采用乐观模型:有人提议一个结果,它就被接受为事实,除非有人在挑战窗口期内提出异议。如果提出异议,它就会升级为UMA代币持有者之间的去中心化投票来确定正确结果。这对于像选举结果这样主观的或基于事件的问题很有效,但对于每五分钟结算一次的比特币价格市场,你需要更快、更客观的东西。这就是Chainlink发挥作用的地方。对于比特币5分钟市场,Polymarket使用Chainlink价格反馈,它从多个交易所聚合比特币价格并传递到链上。结算是自动且无需信任的:智能合约在窗口期结束时读取Chainlink反馈,与击败价进行比较,并在没有人工参与的情况下结算市场。
交易层同样很有意思。Polymarket不像大多数DeFi平台那样使用AMM(自动做市商)。相反,它使用混合的中心化的限价订单簿(CLOB)。当你下单时,它会到达链下匹配引擎,该引擎配对兼容的买卖订单。双方使用EIP-712类型签名对他们的订单进行签名,然后配对的订单被提交到Polygon上的CTF Exchange智能合约进行原子的链上结算。这就是订单生命周期变得清晰可见的地方:匹配后,交易被提交到区块链(已匹配),等待被包含在区块中(已挖矿),最终获得足够的区块确认(已确认)。这也是份额在购买后立即无法卖出的原因。你的购买需要经过这个完整的链上结算周期,代币才会出现在你的余额中,并可用于新的订单。这种混合设计让你在订单撮合上获得中心化交易所的速度,同时保留区块链结算的安全保障,其中每一笔交易都是可验证且非托管的。
4、交易引擎
我知道我需要构建一个自动化交易机器人,因为人类不应该参与这个过程。情绪会介入并导致比任何算法都多的错误。我想围绕我发现的模式构建一个系统,一个能代表我交易的脚本。如果我输了,那纯粹是因为我的算法没有起作用,而不是因为情绪化的决策或第三方干扰。
一位好朋友告诉我,订单簿永远是这类市场交易的真实来源。所以我开发了我的第一个交易引擎,名叫"晚入场",它是事件驱动的。想法是在终端中显示订单簿并持续更新,通过订阅Polymarket的订单簿WebSocket,更新是实时的,没有延迟。我还想尽量减少API调用,并尽可能依赖WebSocket,以减少下单时的延迟。关于Polymarket有一点值得注意的是,没有市价单的概念。一切都是限价单。当你尝试通过SDK创建市价单或通过UI购买时,它实际上会在该方最优卖价处下一个限价单。我想保持API调用最小化,并尽可能让WebSocket驱动交易流程。脚本的初始版本看起来像这样,

终端视图显示了实时的订单簿覆盖和实时更新。我曾经盯着它看了好几个小时,试图找出模式并观察人们对价格波动的反应。我从多个来源获取比特币价格,比如币安、Coinbase和Chainlink本身,来看它们之间的差异如何影响订单簿深度和定位。
这持续了几周,我把引擎构建为事件驱动系统。有一个组件负责发送何时进入市场的信号。我使用RSI、ATR和跨来源价格差异等指标来检测巨鲸抛售或拉盘并触发买入信号。然后引擎会下单,另一个组件会监控仓位直到市场时段结束。它设置了必要的止损,识别钟形曲线模式,过滤掉虚假信号,并且只在止损被触发时退出。
从表面上看这种方法似乎奏效了,95%的情况下确实如此。但那剩下的5%,我损失了一大笔钱。那时我才恍然大悟:目标不应该是非要等到市场结算时才卖出。一旦你有适当的利润,你就卖出并退出。这些市场有时是不可预测的,所以即使今天有效的策略,明天也可能失效。
我的早期引擎有几个根本性的局限。它无法执行买卖策略。它纯粹是基于信号的:只买一次,持有到期,中间不卖。我还需要一个模拟系统,可以用模拟钱包针对真实市场进行测试。我在迭代策略时承受不起亏损,所以我需要一个模拟真实世界条件的模拟环境:延迟、部分成交、意外的订单取消,以及由于购买后需要链上确认而无法立即卖出的限制。所有这些都必须被考虑进去,这样当我编写策略并测试时,我可以相信模拟中有效的策略在生产环境也会有效。
5、与Claude一起规划新引擎
我不知道从何开始,也不知道如何让引擎具有可扩展性。想法很简单:你写一个策略,引擎帮你交易。我用Claude Code (Opus 4.6) 来规划引擎架构,重点是如何让它可扩展以及模拟如何工作。我必须说,结果让我印象深刻。我使用 Plannotator 插件与Claude协作,它提供了一个清晰的界面,你可以阅读计划并给代理反馈。经过几轮反复沟通,我们达成了一个我有信心的最终架构。
新引擎基于生命周期。你总是从未来的市场时段开始,至少比当前时段提前一个,这就是为什么我把它命名为"早鸟"。在任何时候你都不能在当前市场中启动引擎。每个市场都是一个生命周期:它经历 启动 -> 运行 -> 结束 的阶段。引擎的工作是编排这些市场生命周期。每个市场在被创建时只运行一种策略。你传入一个参数指定你想运行哪种策略,市场生命周期在启动阶段创建它,在运行阶段执行它,监控它,并等待完成后再过渡到结束阶段。然后它计算盈亏并通知引擎它已完成。引擎提供了一组用于构建策略的API。策略本质上是一个使用这些API来下买单和卖单的函数。完整的架构图如下所示:

规划完成后,我让Claude基于这个架构创建了一个初始骨架,它做得相当好,包括模拟代码。我还知道我需要可靠的日志系统,这样当赢或输时,我有必要的数据来调试策略为何失败。Claude在这个方面也帮了不少忙。它建议构建一个图表可视化工具,接收现有的日志文件并为每个市场窗口生成交互式图表。输出看起来像下面的图片。这使得通过视觉分析哪里出了问题并找到潜在改进变得容易得多。

6、策略与最终思考
有了引擎,我准备编写自己的策略了。我没法分享具体的发现,因为那会暴露我的优势,但我可以告诉你,没有任何单一策略能永远赢。当你研究订单簿和指标时,你会发现某些模式只在一天中的特定时段出现,而不是一直都存在。你的优势在于知道这些窗口期是什么时候,并且只在那些时段交易。这也不是说每轮都要赢。你有时会输,但你的策略应该有出色的退出信号,将损失降到最低。引擎提供了必要的API,并在模拟和晚入场策略 (/engine/strategy/) 下有示例,展示了如何在不让利润回吐过多的情况下退出。
值得一提的是,AI不会直接帮你写策略。一切都取决于上下文。如果你在特定的指标如订单簿变动、缺口行为和价格差异上训练模型,你有可能让它生成策略。这是一个我想尝试的实验,但那是未来的事了。
引擎是开源的且积极维护。如果你感兴趣,可以查看github仓库。 README链接了涵盖市场术语和如何使用引擎开发策略的完整指南。该仓库是引擎的公开版本,并定期从我的私有仓库同步。唯一的区别是策略:公开版本附带测试策略,而我的私有仓库包含我实际交易的策略。下面是引擎输出的截图,

如果你想知道这是否盈利,我确实从中赚了几百美元。但持续开发策略是一个挑战。三天前有效的策略,今天可能就失效了,所以你需要不断寻找新的模式并识别你能找到的任何优势。我有全职工作,每天坚持做这件事是不可持续的,所以我尽量只在周末有时间的时候交易。我花了无数个不眠之夜构建最初的引擎并找到曾经奏效的模式。鉴于我的工作和付出的代价,我说不好我是否会长期继续做这个,但我不会像之前那样逼自己了。我的目标从来不是成为一个活跃的交易者。而是学习和探索一个真正让我感兴趣的领域,并写一些像这样的文章让其他人也能从我的经验中学习。
原文链接: My Journey Building a Polymarket BTC Trading Engine
DefiPlot翻译整理,转载请标明出处
免责声明:本站资源仅用于学习目的,也不应被视为投资建议,读者在采取任何行动之前应自行研究并对自己的决定承担全部责任。