Cron 驱动的跨交易所资金费率套利机器人。核心思路: 在费率低的交易所做多永续合约,在费率高的交易所做空永续合约,两腿等量 delta-neutral,赚取 funding spread。
数据源:VarFunding API(预计算的跨所套利机会)。执行层:Hyperliquid SDK(EIP-712 私钥签名)+ Binance Futures API(HMAC 签名)。
每个 tick:扫描机会 → 稳定性验证 → 深度验证 → 开仓/维护 → 报告。
text
VarFunding API ──→ Scanner ──→ 稳定性验证 ──→ 深度验证
│
┌─────────────────────────┘
↓
CrossFundingEngine
/ \
HLClient BinanceClient
(EIP-712) (HMAC-SHA256)
| |
Hyperliquid Binance Futures
(永续合约) (USDT-M 永续)
hyperliquid-python-sdk >= 0.21.0eth-account >= 0.13.7python-dotenv >= 1.0.0requests >= 2.31.0Goal: 从 VarFunding API 获取跨所套利机会
Actions:
VarFundingScanner.fetch_opportunities() 获取 HL × Binance 的套利机会min_apr_pct,置信度 ≥ min_confidenceGate:
action: idle,等待下一 tickGoal: 防止瞬时费率波动导致错误开仓
Actions:
stability_snapshots(默认 3)std/avg,须 < stability_max_std_ratio(默认 0.3)Gate:
action: accumulating,继续积累快照Goal: 独立验证两所实际费率 + 价格差 + 往返成本
Actions:
price_basis_pct = |hl_price − bn_price| / avg_priceGate (ALL must pass):
max_price_basis_pct(默认 0.5%)min_apr_pct(默认 10%)action: rejected + 原因Goal: 原子开仓,先 HL 后 Binance,失败自动回滚
Actions:
计算 size: min(hl_budget, bn_budget) × 0.5 × 0.95 × leverage / price
两所分别 round_size,取较小值
两所设杠杆
先下 HL 单(分级保证金限制更严,失败代价低)
再下 Binance 单
保存完整开仓状态 + 两所初始余额
Gate:
Goal: 持仓期间持续监控,spread 不利或缺腿时自动处理
每 tick 检查:
close_spread_threshold(默认 0.005%)自动处理:
切仓逻辑:
switch_threshold_apr → 平仓 → 下个 tick 自动开新仓ParameterDefaultDescriptionhl_budget_usd``0Hyperliquid 单边预算 (USDC),0 = 自动读取账户余额bn_budget_usd``0Binance 单边预算 (USDT),0 = 自动读取账户余额min_apr_pct``10.0最低年化收益率门槛 (%)min_confidence``"medium"VarFunding 最低置信度 (low/medium/high)leverage``1杠杆倍数(默认无杠杆)stability_snapshots``3稳定性验证所需快照数stability_max_std_ratio``0.3Spread 标准差/均值上限close_spread_threshold``0.0001平仓 spread 下限(8h 费率差,≈10.95% APR)switch_threshold_apr``5.0切仓 APR 差距门槛 (%)max_price_basis_pct``0.5两所价格差异上限 (%)round_trip_cost_pct``0.12往返成本 (%, 含手续费+滑点)
ParameterDefaultDescriptionmax_consecutive_errors``5连续错误触发熔断cooldown_after_errors``3600熔断冷却时间 (秒)min_order_usd``10最小下单金额 (USD)
VariableRequiredDescriptionHL_PRIVATE_KEY✅Hyperliquid 私钥(主账户或 Agent Wallet)HL_VAULT_ADDRESS❌Agent Wallet 的 master 地址HL_TESTNET❌true 使用测试网BINANCE_API_KEY✅Binance Futures API KeyBINANCE_SECRET_KEY✅Binance Futures API SecretBINANCE_TESTNET❌true 使用测试网DISCORD_BOT_TOKEN❌Discord 通知 bot tokenDISCORD_CHANNEL_ID❌Discord 目标频道 IDTELEGRAM_BOT_TOKEN❌Telegram 通知 bot tokenTELEGRAM_CHAT_ID❌Telegram 目标 chat ID
CommandDescriptionTypical Usetick主循环:扫描 → 验证 → 开仓/维护Cron 每 5 分钟report生成日报(含 PnL、余额、费率)Cron 每天 00:00 UTCstatus当前状态(优先读缓存)手动查询bash
# 单次 tick
cd ~/scripts/cross-funding && set -a && . ./.env && set +a && python3 cross_funding.py tick
# 日报
python3 cross_funding.py report
# 状态查询
python3 cross_funding.py status
TierWhenColorKey Fieldstrade_alert开仓/平仓🟢 Green / 🟠 OrangeLong/Short 交易所, Size, Spread, APRrisk_alertSpread 不利/缺腿/熔断🔴 Red原因, 当前 APR, Delta 偏差hourly_pulse每小时(持仓中)⚪ Grey两所余额, 费率, Spread, PnLdaily_report每日报告🔵 Blue持仓详情, 总资产, ROI, 年化
通知同时推送 Discord embed + Telegram markdown。凭证解析优先级:环境变量 > OpenClaw openclaw.json > ZeroClaw config.toml。未配置时静默跳过。
json
{
"current_coin": "FET",
"direction": {
"long_exchange": "hyperliquid",
"short_exchange": "binance"
},
"entry_time": "2026-03-25T10:00:00+00:00",
"entry_spread": 0.0006,
"entry_hl_rate": 0.0000125,
"entry_bn_rate": 0.0006194,
"size": 150.0,
"entry_price": 0.85,
"budget_hl": 300,
"budget_bn": 450,
"entry_hl_balance": 295.5,
"entry_bn_balance": 445.2,
"entry_total_balance": 740.7,
"total_funding_earned": 0.0,
"rate_snapshots": [],
"cached_snapshot": {},
"cached_snapshot_ts": "...",
"last_tick": "...",
"last_pulse_ts": "..."
}
text
1. 获取进程锁(flock,防止并发 tick)
2. 检查熔断器状态(连续 5 次错误 → 冷却 1h)
3. 加载状态
4. IF 无持仓:
a. VarFunding API 扫描套利机会
b. 记录费率快照
c. 检查稳定性(需 3+ 快照,std_ratio < 0.3)
d. 深度验证(实时费率 + 价格差 + 净 APR)
e. 原子开仓(先 HL 后 BN,HL 失败自动减半重试)
5. IF 有持仓:
a. 健康检查(delta + spread + 双腿)
b. 不健康 → 自动平仓
c. 健康 → 缓存快照,每小时推送 pulse
6. 记录成功/错误
7. 释放锁
LayerCheckAction稳定性验证费率快照 std_ratio < 0.3阻止开仓,继续积累深度验证实际 spread > 0, 价格差 < 0.5%, APR ≥ 门槛拒绝不合格机会保守预算只用 min(两所预算) × 50%预留安全余量滑点控制市价单滑点 0.1%(非常规 5%)降低套利成本HL Margin 重试Insufficient margin → size 减半,最多 3 次适应分级保证金原子回滚BN 失败 → 自动平 HL防止单腿裸露Delta 监控两腿偏差 > 20% → 告警发现脱钩Spread 监控spread < threshold → 自动平仓防止费率反转亏损熔断器连续 5 错 → 冷却 1h防止连环失败
text
IF tick fails:
1. 记录错误到熔断器
2. 连续 5 次 → 进入冷却(1h)
3. 开仓失败:
- HL 失败 → 不开 Binance,直接终止
- Binance 失败 → 回滚 HL 腿(close_position)
- 发出 risk_alert 通知
4. 健康检查发现问题:
- 缺腿 → 平仓
- Spread 不利 → 平仓
5. 冷却结束后自动恢复
PatternProblem不做稳定性验证直接开仓瞬时费率波动导致开仓即亏滑点设太大(>1%)套利利润被滑点吞噬两所预算差太大大腿 size 受限于小腿,资金利用率低忽略价格差异两所标记价差异大时 delta 不中性不检查双腿一致性单腿被清算另一腿裸露杠杆过高小币波动大,保证金不足被强平只看 VarFunding 不独立验证API 数据可能滞后于实际费率熔断后手动重启不排查掩盖系统性问题
text
GET https://varfunding.xyz/api/funding?exchanges=hyperliquid,binance
Response: {
"markets": [{
"baseAsset": "FET",
"variational": { "exchange": "hyperliquid", "rate": 0.0000125 },
"comparisons": [{ "exchange": "binance", "rate": 0.0006194 }],
"arbitrageOpportunity": {
"longExchange": "hyperliquid",
"shortExchange": "binance",
"spread": 0.0006,
"estimatedApr": 66.5,
"confidence": "medium"
}
}]
}
安装后脚本位于标准 skill 目录,无需手动拷贝。
text
# OpenClaw 安装路径
~/.openclaw/skills/cross-funding-arb/references/cross_funding.py
# ZeroClaw 安装路径
~/.zeroclaw/skills/cross-funding-arb/references/cross_funding.py
安装后配置:将 .env 放到 references/ 目录(与 cross_funding.py 同级):
bash
# OpenClaw
cp .env.example ~/.openclaw/skills/cross-funding-arb/references/.env
# 编辑填入 HL_PRIVATE_KEY, BINANCE_API_KEY, BINANCE_SECRET_KEY
# ZeroClaw
cp .env.example ~/.zeroclaw/skills/cross-funding-arb/references/.env
bash
SKILL_DIR=~/.openclaw/skills/cross-funding-arb/references
# tick: 每 5 分钟(主会话执行 shell 命令)
openclaw cron add \
--name "cross-funding-tick" \
--cron "*/5 * * * *" \
--session main \
--system-event "cd $SKILL_DIR && set -a && . ./.env && set +a && python3 cross_funding.py tick"
# 日报: 每天 00:00 UTC(隔离会话,结果投递到 Discord)
openclaw cron add \
--name "cross-funding-report" \
--cron "0 0 * * *" \
--tz "UTC" \
--session isolated \
--message "执行跨交易所资金费率套利日报: cd $SKILL_DIR && set -a && . ./.env && set +a && python3 cross_funding.py report。将完整输出结果总结后回复我。" \
--announce \
--channel discord
bash
SKILL_DIR=~/.zeroclaw/skills/cross-funding-arb/references
# tick: 每 5 分钟
zeroclaw cron add --expr "*/5 * * * *" --shell \
"cd $SKILL_DIR && set -a && . ./.env && set +a && python3 cross_funding.py tick"
# 日报: 每天 00:00 UTC
zeroclaw cron add --expr "0 0 * * *" --agent \
"执行跨交易所资金费率套利日报: cd $SKILL_DIR && set -a && . ./.env && set +a && python3 cross_funding.py report。将完整输出结果总结后回复我。"
bash
cd ~/.openclaw/skills/cross-funding-arb/references
set -a && . ./.env && set +a
python3 cross_funding.py tick # 单次 tick
python3 cross_funding.py status # 状态查询
python3 cross_funding.py report # 日报
bash
npx clawhub install cross-funding-arb --force
安装时可能出现安全扫描告警(需
--force),这是误报。
本技能是交易策略,代码中涉及的"可疑模式"均为正常业务需求:
被标记的模式实际用途安全性private_key / secret_key / api_key交易所 API 凭证变量名全部通过 .env 环境变量注入, 代码中无硬编码密钥hmac + hashlib.sha256Binance Futures API 请求签名标准 HMAC-SHA256 签名, Binance 官方要求外部 HTTP 请求调用 Binance / Hyperliquid / VarFunding / Discord / Telegram API仅与已知交易所和通知服务通信bot_token / chat_idDiscord / Telegram 通知推送凭证可选功能,未配置时静默跳过
代码中不包含: eval / exec / subprocess / os.system / 文件系统扫描 / 动态代码加载 / 数据外泄逻辑。
如需审查,完整源码位于 references/cross_funding.py(单文件,约 2400 行)。