GEX 数据状态、新鲜度与轮询
GEX 工作区顶部的来源行带有三个彼此独立的标签:正在使用哪个期权链来源、它的发布延迟有多大,美国期权交易时段是否开市,以及屏幕上这条期权链实际有多旧。新鲜度是按后端给出的期权链时间戳衡量的,绝不是按请求返回的时刻衡量。
Senzoukria · 文档 · 更新于 2026 年 9 月
位置
- 位置
- GEX 工作区 → 来源行,显示在每个 GEX 页面上方
- 过期阈值
- 期权链时效 20 分钟(STALE_AFTER_MIN)
- 时效刷新
- 标签上的时效每 10 秒重新读取一次
- 刷新频率
- 免费档:每 15 分钟一条完整期权链,每 5 秒一次现价 tick。OPRA:后端循环每 90 秒。Databento:每 120 秒完整刷新,无现价 tick。
- 前提
- GEX 需要你自己的期权数据源;行情数据由数据提供商收费,不是由 Senzoukria 收费。
它做什么
Gamma 敞口是算出来的,不是发布出来的,它的质量不会超过用来计算它的那条期权链。来源行把早期版本混在一个“LIVE”徽标里的四件事分开:来源及其发布延迟、美国期权交易时段的状态、内存中期权链的时效,以及最近一次请求的状态。
只有当期权链带有可用的时间戳、其时效在过期阈值之内、且所选来源确实是实时源时,才会显示 LIVE 这个词。已知存在发布延迟的来源会改为报告 DELAYED 并写出延迟时长,即使其他一切都正常。
来源标签与已知延迟
| 来源 | 标签文字 | 假定延迟 |
|---|---|---|
| Alpaca,已开通 OPRA 权限 | ALPACA OPRA · REAL-TIME | 未声明延迟 |
| Alpaca,免费档 | ALPACA · 15 MIN DELAY | 15 分钟 |
| Databento | DATABENTO OPRA · ≈15 MIN | 15 分钟 |
| Tradier | TRADIER · REAL-TIME | 未声明延迟 |
| Market Data | MARKET DATA · CACHED · DELAY UNKNOWN | 未知 — 该连接器请求的是缓存数据 |
数据标签的各种状态
第三个标签是唯一衡量屏幕上这份数据的标签。它来自后端发布的期权链时间戳,因此由 Rust 缓存提供的请求不会把这个时钟归零。
| 标签 | 何时出现 | 它告诉你什么 |
|---|---|---|
| LOADING… | 尚未收到期权链,有一个请求正在进行 | 页面上还没有任何内容被填充 |
| NO DATA | 没有收到期权链,最近一次请求失败或从未运行 | 如果有错误文本,会在提示里 |
| PROVIDER ERROR | 屏幕上有一条期权链,但最近一次请求失败 | 你正在读的内容来自这次失败之前 |
| STALE · n min | 期权链时效超过 20 分钟 | 此后页面上没有任何内容被刷新过 |
| AGE UNKNOWN | 该来源不发布期权链时间戳 | 无法衡量新鲜度,所以也不去声称 |
| LIVE · chain n min | 有时间戳、在阈值之内、且为实时来源 | 唯一敢说实时的状态 |
| DELAYED ≈n MIN · chain n min | 有时间戳且够新,但来源发布本身滞后 | 两个数字都显示,因为它们说的是两件事 |
怎么用
读任何一个水平位之前,先从左到右读这一行。延迟来源加上一条很新的期权链,可以用来判断结构,但对一段行情的最后两分钟毫无用处。STALE 标签意味着屏幕上的墙属于订单簿更早的状态,解决办法是假设面板里的刷新操作。
20 分钟这个阈值是对着刷新频率选的:免费档 15 分钟,付费源 90 到 120 秒,它容忍漏掉一个周期,拒绝容忍漏掉两个。
限制与陷阱
快照数据本身携带的 stale 标志没有任何代码路径会置起,因此被有意忽略;新鲜度改为在这里衡量。免费档五秒一次的现价 tick 只刷新标的价格 — 它不会重新加载期权链,正因如此期权链的时钟和现价的时钟被分开处理。
未平仓合约每天收盘后发布一次。在盘中,每一个 GEX 数值都随现价和时间流逝而变动,而不是随今天新建的仓位变动,标签再新鲜也改变不了这一点。
相关页面
其他语言版本
常见问题
- 自动刷新开着,为什么标签还写 DELAYED?
- 自动刷新说的是应用做了什么;延迟说的是数据提供商发布了什么。Alpaca 免费档的期权链不管被轮询多频繁,都大约落后市场 15 分钟,因此标签同时报告发布延迟和实测的期权链时效。
- AGE UNKNOWN 是什么意思 — 是坏了吗?
- 不是。它表示来源返回的期权链没有可用的时间戳,因此算不出时效。与其编一个新鲜度数字,工作区宁可说明自己不知道,而这些数值可能比看上去更旧。
- 期权链实际多久重新加载一次?
- 免费档每 15 分钟一次;后端 OPRA 循环运行时每 90 秒一次;Databento 每 120 秒一次,而 Rust 缓存意味着大约每两次调用才有一次真正到达数据提供商,从而节省额度。