A Stock DataSAFE
A股全栈数据工具包:行情K线·当日逐笔·研报·信号·资金面·新闻·财务·公告·打板·ETF期权·舆情·宏观利率·期货大宗(含大商所日K)·事件驱动·可转债 | 15层·87端点·34数据源·除iwencai外免Key | A-share data for AI agents: K-lines, ticks, reports, fund flow, news, financials, filings, options, macro, futures, events, convertibles | 15 layers·87 endpoints·34 sources
Overview
From the repository's own README, as read at the audited commit. Badges and raw HTML are left out.
简体中文 | English
a-stock-data
A 股全栈数据工具包 — 15 层架构 · 87 个端点 · 34 个数据源 · 零鉴权(iwencai 除外)
行情 K 线 · 研报 · 市场信号 · 资金面 / 筹码 · 新闻 · 基础财务 · 公告 · 打板 · ETF 期权 · 舆情互动 · 宏观与利率 · 指数与交易日历 · 期货与大宗商品 · 事件驱动 · 可转债
数据覆盖 · 架构 · 快速开始 · 端点清单 · 使用示例 · FAQ · 更新日志
一个自包含的 Skill 文件,把分散在 34 个数据源里的 A 股及相关市场原始数据整合成 AI 编程助手直接能用的工具集。你不用再背腾讯 K 线的分段参数、通达信盘后包的二进制格式、东财的 PDF Referer 头、iwencai 的 X-Claw 鉴权——全部封装好了。主源被封还有「备用源速查」可降级。
兼容 Claude Code · Codex · OpenClaw · WorkBuddy · Muse · Grok Bot Skill 文件本质是结构化 Markdown + 内嵌 Python,任何支持上下文注入的 AI 编程助手都能用。
V3.10.2(2026-10-11 · #58): 修正full_valuation()的 PE 消化年数:前向 PE 高于 30x 而预测盈利不增长(或下一年预测缺失)时,原来返回 0 年,像是已经消化完;现在返回None,表示无法估算。当年 EPS 缺失或不为正时同样返回None。入口数、来源数不变。 V3.10.1(2026-10-07 · #57): 更
a679d6b974c8OBSERVED · 2026-10-20Install
Commands as the repository documents them. They are shown, not run.
pip install numpy baostock xlrd openpyxl
pip install mootdx requests pandas stockstats numpy baostock xlrd openpyxl
pip install mootdx requests pandas stockstats numpy baostock xlrd openpyxl
pip install mootdx requests pandas stockstats numpy baostock xlrd openpyxl
pip install mootdx requests pandas stockstats numpy baostock xlrd openpyxl
Host compatibility
What the documentation claims. We have not run a compatibility test.
| Host | Status | Notes |
|---|---|---|
| claude-code | mentioned | |
| codex | mentioned | |
| cursor | mentioned | |
| openclaw | mentioned |
What it tells the agent
The instruction file, verbatim from the audited commit — this is the text the model reads, and the surface the audit's instruction layer examines. Quoted here so you can judge it without cloning anything.
--- name: a-stock-data description: 当任务需要写代码实际获取A股及相关市场数据时使用——行情/K线/逐笔(腾讯日周月前后复权+分钟线+当日逐笔、通达信官网全市场盘后包、百度)、研报(东财+新浪+同花顺+iwencai)、信号(热点/北向/龙虎榜/解禁/行业/板块资金流)、资金面(融资融券/大宗/股东户数/分红/资金流/ETF份额)、新闻(财联社/东财/华尔街见闻/新闻联播)、财务三表/F10/估值历史/ST名单、公告(巨潮)、打板(涨停池/连板/炸板率/监控池/异动)、ETF期权、舆情互动(互动易/上证e互动/热榜)、筹码分布、复权因子、申万行业变迁、宏观与利率(社融/PMI/中债收益率曲线/回购定盘利率/LPR/全球宏观日历)、指数成分/权重/估值/交易日历、期货与大宗商品(五家期货交易所日行情/商品与股指期权/持仓排名/期货日K含大商所/实时期货/A50/上海金)、事件驱动(业绩预告/机构调研/增减持/回购/股权质押/新股申购)、可转债等真实数据。十五层·87端点(含5备胎)·34个来源·内嵌全部可运行代码,自包含零外部文件;优先用腾讯/交易所官方等不封IP源,东财接口已内置限流防封,主源被封可查「备用源速查」降级。仅在需要调用数据接口取数时使用:A股概念解释、投资观点讨论、策略问答等无需取数的话题不要加载本skill。 origin: custom version: 3.10.2 --- > 📦 项目主页:https://github.com/simonlin1212/a-stock-data — 更新、反馈、支持作者 > > 作者:Simon 林 · X [@linsizhen](https://x.com/linsizhen) · 邮箱:[email protected] # A股全栈数据工具包 V3.10.2 十五层数据架构,87 个能力端点(82 主端点 + 5 备胎)、34 个来源。V3.10 新增的 2 个入口于 2026-09-22 实测,V3.9 新增的 25 个入口于 2026-09-20 实测;旧端点的验证日期见各章节。覆盖主板/创业板/科创板/ST,北交所覆盖依端点而异;已有备胎的数据可按「备用源速查」降级。 > **V3.10.2(PE 消化年数修正,2026-10-11 · #58):** 入口数、来源数不变。`full_valuation()` 的 `digest_years`: > 前向 PE 高于 30x 而下一年预测缺失或盈利不增长、或当年 EPS 缺失 / 不为正时,原来返回 `0`(像是已经消化完),现在返回 `None`;其余情况不变。 > **V3.10.1(成交量单位与对账口径更正 · 逐笔提速与盘后核对,2026-10-07 · #57):** 入口数、来源数不变,返回的数据不变。 > - §1.2 `tencent_kline()` 的 `volume`:**科创板(688 / 689)是股**,其余是手;此前文档全写成「手」,按此换算科创板会大 100 倍。 > 备用源速查里「成交额 = 量(手) × 100 × 均价」同样更正。 > - §1.2 补成交量对账口径:科创板以外日线是整手、最近一个交易日的分钟量也是整手(下一个交易日才回填成精确股数); > 1 分钟线 09:30 那根只有集合竞价、13:01 开盘价是上午收盘价;深市整分时刻的成交腾讯与 Baostock 分在相邻两根;无成交分钟:第一笔成交以前沪深都没有行,之后深市会缺行。 > - §1.4 `tencent_ticks()` 改走复用连接、自动重试的 `V39_RETRY_SESSION`:一次约 70 秒 → 约 25 秒;连接失败、等响应超时、 > 429 / 5xx 自动重试,不再一次抖动就整次失败(读响应体中途卡住不重试)。 > 新增 `frame.attrs["complete"]`,15:31 以后用快照的盘后成交额核对盘后定价各笔(此前末尾缺笔完全看不出;低价 ETF 一两手的小额缺笔仍看不出)。 > - §13.7 `futures_kline()` 同样自动重试,单次超时收短到 (5, 20) 秒;补上中金所主力连续只从 2017-01-17 起。 > **V3.10.0(逐笔替代 / 期货日 K / 行情层重排,2026-09-22):** 85→87 个能力入口(82 主 + 5 备胎),来源数不变(34)。 > - **§1.4 腾讯逐笔 `tencent_ticks()`**:替代 #52 后返回空的 mootdx `transaction()`。最近一个交易日的全部分笔(沪深个股 + ETF), > 收盘后与行情快照的当日成交额核对,连续竞价段缺笔直接报错;只有当日、不含北交所。 > - **§13.7 新浪期货日 K `futures_kline()`**:单个合约或主力连续的逐日 K 线,六家交易所含大商所(此前大商所只有实时价); > 实测价格与交易所官方逐日一致。 > - **行情层重排**:能用的在前,mootdx 行情命令移到 §1.7 留档。新旧编号对照见 Layer 1 开头;下面历史版本说明里写的仍是旧编号。 > - **期货修正**:上期能源在各类数据首日前抛 `ValueError`(此前报成「格式可能已变」的 `RuntimeError`),期权首日更正为 2021-06-21; > 上期所日行情实测最早 2002-01-07、中金所 2010-04-16,文档原写 2015 年。 > **V3.9.0(期货大宗 / 事件驱动 / 可转债 / 利率 + 四个 issue,2026-09-20):** 新增 §13 期货与大宗商品、§14 事件驱动、 > §15 可转债三层,并在原有各层补齐 K 线、研报、ETF 份额、新闻、ST 名单、沪市问答、利率曲线等入口。 > 12→15 层,60→85 个能力入口(80 主 + 5 备胎),22→34 个来源(新增通达信官网盘后包、华尔街见闻、央视网、上证e互动、 > 中债、中国货币网、上期所、上期能源、郑商所、中金所、广期所、上金所);无新增安装依赖,保留 Python 3.9。 > - **#52 mootdx 行情命令失效**:通达信公开服务器的 K 线 / 盘口 / 逐笔返回 0 行,财务与 F10 正常。`tdx_client(check='finance')` > 让财务 / F10 按财务命令验活;K 线改走 §1.5 腾讯 / §1.6 通达信盘后包,`tdx_client()` 失败时的报错直接指路。 > - **#49 商品期货 / 期权**:§13 接入五家期货交易所官方日行情与商品 / 股指期权、四家(广期所除外)的会员持仓排名,另有新浪实时期货(含大商所)、 > A50 期指与上海金交所现货。大商所官网有反爬,日行情未接入。 > - **#53 研报来源**:新增 §2.4 新浪研报列表,作为东财之外的第二来源(只有列表,无评级与目标价)。 > - **#55 聚宽代码**:`norm_ticker()` / `get_prefix()` 认 `.XSHG` / `.XSHE`,新增 `to_joinquant()`;FAQ 说明回测能力边界。 > - 新端点统一返回带 `source` / `source_url` / `fetched_at` 的 DataFrame,「确实没有」与「接口坏了」分开报错。 > 25 个新入口于 2026-09-20 用本文件原文代码实测,见 [本次数据源整合记录](docs/source-integration-v3.9.0.md)。 > **V3.8.0(官方指数与交易基础数据,2026-09-05):** 新增 §12 指数与交易日历层, > 中证/国证成分与权重、中证 PE/股息率、深交所整月日历,以及沪深官方两融、北交所行情两个备胎。 > 11→12 层,54→60 个能力入口,19→22 个来源(新增中证、国证、北交所);无新增安装依赖,保留 Python 3.9。 > 国证当前文件是月末快照;历史调样、集合竞价、需 Key 的同花顺增强 API 暂不算已支持。 > 实测记录、候选取舍和边界见 [本次数据源整合记录](docs/source-integration-v3.8.0.md)。 > **V3.7.2(北交所号段判定对齐,2026-09-02):**`_natural_market()`(`norm_ticker()` 校验显式前缀是否自相矛盾)与 §8.5 `_anomaly_market()`(异动记录→交易所)此前只枚举 `43/83/87` 三个前两位与 `920`,而 `get_prefix()` 用 `startswith(("4", "8"))` + `startswith("92")` 覆盖整个北交所号段——同一份文件两套规则(#51)。现统一为 `startswith(("4", "8", "92"))`。实测(2026-09-01)北交所在市代码只有 `43x/83x/87x/920x` 四段、`921` 段尚未启用,故**不改变任何现有标的的判定结果**,修的是一致性与前向兼容。 > > **V3.7.1(后缀路由修复,2026-08-20):**`get_prefix()` 认显式前缀(`sh000016`)却不认等价的后缀写法(`000016.SH`)——而 `norm_ticker()` 文档明文支持后缀式,且 `em_market_code()`/`em_secid()`(V3.7.0 新增)把**未归一化的原串**直接喂给 `get_prefix()`:`000016.SH` 以 `0` 开头落到默认深市分支,secid 拼成 `0.000016`(深康佳A)而非 `1.000016`(上证50 指数),**静默返回另一只标的的数据**。已在 `get_prefix()` 开头加后缀识别分支(`.sh/.sz/.bj` 与显式前缀等价透传),号段推断与沪指数白名单逻辑不变。⚠️ 走「前缀+原串拼接」的端点(`tencent_quote()`、新浪财报等)仍只认纯 6 位或前缀式——后缀式会把 `.SH` 拼进请求串,**先过 `norm_ticker()` 再传**的总原则不变。 > > **V3.7.0(宏观层 + 筹码分布 + 复权因子 + 估值历史,2026-08-19):**新增 **1 个数据层、7 个端点、4 个数据源**(baostock / 申万 / 人民银行 / 国家统计局,全部零注册零 key)。全部端点于 2026-08-19 实跑验证。 > > - **§4.6 筹码分布 CYQ** — 补上本层名实不符的窟窿:Layer 4 叫「资金面 / **筹码**层」但 §4.1~§4.5 全是资金面数据,一直没有真正的筹码分布。**东财没有公开 CYQ 接口**(实测 `push2`/`push2his` 的 `cyq/get` 均 404),本端点用 OHLC + 换手率**本地推演**,零新增数据源。输出获利比例 / 平均成本 / 90-70 成本区间与集中度 / 筹码峰。⚠️ 初始筹码**播种为首日全部流通盘**——从全零起步会把窗口前的存量持仓一笔勾销(两个 1% 换手日会被算成 50/50,真实应约 99%/1%)。 > - **§6.5 估值历史** — §1.2 腾讯只有**当日**估值快照,本端点给**日频历史序列**(实测茅台 2016-01-04 起 2581 行),并一次补齐此前完全缺失的四项:**换手率**(筹码分布的必需输入)、**停牌状态**、**ST 标记**(实测 000004 有 276 天 isST=1)、历史 PE/PB/PS/PCF。⚠️ **baostock 不支持北交所**,服务端报 `10004011`,本实现在**登录前**就拦掉抛 `ValueError`。 > - **§1.4 复权因子** — §1.1 通达信 `bars()` 是**不复权**数据,跨除权日直接比价必错。新浪 qfq/hfq 因子序列一次 HTTP 约 1.8KB。⚠️ 响应末尾挂着 `/* base64 */` 注释块,**不能用 `$` 锚定正则**,须用 `raw_decode`。 > - **§6.6 上市/退市日** — 唯一能拿到**退市日期**的零鉴权源,配合 §1.2 `is_stale` 可在筛选阶段剔除僵尸标的。 > - **§6.7 申万行业变迁史** — §3.7 东财只有**当前**行业归属,用它做历史研究是**前视偏差**。本端点给每只股票的行业变迁(实测 12,893 行 / 5,905 只 / 38 个一级行业;有标的历史变更过 10 次)。⚠️ 申万官方只发代码不发中文名。 > - **§11.1/§11.2 宏观层(新)** — 人民银行社融(月度 12 列)+ 国家统计局 PMI。⚠️ 社融链路是三级跳,未发布月份**整行丢弃**而非返回 NaN(否则调用方会把 12 行当 12 个月真数据);PMI 正文是全角括号**内带空格**,空白必须**整个删掉**才匹配得到。 > **V3.6.1(龙虎榜空窗口崩溃修复,2026-08-09 · #45):**`dragon_tiger_board()` 在回看窗口内无上榜记录时抛 `UnboundLocalError`——而大市值 / 低换手率标的(如贵州茅台)常态无上榜,等于**调用即崩**,调用方还无法区分「无数据」与「接口异常」。已修,空窗口返回语义一致的空结构。 > > **V3.6.0(静默失败修复 + 重点监控池/日内异动,2026-07-31 · #15):** > - **🔴 北交所老号段(43/83/87)会返回僵尸数据且不报错**:实测在市 342 只中 **336 只已迁至 `920xxx`**(锦波生物 `832982`→`920982`、贝特瑞 `835185`→`920185`),老码在东财研报静默返回 **0 篇**、在腾讯行情返回**定格报价**(成交量 0,价差达 17%~100%
Trust audit
SAFEgrade B · trust 89/100 Nothing in the source contradicts what it says it does. Grade A is reserved for packages that have also passed the behavioural sandbox.
| Layer | What it checks | Result |
|---|---|---|
| L0 | Provenance & inventory | PASS |
| L1 | Static analysis of the code | PASS |
| L2 | Instruction surface (what it tells the agent) | PASS |
| L3 | Class-specific surface | PASS |
| L4 | Behavioural (sandbox) | SKIPPED |
What the source does
- Filesystem
- none-observed
- Network
- none-observed
- Shell
- none-observed
- Dependencies
- pinned
- Secrets in source
- none-found
Findings (4)
exec(compile(block, f"SKILL.md:{name}", "exec"), namespace)exec(compile(_marker_code("v310-tencent-ticks"), "SKILL.md:v310-tencent-ticks", "exec"), ns)exec(code, namespace)
exec(compile(ast.Module(body=functions, type_ignores=[]), "SKILL.md:valuation", "exec"), namespace)
Gates applied: no_behavioural_pass.
a679d6b974c8full audit observations/trust-audit/skill/simonlin1212__a-stock-data.json · Report an issue / request a re-scanAudit history
Every audit this skill has had.
| Date | Source | Verdict | Grade | Score | Change |
|---|---|---|---|---|---|
| 2026-10-20 | a679d6b974c8 | SAFE | B | 89 | first audit |
Questions
What does the a-stock-data — simonlin1212/a-stock-data skill do?
A股全栈数据工具包:行情K线·当日逐笔·研报·信号·资金面·新闻·财务·公告·打板·ETF期权·舆情·宏观利率·期货大宗(含大商所日K)·事件驱动·可转债 | 15层·87端点·34数据源·除iwencai外免Key | A-share data for AI agents: K-lines, ticks, reports, fund flow, news, financials, filings, options, macro, futures, events, convertibles | 15 layers·87 endpoints·34 sources
Is a-stock-data — simonlin1212/a-stock-data safe to install?
The audit found nothing in the source that contradicts what it says it does, and graded it B (89/100). Grade A is held back for packages that have also passed a sandboxed behavioural run, which is why a clean skill reads B.
What can a-stock-data — simonlin1212/a-stock-data access on my machine?
The audit observed no filesystem, network or shell use at all in its source.
Which assistants does a-stock-data — simonlin1212/a-stock-data work with?
Its documentation mentions claude-code, codex, cursor and openclaw. That is what the text claims, not a compatibility test we ran.
How current is this page?
The grade is for one exact copy of the source (a679d6b974c8), read on 2026-10-20. The repository is watched, and a new audit runs when it changes — this is the first audit.
Add this badge to your README
Shows this page's audit result and links back to it. It updates when the audit does.
[](https://modelsatlas.com/skills/simonlin1212/a-stock-data/)
Not your listing, or something out of date? Claim or update your listing.