Files
Chan/research/out/probe_hb_vs_raw.csv
T
UbuntuandCursor 7e339d2a54 research: 影子交易器落在 Hummingbot 上,并修掉 Bitget 连接器的换根延迟
1m 腿的滑点余量只有几个 bp,所以要测的必须是生产路径的滑点——换个运行时
测出来的数就不作数。框架因此从「滑点已知后再定」提前到测量阶段就定为
Hummingbot(Spot/Perp 连接器均 v2.0,Bitget 是 Foundation Partner)。

新增 research/live/。前置测量:

- bench_compute.py 本机算力,1m 单币 0.318s、三币串行 1.38s
- venue_parity.py Binance 与 Bitget 同根信号重合仅 14.6~42.6%
- signal_sensitivity.py 0.25bp 扰动就换掉一半信号
- aggregate_robustness.py 但总体期望不降——脆的是信号身份,不是 alpha
- bitget_baseline.py 因此改用 Bitget 原生基线定预算:余量 BTC -0.13bp、
  ETH +4.02bp、SOL +2.92bp。BTC 本就为负,只作延迟测量的参照物

运行时选型:

- parity_env.py 容器与本机信号逐一相同(下标、中枢数、checksum 全等),
  容器内 0.26s/币反而更快。故 chanlun 直接挂载进容器,不必另起信号服务。
  装进现有 .venv 那条路走不通:Hummingbot 要 numba>=0.61.2 与
  aiohttp<3.14,与本机 Python 3.14 冲突
- latency_ccxt.py / latency_hummingbot.py / latency_compare.py 初测显示
  Hummingbot 比 ccxt.pro 慢约 1030ms,90 根逐根配对里 80~97% 更慢
- probe_ws_action.py 否掉「丢弃 snapshot」的猜测:换根首条就是 update
- probe_hb_vs_raw.py 与 latency_attribute.py 四路归因——容器网络 2~18ms、
  Hummingbot 处理 -10~-30ms,1350~1480ms 全落在解析方式上
- probe_ws_payload.py 定位根因:Bitget 换根会推一条带两根的消息
  [上一根, 新一根],而上游取 data["data"][0] 拿到的是上一根,新一根要等
  下一条单元素消息

修复:

- patched_candles.py 处理消息里的全部元素。不能简单改成 [-1]——那样上一根
  的收盘价会永远停在换根前约 1 秒的那次推送上,而信号对 0.25bp 都敏感
- verify_patch.py 60 根配对验证:拿回 1060~1090ms,与原始 WS 只差 5~14ms
  已贴理论下限,19 根已收盘 K 线 OHLCV 逐根未变。折算 ETH 省 0.54bp、
  SOL 省 0.42bp。此 bug 值得向上游反馈

影子交易器:

- shadow_hb.py 不下单,读连接器真实盘口按仓位吃单深度算成交价,与次根开盘价
  (回测 entry_delay=1 的口径)相减,分解成延迟漂移、盘口价差、深度冲击。
  盘口 10Hz 滚动缓冲 30 秒,把延迟变成自变量:每个信号记 0.5/1/2/5s 与实际
  算完时刻各一个滑点值,本机算得慢也不影响能读出的曲线
- shadow_signal.py 信号计算隔离到子进程。0.26s 是纯 CPU 且 chanlun 受 GIL
  限制,放进 asyncio 循环会把行情处理一起卡住
- shadow_report.py 首日延迟门槛与滑点曲线报表

不用 paper trade 测滑点:它的成交由 Hummingbot 自己的撮合模型模拟,
测出来是模型行为而非市场行为。

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-08-27 23:51:57 +08:00

3.3 KiB

1symkline_tsraw_mshb_msdelta_ms
2BTC1787840340000178784034175417878403417562
3ETH1787840340000178784034228817878403422913
4SOL1787840340000178784034232517878403423316
5ETH178784040000017878404314141787840401868-29546
6SOL178784040000017878404305981787840402172-28426
7BTC178784040000017878404314141787840402868-28546
8SOL17878404600001787840460814178784046082511
9ETH1787840460000178784046112017878404611277
10BTC1787840460000178784046145917878404614601
11SOL178784052000017878405651011787840520468-44633
12ETH178784052000017878405647981787840521932-42866
13BTC178784052000017878405636801787840522276-41404
14BTC1787840580000178784058171517878405817150
15ETH17878405800001787840581827178784058183811
16SOL1787840580000178784058230917878405823123
17SOL178784064000017878406914341787840641589-49845
18BTC178784064000017878406918991787840641610-50289
19ETH178784064000017878406914341787840642306-49128
20BTC178784070000017878407017801787840701750-30
21SOL178784070000017878407022261787840702195-31
22ETH178784070000017878407027141787840702679-35
23BTC178784076000017878407620851787840762065-20
24ETH178784076000017878407622651787840762237-28
25SOL178784076000017878407624471787840762419-28
26SOL178784082000017878408345531787840821260-13293
27ETH178784082000017878408341631787840821362-12801
28BTC178784082000017878408340041787840822443-11561
29SOL178784088000017878408809371787840880935-2
30BTC178784088000017878408817541787840881753-1
31ETH1787840880000178784088223317878408822407
32SOL178784094000017878409629071787840942014-20893
33ETH178784094000017878409629071787840942176-20731
34BTC178784094000017878409629361787840942328-20608
35ETH1787841000000178784100186417878410018673
36SOL1787841000000178784100276317878410027641
37BTC1787841000000178784100288417878410028851
38BTC178784106000017878411077091787841061698-46011
39SOL178784106000017878411077091787841061959-45750
40ETH178784106000017878411072691787841062325-44944
41SOL1787841120000178784112092817878411209357
42ETH1787841120000178784112133517878411213394
43BTC178784112000017878411216831787841121682-1
44BTC1787841180000178784118177017878411817744
45SOL178784118000017878412406521787841181814-58838
46ETH178784118000017878411822451787841182229-16
47ETH1787841240000178784124149417878412415028
48BTC1787841240000178784124150717878412415136
49SOL1787841240000178784124166217878412416653
50ETH1787841300000178784130083417878413008362
51SOL1787841300000178784130116617878413011704
52BTC1787841300000178784130129817878413013013
53ETH178784136000017878413815861787841361274-20312
54BTC178784136000017878413817531787841361800-19953
55SOL178784136000017878413814191787841362314-19105
56SOL1787841420000178784142147117878414214732
57BTC1787841420000178784142231817878414223191
58ETH1787841420000178784142327317878414232785
59BTC178784148000017878415262961787841481733-44563
60SOL178784148000017878415263111787841481794-44517
61ETH178784148000017878415260951787841482320-43775
62ETH17878415400001787841541006178784154101610
63BTC1787841540000178784154122417878415412284
64SOL17878415400001787841541664178784154167410
65ETH17878416000001787841600978178784160098810
66BTC178784160000017878416026261787841602625-1
67SOL1787841600000178784160273017878416027377