惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

宝玉的分享
宝玉的分享
T
Threat Research - Cisco Blogs
H
Hacker News: Front Page
N
News and Events Feed by Topic
Know Your Adversary
Know Your Adversary
Cisco Talos Blog
Cisco Talos Blog
SecWiki News
SecWiki News
C
Cisco Blogs
D
Darknet – Hacking Tools, Hacker News & Cyber Security
T
Tor Project blog
K
Kaspersky official blog
Forbes - Security
Forbes - Security
Webroot Blog
Webroot Blog
Schneier on Security
Schneier on Security
P
Privacy & Cybersecurity Law Blog
H
Heimdal Security Blog
Y
Y Combinator Blog
The GitHub Blog
The GitHub Blog
S
SegmentFault 最新的问题
V
Vulnerabilities – Threatpost
T
Tenable Blog
T
Tailwind CSS Blog
P
Privacy International News Feed
WordPress大学
WordPress大学
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
博客园 - Franky
Hacker News: Ask HN
Hacker News: Ask HN
Jina AI
Jina AI
C
Cybersecurity and Infrastructure Security Agency CISA
CTFtime.org: upcoming CTF events
CTFtime.org: upcoming CTF events
雷峰网
雷峰网
Vercel News
Vercel News
A
About on SuperTechFans
爱范儿
爱范儿
Simon Willison's Weblog
Simon Willison's Weblog
AWS News Blog
AWS News Blog
The Last Watchdog
The Last Watchdog
Engineering at Meta
Engineering at Meta
Spread Privacy
Spread Privacy
Security Archives - TechRepublic
Security Archives - TechRepublic
博客园 - 司徒正美
量子位
博客园 - 三生石上(FineUI控件)
J
Java Code Geeks
Hacker News - Newest:
Hacker News - Newest: "LLM"
Recorded Future
Recorded Future
H
Hackread – Cybersecurity News, Data Breaches, AI and More
Martin Fowler
Martin Fowler
Project Zero
Project Zero

追梦人物的博客

0x05:Merkle Tree & Patricia Trie 0x04:ECDSA - 以太坊设计与实现 LeetCode 105 从前序与中序遍历构造二叉树 迭代算法原理 + 完整证明 0x03:Address - 以太坊设计与实现 0x02:Secp256k1 - 以太坊设计与实现 0x00:专栏开篇 - 以太坊设计与实现 0x01:RLP 编码 - 以太坊设计与实现 Bellman-Ford 算法原理及其在 DeFi 套利中的应用 - 追梦人物的博客 迪杰斯特拉(Dijkstra)最短路径算法原理、实现与证明 - 追梦人物的博客 实战:CEX-DEX 稳定币套利监控程序开发 - 追梦人物的博客 Uniswap 手续费和协议费机制剖析 - 追梦人物的博客 Uniswap 流动性机制及相关数学原理分析 - 追梦人物的博客 uv 替代 pyenv + pipx + poetry 环境管理实践 Rust 项目从创建到发布 - 追梦人物的博客 VS Code 调试 Python - 追梦人物的博客 比特币跨市场套利的数学模型 - 追梦人物的博客 ERC-20 相关知识点总结 - 追梦人物的博客 Django 老项目如何从 SQLite 迁到 PostgreSQL 自动生成接口文档 - HelloDjango - django REST framework 教程 单元测试 - HelloDjango - django REST framework 教程 限制接口访问频率 - HelloDjango - django REST framework 教程 API 版本管理 - HelloDjango - django REST framework 教程 如何在 Windows 下搭建高效的 django 开发环境 拓展Python Markdown - 追梦人物的博客 加缓存为接口提速 - HelloDjango - django REST framework 教程 基于 drf-haystack 实现文章搜索接口 - HelloDjango 评论接口 - HelloDjango - django REST framework 教程 实现分类、标签、归档日期接口 - HelloDjango - django REST framework 教程 在接口返回Markdown解析后的内容 - HelloDjango - django REST framework 教程 文章详情接口 - HelloDjango - django REST framework 教程 分页 - HelloDjango - django REST framework 教程 使用视图集简化代码 - HelloDjango - django REST framework 教程 用类视图实现首页 API - HelloDjango - django REST framework 教程 实现博客首页文章列表 API - HelloDjango - django REST framework 教程 初始化 RESTful API 风格的博客系统 - HelloDjango django-rest-framework 是什么鬼? - HelloDjango - django REST framework 教程 结束 or 开始? - HelloDjango Coverage.py 统计测试覆盖率 - HelloDjango - Django博客教程(第二版) 单元测试:测试评论应用 - HelloDjango - Django博客教程(第二版) 单元测试:测试 blog 应用 - HelloDjango Django Haystack 全文检索与关键词高亮 - HelloDjango Django 博客实现简单的全文搜索 - HelloDjango - Django博客教程(第二版) 开启 Django 博客的 RSS 功能 - HelloDjango 统计各个分类和标签下的文章数 - HelloDjango - Django博客教程(第二版) 稳定易用的 Django 分页库,完善分页功能 - HelloDjango 通过 Django Pagination 实现简单分页 - HelloDjango 在脚本中使用 ORM:Faker 批量生成测试数据 - HelloDjango Django 官方推荐的姿势:类视图 - HelloDjango - Django博客教程(第二版) Django 使用 union 合并不同模型(Model) 的查询集(QuerySet) 开发博客文章阅读量统计功能 - HelloDjango - Django博客教程(第二版) 使用 Docker 让部署 Django 项目更加轻松 - HelloDjango 使用 Certbot 向 Let's Encrypt 免费申请 HTTPS 证书 - HelloDjango 使用 Fabric 自动化部署 - HelloDjango 博客代码开源啦 - 追梦人物的博客 (赠书)推荐一本django书籍:Django企业开发实战 - 追梦人物的博客 Nginx+Gunicorn+Supervisor 部署 Django 博客应用 - HelloDjango 优化博客功能细节,提升使用体验 - HelloDjango - Django博客教程(第二版) 交流的桥梁:评论功能 - HelloDjango - Django博客教程(第二版) 分类、归档和标签页 - HelloDjango - Django博客教程(第二版) 页面侧边栏:使用自定义模板标签 - HelloDjango - Django博客教程(第二版) 自动生成文章摘要 - HelloDjango - Django博客教程(第二版) Markdown 文章自动生成目录,提升阅读体验 - HelloDjango - Django博客教程(第二版) 让博客支持 Markdown 语法和代码高亮 - HelloDjango 开发博客文章详情页 - HelloDjango - Django博客教程(第二版) 创作后台开启,请开始你的表演 - HelloDjango - Django博客教程(第二版) 博客从“裸奔”到“有皮肤” - HelloDjango - Django博客教程(第二版) Django 的接客之道 - HelloDjango - Django博客教程(第二版) Django 迁移、操作数据库 - HelloDjango - Django博客教程(第二版) 创建 Django 博客的数据库模型 - HelloDjango 开始进入 django 开发之旅 - HelloDjango "空空如也"的博客应用 - HelloDjango - Django博客教程(第二版) 一种自顶而下的Python装饰器设计方法 - 追梦人物的博客 Python提取支付宝和微信支付二维码 - 追梦人物的博客 2018 - 我的学生生涯最后一年回顾 - 追梦人物的博客 批量清除todo练习参考答案 - Vue 2.x Todo 教程练习参考答案 筛选练习参考答案 - Vue 2.x Todo 教程练习参考答案 删除todo练习参考答案 - Vue 2.x Todo 教程练习参考答案 编辑todo练习参考答案 - Vue 2.x Todo 教程练习参考答案 添加todo练习参考答案 - Vue 2.x Todo 教程练习参考答案 标为完成练习参考答案 - Vue 2.x Todo 教程练习参考答案 入门仪式_Hello_Vue练习参考答案 - Vue 2.x Todo 教程练习参考答案 组件化todo应用 - Vue 2.x Todo 教程 批量清除todo - Vue 2.x Todo 教程 本地存储 - Vue 2.x Todo 教程 筛选 - Vue 2.x Todo 教程 还剩多少todo未完成 - Vue 2.x Todo 教程 自定义指令实现自动聚焦 - Vue 2.x Todo 教程 全部标为完成 - Vue 2.x Todo 教程 删除todo - Vue 2.x Todo 教程 编辑todo - Vue 2.x Todo 教程 添加todo - Vue 2.x Todo 教程 标为完成 - Vue 2.x Todo 教程 UI - Vue 2.x Todo 教程 显示todo列表 - Vue 2.x Todo 教程 入门仪式:Hello Vue - Vue 2.x Todo 教程 在学习django-rest-framework时收集的学习资料推荐 - 追梦人物的博客 区块链理论与应用研究小组成员招募书 - 追梦人物的博客 Python界网红,豆瓣工程师董伟明加了我的QQ后 - 追梦人物的博客 招募Django学习小组项目组核心成员 - 追梦人物的博客
CEX-DEX 稳定币套利模型 - 追梦人物的博客
2025-10-10 · via 追梦人物的博客

CEX (中心化交易所) 和 DEX (去中心化交易所) 的稳定币交易对(如 USDC/USDT)如果存在价差,就可能有套利机会。这篇文章研究 CEX-DEX 稳定币套利方法,建立数学模型并求解可套利条件以便编写自动化程序监控套利机会和执行相应的套利交易。

原理分析

如果 CEX 和 DEX 里稳定币价格存在差异,可以在价格较低的交易所买入稳定币,然后在另一个交易所高价卖出,即可获利。例如,假设 CEX 中 USDC 的价格为 0.9995 USDT,即 1USDC=0.9995USDT,而 DEX 中 1USDC=1USDT,则可在 CEX 中花费 9995 USDT 买入 10000 USDC,而后在 DEX 中将 10000 个 USDC 兑换为 10000 USDT,不考虑交易费用的情况下即获利 10000-9995=5 USDT。

分析可知存在 4 种套利交易方式:

  • 先在 CEX 后在 DEX 交易,交易路径 USDT -> USDC -> USDT
  • 先在 CEX 后在 DEX 交易,交易路径 USDC -> USDT -> USDC
  • 先在 DEX 后在 CEX 交易,交易路径 USDT -> USDC -> USDT
  • 先在 DEX 后在 CEX 交易,交易路径 USDC -> USDT -> USDC

交易费用

以先在 CEX 后在 DEX 交易,交易路径 USDT -> USDC -> USDT 为例,理想做法是在 CEX 将 USDT 换为 USDC,然后将 USDC 提至 DEX,在 DEX 将 USDC 换为 USDT,最后将 USDT 提回 CEX,完成一次套利闭环。

由于 CEX 提币至 DEX 涉及链上交易,时效性不理想,等提币完成后行情可能早已变化导致套利机会消失,因此需要在 DEX 中预存一定量的 USDC,实际操作中套利过程变为:

CEX 将 USDT 换为 USDC,DEX 中将 USDC 换为 USDT,然后将 CEX 中的 USDC 提至 DEX,将 DEX 中的 USDT 提至 CEX,完成套利闭环。因此交易费用包括以下几部分:

  • CEX 交易手续费 \(f\)
  • DEX 交易 gas 费 \(g\)
  • CEX 到 DEX 的提币费 \(r\)
  • DEX 到 CEX 转账 gas 费 \(s\)

需要注意的是 DEX 交易通常还需支付手续费和协议费,但这些费用已暗含在获取的价格行情数据中,因此无需单独考虑。

套利条件

仍以先在 CEX 后在 DEX 交易,路径 USDT -> USDC -> USDT 为例。设 CEX 中 USDC 的价格为 \(p\),DEX 中 USDC 的价格为 \(q\),DEX 中预存数量为 \(n\) 的 USDC。
为了完成一次套利,首先在 CEX 中将 \(np\) 个 USDT 换为 \(n\) 个 USDC;然后在 DEX 中将 \(n\) 个 USDC 换为 \(nq\) 个 USDT;最后将 CEX 中的 USDC 提至 DEX,将 DEX 中的 USDT 提至 CEX,扣除全部交易费用,总的收益需为正,即:

\[ nq-np-f-g-r-s > 0 \]

简单调整可得:

\[ q - p > \frac{f+g+r+s}{n} \]

即 DEX 和 CEX USDC 的价格差满足以上条件时存在可套利空间。

举个例子,一般 CEX 稳定币交易免手续费,即 \(f=0\),设 \(g=0.1\)\(r=1\)\(s=0.2\)\(n=10000\)\(\frac{f+g+r+s}{n}=(0.1+1+0.2)/10000=0.00013\),即 DEX 中 USDC 的价格超过 CEX 中 USDC 的价格 0.00013 后,即可套利。

实际操作中,由于 CEX 是将 USDT 换为 USDC,执行的是买入操作,因此对应的 \(p\) 应该取当前盘口的卖一价格;DEX 兑换通常要扣除手续费和协议费,所以 \(q\) 应当取输入 1USDC 后实际可兑出的 USDT 数量,这个量可以根据 DEX 的机制在线下预先计算或者调用 DEX 部署的智能合约接口进行查询。

如果交易路径为 USDC -> USDT -> USDC,上述推导过程不变,只需将 \(p\)\(q\) 的含义换成 USDT 的价格。此时 \(p\) 应该取当前盘口的买一价格的倒数\(q\) 应当取输入 1USDT 后实际可兑出的 USDC 数量

类似的,如果先在 DEX 后在 CEX 交易,路径 USDT -> USDC -> USDT。

为了完成一次套利,首先在 DEX 中将 \(\frac{n}{q}\) 个 USDT 换为 \(n\) 个 USDC;然后在 CEX 中将 \(n\) 个 USDC 换为 \(np\) 个 USDT;最后将 DEX 中的 USDC 提至 CEX,将 CEX 中的 USDT 提至 DEX,扣除全部交易费用,总的收益需为正,即:

\[ np-\frac{n}{q}-f-g-r-s>0 \]

简单调整可得:

\[ p-\frac{1}{q} > \frac{f+g+r+s}{n} \]

此时 \(p\) 的含义是当前盘口买一价格\(q\)输入 1USDT 后实际可兑出的 USDC 数量

如果交易路径为 USDC -> USDT -> USDC,上述推导过程不变,\(p\) 的含义变为当前盘口卖一价格的倒数\(q\)输入 1USDC 后实际可兑出的 USDT 数量

综上,4 种套利交易方式及其套利条件总结如下:

先 CEX 后 DEX 交易路径 USDT -> USDC -> USDT
需满足 \(q - p > \frac{f+g+r+s}{n}\),其中 \(p\) 为当前盘口 USDC 卖一价格,\(q\) 为输入 1USDC 后实际可兑出的 USDT 数量。

先 CEX 后 DEX 交易路径 USDC -> USDT -> USDC
需满足 \(q - p > \frac{f+g+r+s}{n}\),其中 \(p\) 为当前盘口 USDC 买一价格的倒数,\(q\) 为输入 1USDT 后实际可兑出的 USDC 数量。

先 DEX 后 CEX 交易路径 USDT -> USDC -> USDT
需满足 \(p-\frac{1}{q} > \frac{f+g+r+s}{n}\),其中 \(p\) 为当前盘口 USDC 买一价格,\(q\) 为输入 1USDT 后实际可兑出的 USDC 数量。

先 DEX 后 CEX 交易路径 USDC -> USDT -> USDC
需满足 \(p-\frac{1}{q} > \frac{f+g+r+s}{n}\),其中 \(p\) 为当前盘口 USDC 卖一价格的倒数,\(q\) 为输入 1USDC 后实际可兑出的 USDT 数量。

实际编程时,我们分别从 CEX 行情接口获取当前盘口 USDC 卖一价格和买一价格再计算其倒数,计算 DEX 输入 1USDT 后实际可兑出的 USDC 数量以及输入 1USDC 后实际可兑出的 USDT 数量,分别代入上述 4 种情况,看哪种情况满足可套利条件即可执行相应的套利交易。

-- EOF --