跳到正文
CELUQ

交易机器人和量化交易跟手动交易一样,可能亏掉全部本金。本站内容不构成投资建议。

  1. 首页
  2. 先弄懂
  3. 量化交易怎么亏钱
LEARN先弄懂

量化交易怎么亏钱的?手续费、滑点、参数过拟合、行情突变各怎么吃掉本金

四个口子会让量化交易亏钱:手续费、滑点、参数过拟合、行情变了。程序不会情绪化,但这四条照样会让它亏;自己写程序的,还要多防一条:程序自己出错。

文 韩砚发布 约 7 分钟读完

量化交易亏钱,很少是因为「程序算错了」。程序照着规则一笔笔执行,执行得越勤快,下面这四个口子漏得越多:

口子它怎么吃掉本金提前在哪能看出来
手续费每成交一笔就收一次,成交越频繁、每笔赚得越薄,占比越大把「每笔赚多少」和「每笔付多少」放在一起比
滑点市价成交时,实际成交价比你看到的价格差下单前看订单簿深度,成交后对比成交均价
参数过拟合回测里调出来的好参数,只是恰好贴合了过去问一句:这个参数是试了多少次才挑出来的
行情变了策略只在某种行情里成立,行情一变就反过来亏想清楚策略在什么行情下会亏,那种行情来了怎么办

前两条是「成本」:手续费每成交一笔都收,滑点随时可能出现,区别只在多少;后两条是「失效」,平时看不见,一旦出现就可能是大亏。下面一条条讲。

依据回测过拟合一节依据 Bailey、Borwein、López de Prado、Zhu 发表在《美国数学会通讯》2014 年第 61 卷第 5 期的论文 Pseudo-Mathematics and Financial Charlatanism,以及同一组作者在 The Journal of Computational Finance 发表的《The Probability of Backtest Overfitting》。滑点一节依据 Kraken 帮助中心的市价单滑点说明与同一帮助中心的「胖手指警告」说明,以及 Coinbase 的交易规则。资金费、「每格利润」与下单超时的说法,出自币安的帮助中心与 API 文档,以及欧易帮助中心的《API 常见问题》。证监会的表述出自《证券市场程序化交易管理规定(试行)》的起草说明。手续费一节的算式是推导,其中的费率和价差是为了算账取的假设值。交易所和监管部门的页面在 2026 年 10 月核对过。

一张写着手续费、滑点、过拟合、行情四个口子的单据夹在深蓝文件夹里

手续费:成交越勤,漏得越多

交易所每成交一笔收一次手续费,机器人不会替你免掉任何一笔。一次完整的「买进再卖出」是两笔成交,收两次费。

用一个可以自己重算的例子。假设手续费率是 f,一次买卖之间的价差(毛利)占成交额的比例是 g,那么一来一回的净利就是:

净利 ≈ g − 2f

比如 f 按 0.1% 算,g 是 0.4%:一来一回净赚 0.4% − 0.2% = 0.2%,手续费吃掉了一半的毛利。如果 g 只有 0.25%,净利只剩 0.05%,手续费吃掉八成。g 小到 0.2% 时,净利是零——忙了一整轮,钱全交了手续费。

这里的 0.1% 只是为了算账方便取的数,你的实际费率要去交易所费率页看,还会因为账户等级、用什么币抵扣而不同。但结论不变:每笔赚得越薄,手续费的占比越大;而网格这类机器人,恰恰是靠很多笔很薄的利润累积的。

网格类机器人就是典型。它把一段价格区间切成很多格,每格低买高卖一次。格子切得越密,单格价差越小,手续费占比就越高。有的交易所在现货网格的创建页上直接给了一项「每格利润(已扣除手续费)」,填完参数它会显示出来,那一栏就是在帮你算 g − 2f。网格页面每一项怎么读,见现货网格创建页逐项说明。

合约类机器人还多一项资金费:持有永续合约跨过结算时点,多空双方之间按持仓名义价值乘以资金费率互相支付。这笔钱不是交易所收的,是多空之间互付,交易所的说明里写得很清楚;但对付钱的一方来说,它同样是持仓成本,方向不利时每到结算点就扣一次。

滑点:你看到的价格,不是你成交的价格

滑点是下单时预期的价格和实际成交价格之间的差。

几家交易所的官方说明讲的是同一回事。一家美国交易所的帮助中心这样解释:下市价单时,大单的前一部分也许能按预期价格成交,但后面的部分可能随着订单在订单簿里往下吃,成交在更差的价格上。另一家美国交易所的交易规则写得更直白:市价单不保证按指定价格成交,可能按订单簿上多个不同价格分批成交,有时成交价比最近一笔成交价差很多,这通常就叫滑点。

为什么量化程序更容易被滑点咬到?两个原因:

  • 程序常用市价单。 为了保证成交,很多策略在信号出现时直接市价买卖,等于每次都接受订单簿给的价格。
  • 程序没人盯着看。 在网页上手动下单,有的交易所会在预计偏离太大时弹警告。前面那家美国交易所的说明就写到,它的「胖手指」警告只用在专业版的现货交易里,通过 API 下单目前没有这个警告(2026 年 10 月的说明)。程序下单时,这道防呆提示可能根本不存在。

滑点也有正的时候,成交价比预期还好。但它不对称地伤人:行情剧烈的时候,订单簿变薄,滑点往往最大,而这恰恰是很多策略最想成交的时候。

能做的事情很具体:交易量小、订单簿薄的交易对,滑点通常更大;能用限价单就别全用市价单;回测时把滑点算进去,别假设每笔都按图上的价格成交。

参数过拟合:回测越漂亮,越要问一句

这是四条里最隐蔽、也最常被拿来骗人的一条。

先说回测。2014 年,四位数学和金融学者 Bailey、Borwein、López de Prado、Zhu 在《美国数学会通讯》(Notices of the AMS)上发表了一篇题目很重的论文,叫《伪数学与金融骗术》。论文给回测下的定义是:对一个算法投资策略的历史模拟。它的核心发现很简单:给定任何一段金融行情数据,把一个策略调到在这段数据上表现很好,相对容易;试的参数组合越多,回测被过拟合的概率越大。

「过拟合」借用的是机器学习的说法,意思是模型盯住了特定的那几次行情,而不是行情里一般的规律。论文特别提到,被过拟合的不只是预测公式,入场条件、仓位大小、止盈、止损这些参数都可能被调到恰好贴合过去。

一个能自己想明白的例子:假设你给一个策略试了一百组参数,在过去一年的行情上回测。哪怕这一百组参数全都毫无用处,靠运气,其中总有几组的曲线会很好看。你挑出最好看的那组,回测曲线一路向上——但它好看,只是因为你从一百组里挑了它,不是因为它抓住了什么规律。拿它去跑接下来的行情,表现很可能就平平无奇,甚至更差。

论文对这种情况下了很重的判断:不报告试了多少次才找到那个成功的回测,是一种欺诈。它的结论是:如果不控制过拟合,好看的回测后面常常跟着负的实盘结果。同一组作者后来在《计算金融杂志》上又发表了一篇,专门讨论怎么估算「回测过拟合的概率」,结论之一是,原本用来防止回归过拟合的常规统计方法(比如留出法),在投资回测里往往不可靠。

落到你身上,就是看到任何回测曲线、历史收益、收益截图时,问三个问题:

  1. 这个参数是试了多少次挑出来的? 对方答不上来,或者说「这是我们独家优化的」,就当它被过拟合了。
  2. 回测期之后的表现呢? 只给一段漂亮的历史、给不出之后的真实运行记录,曲线说明不了什么。
  3. 手续费和滑点算进去了吗? 很多回测默认每笔按图上的价格成交、零成本,上面两节已经说过这有多不现实。

本站不写任何收益率,也不把任何平台展示的历史收益当成预期,原因就在这里。

行情变了:策略成立的前提消失了

任何策略都有一个它默认的行情。网格默认价格会在一个区间里来回震荡;定投默认长期来看价格会回来;追涨策略默认涨了还会接着涨。前提成立时它赚钱,前提消失时它亏钱,而且常常亏得比平时赚得多。

最直观的是网格:

  • 价格一路涨出区间上沿,网格已经把币卖光了,后面的涨幅和你无关。这叫少赚,不叫亏损。
  • 价格一路跌穿区间下沿,网格在下跌途中一格格买进,买完了手里全是币,币价还在跌。这时账面亏损跟着币价一起扩大,最坏的情况是币价归零,投进去的钱全部亏光。

带杠杆的合约机器人更严重。行情朝不利方向走得够远,仓位会被强制平仓,投进去的保证金可能全部亏掉,而且不给你「等它涨回来」的机会。

行情变化还有一种更隐蔽的形式:策略本身没变,但市场上用同一种策略的人多了。证监会在 2024 年发布《证券市场程序化交易管理规定(试行)》时,起草说明一方面写明程序化交易有助于为市场提供流动性、促进价格发现,另一方面也提到,程序化交易特别是高频交易,相对中小投资者存在明显的技术、信息和速度优势,一些时点还存在策略趋同、交易共振的问题,加大市场波动。这段话说的是证券市场,不是币圈,但可以类推:一个公开的、人人都能一键复制的策略,很难长期赚到钱。

能做的是在开之前把最坏的情况想清楚:这个策略在什么行情里会亏?亏到多少我会停?停的条件写下来,最好用机器人自带的止损、止盈把它固定住,而不是到时候再看心情。

还有一条:程序自己出错

四个口子之外,自己写程序的人还要多防一条:代码和网络。

  • 下单请求发出去之后超时了,订单到底成交没有?两家大交易所关于 API 的官方说明都写过同一件事:这种时候结果是未知的,可能成功也可能失败,要以实际结果为准。程序要是当成「失败」直接重发,就可能下了两单。
  • 循环写错、数量单位写错、买卖方向写反,在模拟环境里只是数字乱了,在真账户上就是真金白银。

所以本站的 API 教程坚持一个顺序:先在测试网把代码跑通,再谈真账户。具体怎么做,见测试网上的第一段代码与常见报错。