Skip to content

v2.0.3 — 腾讯行情 / EDGAR Frames / CBOE 三项数据正确性修复

Latest

Choose a tag to compare

@simonlin1212 simonlin1212 released this 26 Jul 08:24

本版是一组数据正确性修复。三个此前从未真正可用的功能被修好,建议升级。

腾讯行情:美股 / 港股两个函数此前 100% 崩溃

感谢 @HoRiZonn0#2)提供完整字段对照。逐条实测复现后确认其报告全部正确,并发现比报告更严重的后果:

  • us_stock_quote_tencent 每次调用必抛 ValueError —— high_52wfields[35],而下标 35 是币种字符串 "USD"
  • hk_stock_quote_tencent 同样必崩 —— volumefields[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]*。拆股 / 分拆会产生带数字的合约根(NVDA1BRKB1),原正则直接拒绝。后续均为定宽组,标准合约解析结果不变。

验证

  • 腾讯: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+。