Glassnode 历史指标回测:核对 PIT、UTC 区间和真实可用时间
链小知 · 进阶 · 核验 · 依官方文档整理
用已有脱敏指标文件和读取记录,区分区间开始、计算时间、API 发布及历史修订,避免把后来才知道的交易所标签带进过去的分析。
开始前准备
- 准备既有指标 JSON、对应 metadata、参数和获取时间;api_key / X-Api-Key 已遮盖。先确定研究截止时刻,统一记 UTC。
- 没有原响应时,可按官方样本整理字段检查表;样本和今天读取的历史文件不能证明当年的 API 可用性。
1. 固定资产、指标与研究截止条件
记录 metric path、资产 a、计价 c、交易所 e、粒度 i 和研究截止 UTC 时刻。交易所余额、转移与现货成交量是不同口径;这里只核对已有公开分析数据,不把链上余额解释为全部储备或用户负债。
检查结果:同一比较组的资产、交易所、单位、粒度及截止时刻一致。
2. 检查具体参数组合和 PIT 身份
打开该文件对应的 metadata:核对 path、queried、timerange,以及可选 is_pit 和 refs。/v1/metadata/metrics 列出的只是指标部分路径;/v1/metadata/metric 仅传 path 得到的 parameters 是可能值并集,具体资产/交易所/粒度应对照带参数的元数据。PIT 文档列过 /distribution/balance_exchanges_pit,但不能只给普通路径加后缀就认定获得了可用且获授权的 PIT。
检查结果:文件身份与已处理参数可追溯;is_pit 缺失或具体组合未知时保留待核。
3. 把时间标签展开为 UTC 区间
读取每点 t 及请求粒度,按 UTC 记录区间开始和结束。日标签表示该 UTC 日,小时标签表示这一小时;状态类余额虽以区间开始作标签,值可代表区间末状态。不要在日标签出现的零点就将当天最终余额投入模型。频率与指标自身聚合窗口也要分开,小时输出不自动等于只统计一小时活动。
检查结果:每点都有区间、标签与指标值代表时点;没有混入本地时区。
4. 逐点保留 computed_at 与缺失状态
单序列保留 t/v/computed_at,多序列保留 t/o/computed_at;bulk 要检查每个子项自身的 computed_at,不能给全部资产套一个时间。缺失字段不填 t 或零:官方从 2024-09 开始记录此字段,早期可能没有。PIT 历史也只始于具体指标实际跟踪日期,2025-07 扩大覆盖不会产生此前未跟踪的 PIT。
检查结果:每个值与其时间字段对应,缺失/超出历史覆盖单独列出。
5. 检查截止前是否已有计算和发布证据
若 computed_at 晚于研究截止,剔除该点;若不晚于截止,继续查已有 API 获取时间或当时保存的回执。computed_at 不是发布时刻,官方观察到计算后仍有发布延迟;其延迟分位数也不是每一点的保证。只持今天下载的历史文件,无法证明过去某一秒已能取到;缺记录的点标可用时间未知,敏感性分析应披露该限制。
检查结果:计算截止检查与真实发布/获取证据分开,未把 computed_at<=截止直接判为当时可见。
6. 识别最新点补录与交易所历史标签修订
对照读取时间和区间结束时间,标出最新尚可能补录的数据。普通序列会受确认、延迟上报及数据处理影响;交易所发现新地址或内部搬运识别也可能改更早历史。近期 finalization 等待结束不能证明旧标签永久不变;今天普通序列与 PIT 不一致时,先核对版本、参数和标签范围,保留两份原值,不替换掉 PIT 来消除差异。
检查结果:最新补录、历史标签修订与参数不一致分为不同原因。
7. 整理可复查的数据使用清单
逐点输出指标、参数、UTC 区间、值、computed_at、原获取时间、纳入/剔除/未知及理由。若还需要补数据,先核对已有 API 权限:Advanced Light API 限 14 天日数据且无 bulk,不能按 Professional 示例承诺长历史。认证字段只保留位置和存在状态,避免把 key 放入共享研究记录。
检查结果:清单可解释每点为何可用;历史、发布及套餐缺口未被当成已验证结果。
怎样确认完成
- 完成逐点时间/来源检查表,区分可纳入、需剔除和可用时间未知。
- 保留原文件、具体参数和读取记录;文档演示不能替代实际下载和历史发布证据。
常见错误与边界
- PIT 防止后见修订,不会把计算时间变成 API 发布回执。
- 交易所余额标签不完整且不包含负债;某次流入/流出也可能来自地址调整。
- 最新点等待处理完成与历史不再变化是两项不同条件。