Rank 213 / large-cap XS momentum × short-leg jump veto
接线状态:connected_runner_live
runner
scripts/run_rank213_largecap_xs_jump_veto_paper_runner.py
runner mode
frozen_admission_timeseries_seed
frozen variant
f64_h12_floor150_mult2p0
最近更新时间
2026-05-06T04:32:21Z
平均净收益 / 每笔 3h basket
22.03 bps
scheduler
momentum-rank213-paper-refresh.service
momentum-rank213-paper-refresh.timer
这页现在锁定的是当前 live 真正在跑的 frozen runtime 定义:它读的是 admission 已冻结的 timeseries seed,用来把 P3 接线显式化;它不是 raw-bar live recomputation。因此本页的“硬定义”以 frozen seed runtime 为准,不拿 rolling research 口径来偷换。
先看证据地图:Rank213 Evidence Map 已把 current runtime、monthly-volume causal history、as-of 修正、live audit、退役证据分层。后续讨论历史有效性时,默认先从这张地图进入。
这两个数字到底怎么算?
一句话:这页里的每一笔,不是单个币、也不是任意时点滚动交易;而是 1 个固定持有 3 小时的 market-neutral basket。当前 frozen live 版每 3 小时 才开一笔新 basket,并持有到 3 小时后 时间退出;这 3 小时里,不做二次换仓、不做持仓内重排。
| 字段 | 当前页面的实际含义 | 当前值 |
平均净收益 |
对每笔 closed basket 先算 net_bps = gross_bps - 4.0 × turnover_x,再对全部 closed baskets 做算术平均。所以它表示的是:平均每笔 3h basket 赚多少 bps。 |
22.03 bps / 笔 |
累计净收益 |
不是把每笔 bps 直接相加,而是把每笔净收益先转成 net_ret = net_bps / 10000,然后按 ∏(1 + net_ret) - 1 做链式复利。所以它表示的是:按这批 closed baskets 顺序连续滚下去后的累计净值变化。 |
113.4669% |
闭合 basket 数 |
当前累计纳入统计的 closed baskets 数量;每一笔都对应 1 次 3h 非重叠持有。 |
369 笔 |
持有时间 |
固定 HOLD_BARS = 12 根 15m bar,即 3 小时;持有窗内不再二次开新 basket。 |
3h |
- 把它翻成人话:当前页面上的 22.03 bps,意思不是“每天平均赚这么多”,也不是“每小时平均赚这么多”,而是:这 369 笔 3 小时 basket 的单笔净收益均值约为 +22.03 bps。
- 113.4669% 也不是年化;它表示的是:按这批 closed baskets 的先后顺序,把每笔净收益链式滚动以后,累计净值大约变成 2.1347x。
为什么每笔只有 22.03 bps,却还能滚到 113.4669%?
核心不是“单笔很大”,而是“单笔期望为正 × 频率很高 × 连续复利”。这页是 369 笔、约 8.00 笔/天、每笔持有 3h 的非重叠 basket,不是一天只做 1 笔。
| 拆解项 | 当前值 | 它说明什么 |
| 每笔平均净收益 | 22.03 bps = 0.2203% | 单笔看起来不大,但因为频次高,可以被复利放大。 |
| 总笔数 | 369 笔 | 46.12 天里大约做了 369 次 3h basket。 |
| 如果“每笔都刚好等于均值” | 125.2563% | 这只是一个均值复利的直觉参考,不是实际路径。 |
| 实际 realized cumulative | 113.4669% | 真实路径比“均值机械复利”略低,说明中间有波动拖累(volatility drag)。 |
| 单笔收益中位数 | 6.93 bps | 说明平均值会被一部分大赢单往上拉;典型一笔并没有均值那么高。 |
| 单笔离散度 | std = 172.03 bps | 分布很宽,不能把均值误读成“每笔都稳定赚 22bps”。 |
| 最好 / 最差一笔 | 880.14 / -523.28 bps | 尾部分布很重;大赢单对最终复利贡献不小。 |
| 非正收益占比 | 46.07% | 接近一半的单子并不赚钱,所以这个结果绝不是“几乎单单都赢”。 |
- 如果只看 22.03 bps/笔,会觉得“很小”;但别忘了这是 369 次非重叠复利,而不是 1 次。
- 这批样本里,“按均值机械复利”大约会到 125.2563%;实际是 113.4669%,两者差距就是路径波动带来的 drag。
- 所以更准确的人话是:不是每笔都很赚,而是小正期望在高频重复下被复利累起来了。
样本窗口到底是哪一段?
| 窗口 | 含义 | 当前值 |
sample_start_utc | 原始 frozen panel 的起点;它包含 formation warm-up,不等于第一笔交易时间。 | 2026-02-09T10:15:00Z |
sample_end_utc | 原始 frozen panel 的终点。 | 2026-03-28T07:00:00Z |
first_trade_entry_ts | 第一笔真正纳入统计的 basket 开仓时点。 | 2026-02-10T02:15:00Z |
last_trade_exit_ts | 最后一笔真正纳入统计的 basket 平仓时点。 | 2026-03-28T05:15:00Z |
raw_panel_days | 底层 frozen panel 覆盖天数。 | 46.86 天 |
trade_window_days | 真正有 basket 统计的交易窗口天数。 | 46.12 天 |
trades_per_day | 平均每天多少笔 closed baskets;当前 frozen 版应该接近每 3h 一笔,也就是约 8 笔/天。 | 8.00 笔/天 |
注意:sample_start_utc 是原始面板起点,不是第一笔交易起点。因为策略先要看 64 × 15m = 16h 的 formation window,所以第一笔 basket 会比 panel 起点晚一个 formation 窗。
持仓 3 小时期间,能不能再交易?
- 当前这页对应的 frozen live 版:不可以。它是 每 3h 非重叠一次 的 basket。
- 具体说:在
t 开仓以后,固定持有到 t + 3h;这段时间里,不因为新的 15m bar 到来而重排持仓。
- 所以这页上的收益统计,应该理解成:369 次“开一笔 3h basket → 持有 → 时间退出” 的结果。
- 如果以后要展示“每 15m rolling 重算、持仓互相重叠”的研究口径,那必须放到 formal/as-of 页面,不能和这页混写。
先把口径钉死:这页采用哪一版定义?
结论:本页采用 当前 live frozen spec 作为唯一 runtime 定义:15m bar,formation=64,hold=12,每 3h 非重叠换仓一次。formal/as-of 页面虽然使用同一套核心公式,但 cadence 是 每 15m rolling,不能在这页伪装成“当前 live runtime 也是 rolling 15m”。
| 页面 / 运行面 | 核心公式 | cadence | 这里能不能说成当前 live runtime |
213a_paper_runner.html |
同一套 baseline + short-leg jump veto |
每 3h 非重叠一次(UTC 02:15 / 05:15 / ...) |
可以;这是当前 frozen seed live/paper lane |
rank213_largecap_xs_jump_veto_shadow_runner |
同一套 baseline + short-leg jump veto + formal frozen gate |
每 15m raw-bar 审计刷新;当前实现口径是 recompute_recent |
不可以;这是 shadow / audit lane,用来暴露最新决策与 gate 状态,不是当前 live execution lane |
formal_strategy_review / asof_universe_long_history_review |
同一套 baseline + short-leg jump veto |
每 15m rolling 重算一次 |
不可以;这是 research / formal evidence 口径,不是当前 live runtime cadence |
标的选择 / Universe 更新:这页现在把口径拆开讲清楚
关键统一:讨论长周期时,不能把“固定某一时刻的 Top30”直接当成“历史滚动 Top30”。当前 rank213 相关文件里,至少有 4 种证据面;其中只有 monthly_volume_universe_rebuild 接近“按时间滚动重选 Top30”。
| 页面 / 证据面 | 名单会不会更新 | 它到底怎么选池 | 样本覆盖 | 结果摘要 | 你该怎么理解 |
当前 live/paper runner |
不会 |
固定读取 admission 冻结的 30 币名单;refresh 只更新新 signal / ledger,不按月或按季度重选 Top30。 |
2026-02-09T10:15:00Z → 2026-03-28T07:00:00Z |
113.4669%(369 笔) |
这才是当前真正跑着的口径;但它不是历史滚动 Top30 证据。 |
frozen current-universe historical recompute |
不会 |
还是同一份 frozen 30 币名单;只是把当前名单往历史上硬回放。 |
2025-10-24T08:30:00Z → 2026-04-10T23:45:00Z |
MAX 166.7185%;120D 121.8618% |
能回答“当前 frozen 名单最近共同历史怎样”,不能回答“历史上是否该滚动换池”。 |
asof_universe_long_history_review |
不按 Top30 重选 |
仍是 frozen 30 币种子名单;只是名字会在各自 onboard 之后 才参与排名,所以是“按上线时间可见”,不是“按历史市值滚动换池”。 |
2020-02-01T00:00:00Z → 2026-04-10T18:00:00Z;平均可交易 universe 18.45 |
全周期 veto -89.9796% |
它解决的是“后上市名字不能穿越历史提前参赛”;但仍不是你说的“每月/每段时间滚动 Top30”。 |
formal_strategy_review |
不按 Top30 重选 |
名单逻辑继承 asof_universe:仍是 frozen 30 币 + onboard 可见性;区别只是再叠加 frozen regime gate。 |
2020-02-01T00:00:00Z → 2026-04-10T18:00:00Z;gate ON rate 5.04% |
baseline+veto+gate 全周期 100.7246% |
这是当前最强的 formal 证据面,但它也不是历史滚动市值 Top30 回测。 |
monthly_volume_universe_rebuild |
会(月度重建) |
按月用 volume-proxy 重建 as-of universe;这是当前文件里最接近“历史滚动 Top30”的证据面。 |
2020-02-01T00:00:00Z → 2026-04-10T18:00:00Z;与 frozen30 平均重叠 12.37/30 |
baseline+veto+gate 全周期 -37.1264% |
如果你要问“历史上不固定某一时刻 Top30,滚动换池以后还行不行?”,当前最应该看的就是这一行。 |
- 直接回答:当前这条正在跑的 live/paper runner 没有按月更新 Top30;它跑的是 frozen admission 30 币名单。
- 第二个关键点:
asof_universe_long_history_review 也不是“每月滚动 Top30”;它只是解决“币在历史上还没上市时不能提前参赛”的问题。
- 如果你要看真正更接近“历史滚动换池”的证据,当前应该优先看
monthly_volume_universe_rebuild。
- selection 风险披露:universe audit 认为 frozen30 在 selection 维度存在 survivorship bias 风险(status=
yes);同时 original selection uses only then-visible info 的检查结果是 partial_no。
最终裁决卡:这几条证据到底该怎么用
先给最终版人话:如果你问“现在实际跑的是什么”,答案看 当前 live/paper runner;如果你问“历史上滚动换池以后还站不站得住”,当前优先看 monthly_volume_universe_rebuild;如果你问“同一 frozen 名单 最近共同历史怎样”,看 frozen current-universe historical recompute;如果你问“后上市币不要穿越参赛 后会怎样”,看 asof_universe_long_history_review。
| 你真正想回答的问题 | 默认应看哪条证据 | 一句话裁决 |
| 当前 live/paper 到底是不是会定期更新 Top30? |
当前 live/paper runner |
不会。 当前运行口径是 frozen admission 30-symbol universe,不做 monthly/quarterly rebuild。 |
| 同一份 frozen30 名单,最近共同历史表现怎样? |
frozen current-universe historical recompute |
近期共同历史是强的,但它只是在回答“当前名单往回推”这一题,不是在回答历史滚动换池。 |
| 把未上市币穿越问题修掉以后,这策略还怎样? |
asof_universe_long_history_review |
as-of 修正后,全周期 veto 是负的(-89.9796%);所以不能再把 as-of 读成“已经证明长期稳定赚钱”。 |
| 如果真的按时间滚动换池,而不是固定某一刻 Top30,会怎样? |
monthly_volume_universe_rebuild |
不支持强结论:当前最接近滚动换池的 full-period baseline+veto+gate 为 -37.1264%,远弱于 formal 页那条 100.7246%。 |
- 默认优先级建议:讨论“运行事实”时先看
live/paper runner;讨论“最新 15m 审计态 / gate 是否开门”时看 shadow_runner;讨论“历史严谨性”时先看 monthly_volume_universe_rebuild;asof 只负责解决上市时点可见性,不负责证明滚动换池有效。
- 因此这页现在的统一口径应该是:Rank213 当前可以被描述为“一个正在运行的 frozen30 paper/live lane,外加一个 15m raw-bar 的 shadow/audit lane”;但不能直接被描述为“历史滚动 Top30 已被长周期验证通过的策略”。
- 如果以后要做更正式的历史口径升级,下一步不是再重复 frozen30/asof,而是继续把
monthly_volume_universe_rebuild 做得更接近真实历史 market cap / liquidity rebuild,同时再把 shadow runner 从当前的 incremental tail refresh 继续收成更纯的 append/drop rolling ledger。
如果按“月度重构 universe”口径看,过去 5~6 年曲线长什么样?
先直接回答你的问题:按当前 monthly_volume_universe_rebuild 的 baseline+veto+gate 口径,样本从 2020-02-01T00:00:00Z 到 2026-04-10T18:00:00Z,约 6.19 年 / 75 个自然月,full-period 累计净收益是 -37.1264%。严格说,这不是“整整 6 年固定历史市值真值回测”,而是 volume-proxy 月度重建 下的最好现有近似证据面。
手续费口径也可以钉死:这里不是 5/10000 单边。当前代码/产物的净收益口径等价于 net = gross - 4.0bps × turnover_x。也就是说:当 turnover_x = 1.0 时,按的是 4.0 bps round-trip,等价于大约 2.0 bps / 10000 每边;不是 5 bps/10000。如果某笔因为 veto refill 导致 turnover_x > 1,成本会按这个 turnover 比例继续放大。
这条曲线非常不“顺滑上行”:按月末口径看,3 个盈利月、8 个亏损月、64 个持平月。也就是说,这 5~6 年不是“每个月都赚”,而是 绝大多数月份 gate 根本没开、月收益为 0,收益主要集中在少数开启月份里。注意:full-period 里的月内路径最大回撤仍有 -48.6289%,所以月末曲线会比真实 3h-basket 路径更平。
| 月度重构口径的关键问题 | 当前答案 |
| 过去 5~6 年 total return 到底是多少? | 不是 11.7%。 当前 full-period baseline+veto+gate 为 -37.1264%。 |
| 是不是每个月都盈利? | 不是。 当前月末口径下是 3 个盈利月、8 个亏损月、64 个持平月。 |
| 最好 / 最差月分别是哪一个? | 最好月是 2023-11,月度链式收益 8.5761%;最差月是 2025-04,收益 -13.7769%。 |
| 为什么月度曲线看起来这么平? | 因为这条线的 gate_on_rate 只有 3.5440%;绝大部分 3h rebalance 都被 gate 关掉了,所以月末大多是 0 变化。 |
按年拆开看(月度重构 × baseline+veto+gate)
| 年份 | 全年累计收益 | 盈利月数 | 亏损月数 | 持平月数 | gate-on baskets |
2020 | 0.0000% | 0 | 0 | 11 | 0 |
2021 | 0.0000% | 0 | 0 | 12 | 0 |
2022 | 0.0000% | 0 | 0 | 12 | 0 |
2023 | 8.5761% | 1 | 0 | 11 | 67 |
2024 | 0.2665% | 1 | 1 | 10 | 7 |
2025 | -37.3832% | 0 | 5 | 7 | 469 |
2026 | -7.7667% | 1 | 2 | 1 | 98 |
- 最重要的人话:这不是一条“每个月都在稳定赚钱”的线,而更像一条 长期大部分时间不动、少数月份跳一下 的机会型曲线。
- 所以任何单一正收益口径 都不能被读成“这条策略 6 年里月月赚钱、慢慢上涨”。更准确的读法是:在月度重构 + gate 之后,旧 15m 母体证据明显偏弱,收益高度集中且回撤很深。
- 这条证据面的限制也别忘:本页按月初以前的上一完整自然月 Binance UM perpetual 1d quote_volume 求和,作为 causal liquidity / 热门度 proxy 来重建每月 top30 universe。它不再依赖 CoinGecko market-cap proxy,也避免了 1000*/1000000* 合约 multiplier 对市值近似的扭曲;但它仍是 volume-proxy 近似,而不是原始研究当时保存下来的官方选池快照。
策略逻辑解释卡片:它到底怎么选币?
下面这张卡片只讲 当前 frozen live spec。不说“高/低”,直接说计算过程:
- 固定 universe:当前 frozen 版直接读取 admission summary 里的固定
30 币名单;refresh 时不按月/按季度重选 Top30。所以这页讲的是“当前运行口径”,不是“历史滚动 Top30”口径。
- bar 粒度:用
15m K 线。
- formation window:往前看
64 根 15m bar,也就是 16h。
- baseline score:对每个币取 formation window 的首尾 close,按
cumret = close[-1] / close[0] - 1 算过去 16h 累计收益。
- 横截面排序:把 universe 里所有币按
cumret 从低到高排序;top-3 做多,bottom-3 先作为 plain short 候选。
- short-leg jump veto:只检查 plain short 候选。对每个 short 候选,在同一个 formation window 里算它的
max 15m up-bar;再算同一时点全市场的 median(max-up-bar)。阈值固定为 max(1.5%, 2.0 × median(max-up-bar))。
- 如果某个 plain short 候选的
max-up-bar 超过该阈值,就 veto;然后从后续 loser rank 里往下补,直到 short leg 补满 3 个名字。
- 最终执行:long = plain_longs,short = veto_shorts;持有
12 根 15m bar,也就是 3h 后时间退出。
成本口径也锁死:net_bps = gross_bps - 4.0 × turnover_x。这页上的 live/paper 指标都是按这个 frozen 成本口径记,不额外夹带别的 fee 假设。
假数据示例:plain short 怎样被 veto,short 名额怎样 refill?
下面用一组假数据,把代码里的实际流程一步一步画出来。注意这里只是为了解释机制,不是当前真实持仓。
| symbol | 过去 16h cumret | formation 窗内 max 15m up-bar | 在这一步的角色 | 为什么 |
ALPHA | +12.4% | 1.0% | long | 过去 16h 最强,进 top-3 long |
BETA | +9.1% | 1.4% | long | 过去 16h 第二强,进 top-3 long |
GAMMA | +5.6% | 1.8% | long | 过去 16h 第三强,进 top-3 long |
DELTA | -4.2% | 1.3% | refill short | 原本不是 bottom-3,但因为 veto refill 被补进 short |
EPSILON | -7.8% | 1.4% | plain short | bottom-3 loser,且 max-up-bar 未超阈值 |
PHI | -9.5% | 3.9% | vetoed | bottom-3 loser,但 16h 内出现异常 15m 上冲,被 veto |
OMEGA | -11.2% | 1.1% | plain short | 最弱 loser,进入 short |
- 先看 cumret 排名:
ALPHA/BETA/GAMMA 是 top-3,所以进 long。
- plain short 候选会先落在最弱的三个:
OMEGA / PHI / EPSILON。
- 然后只对这三个 short 候选做 jump veto。假设当前全市场
median(max-up-bar)=1.6%,那阈值就是 max(1.5%, 2.0×1.6%) = 3.2%。
PHI 的 max-up-bar=3.9%,超过 3.2%,所以被 veto;OMEGA 和 EPSILON 保留。
- short leg 少了一个名额,就从后续 loser rank 往下补,补到
DELTA;因为它的 max-up-bar=1.3% 没超阈值,所以最终 short 变成 OMEGA / EPSILON / DELTA。
- 最终执行篮子:
long = ALPHA,BETA,GAMMA;short = OMEGA,EPSILON,DELTA。
更长周期:我们现在到底有什么数据?
先把边界说清楚:在当前 frozen current-universe 的同口径检查里,公共共同历史最多只到 168.64 天(2025-10-24T08:30:00Z → 2026-04-10T23:45:00Z)。所以 120D 可以算;但 180D / 360D 不能在同一 frozen current-universe 口径下硬算。
| 窗口 | 是否可用 | 覆盖区间 | rebalances | mean net bps | cum return | 备注 |
MAX AVAILABLE |
yes |
2025-10-24T08:30:00Z → 2026-04-10T23:45:00Z |
1343 |
8.96 |
166.7185% |
这是当前 frozen current-universe 同 spec 的最大可用共同历史 |
120D | yes | 2025-12-11T21:30:00Z → 2026-04-10T21:30:00Z | 960 | 9.96 | 121.8618% | 同口径 frozen current-universe historical recompute |
180D | no | — | — | — | — | common-history shorter than requested window under frozen universe(可用共同历史约 167.88 天) |
360D | no | — | — | — | — | common-history shorter than requested window under frozen universe(可用共同历史约 167.88 天) |
- 120D 现在有数据:当前同口径 historical recompute 给到 121.8618%,对应 9.96 bps/笔、960 笔。
- 180D / 360D 现在不要乱说:不是结果不好所以不报,而是同一 frozen current-universe 的共同历史根本不够长。
- 如果要看更长(1Y/2Y/3Y/5Y/6Y),目前只能去看独立的
asof_universe_long_history_review / formal_strategy_review / monthly_volume_universe_rebuild 这类不同证据面,不能直接冒充为这页 frozen current-universe 已验证通过。
把公式和代码一一对上
| 概念 | 这页的硬定义 | 对应代码实现 |
| formation 窗 | 过去 64 根 15m bar(16h) | close_window = panel[eligible].iloc[i - FORMATION_BARS:i + 1] |
| baseline score | cumret = close[-1] / close[0] - 1 | cumret = close_window.iloc[-1] / close_window.iloc[0] - 1.0 |
| 做多名单 | 按 cumret 排名的 top-3 | longs = rank.index[-TOP_N:].tolist()[::-1] |
| plain short 候选 | 按 cumret 排名的 bottom-3 | plain_shorts = rank.index[:BOTTOM_N].tolist() |
| jump veto 统计量 | formation 窗内 max 15m up-bar | short_info = [(sym, float(hist[sym].max())) ...] |
| veto 阈值 | max(1.5%, 2.0 × median(max-up-bar)) | veto_threshold = max(VETO_FLOOR, VETO_MULT * universe_med) |
| refill | 被 veto 后,从后续 loser rank 继续往下补 | refill = [sym for sym in rank.index if sym not in longs and sym not in plain_shorts] |
| 最终执行 short | veto_shorts | shorts = veto_shorts / frozen seed 对应 variant_timeseries.csv.veto_shorts |
| 退出 | 持有 12 根 15m bar = 3h | exit_ts = timestamp + 12 × 15m |
| 成本 | 4.0 bps × turnover_x | net_bps = gross_bps - 4.0 × turnover_x |
regime 快照(来自 regime_review)
- live-like:
2025/2026 positive regime
- gate:
ON(3/3,阈值 3)
- distance: good=
2.7483,bad=5.7957
- window:
2026-03-11T18:00:00Z → 2026-04-10T18:00:00Z
gate 到底是不是同一套?什么时候会开?
先给结论:当前网页、formal 5~6 年回测、monthly rebuild、以及最新 shadow decision 用的,都是同一套 frozen regime_gate_v1;并且现在统一成 causal / live-aligned 口径:最近 30 天滚动窗口,按 3 条规则投票;只要 votes >= ceil(valid_rules × 0.67) 就 ON,否则 OFF。OFF 时不是反手,而是 flat。
| gate 变量 | 阈值 | 它在看什么 |
veto_active_rate | ≥ 0.3401 | 最近30天里,有 short-leg jump veto 触发的 rebalance 占比;越高说明 loser 端更常出现‘先猛冲再转弱’的异常挤兑/离散环境。 |
xs_dispersion_bps | ≥ 379.5133 | 最近30天横截面离散度(universe dispersion);越高说明强弱分化更明显,cross-sectional long-short 更有施展空间。 |
ls_divergence_bps | ≥ 5.0783 | 最近30天 long leg 与 veto-short leg 的平均表现差;越高说明多空两边确实在拉开,而不是只有单边噪声。 |
- 规则不是“永远写死必须 3/3”。 正式定义是
ceil(valid_rules × 0.67)。在成熟样本里通常是三条都有效,因此当前这版多数时候等价于 3/3 才 ON;若冷启动或数据覆盖缺口导致有效规则减少,则按当时 valid_rules 自动重算门槛。
- 所以你问“是三者都达到,还是达到其中几个?”——严格答案是:看当时有效规则数。而在当前成熟运行链路里,重点是三条规则已经能按 causal 口径完整评估。
当前这两层“ON”要分开看
| 观察面 | 窗口 / bar | 当前状态 | 你该怎么读 |
formal current gate snapshot |
2026-03-11T18:00:00Z → 2026-04-10T18:00:00Z |
ON(3/3,阈值 3) |
这是和长期 formal 回测同定义的一层,并且明确按 causal/live-aligned 方式计算。 |
latest raw-bar shadow decision |
2026-05-06T04:15:00Z |
OFF(2/3,阈值 3) |
这是最新实时 decision bar;现在 preview 行也会带上过去 30 天已实现样本,不再因为“当前这笔未走完”而丢第三条规则。 |
formal 当前窗口,三条规则具体过没过?
| 变量 | 当前值 | 阈值 | 是否通过 | 是否有效 |
veto_active_rate | 0.8174 | 0.3401 | pass | yes |
xs_dispersion_bps | 811.5763 | 379.5133 | pass | yes |
ls_divergence_bps | 20.4627 | 5.0783 | pass | yes |
人话版:当前不只是“运气好,刚好碰到 gate 开着”。从 formal 当前窗口看,三条指标都明显高过阈值:更像是横截面分化、veto 活跃度、多空分化同时处于强区间,所以 gate 打开。
这次把 shadow / formal / monthly rebuild 的 gate 口径统一成 causal 版了。
计算模式:causal_live_aligned
规则口径:veto/xs features use decision-time-observable data; ls_divergence only uses rows whose exit_ts was already realized by that decision time.
再把 shadow 运行态说人话:当前 raw-bar shadow 审计 lane 的 source_mode 是 recompute_recent(frame=recompute_recent);当前 tail 关注窗 14 天。这表示它现在会优先沿用已有 recent ledger,只重刷尾部 overlap + 最新 live row,而不是每次都把整段最近窗口从零重算。
但也要诚实:这还不是最极致的“单 bar append/drop、全程 O(1) ledger 更新”;更准确的叫法是 incremental tail refresh。当前页面把它当作 shadow / audit lane,不是 live execution lane。
- 回答你最核心那句:“此时此刻的 gate 和过去 5 年回测里的 gate 是不是一样?”——现在定义和实现都对齐:shadow / formal / monthly rebuild 按同一套 causal frozen gate。
- 再翻成人话:不是“随便碰巧 market 好一点就放行”。它要求最近 30 天里 强弱分化够大、veto 异动够活跃、且多空分化够明显;否则就 flat。
最新一笔信号快照
{
"entry_ts": "2026-03-28T02:15:00Z",
"exit_ts": "2026-03-28T05:15:00Z",
"gross_bps": 886.804320820116,
"net_bps": 880.1376541534494,
"turnover_x": 1.6666666666666663,
"veto_count": 2,
"longs": [
"ONUSDT",
"SIRENUSDT",
"PIPPINUSDT"
],
"shorts": [
"STGUSDT",
"KNCUSDT",
"WLDUSDT"
]
}