Skip to content

价格新鲜度语义

同一个问题"600519 现在多少钱",上午问和晚上问 cite 不一样。这页解释为什么、怎么读、什么时候要警惕 stale。

路由表

提问场景metriccite.served_by数据延迟含义
09:30–15:00 工作日"现在价"current_priceakshare(雪球盘口)~1.4 秒盘中实时 spot
盘后 / 周末 / 节假日"现在价"closetushareT+0 收盘上一交易日收盘
显式问"X 月 X 日收盘"closetushare历史 daily那一日的收盘价
akshare 抓取失败(如 ST 标识、退市)回退closetushareT+0 收盘fallback;可能有 warning 日志

"Market open" 由 core.data._market.is_market_open(token) 判定:09:30–15:00(含 11:30–13:00 午休)& 交易日。交易日来自 Tushare trade_cal(按日缓存);Tushare 不可达时降级为周一到周五。

怎么主动问历史价

如果你想要某一具体日期的收盘价:

查 600519 在 2026-04-27 收盘

bot 会走 Tushare daily 路径,cite 显示 served_by: tushareas_of: 2026-04-27metric: close

措辞约束

bot 在表述时会严格区分:

metric + served_by用语不会用
current_price + akshare"当前价 ¥1801.23(akshare 实时,2026-05-08 10:30)""今日收盘"——盘还没收
close + tushare(无显式日期)"最近收盘 ¥1371.05(Tushare daily,2026-05-07)""当前价"——可能差一个周末
close + tushare(指定日期)"¥1718.50(2026-04-27 收盘)""目前 ¥1718.50"

核心约束close 在交易时段读到的是前一交易日的收盘,永远不是今天的。把它当作"现在"是 v0.1.1 修复掉的 bug,不会再让它从行文里漏出来。

什么时候要警惕 stale

  • akshare 镜像延迟通常 5-15 分钟(小概率)。cite.fetched_at 字段是抓取的实际 UTC 时间戳;如果它比你提问时早 > 15 分钟,建议再问一次。
  • Tushare daily 在每个交易日 17:00 之后才会有当日数据。盘后立刻问可能仍返回前一日。

完整 trace 示例

详见 架构 / 完整 trace 示例

团队内部文档