方法論

AHR999 囤幣指標的計算方法

本資料集中的每個欄位 —— ma200ahr999quantile5y —— 都由開源 TypeScript 每日從 Binance BTCUSDT 日 K 重新計算。本頁給出確切的公式、常數與視窗規則,任何數值都可手動重現。

輸入

  • 價格來源。Binance 公開端點 GET /api/v3/klines,參數 symbol=BTCUSDTinterval=1d。每根日 K 只保留收盤價 —— 本儲存庫不轉發原始 OHLCV 資料。
  • 回填起點。2017-08-17,Binance 為 BTCUSDT 提供的最早日 K。
  • 截止。今日 UTC − 1 天,即最後一個完整收盤的 UTC 日。當日 UTC 是未完成的 K,會讓 quantile5y 在日內抖動。

常數

名稱取值作用
GENESIS2009-01-03BTC 創世區塊日期;幣齡錨點。
MA_WINDOW200ma200 的滾動視窗。
FIT_A5.84log-log 擬合公允價曲線的斜率。
FIT_B−17.01擬合曲線的截距。
QUANTILE_MIN_OBS365報告 quantile5y 前所需的最少有效 AHR 觀測數。
QUANTILE_WINDOW1825觀測足夠後的滾動視窗大小(5 × 365)。

逐步計算

對每個收盤價為 c_d 的 UTC 日 d

1 · 200 日均價

ma200_d = mean(close[d-199 .. d])

若已觀測的收盤價不足 200 個(含 d),則 ma200_d = null,所有下游欄位均為 null,且 windowKind = "insufficient_samples"

2 · 擬合公允價

擬合曲線把 BTC 視作以幣齡錨定的資產,按距創世區塊的天數索引:

coin_age_days_d = floor((d − GENESIS) / 1 天)
fitted_d        = 10 ^ (FIT_A · log10(coin_age_days_d) + FIT_B)
                = 10 ^ (5.84 · log10(coin_age_days_d) − 17.01)

3 · AHR999

ahr999_d = (c_d / ma200_d) · (c_d / fitted_d)

兩個比值相乘:

  • 動量 —— c_d / ma200_d:當前價相對自身 200 日成本的高低。大於 1 表示高於定投成本,小於 1 表示低於。
  • 幣齡錨定的便宜程度 —— c_d / fitted_d:當前價相對擬合長期軌跡的高低。

乘積把兩個訊號壓縮成一個純量。各儀表板上常見的經驗閾值:

區間檔位
< 0.45抄底區 · bargain
0.45 – 1.20定投區 · DCA
1.20 – 3.00謹慎區 · caution
> 3.00泡沫區 · bubble

這些閾值是經驗性的,不屬於公式的正式定義。

4 · 5 年分位

quantile5y_dahr999_d 在最近有效 AHR 值視窗(含當前值)中的經驗排名

quantile5y_d = count(window 中 v : v ≤ ahr999_d) / window.length

視窗取決於到目前為止有多少個有效 AHR 觀測:

有效觀測數視窗windowKindquantile5y
< 365insufficient_samplesnull
365 – 1824截至當前的全部觀測(擴張)expanding報告
≥ 1825最近 1,825 個觀測(滾動)rolling_5y報告

離散排名 vs. 內插

分位用的是離散排名 count(v ≤ current) / N,而非 numpy 預設的線性內插分位。理由:

  • 九神社區的原始實作都用離散排名。
  • 約 1,800 個觀測下,排名解析度 ≈ 0.00055 —— 已比對該數值的任何可操作解讀都更細。
  • 它含義清晰:「過去五年裡有多大比例的時間比現在更便宜或一樣便宜?」

你可以在首個非空分位列 2019-03-03 手動驗證,那裡 quantile5y = 78 / 365 = 0.2136986301369863,精確成立。

與其他實作的差異

vs. 九神原始公式

我們使用完全相同的常數(FIT_A = 5.84FIT_B = −17.01MA_WINDOW = 200、5 年分位)。僅有的、你需要知道的有意選擇:

  • 價格來源。Binance BTCUSDT。部分舊分析用 CoinMarketCap 或 OKX;它們在 2018 年前有分歧,但在 BTCUSDT 成交量佔主導後收斂到 ≤ 0.1%。
  • 顯式視窗類型。暴露 windowKind,便於消費者過濾掉 365 至 1,825 的擴張視窗預熱期。

vs. 9992100.xyz

9992100.xyz 是最流行的中文 AHR999 儀表板。每日出現小幅分歧(AHR999 絕對值 ≤ 0.02)是正常的,因為它可能在不同的 UTC 鄰近截止點更新,且其價格來源與收盤時間戳記語意未公開。兩個網站在任一天都應在檔位上一致;不要去追不同實作之間的數值完全相等。

端到端重現

pnpm sync:backfill
pnpm export:csv
pnpm verify   # 儲存庫檢查點精確斷言首個分位 / 滾動列

設定 AHR999_SOURCE_BASELINE_PATH=/path/to/ahr999-daily.jsonl 後,pnpm verify 會額外逐列對比,相對誤差容忍度 < 1e-9。不設定時,該指令仍會強制驗證儲存庫內的檢查點與資料集不變量。完整原始碼見 GitHub 儲存庫