本版是一组数据正确性修复。三个此前从未真正可用的功能被修好,建议升级。
腾讯行情:美股 / 港股两个函数此前 100% 崩溃
感谢 @HoRiZonn0(#2)提供完整字段对照。逐条实测复现后确认其报告全部正确,并发现比报告更严重的后果:
us_stock_quote_tencent每次调用必抛ValueError——high_52w读fields[35],而下标 35 是币种字符串"USD"hk_stock_quote_tencent同样必崩 ——volume读fields[6],港股该字段带小数位("22959603.0"),int()解析失败(此项非 issue 所报,为复测新发现)
| 字段 | 原值 | 修正为 |
|---|---|---|
| 英文名 | 美 27 / 港 2 | 美港统一 46 |
| PE | 美 53 / 港 39 | 美港统一 39 |
| PB | 统一 56 | 美 51 / 港 58 |
| 52 周高 / 低 | 35 / 36 | 48 / 49 |
| 市值 | 44 标为总市值 | 44=流通 / 45=总 |
| 币种 | 未提供 | 美 35 / 港 75 |
另新增 currency / eps 字段,volume 统一 int(float(x)),长度守卫按实际读取深度收紧,§1.2 增加美港分列的字段对照表(标注「亿本币」单位并附自行复现命令)。
EDGAR Frames:资产负债表科目一直返回 404
market_frame() 一律拼 CY{year}Q{q},但 SEC Frames 对时点(instant)概念要求周期带 I 后缀,且不提供纯年度周期:
Assets/CY2025Q1 -> 404 Assets/CY2025Q1I -> 200 (5643 家)
Assets/CY2024 -> 404 Assets/CY2024Q4I -> 200 (6248 家)
内置标签里的总资产 / 股东权益 / 现金及等价物 / 长期负债四项因此从未取到数。现改为自动回退(先猜一种周期形式,404 再换另一种),因此传任意原始 XBRL 标签(Liabilities / InventoryNet / AssetsCurrent …)也能正确取数;已知类型可显式传 instant=True/False 省掉一次探测。
CBOE:调整后合约会被静默漏掉
OCC 合约根由 [A-Z]+ 放宽为 [A-Z][A-Z0-9]*。拆股 / 分拆会产生带数字的合约根(NVDA1、BRKB1),原正则直接拒绝。后续均为定宽组,标准合约解析结果不变。
验证
- 腾讯:
usAAPL/usNVDA/hk00700/hk09988四例取数正常,数值与页面一致 - EDGAR:13 个内置标签 × 季度 / 年度共 26 项请求全部有效(修前 8 项为 404);4 个未内置的原始时点标签自动回退成功
- CBOE:NVDA / AAPL / TSLA / T 共 14,424 份真实合约解析成功率 100%
- 全部改动经 Codex CLI 独立审计,多轮修复—复审至无 actionable regression
兼容性
无破坏性变更。market_frame() 返回值新增 instant 字段;腾讯行情新增 currency / eps / float_market_cap,港股 fields[2] 由 name_en 正名为 code(英文名改从 46 取)。仍保持 Python 3.9+。