主题
价格新鲜度语义
同一个问题"600519 现在多少钱",上午问和晚上问 cite 不一样。这页解释为什么、怎么读、什么时候要警惕 stale。
路由表
| 提问场景 | metric | cite.served_by | 数据延迟 | 含义 |
|---|---|---|---|---|
| 09:30–15:00 工作日"现在价" | current_price | akshare(雪球盘口) | ~1.4 秒 | 盘中实时 spot |
| 盘后 / 周末 / 节假日"现在价" | close | tushare | T+0 收盘 | 上一交易日收盘 |
| 显式问"X 月 X 日收盘" | close | tushare | 历史 daily | 那一日的收盘价 |
| akshare 抓取失败(如 ST 标识、退市)回退 | close | tushare | T+0 收盘 | fallback;可能有 warning 日志 |
"Market open" 由
core.data._market.is_market_open(token)判定:09:30–15:00(含 11:30–13:00 午休)& 交易日。交易日来自 Tusharetrade_cal(按日缓存);Tushare 不可达时降级为周一到周五。
怎么主动问历史价
如果你想要某一具体日期的收盘价:
查 600519 在 2026-04-27 收盘bot 会走 Tushare daily 路径,cite 显示 served_by: tushare、as_of: 2026-04-27、metric: 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 示例。