因子清单:采集器评估的 399 个信号
采集器每 2 秒对 7 个市场各做一次采样,并把每一个样本过一遍一张因子网格: 6 个族、共 399 个因子。命中就记一条模拟下单(含当时的买入价与对手盘挂单量)。 这一页把这张网格、以及它在真实数据上跑出来的结果如实公布。
先读这三条,否则会误读本页:
- 采集器已于 2026-09-26 切换为「低位回中」策略,因子网格不再记录。 所以下面的实测是因子时代的冻结样本,数字不会再增长。
- 这些因子是研究者自己的信号,不是本站推荐的交易方式。本站提供的是原始数据 —— 因子怎么用、值不值得用,由你决定。
- ★ 实测结果是每个族的净 EV 都是负的(已含手续费)。我们特意把它印出来, 因为「一堆正收益的漂亮数字」通常意味着口径有问题。见下方第三节。
一、六个族各在测什么
| 族 | 因子数 | 它在问的问题 | 因子名前缀 |
|---|---|---|---|
| booklag | 135 | 盘口滞后:现货已经动了、盘口报价还没跟上。买「马上要消失的那个价」。 | book_lag 45 · book_lag_mid 45 · stale_ask 45 |
| momentum | 108 | 动量:N 秒位移、单拍跳变、均值回复、现货相对 TWAP 的偏离。 | spot_burst 40 · mean_revert 30 · spot_vs_twap 30 · composite_jump 8 |
| basis | 72 | 跨源:六家现货之间的基差异常、某一家报价离群、多家互相矛盾。 | basis_spike 18 · basis_quiet 18 · outlier_src 18 · src_disagree 18 |
| depth | 54 | 盘口深度:挂单量掉到本窗口自己的低分位、报价被撤走、两腿深度比。 | depth_drop 18 · quote_pull 18 · depth_ratio 18 |
| boundary | 20 | 边界点:现价相对开盘锚点(现货 / 官方 TWAP 两种口径)的位移。 | boundary(2 锚点 × 5 门槛 × 2 方向) |
| lock | 10 | 算术锁定:两腿报价之和已明显偏离 1.0,存在无风险或近乎无风险的价差。 | lock 5 · near_lock 5 |
| 合计 | 399 | 其中 361 个需要本窗口历史(needs_hist),38 个只需当前样本 |
二、参数网格(因子按这些维度笛卡尔积展开)
| 维度 | 取值 |
|---|---|
| N 秒位移窗口 | 10 / 20 / 30 / 60 / 120(盘口族另用 5 / 10 / 20 / 30 / 60) |
| bp 门槛 | 单拍跳变 1 / 2 / 4 / 8 bp;位移类 1 / 2 / 4 bp |
| 分位门槛 | 高分位 0.80 / 0.90 / 0.95;低分位 0.05 / 0.10 / 0.20 |
| 回看窗口(秒) | 30 / 60 / 120 |
| 方向 | follow(顺向)/ fade(反向) |
| 容差 tol | 0 / 1 / 2(盘口滞后族) |
| 锁定 r_max(秒) | 60 / 45 / 30 / 20 / 10 |
| 边界点 k | 1 / 2 / 3 / 5 / 8 |
因子名就是参数编码,例如 book_lag.N10.g1bp.tol2 表示
「盘口滞后族、N=10 秒、门槛 1bp、容差 2」;boundary.twap.k2.fade 表示
「边界点族、锚点用官方 TWAP、门槛 2bp、反向」。
三、实测结果(1,904 个已结算窗口 / 418,270 条模拟下单)
| 族 | 模拟下单 | 覆盖窗口 | 胜率 | 平均买入价 | 净 EV / 股 |
|---|---|---|---|---|---|
| momentum | 144,314 | 1,884 | 47.75% | 0.4852 | -0.0267 |
| booklag | 94,506 | 1,827 | 40.11% | 0.4064 | -0.0174 |
| basis | 89,986 | 1,884 | 48.72% | 0.4928 | -0.0253 |
| depth | 55,649 | 1,885 | 48.23% | 0.4954 | -0.0345 |
| boundary | 30,248 | 1,893 | 48.45% | 0.4911 | -0.0262 |
| lock | 3,567 | 890 | 84.72% | 0.8419 | -0.0014 |
| 合计 | 418,270 | — | 46.66% | — | −0.0251 |
口径:净 EV / 股 = (中了 ? 1 : 0) − 买入价 − 手续费,
手续费 = 0.07 × min(价格, 1−价格)(taker)。买价用的是当时的 ask(不是 mid),
且已按对手盘挂单量过滤掉成交不了的那些。每个族的净 EV 都是负的。
怎么读这张表(值得花两分钟):
- lock 族胜率 84.72% 却是负的 —— 因为它的平均买入价高达 0.8419, 而 p=0.8419 时的盈亏平衡胜率是 85.3%(价格 + 手续费)。胜率高不等于赚钱。
- booklag 胜率只有 40%,但净 EV 最好(−0.0174) —— 它买的是便宜的一侧(均价 0.4064)。 「高胜率」和「高 EV」是两件事,别用胜率挑信号。
- 合计 46.66% 的胜率对应 −0.0251 的净 EV:这个市场在扣除 taker 费之后, 这些信号整体没有正向边际。边际要么来自更低的手续费(做 maker), 要么来自更好的执行,要么来自你自己的信号 —— 而不在这张表里。
四、想自己复算?原始数据都在接口里
我们没有把「因子值」做成接口(那是我们的研究口径,不该强加给你)。 接口给的是原始输入,你可以用完全相同的字段自己复算任意因子,或者定义你自己的:
| 你要什么 | 用哪个端点 |
|---|---|
| 逐 2 秒的盘口与现货快照(含各源报价、挂单量、边数) | /v1/samples.php?slug=…&raw=1 |
当前窗口的实时快照(含 official_bp / spot_bp / venue_bp) |
/v1/window.php |
结算结果与四规则读数(so/sc/to/tc,可自行复算方向) |
/v1/settle.php |
| 历史窗口列表(分页、按市场筛) | /v1/history.php?market=eth&limit=… |
| 汇总统计(健康度、族级口径的历史聚合) | /v1/stats.php |
想直接上手:用 Python 接入数据(含可直接运行的客户端)、 2 秒粒度下的盘口陷阱 (买价该用 ask、手续费怎么算、回测自查清单)。