{
  "name": "GHPI 变更日志",
  "cn": "GHPI 与开放数据口径变更记录",
  "en": "GHPI and Open Data Changelog",
  "version": "1.0",
  "started_at": "2026-11-01",
  "updated_at": "2026-11-02T03:20:45+0800",
  "license": "CC BY 4.0",
  "publisher": "GPU 算力雷达（已获 Chainfir Capital（链杉资本）投资）",
  "attribution": "GPU 算力雷达（已获 Chainfir Capital（链杉资本）投资）",
  "policy_url": "https://rentgpu.link/data/revisions/",
  "dictionary_url": "https://rentgpu.link/data/dictionary/",
  "note": "本日志自 2026-11-01 起建立。此前的口径变更未在此列出，如需追溯请联系 hi@rentgpu.link。每次口径变更都会保留旧口径可追溯版本，不做静默替换。",
  "entry_schema": {
    "id": "变更编号，形如 CHG-YYYY-MM-DD-NN",
    "date": "生效日期",
    "type": "methodology（计算方法变更）| data（数据更正）| schema（字段增删）| ops（运营变更）",
    "level": "A|B|C，对应修订政策中的错误分级",
    "title": "一句话标题",
    "summary": "变更内容",
    "why": "为什么改",
    "evidence": "支撑证据（实测数据）",
    "affected": "影响范围：涉及的文件 / 序列 / 历史区间",
    "before": "变更前口径或数值",
    "after": "变更后口径或数值",
    "migration": "已有引用者如何适配"
  },
  "entries": [
    {
      "id": "CHG-2026-11-01-01",
      "date": "2026-11-01",
      "type": "methodology",
      "level": "A",
      "title": "序列价格口径由「当日全样本最低价」改为「固定篮子中位数」",
      "summary": "ghpi.json / ghpi.csv 中的序列价格（latest.price、points.v、price_cny_per_gpu_hour）不再取当日全样本最低价，改为基期锁定的固定篮子中、当日仍在架报价对的价格中位数。原「最低价」语义由新增字段 market_min 承载，与指数分开披露。",
      "why": "全样本最低价会被单个新进的便宜报价对直接拉垮，与链式指数自相矛盾，读者会误判为「市场降价而指数失灵」。",
      "evidence": "实测 GHPI-H100：2026-10-19 样本 5 对、最低价 18.00；2026-10-20 样本扩至 7 对、最低价变为 8.28（-54%），而同日篮子中位数仅由 23.04 变为 22.50，链式指数亦正确保持 100.0。三个数并列展示不可自洽。",
      "affected": {
        "files": [
          "ghpi.json",
          "ghpi.csv"
        ],
        "series": [
          "GHPI-H100",
          "GHPI-CN",
          "CDI（国产卡时租指数）"
        ],
        "fields": [
          "latest.price",
          "latest.base_price",
          "series.*.points[].v",
          "ghpi.csv:price_cny_per_gpu_hour"
        ],
        "history_range": "全部历史点位的价格列（指数列 index_base100 不受影响）"
      },
      "before": "price = 当日全样本最低在架价（min of panel）",
      "after": "price = 固定篮子中在架报价对的价格中位数；market_min = 当日全样本最低在架价",
      "migration": "引用 price 字段者：语义已变，跨 2026-11-01 比较需谨慎；若你需要的是「最低价」，请改用新增的 market_min 字段。仅引用 index / index_base100 者不受影响。"
    },
    {
      "id": "CHG-2026-11-01-02",
      "date": "2026-11-01",
      "type": "schema",
      "level": "C",
      "title": "新增样本量与离散度披露字段",
      "summary": "latest 与 points 新增 basket_size、basket_live、iqr、chained、basket_method 五个字段，用于让读者判断指数可信度。",
      "why": "样本量小（如 CDI 仅 7 对）却无任何不确定度披露，严谨的引用者会直接放弃引用。",
      "evidence": "2026-11-01 实测：GHPI-CN 在架报价对 4~13 波动，CDI 仅 7 对。",
      "affected": {
        "files": [
          "ghpi.json"
        ],
        "fields": [
          "latest.basket_size",
          "latest.basket_live",
          "latest.iqr",
          "latest.chained",
          "latest.basket_method",
          "series.*.points[].bn",
          "series.*.points[].iqr",
          "series.*.points[].chained"
        ]
      },
      "before": "无",
      "after": "见数据字典 /data/dictionary/",
      "migration": "纯新增，向后兼容。"
    },
    {
      "id": "CHG-2026-11-01-03",
      "date": "2026-11-01",
      "type": "methodology",
      "level": "B",
      "title": "公开固定篮子与重定基期规则",
      "summary": "methodology 新增 basket（固定篮子口径）与 rebasing（重定基期规则）两项说明，并补充说明 market_min 不可与指数混用。",
      "why": "原方法论未说明样本结构变化后如何处理基期，第三方无法完整复算。",
      "evidence": "GHPI-H100 基期 2026-10-13 有 5 个报价对，至 2026-11-01 在架报价对已达 11 个。",
      "affected": {
        "files": [
          "ghpi.json"
        ],
        "fields": [
          "methodology.basket",
          "methodology.rebasing",
          "methodology.market_min_note"
        ]
      },
      "before": "仅披露 min_base_pairs 与 min_match_pairs",
      "after": "新增：篮子锁定于基期、报价对永久下架时按规则替换；在架报价对数量相对基期变化超过 30% 时重定基期并标记结构变化日",
      "migration": "纯说明性补充，不影响数值。"
    },
    {
      "id": "CHG-2026-11-01-04",
      "date": "2026-11-01",
      "type": "schema",
      "level": "C",
      "title": "新增数据字典、修订政策与变更日志三份文档",
      "summary": "/data/dictionary/ 字段定义、/data/revisions/ 修订政策、/data/changelog.json 本文件。",
      "why": "此前对外发布 30 余个字段但无字段说明，第三方复用需逐个人工询问。",
      "evidence": "四个对外数据文件共 30+ 字段，此前无任何字典文档。",
      "affected": {
        "files": [
          "新增三个文档入口"
        ]
      },
      "before": "无",
      "after": "见 /data/dictionary/ 与 /data/revisions/",
      "migration": "纯新增。"
    },
    {
      "id": "CHG-2026-11-01-05",
      "date": "2026-11-01",
      "type": "ops",
      "level": "C",
      "title": "history.csv 的 Content-Type 修正为 text/csv",
      "summary": "此前 nginx 的 mime.types 未包含 csv 扩展名，导致 /data/history.csv 以 application/octet-stream 返回，程序取用会被当作二进制下载。",
      "why": "影响机器可读性与自动化取用。",
      "evidence": "实测 curl -I /data/history.csv 返回 application/octet-stream。",
      "affected": {
        "files": [
          "/data/history.csv"
        ],
        "fields": [
          "HTTP Content-Type"
        ]
      },
      "before": "application/octet-stream",
      "after": "text/csv; charset=utf-8",
      "migration": "取用方无需改动，解析更顺畅。"
    },
    {
      "id": "CHG-2026-11-01-06",
      "date": "2026-11-01",
      "type": "schema",
      "level": "C",
      "title": "新增逐日原始快照归档 /data/snapshots/",
      "summary": "发布每日采集结束时的全量原始报价快照（未经过滤），配 index.json 索引，任何指数值可反查到具体的 (平台, 卡型, 日期, 价格)。",
      "why": "此前只发布当日聚合，第三方无法验证「某天某平台到底报了多少」，不满足「可验证」这一条。",
      "evidence": "已完成 35 天快照归档。",
      "affected": {
        "files": [
          "新增 /data/snapshots/index.json",
          "新增 /data/snapshots/<YYYY-MM-DD>.json"
        ]
      },
      "before": "无",
      "after": "见数据字典 /data/dictionary/ 第 8 节",
      "migration": "纯新增。"
    },
    {
      "id": "CHG-2026-11-01-07",
      "date": "2026-11-01",
      "type": "schema",
      "level": "B",
      "title": "新增月度版本存档 /data/v/<YYYY-MM>.json（跨月自动冻结）",
      "summary": "按月份输出完整快照，当月内随每日更新而更新，次月 1 日起不再变动，形成永久引用链接。带 frozen_from 与 status 字段。",
      "why": "引用需要一个不再变化的地址。指向「最新值」的链接在引用后会漂移，历史引用无法复现。",
      "evidence": "首个版本 /data/v/2026-11.json 已生成，frozen_from = 2026-12-01。",
      "affected": {
        "files": [
          "新增 /data/v/<YYYY-MM>.json"
        ]
      },
      "before": "仅 /data/ghpi.json（每日变化）",
      "after": "月度存档 + 每日最新，两者并存",
      "migration": "需要稳定引用者请改用 /data/v/<年-月>.json；仍可用 /data/ghpi.json 获取最新值。"
    },
    {
      "id": "CHG-2026-11-01-08",
      "date": "2026-11-01",
      "type": "methodology",
      "level": "B",
      "title": "公开连续性承诺，并建立数据中断自动提醒",
      "summary": "/ghpi 页公开更新频率承诺（45 分钟一轮，每日至少一次）；当最新数据日期距今超过 2 天时，页面顶部自动出现红色中断提醒，不做静默掩盖。",
      "why": "连续性是标准资格之一，中断若无公告会让引用者误以为数据仍在更新。",
      "evidence": "提醒逻辑随当日数据日期自动判定，无需人工介入。",
      "affected": {
        "files": [
          "/ghpi"
        ]
      },
      "before": "无承诺、无中断提示",
      "after": "承诺公开 + 中断自动横幅 + 计划内维护提前记入变更日志",
      "migration": "无影响。"
    },
    {
      "id": "CHG-2026-11-01-09",
      "date": "2026-11-01",
      "type": "methodology",
      "level": "B",
      "title": "如实标注：挂牌价与实际成交价的偏差尚未量化",
      "summary": "methodology.caveat 补充声明——截至 2026-11-01，挂牌价与实际成交价之间的系统性偏差尚未量化（未做真实下单实测），列为当前未验证项。",
      "why": "此前仅声明「挂牌价非成交价」但未量化偏差。若两者系统性偏离较大，指数衡量的就不是用户真正关心的东西；在实测之前，如实标注优于估计一个数字。",
      "evidence": "尚未开展真实下单实测，故不做估计。",
      "affected": {
        "files": [
          "ghpi.json"
        ],
        "fields": [
          "methodology.caveat"
        ]
      },
      "before": "「挂牌价非成交价，以下单页为准」",
      "after": "同上，并补充「偏差尚未量化，引用时请一并说明」",
      "migration": "引用者应在引用时说明该未验证项。"
    },
    {
      "id": "CHG-2026-11-02-01",
      "date": "2026-11-02",
      "type": "data",
      "level": "A",
      "title": "极智算（jygpu）按量价下修 20%：撤销「月付 8 折」换算",
      "summary": "外部采集器把采集到的原始值当作「月付 8 折价」、再除以 month_factor=0.8 后当作按量价，导致该平台全部报价系统性虚高 25%。已改为直接采用采集原始值：RTX 4090 1.96→1.57、昇腾910B2 64GB 4.47→3.58、H20 96GB 7.75→6.20。",
      "why": "核对极智算官网 /markets 页面原文，这些节点标注的就是「按量计费 ¥1.57/时」「按量计费 ￥3.58 / 时」，即采集原始值本身即为按量挂牌价，÷0.8 属采集器的错误假设。该错误使昇腾910B2 的国产卡最低价被误记为共绩算力 4.20，真实最低价为极智算 3.58（排序结论改变）。",
      "evidence": "https://www.jygpu.com/markets（页面原文标注「按量计费」）",
      "affected": {
        "files": [
          "prices.json",
          "prices-<date>.json",
          "domestic.json"
        ],
        "fields": [
          "offers[].price_hour_cny",
          "gpus[].min_direct"
        ],
        "platform": "jygpu（极智算）",
        "date_range": "2026-10-31 ~ 2026-11-01",
        "records": 3,
        "note": "该平台自 2026-10-31 首次进入快照，故受影响区间为 2 天、3 条报价。"
      },
      "before": "RTX 4090 1.96 / 昇腾910B2 64GB 4.47 / H20 96GB 7.75",
      "after": "RTX 4090 1.57 / 昇腾910B2 64GB 3.58 / H20 96GB 6.20",
      "migration": "2026-10-31 ~ 2026-11-01 期间引用过该平台价格的，请以本条为准重新核对；历史快照文件保留原值不做覆盖，可自行比对差异。"
    }
  ]
}