LLMTicker
← 方法论

中转站折扣率指数 · 方法论

孵化中

这个指数是什么

指数值 = 全市场折扣率 × 100。97.15 读作「官方价的 97.2%」;若某日读数 55.00,即「官方价的 55%,约 5.5 折」。跌 = 灰市折扣加深。

数据来源

数据来自各站公布的标价。首批 2 家:302.AI(直接标价)、AIHubMix(倍率制)。

三形态归一

所有报价先归一到「每百万 token 美元」(usd_per_mtok):

形态 归一方式
直接标价 站点标价;若为人民币标价,按当日 CFETS USD/CNY 中间价折美元
倍率制 每百万 token 美元 = 模型倍率 × 1,000,000 ÷ 每美元额度单位;输出价 = 输入价 × 补全倍率;缓存读价 = 输入价 × 缓存倍率
分档 取最优公开档,档位随观测标注

两种形态互为校验:同一支 GPT-5.6 Sol,302.AI 直接标价 $5 / $30,AIHubMix 倍率制换算亦为 $5 / $30。

混合价权重

折扣率按混合价(blended)口径,权重 缓存读 : 输入 : 输出 = 7 : 2 : 1,与本站 Token 价格指数同权重,保证与官方带同构可比。

同缓存口径规则(关键)

折扣率 = 中转站混合价 ÷ 官方混合价。两侧混合价必须用同一缓存口径

  • 两侧都有缓存价 → 都用各自真实缓存价(口径记 observed);
  • 任一侧没有缓存价 → 两侧都按「缓存读 = 输入价」降级(口径记 input_proxy)。

原因:官方价普遍给缓存读 90% 折扣,而多数中转站不公布缓存价。若拿「中转站降级混合价」除「官方真实混合价」,会把明明更便宜的站算成「贵过官方」。实例:302.AI 的 Claude Sonnet 5 标价 $2 / $10(官方 $3 / $15),同口径折扣率 0.6667(约 6.7 折);若口径不同会算成 1.2121(贵 21%)——后者是口径错配的假象。反向亦然:中转站有缓存价而官方没有(如通义千问两支)时若不降级,会把 1.0083 算成 0.5740 的假折扣。

每行折扣率所用口径在指数详情页成分表逐行标注。

倍率制站点的缓存倍率恰为 1 时视为「未配置缓存计费」(该值是 one-api 的默认值,实测 807 支模型中 527 支恰为 1)而非真实缓存价,按未发布处理。

官方基准

分母取本站 Token 价格带的官方日价,当日缺失取最近有效日(官方刊例价是阶梯数据,last-known 合理)。成分表标注分母实际取自哪天。官方人民币价折美元所用汇率与日期同样逐行可溯源。

发布门槛与缺期

篮子内 ≥3 支模型有当日折扣率才发布,否则缺期(宁缺勿滥,缺期在图上如实留空)。折扣率 >1.20(贵过官方 20% 以上)或 <0.05(疑似假标价或解析错误)的观测转入隔离,不进指数。0.05–1.20 之间照常入带——贴官方价、或中转站收便利费加价,都是真实现象:实测多支模型的中转站标价与官方刊例价完全一致,也有站点稳定加价销售。

口径变更记录:溢价隔离阈值 1.05 → 1.20(2026-07-27,issue #74)

改前:折扣率贵过官方 5% 以上(>1.05)即转入隔离、不进指数,逐条交裁决 agent 判断是真实加价还是采集/解析错误。运行后发现:agent 面对「中转价比官方贵 5–15%、数据自洽(两侧价与折扣率能对上、采集计算无误)」的观测,反复给出同一个结论——这属于方法论判断,不是它能靠单条证据裁决的事,应该由人一次性定规则。

人类拍板:数据自洽(用落库的两侧价重算折扣率,与落库值一致)且溢价 ≤20% 时,当真实加价接受,直接入带,不再逐条隔离。理由:中转站收便利费是真实市场行为,折扣率指数应如实反映「有些站其实更贵」,而不是把所有贵过官方的观测都当异常剔除。超过 20% 才转入隔离——这个量级更可能是解析错误或异常标价,仍需人工复核。数据不自洽(重算对不上落库值)则无论溢价高低都转入隔离,因为这说明落库的某个数有问题,与「加价多少」无关。

这条改动是公网可见的口径变更:部署后,贵官方 5–20% 之间的观测不再转入隔离,直接按真实加价计入当日指数;按日重算的 job 本身只处理当日,不会自己去翻旧账。但存量此前被隔离的观测不会被晾在原地——它们会经既有更正协议(护栏 8)逐条回带:裁决 agent 或人工对某条 relay_anomaly case 给出 accept 后,更正流程按该 case 的历史日期重算,那一天的指数读数会被重新计算并覆盖(agents/correction.py::_apply_relay_correction)。也就是说"新规则不追溯"这句只在没人碰这些存量观测时成立;一旦它们被回带,其所属日期的历史读数确实会变。

回滚约定(本站口径变更的通用纪律)

阈值变更是公网可见口径,回滚同样是。上线期间按新口径(1.20)算出的那些天,index_value 已经落库;若日后把 DISCOUNT_HI 改回 1.05,按日重算的 job 只会重算当日,历史那几天原样留着——序列上会出现一段口径与前后不同、且图上无任何标记的日子。这类"沉默的口径断层"是本站最不该有的东西:读者看到的是一条连续曲线,实际中间一段的分母规则不一样。

故凡本页记录的口径变更,回滚时二选一,不许什么都不做:

  1. 一并重算该口径窗口期——把变更生效日到回滚日之间的每一天按回滚后的口径重算 relay-discount,并同期追算下游 cn-gray-cost(它按「官方 blended × 跨站折扣率中位数」取数,只取未隔离行,折扣率一变它必须跟着变,见 docs/methodology/cn-gray-cost.md)。重算走既有 jobs/compute_relay_discount.py + jobs/compute_gray_cost.pycompute_for_date,逐日调用;两支都是 upsert,重复重算幂等。这是首选。
  2. 留口径分界标——若窗口期太长或原始数据已不足以重算,必须在本页写明"YYYY-MM-DD 至 YYYY-MM-DD 为 X 口径",并在指数页对该区间做可见标注,不能只改代码常量了事。

同一条纪律适用于任何一次会改变入带/隔离边界的阈值调整,不限于 DISCOUNT_HI。判据很简单:如果这次改动会让同一批原始观测在改动前后落进不同的带,它就是口径变更,回滚就要走上面两条之一。

篮子与换篮

篮子 = 本站 Token 白名单模型 × 首批中转站实际在售的交集(当前 17 支),数据化维护。站内模型名与白名单型号逐字吻合才映射(如 gemini-3.1-pro-preview 不映射为 gemini-3.1-pro)。换篮走既有链式规则。

本站承诺
发布规则成分 n≥3 · 宁缺勿滥,缺期公示
每周抽审20 样本对照活源 · 错误率公开
数据溯源白名单源 · 每个数字可溯源