数据格式

AHR999 数据格式

数据集提供两种序列化 —— ahr999.jsonahr999.csv —— 行列完全一致。本页是逐字段的契约:类型、null 处理,以及你可以依赖的不变量。

JSON

发布于 /datasets/ahr999.json。一个 JSON 数组,每个 UTC 日历日对应一个对象,按从旧到新排序。以两空格缩进美化并带行尾换行,使每日提交的 git diff 保持可读。

[
  {
    "date": "2017-08-17",
    "close": 4285.08,
    "ma200": null,
    "ahr999": null,
    "quantile5y": null,
    "windowKind": "insufficient_samples"
  },
  {
    "date": "2026-04-19",
    "close": 73801.79,
    "ma200": 86578.65964999999,
    "ahr999": 0.4116636687277032,
    "quantile5y": 0.13917808219178082,
    "windowKind": "rolling_5y"
  }
]

CSV

发布于 /datasets/ahr999.csv。与 JSON 相同的行列,兼容 RFC 4180,UTF-8,带行尾换行。JSON 的 null 序列化为空字段。

date,close,ma200,ahr999,quantile5y,windowKind
2017-08-17,4285.08,,,,insufficient_samples
...
2026-04-19,73801.79,86578.65964999999,0.4116636687277032,0.13917808219178082,rolling_5y

字段说明

字段类型可空说明
datestringUTC 日历日;收盘价取 Binance 00:00 至 24:00 UTC 的日 K 收盘。
closenumber每 BTC 的 USDT 价,来自 klines?symbol=BTCUSDT&interval=1d 的字段 [4]
ma200number | nullclose 的 200 日简单移动平均;前 199 行为 null
ahr999number | null(close / ma200) × (close / fitted)ma200 为 null 时取 null
quantile5ynumber | null,∈ [0, 1]ahr999 在当前窗口内的经验排名;前 365 个有效 AHR 观测期间为 null
windowKind"insufficient_samples" | "expanding" | "rolling_5y"该行采用的窗口类型。

你可以依赖的不变量

  • 行按 date 严格升序排列,无重复。
  • 没有未来日期:最新 date 始终 ≤(今日 UTC − 1 天)。
  • ma200 === null,则 ahr999quantile5y 均为 null,且 windowKind === "insufficient_samples"
  • ahr999 !== nullquantile5y === null,则 windowKind === "insufficient_samples" —— 即有有效 AHR,但观测不足 365 个、无法排名。
  • quantile5y 是离散排名:只取 k / N 形式的值,其中 N = 有效观测数 ≤ 1825
  • 一旦 windowKind 翻转为 "rolling_5y"(第 1,825 个有效 AHR 观测),便不再翻回。
  • 正常增量同步时,超过 5 天的日期其 close 稳定;最近 5 天内可能因 Binance 的迟到修正而被刷新(5 天自愈回看)。

行数

数据集起点为 2017-08-17,因此任意一天大致可预期:

rows ≈ (today_UTC − 2017-08-17) / 1 天

作为参照,2026-04-19 的快照有 3,168 行。如需以程序方式取数,见 API 参考;各数值如何推导,见方法论