[TOC]

最近有朋友反馈,能不能建立一个资金费率套利策略?比如在 CEX 和 DEX 之间,经常有费率不一致的问题,可以收集套利机会,并使用 AI 判断是否值得开仓。但一直以来有个痛点:没有好的套利机会检测工具。
恰好,一位大佬推荐了 VarFunding 这个平台。这个平台实时收集多家交易所的资金费率数据,包括币安、Hyperliquid、Lighter、Bybit 等,而且这些交易所在发明者平台都已经上线。更重要的是,它通过实时收集资金费率数据进行对比,提供了最佳的套利机会组合。

真是瞌睡的时候送来了枕头!今天就带大家一步步拆解这个资金费率套利策略的设计思路。
在深入策略之前,先搞清楚一个问题:资金费率套利到底是什么?
永续合约有一个机制叫资金费率,不同交易所的结算周期不一样,有的是 8 小时,有的是 4 小时,甚至有的是 1 小时。
不同交易所的用户结构和流动性不同,导致多空力量对比不一样,所以同一个币种在不同交易所的资金费率经常出现差异。
比如 A 交易所 BTC 费率是 +0.1%,B 交易所是 +0.05%。
这时候我们可以: - 在 A 交易所做空(收取 0.1% 费率) - 在 B 交易所做多(支付 0.05% 费率)
两边仓位对冲,价格涨跌的盈亏相互抵消,但费率差(0.05%)却能稳稳收进口袋。

这就是资金费率套利的核心逻辑:赚的是费率差,而不是价格波动。
理解了资金费率套利的原理后,接下来的问题是:怎么实现它?
传统的做法是写一个完整的程序,但这次我们选择用工作流来实现。工作流有几个独特的优势:
每个节点负责一个独立的功能:数据采集、筛选、AI 评估、执行,各司其职,逻辑清晰,方便调试和修改。
整个策略的运行流程一目了然,哪个环节出了问题能快速定位。
想更换新的筛选条件或者优化交易逻辑,只需要修改对应的节点,不用动其他部分。
工作流天然支持调用大模型,让 AI 参与决策变得非常简单。
对于这种需要多数据源、多步骤处理的套利策略,工作流是非常合适的实现方式。
这个策略分为两条主线:


两条线各司其职:执行线负责决策和交易,采集线负责数据收集和展示。这样的设计让策略既能高效执行,又能实时掌握运行状态。
策略有几个关键参数需要配置:
['binance', 'hyperliquid', 'lighter']['high', 'medium', 'low']我们可以根据自己的需要灵活设置这些参数。
策略的第一步是获取套利机会数据。通过 HTTP 请求访问 VarFunding 的 API 接口,传入配置好的交易所列表:
const url = `https://varfunding.xyz/api/funding?exchanges=${exchangeList.join(',')}`;
平台会返回所有币种在各交易所的费率数据,以及它计算好的最佳套利组合。但原始数据太多,不能全部使用。策略会进行筛选,只保留做多和做空交易所都在我们配置列表中的机会:
const filteredMarkets = data.data.markets.filter(market => {
const bestExchange = market.bestRate?.exchange;
const worstExchange = market.worstRate?.exchange;
return exchangeList.includes(bestExchange) && exchangeList.includes(worstExchange);
});
筛选后的数据会被提取成简洁的格式,只保留关键信息:交易对、做多交易所、做空交易所、费率差、预估年化收益和置信度。这些数据会被保存下来,用于后续的套利机会分析。
光有一次费率数据是不够的,因为费率可能是临时波动。所以策略会持续收集数据快照,每分钟保存一次当前的费率数据,只保留最近N小时的历史记录。
积累足够样本后,策略会进行统计分析,计算每个币种在不同置信度中的出现频率:
const stats = {};
for (const snapshot of savedData) {
for (const [baseAsset, info] of Object.entries(snapshot.data)) {
if (!stats[baseAsset]) {
stats[baseAsset] = { high: 0, medium: 0, low: 0, total: 0 };
}
stats[baseAsset].total++;
if (info.confidence === 'high') stats[baseAsset].high++;
// ... 统计其他置信度
}
}
然后按照出现最多的置信度对币种进行分类,并计算加权评分:
score = (high出现次数 × 3 + medium出现次数 × 2 + low出现次数) / 总次数
这个评分反映了套利机会的稳定性。评分越高,说明这个机会在历史数据中表现越一致,越值得信任。
费率分析完成后,策略会拿最新的套利机会列表去检查现有持仓。平仓检测的核心逻辑是遍历所有交易所,找出当前的持仓情况:
function scanAllPositions() {
const allPositions = {};
for (const [exName, exIndex] of Object.entries(EXCHANGE_MAP)) {
const positions = exchanges[exIndex].GetPositions();
for (const pos of positions) {
const baseAsset = pos.Symbol.match(/^([A-Z0-9]+)_/)[1];
const isLong = pos.Amount > 0;
// 记录多空仓位信息
}
}
return allPositions;
}
然后判断哪些仓位需要平掉。有两种情况:
第一种:套利机会已经消失。如果某个持仓对应的币种在最新的套利机会列表中找不到了,说明费率差已经收敛,应该平仓锁定利润。
第二种:方向发生变化。比如原来在 A 所做多 B 所做空,现在反过来了,也需要先平掉旧仓位。
平仓时会同时关闭两边的仓位:
// 平多仓
exchanges[longExIndex].CreateOrder(symbol, "closebuy", -1, amount);
// 平空仓
exchanges[shortExIndex].CreateOrder(symbol, "closesell", -1, amount);
并清除持仓记录,确保在寻找新机会之前,先处理掉已经失效的仓位。
平仓检测之后,策略会对筛选出的套利机会进行实盘验证。验证内容包括两个方面:
通过获取两边交易所的 K 线数据,计算历史价差:
// 获取240根K线
const recordsLong = EX_Long.GetRecords(symbol, PERIOD_M1, 240);
const recordsShort = EX_Short.GetRecords(symbol, PERIOD_M1, 240);
// 计算价差
const spreads = [];
for (const time of commonTimes) {
const midPrice = (priceMapLong[time] + priceMapShort[time]) / 2;
const spread = (priceMapLong[time] - priceMapShort[time]) / midPrice;
spreads.push(spread);
}
// 统计指标
const avgSpread = 平均值(spreads);
const range = 最大值(spreads) - 最小值(spreads);
const stdDev = 标准差(spreads);
这些指标反映了两个交易所之间价格走势的一致性。如果价差波动太大,说明风险较高。
获取实时行情,计算交易成本:
const tickerLong = EX_Long.GetTicker(symbol);
const tickerShort = EX_Short.GetTicker(symbol);
// 买卖价差(反映深度)
const longSpread = (tickerLong.Sell - tickerLong.Buy) / tickerLong.Last;
const shortSpread = (tickerShort.Sell - tickerShort.Buy) / tickerShort.Last;
// 开仓成本(在Long所买入,Short所卖出)
const openCost = (tickerLong.Sell - tickerShort.Buy) / midPrice;
// 平仓成本(在Short所买入,Long所卖出)
const closeCost = (tickerShort.Sell - tickerLong.Buy) / midPrice;
// 往返总成本
const roundTripCost = openCost + closeCost;
如果开平仓成本太高,会侵蚀费率收益,这样的机会就不值得做。
验证完成后,如果数据中没有可用的套利机会(data 为空对象),流程直接结束。如果有新的开仓机会,则进入 AI 评估环节。
验证通过的机会会交给 AI 进行综合评估。我们使用了一个精心设计的提示词,让 AI 像一个专业的套利分析师一样思考。
AI 会分析几个维度:
费率收益能否覆盖价差波动风险。核心判断逻辑是:
如果 rateSpread(每8小时收益)> range × 0.3
说明即使价差波动到极端情况,1-2个结算周期就能覆盖风险
如果平均价差为负,且做多在价格低的交易所,开仓时就能在便宜的地方买入,这是有利的开仓条件。
两边交易所的交易量是否足够,买卖价差是否合理。如果任一交易所 24 小时交易量低于 10 万美元,或买卖价差超过 0.3%,流动性可能不足。
开平仓成本能否在合理时间内被费率收益覆盖:
如果 roundTripCost < rateSpread × 2
意味着 2 个结算周期(16小时)就能覆盖交易成本
AI 会给每个机会打分(0-100 分),并判断风险等级(low/medium/high)。只有评分达标的机会才会被执行。同时,AI 会根据风险等级建议合适的开仓金额:
AI 的输出是一个 JSON 数组,每个元素包含:是否建议开仓、评分、建议金额、风险等级和决策理由。
AI 评估通过后,策略会执行开仓操作。执行流程非常严谨:
根据建议的开仓金额和当前价格计算需要开多少张合约:
const currentPrice = getCurrentPrice(ex, symbol);
const contractAmount = amountUSD / currentPrice / ctVal;
其中 ctVal 是合约面值,不同交易所可能不同。
尝试设置目标杠杆(默认 10 倍),如果不支持则逐级降低:
const leveragesToTry = [10, 5, 3, 2, 1];
for (let lev of leveragesToTry) {
const result = ex.SetMarginLevel(symbol, lev);
if (result === true) {
return lev; // 设置成功
}
}
下单后不是直接认为成功,而是要等待订单成交确认:
const orderId = ex.CreateOrder(symbol, 'buy', -1, contractAmount);
// 循环检查订单状态
for (let i = 0; i < 20; i++) {
const order = ex.GetOrder(orderId);
if (order.Status === ORDER_STATE_CLOSED) {
// 完全成交
break;
}
Sleep(500);
}
即使订单显示成交,还要再次检查实际持仓:
const position = getPosition(ex, symbol);
if (!position || Math.abs(position.Amount) === 0) {
// 订单成交但无持仓,开仓失败
return { success: false };
}
如果只有单方向开仓成功(比如多仓开成功了,但空仓失败了),策略会自动平掉已开仓位:
if (!results.short.success && results.long.success) {
// 尝试平掉多仓
const pos = getPosition(longEx, longSymbol);
executeClose(longEx, longSymbol, true, pos.Amount, longExchange);
}
这样可以避免出现单边敞口,确保套利的对冲性质。
开仓成功后,策略会保存套利持仓信息,包括开仓时间、价格、数量等,供后续平仓检测使用。
策略运行时,所有信息会实时展示在监控面板上,共分为五个表格:账户概览展示各交易所余额、冻结金额、总权益及总盈亏汇总;套利信号呈现当前检测到的套利机会、执行状态与失败原因;开仓决策详情记录 AI 对每个机会的评分、风险等级及判断依据;实时套利仓位展示当前持有的套利组合、多空盈亏与持仓时长;套利收益统计则汇总今日、本周、本月及累计的套利收益与收益率。

通过这些面板,可以实时掌握策略的运行状态,包括账户健康度、当前机会、持仓盈亏等所有关键信息。
最后说一下风险和注意事项:
资金费率套利虽然是对冲策略,但不是无风险的。两个交易所之间的价差可能会波动,如果波动超过费率收益,就会产生亏损。这就是为什么策略要验证价差稳定性。
如果某个交易所流动性不足,开平仓时的滑点可能很大。比如挂单簿深度不够,你的市价单可能会以很差的价格成交,导致实际开仓成本远高于预期。
特别是一些新的 DEX,可能存在合约漏洞或者流动性枯竭的问题。曾经有 DEX 因为智能合约漏洞导致用户资金损失的案例。
这个策略需要在多个交易所都有资金,比如在 3 个交易所做套利,资金就要分散在 3 处,资金利用率相对较低。
建议大家先用小资金测试,熟悉策略运行逻辑后再逐步增加投入。可以先在两个主流交易所之间套利,积累经验后再扩展到更多交易所。
今天介绍了这个基于 VarFunding 平台的资金费率套利策略。它实现了从数据采集、稳定性验证、AI 评估到自动执行的完整流程,并且提供了清晰的可视化监控。
策略的核心思路是: - 用数据驱动寻找机会:不是拍脑袋决定,而是基于实时费率数据和历史统计 - 用 AI 辅助决策:让大模型评估风险和收益,避免人为主观判断 - 用严谨的执行流程控制风险:从订单确认到持仓验证,每一步都有检查
当然,这只是一个基础框架,还有很多可以优化的空间:
完整代码已经公开在发明者量化平台工作流资金费率套利策略,欢迎大家使用和改进。