源文件:research/quant_digests/2026-03-31_1929_edgex-lighter-samecontract-crossvenue-arb-alpha.md
strategy/edgex_arb.py + strategy/order_manager.py + strategy/position_tracker.py + strategy/data_logger.py + exchanges/edgex.py + exchanges/lighter.py)+ Lighter 公共 orderBooks endpoint live sanity check这次主材料不是论文,而是一份 2026 新 repo:wavyjay1/cross-exchange-arbitrage。
它表面上是一个“EdgeX 与 Lighter 之间做 cross-exchange arbitrage 的机器人”,但如果按我们当前 desk 的优先级来读,真正值得单独拎出来进素材池的,不是“跨所机器人”这几个字,而是它给了一条相当完整、而且非常适合短周期 desk 做最小实验的 raw alpha 壳:
同一标的、同一类 perp,在两个 venue 的 BBO 短时错位;在一个 venue 争取 maker 进场,在另一边用 taker 对冲,赚的是跨 venue quote gap 的回收。
翻成人话: 这不是长周期 funding 套利,也不是 pair formation,不是“预测涨跌”,而是更原子的相对价值口袋:
这类题材和我们最近写的 spot-perp / funding / stablecoin / options relative value 不一样的地方在于:
这里的 base alpha 更短、更薄、更执行驱动。
最近几轮 digest 已经补了很多:
但当前池子里还缺一条非常“台面下”、却很像真实交易 desk 的原始 alpha:
same-contract、cross-venue、盘口级价差回收。
这份 repo 值得补,有 4 个原因:
1m / 3m:不是等 K 线走形态,而是等盘口 pocket;base alpha = 同一资产、同一类永续合约在两个 venue 的最优买卖盘会短暂失衡;当这个 gap 大到足以覆盖 one-leg maker + one-leg taker 的真实成交壳时,随后更可能向跨 venue 收敛方向回落。
所以它本质上是:
relative-valuestat-arbsame-underlier, same-contract, cross-venuestrategy/edgex_arb.pystrategy/order_manager.pystrategy/position_tracker.pystrategy/data_logger.pyexchanges/edgex.pyexchanges/lighter.pyhttps://mainnet.zklighter.elliot.ai/api/v1/orderBookswss://quote.edgex.exchangehttps://pro.edgex.exchange1m / 3mEdgexArb 的主逻辑非常明确:
long_ex_threshold = 10short_ex_threshold = 10fill_timeout = 5smax_position 受外部配置约束。也就是说,这不是“看两个 mid price 的差值”,而是明确写成:
这点很重要,因为很多跨所 alpha 写到最后都会偷换成 mid-mid backtest,但这份 repo 至少把真实成交层放进来了。
trading_loop() 里真正的两条触发条件是:
lighter_bid - ex_best_bid > long_ex_threshold:long EdgeX / short Lighterex_best_ask - lighter_ask > short_ex_threshold:short EdgeX / long Lighter但注意一个很 desk 的细节:
buy on EdgeX 时,订单价格是 best_ask - tick_size;sell on EdgeX 时,订单价格是 best_bid + tick_size;这对 repo 使用者是个提醒:
原始信号并不是严格的“可成交净价差”。
如果直接照抄,会把边看得偏厚。对 desk 来说,更正确的改法应该是直接把信号改写成:
long_gap_exec = lighter_bid * (1 - fee_lighter_taker) - edgex_buy_price_execshort_gap_exec = edgex_sell_price_exec - lighter_ask * (1 + fee_lighter_taker)而不是继续用裸 bid-bid / ask-ask 去判。
order_manager.py 里最值得抄的,不是某个 fancy signal,而是 交易状态机本身:
best_ask * 1.002;best_bid * 0.998;翻成人话:
repo 非常坦白地承认了一件事:
> 这条 alpha 不是“看见 gap 就一定能无风险锁住”,真正决定它值不值得做的,是 maker 先成交后,第二腿是不是还能用可接受成本补上。
因此,这条题材对 desk 的核心不是预测,而是:
position_tracker.py 和 edgex_arb.py 里有几条很重要的守门:
abs(net_position) > 2 * order_quantity,直接 sys.exit(1);max_position 控制单方向累计敞口;这说明这份 repo 的正确读法不是“套利脚本”,而是:
一个已经把单腿失控当真问题处理的 execution shell。
我对 https://mainnet.zklighter.elliot.ai/api/v1/orderBooks 做了 live sanity check:
200;symbolmarket_idmin_base_amountsupported_size_decimalssupported_price_decimalsmaker_feetaker_feemaker_fee = 0.0000taker_fee = 0.0000这点对 desk 很重要:
如果一边 venue 的 taker 壳真的接近 0,那么这类 alpha 的 admission hurdle 会明显下降; 但如果另一边 maker rebate / taker fee 没有同步纳入,回测还是会高估。
1m / 3m,5m 只做统计,不拿来当主触发这条线本质上是盘口 pocket,不是 bar-pattern。
所以最自然的读法是:
1m / 3m5m:只用于汇总 pocket 频率 / 持续时长 / venue health15m:不适合做主触发,最多用来做 regime veto这类 alpha 的研发顺序,不应该是:
而应该反过来:
这点要说清楚:
它自己就是 alpha 本体:
same-contract cross-venue quote gap reversion。
默认 threshold = 10 是绝对价格单位,不是 bps。
这会带来两个问题:
所以对 desk 来说,第一步不是回测全 universe,而是把 admission 改写成:
这份材料最该留下来的,不是:
10 这个数字;而是:
也就是说,对 desk 最值钱的不是参数,而是这条 alpha 的 execution grammar。
对每个时点都记录:
edgex_best_bid / asklighter_best_bid / asktick_size然后定义:
edgex_buy_exec = edgex_best_ask - tickedgex_sell_exec = edgex_best_bid + ticklong_gap_exec = lighter_bid - edgex_buy_exec - fee_stackshort_gap_exec = edgex_sell_exec - lighter_ask - fee_stack先看:
p95 / p99;对所有 gap_exec >= θ 的时刻做 event study:
这一步最能回答:
它到底是真回归,还是只是经常一闪而过,根本来不及补第二腿。
至少做 3 档延迟:
100ms500ms1s并模拟:
如果一加延迟边就消失,这条线就只适合更低延迟的基础设施,不适合当前 desk。
第一版先测:
gap_bps >= {2, 4, 6, 8}gap_ticks >= {2, 4, 6}gap / short-horizon spread-vol >= {1.0, 1.5, 2.0}目标不是找 best cell,而是看:
是否存在一整片在成本后仍然活着的参数 pocket。
这份 repo 值得进研究池,但要用对读法。
它真正该留下来的不是:
10 单位阈值;而是这条对短周期 desk 非常直接的 raw alpha:
same-contract perp 在两个 venue 的盘口会短时失衡;如果你能在一边拿到 maker、另一边迅速 taker 对冲,就有机会赚到 quote gap 的回收。
当前最关键的 desk 结论是:
1m / 3m 高强度 alpha intake,而不是 15m bar-pattern。如果只给一个最小动作:
先录两边 BBO 7 天,做 after-fee executable gap 的事件窗和延迟敏感性。
这一步最省时间,也最能决定这条 same-contract cross-venue alpha 值不值得进下一轮复现。
https://github.com/wavyjay1/cross-exchange-arbitragehttps://github.com/wavyjay1/cross-exchange-arbitragehttps://mainnet.zklighter.elliot.ai/api/v1/orderBookshttps://pro.edgex.exchangewss://quote.edgex.exchangeresearch/quant_digests/2026-03-31_1929_edgex-lighter-samecontract-crossvenue-arb-alpha.mdhttps://eu.jerrypsy.top/momentum/reading/quant_digests/2026-03-31_1929_edgex-lighter-samecontract-crossvenue-arb-alpha.html