今年十一假期,我的一项主要工作是开发和完善 OKX合约量化套利平台。它围绕 OKX 的账户、现货与合约数据,把套利机会、持仓、资金费率、成交记录和运行状态整理到同一个页面中。这是个人开发项目,并非 OKX 官方产品。

目前平台已经投入实盘运行,Lark 上也接入了每日理财报告、风险报警和量化机会巡检。对我来说,这个阶段的变化是:除了把功能做出来,还要持续观察数据是否可靠、仓位是否符合预期,以及出现异常后能否及时发现。

做这个平台,主要是想解决一个实际问题:看到一个套利机会后,怎样把它看明白,并持续知道自己持有的组合正在发生什么。

费率高不高,只是开始。真正需要关心的还有资金占用了多少、开平仓要花多少钱、现货与合约有没有配平、收益来自哪里,以及一条腿发生变化后该如何发现。把这些问题放在一起,才有可能从“看到一个数字”走到“理解一笔交易”。

本文记录这次假期开发的使用目的与心得。前面的平台界面截图来自模拟盘,用于展示模块;后面的 Lark 截图展示实盘运行阶段的日报与提醒。模拟盘余额、持仓和盈亏不是实盘业绩,页面上的年化属于历史数据与模型估算。 图片可点击打开原图。

为什么要自己做一个平台

交易所已经提供了丰富的行情和账户页面,但从套利组合的角度看,信息往往分散在不同位置:行情页面看费率,持仓页面看合约,资产页面看现货,账单页面再核对费用。

单独看每一页都能理解,放到一起却还需要自己完成很多判断。例如,一边现货盈利、另一边合约亏损,这个组合到底表现如何?收到的资金费能否覆盖进出成本?账户权益增加,究竟来自交易结果还是新转入的本金?

我希望这个工具能把这些联系展示出来。它的价值在于帮助我筛选、核对和复盘,也让自动化运行过程更容易观察。收益最终仍取决于市场、成本和执行,做出一个工具本身并不会创造确定收益。

平台主要用来做什么

把账户与套利记录放在一起看

OKX合约量化套利平台:模拟盘账户与持仓总览

总览里可以看到持仓、资产分布、套利记录、机会列表和服务状态。这样查看一个组合时,就不必只盯着某一张合约的浮动盈亏。

开发过程中,一个需要明确的区别是:账户有仓位,不代表这个仓位就属于平台管理的套利任务。手工交易、历史遗留仓位和正在运行的套利记录,不能混为一谈。

这也影响自动化的边界。哪些组合允许持续处理,哪些只是展示,需要有明确记录和状态。否则程序可能把用户的普通持仓当成需要管理的策略仓位,产生与使用者意图不一致的动作。

看机会,也看它的成本和稳定性

模拟盘套利机会:资金费率历史、滚动年化与成本说明

机会模块把资金费率、历史变化、成交额、估算年化和费用放在一起,并支持按策略与合约类型筛选。

我更希望它帮助回答“这个数字是怎么来的”,而不只是给出一个从高到低的排行榜。最近一次费率很高,可能只是短时现象;一段时间表现平稳,也不意味着之后不会转负。持有时间不同,同样的开平仓费用摊到收益里,结果也会不同。

因此页面保留了费率曲线和成本拆解。看年化时,要同时看观察窗口、费用假设和资金占用。图里的“保守”“乐观”只是不同估算场景,不能理解为收益下限与上限。

让汇总数字能追溯到成交

模拟盘成交明细:价格、方向、数量、时间与手续费

成交明细用于核对执行过程:下单之后实际成交了多少、分成了几笔、手续费扣在哪里、两腿是否都完成。

这部分让我更明确地意识到,“计划建立一个组合”和“账户里已经形成这个组合”是两回事。委托数量与成交数量可能不同,手续费和最小下单单位也会影响最终持有量。只展示一个成功提示,很难解释这些差异。

保留明细的目的,是在结果与预期不一致时能够回到事实,而不是继续根据估算值推断。

开仓之前,也要考虑退出

模拟盘盘口深度:现货与合约档位、累计数量及费用拆解

盘口深度让两腿的可成交情况更直观。最优报价只是一个档位上的价格,计划交易的金额变大后,实际平均成交价可能发生变化。

对我来说,这个模块还有一个提醒:机会分析不能只看怎么进入,也要看如何退出。费率变化、持仓调整或异常发生时,能否及时平掉两腿,同样会影响最终结果。

截图只是某个时点的盘口,并不保证下一刻仍有相同的流动性;模拟盘的成交体验也不能直接当作实盘依据。

开发中最有感触的几件事

金融数据最难的是含义一致

平台使用 Go、Gin 和 MySQL,技术上需要完成数据同步、状态展示和任务运行。但随着模块增加,更容易出问题的是不同页面对同一个数字的理解不一致。

保证金、合约名义价值、现货市值和总权益都与“资金”有关,却不是同一个概念。资金费、未实现盈亏和结算收益也不能直接相加。币本位与 U 本位的数量单位、抵押物和计价方式还存在差别。

我的体会是,先把字段含义、单位和统计范围说清楚,再做汇总与展示。一个精确到很多位的小数,如果分母或资金范围错了,只会让误解看起来更可信。

“没有数据”与“没有风险”必须分开

账户同步失败时,页面不能把缺失资产当作零;持仓暂时没查到,也不能直接理解为已经平仓。数据更新的时间、同步结果和服务是否正常,都是使用者判断页面能否相信的前提。

因此,运行状态和同步记录虽然不如收益曲线醒目,却是平台里很重要的一部分。收益数字只有在来源可靠、更新时间清楚时才有意义。

自动化的难点在异常处理

正常情况下,按规则处理一组仓位并不复杂。真正需要花精力考虑的是:两腿只成交了一边怎么办,接口超时后是否已经下单,仓位被人工修改之后是否还允许继续,程序重启会不会重复执行。

这些问题让我对自动化的定位更谨慎:它适合减少重复操作,但前提是处理范围明确、状态可核对、异常可发现,并且使用者能够停止它。不能因为脚本还在运行,就认定策略运行正常。

日报应该帮助复盘

平台后来增加了每日理财报告,把本周净收益、本月净收益和本月最大回撤作为重点。这样可以少一些反复刷新页面,把注意力放到一段时间的变化和真正需要处理的问题上。

这里同样需要诚实表达数据边界:充值不是盈利,提现不是亏损,历史不足就说明起算时间;只有每日快照,展示的就是日级回撤,不能用它证明盘中从未出现过更大波动。

日报是观察工具,不是策略有效性的证明。几天表现良好,也不足以说明不同市场环境下都能保持同样结果。

实盘运行后,Lark 成了日常观察入口

实盘运行阶段的 Lark 消息:每日理财报告、行情异常报警和量化机会巡检

这张截图展示了目前已经收到的三类消息。它们各自解决不同的问题,并不是把所有数据再复制到聊天窗口里。

每日报告用来复盘。 本周净收益、本月净收益、最大回撤、已入账资金费和持仓中套利数量,让我可以先了解整体情况。截图中的报告明确注明从首个完整快照开始统计,所以不能把里面的阶段性数字当成完整月份的业绩。这样保留数据范围,比单独展示一个收益数字更有意义。

风险报警用来发现持仓条件发生变化。 截图中,BTC 和 SOL 对应合约的资金费率出现由正转负的提醒,意味着原先依赖收取资金费的条件发生了变化。消息只关注有持仓的合约,并提醒先检查仓位风险率与 ADL 档位,再决定是否调整。

这里我特别重视一点:发现异常不等于立刻交易。提醒本身不下单;是否减仓、平仓或继续观察,还需要结合仓位与成本判断。这是 Lark 提醒模块的边界,不代表平台内所有交易脚本都只有只读能力。

机会巡检用来减少重复查找。 它按设定的比较门槛、持有天数和估算口径,汇总新达到条件的标的,让我有一个进一步查看的入口。达到门槛只是符合筛选条件,并不意味着已经具备可以直接执行的收益空间。

接入这些消息后,我更明确地感受到:机会、风险和结果应该分开呈现。机会值得研究,风险需要判断,日报用于复盘。消息的作用是把注意力带回具体问题,而不是替我作出交易决定。

使用这类平台,需要注意哪些风险

套利组合仍有保证金风险

现货与合约反向持仓,是希望降低组合的价格方向敞口。但组合层面的盈亏对冲,并不自动保证合约账户始终满足保证金要求。价格变化、账户模式、抵押物价值和保证金位置都会影响仓位是否能够继续持有。

低杠杆也不能简单写成“不会强平”。具体判断应以对应产品和账户模式的保证金规则为准。OKX 的强平说明也区分了强平、到期结算和其他导致仓位关闭的情形。

资金费率不是固定利息

资金费率会变化,收入方向也可能反转。历史上多数时间收取资金费,不代表接下来仍然如此。若继续持有,成本可能逐渐超过先前的收入;若立即退出,又需要承担平仓成本。

所以平台展示历史费率,是为了辅助观察变化,不能把某一期费率直接当作未来长期收益。关于现货与期货、永续对冲的基本思路,可参考 OKX 的基差交易研究资料。

手续费、滑点和两腿执行会影响结果

看起来很小的价差或费率收益,可能被交易成本消耗。行情快速变化或深度不足时,两腿也可能以不同于预期的价格成交。

页面模型只覆盖它明确计入的成本。实际结果应核对成交与账单,不能只依据模型里的净年化。具体手续费还受产品、费率等级及成交方式影响,参见 OKX 手续费说明。

ADL 等事件可能改变对冲结构

除了保证金不足,自动减仓(ADL)也可能改变合约持仓。若原本用于对冲的合约腿被减少,而另一腿还在,组合会出现新的方向敞口。是否补回仓位需要重新判断,不能把任何减仓都当作必须自动修复的故障。

这是应当纳入监控的风险,并非本文声称发生过的实盘经历。机制说明可查看 OKX ADL 文档。

平台、接口和程序也有风险

工具依赖交易平台、网络与 API。接口延迟、限流、数据同步中断或程序判断错误,都可能影响观察和执行;资产托管与平台服务可用性也不由本地工具控制。

因此,权限配置、模拟与实盘环境区分、日志核对和停止入口都值得认真对待。只需要读取数据的功能,应尽量使用与其职责相符的权限;涉及交易的功能,则需要明确它能处理哪些账户与仓位。

模拟盘用于验证流程,不能验证赚钱能力

平台已经进入实盘运行,本文仍保留模拟盘界面截图来展示模块与操作过程。模拟盘能够帮助检查数据、页面和执行流程,却不能完整复现实盘中的流动性、成交排队、滑点及极端行情。

开始实盘运行,也不等于已经验证了长期盈利能力。模拟盘截图中的盈利数字与短期实盘报告,都不足以替代更长时间、不同市场环境下的观察。使用这类工具时,应把“程序能运行”“组合逻辑成立”和“实际结果符合预期”分别评估。

后续想继续完善的方向

接下来更值得投入的,是把已有信息做得可信、可解释:明确数据时间与统计口径,让收益能够回溯到成交和费用,让仓位变化有迹可循,并把异常提醒与普通机会提示区分开。

回顾这次十一假期的开发,做这个平台的过程,也是重新理解套利的过程。最初容易关注费率和年化,进入实盘运行后会更加关注资金安排、执行质量、状态管理和退出条件。

我希望它最终成为一个能帮助自己看清组合、减少遗漏、认真复盘的工具。页面上的收益数字只是结果的一部分,理解数字背后的条件与风险,才是使用这个平台的目的。

相关阅读:量化套利图解与计算器 · 用三层模型读懂金融交易术语