gangtise-openapi-cli 0.49.0 → 0.51.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +45 -8
- package/dist/src/commands/ai.js +16 -1
- package/dist/src/commands/indicator.js +8 -13
- package/dist/src/commands/insight.js +10 -3
- package/dist/src/commands/quote.js +19 -0
- package/dist/src/commands/reference.js +24 -1
- package/dist/src/commands/vault.js +51 -5
- package/dist/src/core/client.js +3 -2
- package/dist/src/core/endpoints.js +62 -0
- package/dist/src/core/errors.js +28 -14
- package/dist/src/core/etfComponents.js +96 -19
- package/dist/src/core/normalize.js +1 -1
- package/gangtise-openapi/SKILL.md +35 -22
- package/gangtise-openapi/references/commands/ai.md +26 -0
- package/gangtise-openapi/references/commands/fund.md +2 -2
- package/gangtise-openapi/references/commands/fundamental.md +1 -1
- package/gangtise-openapi/references/commands/indicator.md +94 -25
- package/gangtise-openapi/references/commands/insight.md +4 -1
- package/gangtise-openapi/references/commands/quote.md +20 -0
- package/gangtise-openapi/references/commands/reference-and-lookup.md +21 -1
- package/gangtise-openapi/references/commands/vault.md +79 -11
- package/gangtise-openapi/references/errors.md +2 -2
- package/gangtise-openapi/references/examples.md +1 -1
- package/gangtise-openapi/references/fields.md +1 -1
- package/gangtise-openapi/references/response-schema.md +12 -4
- package/package.json +1 -1
- package/dist/src/core/calendarType.js +0 -44
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
---
|
|
2
2
|
name: gangtise-openapi
|
|
3
|
-
version: "0.
|
|
3
|
+
version: "0.51.0"
|
|
4
4
|
description: |-
|
|
5
5
|
通过 gangtise CLI 直接调用 Gangtise OpenAPI,拉取投研原始数据、批量导出、下载文件、调用 AI 能力。
|
|
6
6
|
|
|
7
|
-
**触发词**:Gangtise / 冈底斯 / 岗底斯 / gtIC(Gangtise 语音误识别)/ 调接口 / CLI / openapi / 导出 / 下载研报 / 批量查 / 拉数据 / 跑一下 / 研报 / 纪要 / 公告 / K线 / 财报 / 估值 / 选股 / 债券 / 基金 / ETF
|
|
7
|
+
**触发词**:Gangtise / 冈底斯 / 岗底斯 / gtIC(Gangtise 语音误识别)/ 调接口 / CLI / openapi / 导出 / 下载研报 / 批量查 / 拉数据 / 跑一下 / 研报 / 纪要 / 公告 / K线 / 财报 / 估值 / 选股 / 债券 / 基金 / ETF / 自选股 / 股票池 / 个股笔记
|
|
8
8
|
|
|
9
|
-
**适用**:原始数据导出、批量 jsonl/csv、下载 PDF/MD、行情 K 线、财务报表、估值指标、证券级数据指标(EDE
|
|
9
|
+
**适用**:原始数据导出、批量 jsonl/csv、下载 PDF/MD、行情 K 线、财务报表、估值指标、证券级数据指标(EDE 截面/时序/条件选股)、财报日历(业绩预告/快报/公告)、会议线索、帕米尔专家纪要、资金流向、题材与板块、指数成分权重、债券(资料/行情/估值/评级/公告/违约)、公募基金(资料/净值/费率/经理/规模/持有人/持仓与配置/ETF 申赎)、联网搜索、PDF 解析为 Markdown、AI 能力(一页通/投资逻辑/同业对比/个股看点·投研总结/投研线索/AI 专家情报/业绩点评/观点PK·多空辩论/主题跟踪/热点话题/管理层讨论/管理层情绪/调研提纲/知识库搜索)、云盘文件管理、群消息与群文件下载、股票池、个股笔记(Vault)
|
|
10
10
|
|
|
11
11
|
**不适用**:不脱离 OpenAPI 自行撰写研报、编造投研结论或做自由问答——观点总结、多空 PK 等 AI 产物本 skill 只经由 Gangtise 平台 AI 接口获取,不自行生成
|
|
12
12
|
|
|
@@ -36,10 +36,10 @@ description: |-
|
|
|
36
36
|
- K 线全市场关键字(`aShares` / `hkStocks` / `usStocks`;旧命令 `all`)跨日期 → 自动按日切片并合并,粒度按各市场单日行数定(A 1 个工作日 / 港 2 个工作日 / 美 1 个工作日)
|
|
37
37
|
- 5xx / `429` / 网络错误 / `999999` → 自动指数退避重试(🔴 贵档端点例外:仅连接失败 / 429 / token 自愈重试,5xx/超时不重放防重复扣分;`indicator` 端点对 `999999` 不重试)
|
|
38
38
|
- Token 失效 → 自动换用已刷新的 token 或重新登录,再重发;凭证错 `999011` → **不重试**(AK/SK 不对不会自己好),查环境变量
|
|
39
|
-
8. **参数命名差异**:`--security-code` 只用于 **Fundamental 全组、AI 单证券生成类**(`one-pager` / `investment-logic` / `peer-comparison` / `earnings-review` / `research-outline` / `management-discuss-*`)**与 `insight qa list`**;`ai security-clue` 用 `--gts-code`;`fund manager-info` 按人名查、用 `--manager`;其余(Insight 其他命令、Quote、Vault、Bond、Fund、Indicator、`ai stock-summary`、`ai management-sentiment-indicator` / `-conclusion`)一律用 `--security`。
|
|
39
|
+
8. **参数命名差异**:`--security-code` 只用于 **Fundamental 全组、AI 单证券生成类**(`one-pager` / `investment-logic` / `peer-comparison` / `earnings-review` / `research-outline` / `management-discuss-*`)**与 `insight qa list`**;`ai security-clue` 用 `--gts-code`;`fund manager-info` 按人名查、用 `--manager`;其余(Insight 其他命令、Quote、Vault、Bond、Fund、Indicator、`ai stock-summary`、`ai management-sentiment-indicator` / `-conclusion`、`ai expert-intel`)一律用 `--security`;`reference index-weight` 的指数代码用 `--index`。
|
|
40
40
|
9. **调试**:`--verbose` 或 `GANGTISE_VERBOSE=1` 打印每个请求的耗时/字节数到 stderr。
|
|
41
|
-
10. **`--field` 字段名必须核对,不确定就别传**(返回全量最稳)。上游对不存在的字段名:`quote` 系(realtime / day-kline / minute-kline / fund-flow)名和值一起丢、不报错——CLI 比对请求与返回的列名,缺列标 `partial` + `missingFields` 并退出 3;`fundamental main-business` / `valuation-analysis` 报 `100005`、`bond` / `fund` 报 `100003`,都会点名写错的名字。CLI 另检查每行的值个数与字段数,对不上直接报错退出 1,报障时带上报错末尾的 `(trace …)`。多只证券或全市场时,缺的身份列 CLI 会补到最前(日 K 补 `securityCode` / `tradeDate`、分钟 K 补 `securityCode` / `tradeTime`、realtime 补 `securityCode`);单只不补。realtime **无 `close`**(用 `latestPrice`)、**无市值**(总市值走 `indicator cross-section --indicator qte_mkt_cptl`,A/港/美股均有数)。
|
|
42
|
-
11. 🔴 **EDE(`indicator` 截面 / 时序 / 选股)取不到数返 `null` 占位、行列都保留、退出码 0**;代码写错才报 `100003` 并指名。报告期类指标(`is_*` 等)的日期一律落**报告期末**(`03-31` / `06-30` / `09-30` / `12-31`),截面用 `--indicator-param "<指标code>:reportDate=YYYY-MM-DD"`(`screener` 用 `"F1:reportDate=..."`)——日期不在报告期末时整批 `null`,`screener`
|
|
41
|
+
10. **`--field` 字段名必须核对,不确定就别传**(返回全量最稳)。上游对不存在的字段名:`quote` 系(realtime / day-kline / minute-kline / fund-flow)名和值一起丢、不报错——CLI 比对请求与返回的列名,缺列标 `partial` + `missingFields` 并退出 3;`fundamental main-business` / `valuation-analysis`、`quote sector-fund-flow` 报 `100005`、`bond` / `fund` 报 `100003`,都会点名写错的名字。CLI 另检查每行的值个数与字段数,对不上直接报错退出 1,报障时带上报错末尾的 `(trace …)`。多只证券或全市场时,缺的身份列 CLI 会补到最前(日 K 补 `securityCode` / `tradeDate`、分钟 K 补 `securityCode` / `tradeTime`、realtime 补 `securityCode`);单只不补。realtime **无 `close`**(用 `latestPrice`)、**无市值**(总市值走 `indicator cross-section --indicator qte_mkt_cptl`,A/港/美股均有数)。
|
|
42
|
+
11. 🔴 **EDE(`indicator` 截面 / 时序 / 选股)取不到数返 `null` 占位、行列都保留、退出码 0**;代码写错才报 `100003` 并指名。报告期类指标(`is_*` 等)的日期一律落**报告期末**(`03-31` / `06-30` / `09-30` / `12-31`),截面用 `--indicator-param "<指标code>:reportDate=YYYY-MM-DD"`(`screener` 用 `"F1:reportDate=..."`)——日期不在报告期末时整批 `null`,`screener` 筛出空集是**日期用错,不是没有符合条件的标的**。时序与交易日类指标混查、或显式传 `ND` / `TD` / `WD` 时,报告期类指标只有报告期末那几行是真值,**别对整列直接求均值 / 求和**。**`--calendar-type` 默认别传**(服务端按指标定日期轴:行情类给交易日、报告期类给报告期、混查给两者并集——单独查报告期类指标时区间要含报告期末,否则返回空结果;显式传 `TD` 时报告期类指标落在非交易日的报告期末那几期整期缺失、不报错,其余几期照常有值,看着像正常数据;一致预期 `frcst_*` 要节假日也有值的逐日序列才传 `ND`)。详见 `references/commands/indicator.md`。
|
|
43
43
|
|
|
44
44
|
## 工作流(3 步)
|
|
45
45
|
|
|
@@ -58,15 +58,16 @@ description: |-
|
|
|
58
58
|
- list→download 用户没指定具体文件 → 展示前 10 条让用户挑
|
|
59
59
|
- 🔴 **改动账号数据的命令**(其余命令都只读):
|
|
60
60
|
- **自选股股票池**:`vault stock-pool-create` / `stock-pool-rename` / `stock-pool-add-stock` / `stock-pool-remove-stock` / `stock-pool-delete`
|
|
61
|
+
- **个股笔记**:`vault stock-note-add` / `stock-note-update` / `stock-note-delete`
|
|
61
62
|
- **云盘**:`vault drive-upload` / `drive-create-folder` / `drive-rename` / `drive-move-file` / `drive-move-folder` / `drive-copy` / `drive-delete-file` / `drive-delete-folder`
|
|
62
|
-
- 用户没有明确要求「建池 / 改名 / 加自选 / 删自选 /
|
|
63
|
-
- `stock-pool-delete` / `drive-delete-file` / `drive-delete-folder`
|
|
63
|
+
- 用户没有明确要求「建池 / 改名 / 加自选 / 删自选 / 删池」「记笔记 / 改笔记 / 删笔记」「上传 / 建文件夹 / 改名 / 移动 / 复制 / 删除」时**不要调用**;要调用时先复述「对哪个池、笔记或文件夹、做什么、涉及哪几项」再执行。`stock-note-update` 整体替换正文,改之前先 `stock-note-list --note-id` 取出原文;`stock-note-add` 超时别直接重跑(没有防重,会多出一条),先 `stock-note-list` 核对。**租户云盘(`--space-type 2`)对整个租户可见**,往里上传、复制,或在里面删除前要特别确认
|
|
64
|
+
- `stock-pool-delete` / `stock-note-delete` / `drive-delete-file` / `drive-delete-folder` 不可恢复(删池连带清掉池内全部关注关系;删笔记连同它与全部证券的关联;删文件夹连同其中全部子文件夹与文件),CLI 因此要求显式 `--yes`——**这个 `--yes` 必须是用户点头之后才加,看到「加上 --yes」的报错不要自动补上重跑**
|
|
64
65
|
|
|
65
66
|
🟡 **自行判断**:
|
|
66
67
|
- 公司名 → 先速查表,否则 `reference securities-search`
|
|
67
68
|
- opaque ID → 先 `references/lookup-ids.md`
|
|
68
69
|
- 模糊时间词 → 查"时间词映射"
|
|
69
|
-
- 列表类命令用户没要求全量 → 按单价主动加 `--size` 兜底(不必问):免费或 0.1 积分/条的列表用 `--size 200`;**≥1
|
|
70
|
+
- 列表类命令用户没要求全量 → 按单价主动加 `--size` 兜底(不必问):免费或 0.1 积分/条的列表用 `--size 200`;**≥1 积分/条的(观点、独立观点、路演四件套、会议线索、个股线索、热点话题、管理层情绪、AI 专家情报等)用 `--size 20`**,要更多先 `--size 1` 看 stderr 的 `Total` 估总价再定。CLI 省略 `--size` 会拉全量;按条计费的列表估算全量超过 1000 积分时报错退出(报错里有估算积分),此时把估算积分告诉用户,确认后加 `--yes` 重跑或改传较小的 `--size N`。**显式 `--size` 本身估算超过 1000 积分也同样拦截**(别用 `--size 100000` 当「全量」绕过),`fundamental earning-forecast` 按日期区间估算、同一条线
|
|
70
71
|
- 预估结果 >200 行 → 别全量 `--format json` 引进上下文,改 `--format jsonl --output <file>` 落盘(行边取边写、内存不随行数增长,stdout 只回显文件路径),再 `wc -l` + `head` 采样呈现。落盘的 `csv` / `jsonl` 旁边会有 `<file>.meta.json`:`complete` / `rows` / `result.partial` 与缺失项标记都在里面,转交文件时一并给、核验完整性先看它(`complete: false` = 那次导出退出码 3)
|
|
71
72
|
- 路由到 AI 同步生成命令 → 同步生成类(`one-pager` / `investment-logic` / `peer-comparison` / `research-outline` / `theme-tracking` / `management-discuss-*`)CLI 已内置 120s 超时下限,无需前缀;`stock-summary` 同样有 120s 下限;`hot-topic` 仍建议前置 `GANGTISE_TIMEOUT_MS=120000`。**贵档端点超时/5xx 不自动重试**(重放=重复扣分)——超时报错后内容可能已在服务端生成并扣费,同参数再调仍会**再扣一次**(无缓存豁免),所以一次调用给足超时比失败重跑省钱。`earnings-review` / `viewpoint-debate` 是异步(`--wait` 或 `*-check` 轮询),不吃这个超时
|
|
72
73
|
- "AI速记/智能摘要/会议纪要"→`summary`、"原始文件/原文件"→`original`、"语音识别/转写文本/ASR"→`asr` — 用户已明示时直接映射 content-type,不必问
|
|
@@ -75,7 +76,7 @@ description: |-
|
|
|
75
76
|
|
|
76
77
|
"免费"=0 积分;**只列单价**,数据范围见下一节。
|
|
77
78
|
|
|
78
|
-
- **免费**:所有 `quote` 行情、`fundamental` 报表/主营/估值/股东(**盈利预测除外**)、`reference`/`constant` 查询(含 `official-account-search`)、`alternative edb-search`、`vault`(record/wechat
|
|
79
|
+
- **免费**:所有 `quote` 行情、`fundamental` 报表/主营/估值/股东(**盈利预测除外**)、`reference`/`constant` 查询(含 `official-account-search`)、`alternative edb-search`、`vault`(record/wechat/股票池/个股笔记/drive/AI云盘,含云盘上传与目录管理)、`insight report-image list`
|
|
79
80
|
- **0.1/条 list**:research / foreign-report / official-account / announcement(A/港/美) / summary / qa / performance-calendar 的 list、`vault my-conference-list`;`insight report-image download` 0.1/张
|
|
80
81
|
- **按条(观点/含详情类 list)**:`ai security-clue` 5;`ai management-sentiment-indicator` / `-conclusion` 5;roadshow/site-visit/strategy/forum list 10;independent-opinion list 1;**opinion / foreign-opinion list 1(只含摘要 `brief`)**,要正文用 `detail` 30/条或 `list --with-content` 30/条;`fundamental earning-forecast` 0.5;`ai stock-summary` 1(无看点的证券不返回也不扣);`alternative edb-data` 30/指标
|
|
81
82
|
- **各 download(/篇)**:official-account / research 10;announcement 1;announcement-hk / announcement-us 2;independent-opinion / summary / foreign-report / my-conference 30;`performance-calendar download` A 股 1 / 港美股 2
|
|
@@ -83,17 +84,19 @@ description: |-
|
|
|
83
84
|
- **0.4 的 `fund` 系**:`fund` 全部命令 **0.4/次**(按次,与返回行数、基金只数无关)——多只基金合并成一次调用最省
|
|
84
85
|
- **`tool web-search` 1/次**(按次,与返回条数、是否带 `--include-content` 无关;零结果与报错不扣)
|
|
85
86
|
- 🔴 **`insight highlight list` 5/条**——**按返回条数计**,`--size 20` 的一页 = 100 积分。省略 `--size` 时 CLI 先估算,超过 1000 积分(约 200 条)报错退出,要全量须加 `--yes`
|
|
87
|
+
- 🔴 **`ai expert-intel` 20/条**——**按返回条数计**,`--size 20` = 400 积分,一整页(50 条)= 1000 积分。省略 `--size` 时 CLI 先取 1 条拿总数再估算,超过 1000 积分(50 条)报错退出,要全量须加 `--yes`;先用 `--security` / `--tag` / 时间收窄
|
|
86
88
|
- **按页**:`tool file-parse` 0.8/页,**提交(`--file`)时按实际页数一次性扣**,取结果(`file-parse-check`)免费——50 页 PDF = 40 积分,别重复提交同一文件
|
|
87
89
|
- 🔴 **按次**:`ai knowledge-batch` 10、`management-discuss-earnings-call` 10、`management-discuss-announcement` 5、`management-sentiment-detail` 10;AI Agent `one-pager` / `investment-logic` / `peer-comparison` / `research-outline` / `theme-tracking` **10/次**,`earnings-review` / `viewpoint-debate` **20/次**
|
|
88
90
|
- 🔴 **`ai hot-topic` 10/篇,按返回条数计**(不是按调用次数)。📌 **一「篇」= 一整份报告**(一份早报 / 午报 / 盘中快报 / 晚报),**不是报告里的一条话题**——一份报告通常包含多条热点话题。所以 `--size 20` 的一页 = 最多 20 份报告 = 200 积分,**先用 `--start-date`/`--end-date` + `--category` 收窄再拉**,别省略 `--size` 直接全量。**可查的历史范围是前溯 3 个月**(各档相同)——超出范围的日期返回空结果而不是报错,拿到空先想想是不是撞了权限窗口
|
|
89
91
|
- **题材**:`alternative concept-info` / `concept-securities` **50/次**;🔴 加 `--full`(催化事件 / 重点个股标识 / 纳入理由)走旧版 **500/次**,不需要这几列就别加
|
|
90
92
|
- ✅ **扣费发生在接口成功返回数据之后**(平台计费规则):没查到内容(空结果)、报错都不扣分——各 download、`ai hot-topic`(10/篇)、`ai stock-summary`(1/条,无看点总结的个股不进返回列表也不计费)、AI 生成类(`one-pager` 等 10~20/次),以及按次计费的 `ai knowledge-batch`、题材、`tool web-search` 都是这样。**所以「先小范围试探再放大」是安全的**——先用窄条件确认能查到东西,再扩范围。⚠️ **「成功返回」按服务端算**:超时报错时服务端可能已经生成并返回了内容(只是客户端没收到),这次已经扣过,同参数重调会再扣一次;异步的 `earnings-review` / `viewpoint-debate` 在提交成功(拿到任务 ID)时就扣,之后生成失败不退。**单价未公布的** `pamirs-summary`(见下)别据此假定
|
|
91
93
|
- ⚠️ **同参数重复调用不免费**:按次计费的那批无缓存命中豁免(`one-pager` 等生成类重复调用每次扣分,即使秒回缓存内容);**按篇/按条的也一样**——重拉同一批 `hot-topic` 就是按条数再计一次费。生成类与列表结果拿到后自行留存复用,别为「刷新」重调
|
|
92
|
-
- ⚠️ **这些端点超时 / 5xx 不自动重放**(共
|
|
94
|
+
- ⚠️ **这些端点超时 / 5xx 不自动重放**(共 68 个,完整清单见下方注释块:按次计费的 AI Agent 那批、`ai knowledge-batch` / `management-discuss-*` / `management-sentiment-detail` / `hot-topic`、题材两接口(含 `--full`)、`bond` 与 `fund` 全部命令、`tool web-search`、`tool file-parse` 提交;summary / foreign-report / my-conference 三个 download;按条计费的 `insight highlight list`、`ai expert-intel`、观点 `detail` / `list --with-content`、`ai stock-summary` 与 `fundamental earning-forecast`;以及不计分但重放有副作用的 `vault stock-pool-create`、`vault stock-note-add` 与云盘上传 / 新建文件夹 / 复制 / 删除)。仅连接失败、429 与 token 自愈会重试。服务端可能已经执行并计费,重放会重复扣分、多建一份或把成功报成失败——**一次调用给足超时比失败重跑省钱**
|
|
93
95
|
|
|
94
96
|
<!-- no-replay-endpoints
|
|
95
97
|
上面那句点名的「不重放」端点,完整清单如下(endpoint key,与 `gangtise raw list` 一致):
|
|
96
98
|
ai.earnings-review.get-id
|
|
99
|
+
ai.expert-intel.list
|
|
97
100
|
ai.hot-topic
|
|
98
101
|
ai.investment-logic
|
|
99
102
|
ai.knowledge-batch
|
|
@@ -158,6 +161,7 @@ vault.drive.delete-file
|
|
|
158
161
|
vault.drive.delete-folder
|
|
159
162
|
vault.drive.upload
|
|
160
163
|
vault.my-conference.download
|
|
164
|
+
vault.stock-note.add
|
|
161
165
|
vault.stock-pool.create
|
|
162
166
|
-->
|
|
163
167
|
- **按单元格**:`indicator cross-section` / `time-series` / `screener`(A股 0.05 / 港股 0.1 / 美股 0.2 积分每 100 单元格;screener 按**筛选前**范围 × 指标数保守估算,实际以平台账单为准,见 `indicator.md`);`ai knowledge-resource-download` 按下游资源计费
|
|
@@ -171,6 +175,7 @@ vault.stock-pool.create
|
|
|
171
175
|
| 命令 | 正式账号 | 试用账号 |
|
|
172
176
|
|------|------|------|
|
|
173
177
|
| `quote day-kline` / `fund-flow` | **5 年** | 3 年 |
|
|
178
|
+
| `quote sector-fund-flow` | 官方权限表未列;可能短于 `fund-flow`,长区间先试最早一段 | 同左 |
|
|
174
179
|
| `quote minute-kline` | **1 个月**(随日期滚动) | 1 个月 |
|
|
175
180
|
| `quote realtime` | 最新快照 | 最新快照 |
|
|
176
181
|
| `fundamental` 三大报表(A / 港 / 美)/ `main-business` / `valuation-analysis` / `top-holders` | **5 年** | 3 年 |
|
|
@@ -178,6 +183,7 @@ vault.stock-pool.create
|
|
|
178
183
|
| `indicator cross-section` / `time-series` / `screener` | **5 年** | 3 年 |
|
|
179
184
|
| `indicator search`、`alternative edb-search` / `edb-data` | **不限** | 不限 |
|
|
180
185
|
| `alternative concept-info` / `concept-securities` | 最新截面 | 最新截面 |
|
|
186
|
+
| `reference index-weight` | 按账号权限(界外报 `110003`);只有月末交易日有数 | 同左 |
|
|
181
187
|
| `bond daily-quote` / `valuation` / `issuance-plan` | **5 年** | 3 年 |
|
|
182
188
|
| `bond` 其余命令 | **不限** | 不限 |
|
|
183
189
|
| `fund` 净值 / 规模 / 持有人 / 资产配置 / 持仓与分布 / `etf-share-change` | **5 年**(两端日期都不传 = 窗口内全部) | 3 年 |
|
|
@@ -190,6 +196,7 @@ vault.stock-pool.create
|
|
|
190
196
|
| `insight qa` | **1 年** | 1 年 |
|
|
191
197
|
| `insight pamirs-summary` 帕米尔纪要 | **不限**(需单独购买专家纪要库) | — |
|
|
192
198
|
| `ai hot-topic` / `security-clue` | **3 个月** | 3 个月 |
|
|
199
|
+
| `ai expert-intel` | 按账号权限(界外报 `110003`) | 同左 |
|
|
193
200
|
| `ai theme-tracking` | **1 个月** | 1 个月 |
|
|
194
201
|
| `ai management-discuss-*` | **1 年** | 1 年 |
|
|
195
202
|
| `ai management-sentiment-indicator` / `-conclusion` | **1 年** | 6 个月 |
|
|
@@ -218,7 +225,7 @@ vault.stock-pool.create
|
|
|
218
225
|
| `vault record-download` | `--content-type` | `original` 原始文件 / `asr` 语音识别 / `summary` AI 速记 |
|
|
219
226
|
| `vault my-conference-download` | `--content-type` | `asr` 语音识别 / `summary` AI 速记 |
|
|
220
227
|
|
|
221
|
-
省略 `--output` 时 CLI 用本地 title-cache 里的真实标题做文件名(`independent-opinion` 与 `
|
|
228
|
+
省略 `--output` 时 CLI 用本地 title-cache 里的真实标题做文件名(`independent-opinion`、`report-image` 与 `vault wechat-message-download` 的下载不在此列,也没有 `--resolve-title`;群消息文件按服务端给的文件名保存,内容原样落盘)——**只读缓存**,命中就零额外调用。缓存由同端点的 `list` 写入,所以「先 `list` 再 `download`」这个正常工作流本来就免费拿到正确文件名。
|
|
222
229
|
|
|
223
230
|
🔴 **未命中时默认不回查**,退回服务端文件名或 `<type>-<id>.<ext>`。要回查得显式加 `--resolve-title`——它拉最近 200 条(4 次请求),而这些 list 多数按 **0.1 积分/条**计费,约 20 积分,只用于取一个更易读的文件名(下载本身 1–30)。**批量下载或按 ID 下旧文件**时:要么先跑一次 `list` 把标题灌进缓存,要么直接 `--output ./<名>.<ext>` 自己定名;`--resolve-title` 会把取回的 200 条一并写回缓存,同批后续下载不再重复消耗。
|
|
224
231
|
|
|
@@ -233,7 +240,7 @@ vault.stock-pool.create
|
|
|
233
240
|
| 外资独立观点 / 独立分析师观点 | `insight independent-opinion list` |
|
|
234
241
|
| 纪要 / 会议纪要(外部) | `insight summary list` |
|
|
235
242
|
| 帕米尔纪要 / 帕米尔专家纪要 / Pamirs | `insight pamirs-summary list`(专家纪要库,需单独购买;筛选项比 `summary` 少,无 `--source`/`--institution`/`--participant-role`) |
|
|
236
|
-
| 路演 / 调研 / 策略会 / 论坛 | `insight roadshow / site-visit / strategy / forum list` |
|
|
243
|
+
| 路演 / 调研 / 策略会 / 论坛 | `insight roadshow / site-visit / strategy / forum list`(`--start-time` / `--end-time` 按举办时间;按收录时间增量同步用 `--publish-start-time` / `--publish-end-time`,两组可同时传) |
|
|
237
244
|
| 财报日历 / 业绩预告 / 业绩快报 / 财报披露排期 | `insight performance-calendar list`(**用 `--start-date`/`--end-date`,不是 `--start-time`**;全表体量很大且按条计费,CLI 强制要求日期范围 / `--security` / `--size` 三者至少其一;只给 `--security` 时另有 1000 行隐式上限,撞上限且 total 还有剩余=筛选可能没生效(标 `partial`、退出码 3),改用日期范围重查。下载原文 `performance-calendar download --performance-report-id`,仅 `hasAttachment: true` 可下) |
|
|
238
245
|
| A 股公告 / 公告 | `insight announcement list` |
|
|
239
246
|
| 港股公告 / HK 公告 | `insight announcement-hk list` |
|
|
@@ -252,6 +259,7 @@ vault.stock-pool.create
|
|
|
252
259
|
| 热点话题 / 早午晚报 | `ai hot-topic` |
|
|
253
260
|
| 管理层讨论(财报) | `ai management-discuss-announcement` |
|
|
254
261
|
| 管理层讨论(业绩会) | `ai management-discuss-earnings-call` |
|
|
262
|
+
| AI 专家情报 / 专家会议情报 / 专家怎么看某公司 | `ai expert-intel`(🔴 **20 积分/条**,必须带 `--size`;`--security` / `--research-area` / `--concept` / `--tag` 收窄,`--tag` 是纯文本内容标签如 `景气上行`) |
|
|
255
263
|
| 管理层情绪 / 业绩会问答是否回避 · 乐观 · 确定 / 情绪较上一场的变化 | `ai management-sentiment-indicator`(三维评分,5/条)/ `ai management-sentiment-conclusion`(结论文本与较上一场的对比,5/条);逐条问答与判断依据 → `ai management-sentiment-detail --source-id <source.sourceId>`(10/次) |
|
|
256
264
|
| 日 K(历史,A 股 / 港股 / 美股 / 沪深 ETF / 各类指数含全球指数,可混查) | `quote day-kline` |
|
|
257
265
|
| 沪深京指数日 K / 要指数名称 | `quote day-kline` 逐个传指数代码(**没有一次拿全部指数的写法**,`index-day-kline --security all` 会被 CLI 拒绝);指数名称用 `reference securities-search --keyword <指数代码> --category index`(返回 `gtsName`) |
|
|
@@ -259,6 +267,7 @@ vault.stock-pool.create
|
|
|
259
267
|
| 分钟 K(沪深 A 股 / ETF + 各类指数含全球指数) | `quote minute-kline`(`--security` 可重复,逐只并发合并) |
|
|
260
268
|
| 实时行情(A / 港 / 美 / 沪深 ETF / 各类指数含全球指数) | `quote realtime` |
|
|
261
269
|
| A股资金流向(主力/大单净流入,日频) | `quote fund-flow`(`--security` 或 `aShares` 全市场〔须带 `--start-date`/`--end-date`,按日自动分片〕;免费) |
|
|
270
|
+
| 板块 / 行业 / 概念资金流向(主力净流入,日频) | `quote sector-fund-flow`(前置:`reference sector-search` 拿 `sectorId`;按当日成分股加总、只计沪深京;报 `100006` 是计算量超限,缩短区间或减少板块 / 字段,调小 `--limit` 无效;免费) |
|
|
262
271
|
| 单证券 A股完整利润表 / 资产负债 / 现金流(累计 / 单季) | `fundamental income-statement[-quarterly] / balance-sheet / cash-flow[-quarterly]` |
|
|
263
272
|
| 单证券 港股完整利润表 / 资产负债 / 现金流 | `fundamental income-statement-hk / balance-sheet-hk / cash-flow-hk` |
|
|
264
273
|
| 单证券 美股完整利润表 / 资产负债 / 现金流 | `fundamental income-statement-us / balance-sheet-us / cash-flow-us` |
|
|
@@ -299,8 +308,11 @@ vault.stock-pool.create
|
|
|
299
308
|
| 录音速记 | `vault record-list / record-download` |
|
|
300
309
|
| 我的会议(业绩会/策略会/路演内部记录) | `vault my-conference-list / my-conference-download` |
|
|
301
310
|
| 微信群消息 | `vault wechat-message-list`(先 `vault wechat-chatroom-list` 拿群 ID) |
|
|
302
|
-
|
|
|
311
|
+
| 群里的文件 / 群消息附件(PDF / Excel / 图片 / 录音 / 视频)下载 | `vault wechat-message-list --category document --category image --category audio --category video` 拿 `msgId` → `vault wechat-message-download --msg-id <msgId>`(text / url 消息没有文件,报 `130005`) |
|
|
312
|
+
| 自选股股票池(查询) | `vault stock-pool-list / stock-pool-stocks`(所属租户的股票池加 `--space-type 2`,两个命令要用同一个值) |
|
|
303
313
|
| 自选股股票池(增删改,会改动账号数据) | `vault stock-pool-create / stock-pool-rename / stock-pool-add-stock / stock-pool-remove-stock / stock-pool-delete`(删池须加 `--yes`;详见 `references/commands/vault.md`) |
|
|
314
|
+
| 个股笔记 / 投资笔记(查询) | `vault stock-note-list`(不传筛选即全部;`--security` 或 `--note-id` 二选一) |
|
|
315
|
+
| 记笔记 / 改笔记 / 删笔记(会改动账号数据) | `vault stock-note-add / stock-note-update / stock-note-delete`(一条笔记关联 1~50 只证券、建后不能改关联;删除须加 `--yes`;详见 `references/commands/vault.md`) |
|
|
304
316
|
| 行业指标搜索(EDB) | `alternative edb-search` |
|
|
305
317
|
| 行业指标时序数据(EDB) | `alternative edb-data` |
|
|
306
318
|
| 题材画像 / 投资逻辑 / 行业空间 / 竞争格局 | `alternative concept-info`(前置:`reference concept-search` 拿 `concept-id`;50/次);**要催化事件**加 `--full`(500/次) |
|
|
@@ -318,18 +330,19 @@ vault.stock-pool.create
|
|
|
318
330
|
| 题材 ID 搜索 | `reference concept-search` |
|
|
319
331
|
| 板块 ID 搜索 | `reference sector-search` |
|
|
320
332
|
| 板块成分股 | `reference sector-constituents`(前置:`reference sector-search` 拿 `sector-id`) |
|
|
333
|
+
| 指数成分股权重 / 沪深300 / 中证500 成分权重 / 指数权重 | `reference index-weight --index <指数代码> --date <月末交易日>`(免费;🔴 **只有每月最后一个交易日有数**,其他日期返回空、不报错) |
|
|
321
334
|
| PDF 转 Markdown / 解析文件 / 提取 PDF 正文 | `tool file-parse --file <x.pdf> --wait`(异步,0.8 积分/页,提交时扣;取结果 `tool file-parse-check --task-id`。**平台自有研报/公告优先用各 download 的 `--file-type 2` 直出 Markdown**,别花解析费) |
|
|
322
335
|
|
|
323
336
|
**易混淆消歧**:
|
|
324
337
|
- "纪要" → 外部信息走 `insight summary`;明确点名"帕米尔 / Pamirs"才走 `insight pamirs-summary`(另一个库,不是 `summary` 的子集);公司内部录音/会议走 `vault my-conference`
|
|
325
338
|
- "搜索 X" → 数据维度精确(按行业/券商)走对应 `insight ... list`;跨类型语义搜索走 `ai knowledge-batch`
|
|
326
339
|
- 港股代码用在 `insight foreign-opinion --security` 还是 `quote day-kline --security`?前者要"境外"格式(`UBER.N`),后者要 `.HK`
|
|
327
|
-
- "基金" → `fund` 命令组(资料 / 净值 / 持仓 / ETF 申赎);`quote fund-flow` 是 **A
|
|
340
|
+
- "基金" → `fund` 命令组(资料 / 净值 / 持仓 / ETF 申赎);`quote fund-flow` 是 **A 股个股资金流向**、`quote sector-fund-flow` 是板块资金流向,都与基金无关。ETF 的日 K 与实时行情仍走 `quote day-kline` / `realtime`,ETF 净值、份额与申赎清单走 `fund`
|
|
328
341
|
- "管理层" → 讨论内容(财报管理层讨论、业绩会要点)走 `ai management-discuss-*`;问答里的态度(是否回避、乐观还是风险、表述是否确定)走 `ai management-sentiment-*`
|
|
329
|
-
- "成分股" → 题材深度(分组;重点标记/纳入理由需 `--full`)走 `alternative concept-securities`;板块(行业/概念分类树,纯代码名单)走 `reference sector-constituents`
|
|
342
|
+
- "成分股" → 题材深度(分组;重点标记/纳入理由需 `--full`)走 `alternative concept-securities`;板块(行业/概念分类树,纯代码名单)走 `reference sector-constituents`;要**指数成分权重**走 `reference index-weight`(月末交易日)
|
|
330
343
|
- **证券指标按任务形态路由,不是搜到 EDE 就一律走 EDE**(细节见 `references/commands/indicator.md`):
|
|
331
344
|
- 单证券 → 优先 `fundamental` 专用命令(多数免费 / 低价);多证券批量取**已实现**指标 → `indicator`(EDE)一次拉取:同一日期 / 报告期横比用 `cross-section`,区间走势用 `time-series`(不能多指标 × 多证券同时)
|
|
332
|
-
- 始终不走 EDE:盈利预测 / 一致预期 → `fundamental earning-forecast`(EDE 的 EPS 是已实现值,**不能冒充预测**);A 股估值历史分位 → `valuation-analysis
|
|
345
|
+
- 始终不走 EDE:盈利预测 / 一致预期 → `fundamental earning-forecast`(EDE 的 EPS 是已实现值,**不能冒充预测**);A 股估值历史分位 → `valuation-analysis`(港 / 美股的估值历史分位走 EDE `finc_*_quantile`,逐指标核 `scopeList`);行情与 K 线 → `quote`;行业 / 宏观指标(无证券维度)→ `alternative edb-*`。**例外:总市值只有 EDE 有**——`indicator cross-section --indicator qte_mkt_cptl`(单位「元」,用 `--scale` 缩放)
|
|
333
346
|
- 取数前 `indicator search --format json` 核三项:`indicatorName` + `description` 语义对、`scopeList` 覆盖全部目标市场、`parameterList` 必填参数可满足;任一不符就回退专用接口,港 / 美股缺专用能力时如实说不支持。「某市场无数据」这类否定结论以当次 `scopeList` + 抽查一行为准
|
|
334
347
|
- 日期参数**只看 `parameterList` 必填哪个**:`tradeDate` → `--date`,`reportDate` → `--indicator-param "code:reportDate=..."`(多数报告期类要后者,但 `_ttm` 整族要 `tradeDate`);两个都必填(如 `div_cash_yld`)就两个都用 `--indicator-param` 显式给,只给 `reportDate` 时 `--date` 不再注入、会报 `100001`。`parameterList` 要 `fiscalYear` 的(预测类 `frcst_*`、分红类 `div_cash_yr` 等)显式给,漏传报 `100001` 并点名。日频估值(`finc_pe_ttm` / `finc_pb_mrq`)用最新交易日,用报告期末日期会取到陈值;参数名同样以 `parameterList` 为准(复权是 `adjustType`)
|
|
335
348
|
- 结果**按 `security` 字段取值**,别按请求下标对位(证券的返回顺序不作保证);批量回填加 `--key-by code`
|
|
@@ -405,7 +418,7 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
405
418
|
|
|
406
419
|
🔴 **`--end-time` 写到当天末尾 `23:59:59` 最稳**:A 股公告与 `knowledge-batch` 只写日期时 CLI 按当日 23:59:59 换算;其余列表把时间串原样交给接口,写全时间才不依赖接口对「只有日期」的理解。
|
|
407
420
|
|
|
408
|
-
日期参数**按参数名判断、不按命令组**:名字带 `-date` 的(`--start-date` / `--end-date` / `--date` / `--report-date`)收年在前日期(`YYYY-MM-DD` 首选,`YYYY/MM/DD` / `YYYYMMDD` 也收);名字带 `-time` 的(`--start-time` / `--end-time`)收年在前日期 + 可选 ` HH:mm[:ss]`(空格或 `T` 分隔)或 10 / 13 位时间戳(`ai management-sentiment-indicator` / `-conclusion` 写时刻必须带秒,`HH:mm` 报 `110001`)。易错:Insight / Vault 各 list 用 `-time`,**唯独 `insight performance-calendar` 用 `-date`**;AI 组两种都有(`theme-tracking --date`、`hot-topic` / `management-discuss-*` 用 `-date`,`security-clue` / `knowledge-batch` / `management-sentiment-indicator` / `-conclusion` 用 `-time`);`quote minute-kline` 用 `-time`,其余 Quote / Fundamental / Indicator / `bond` / `fund` / `edb-data` 用 `-date`。拿不准看该命令 `--help`。
|
|
421
|
+
日期参数**按参数名判断、不按命令组**:名字带 `-date` 的(`--start-date` / `--end-date` / `--date` / `--report-date`)收年在前日期(`YYYY-MM-DD` 首选,`YYYY/MM/DD` / `YYYYMMDD` 也收);名字带 `-time` 的(`--start-time` / `--end-time`)收年在前日期 + 可选 ` HH:mm[:ss]`(空格或 `T` 分隔)或 10 / 13 位时间戳(`ai management-sentiment-indicator` / `-conclusion` 写时刻必须带秒,`HH:mm` 报 `110001`)。易错:Insight / Vault 各 list 用 `-time`,**唯独 `insight performance-calendar` 用 `-date`**;AI 组两种都有(`theme-tracking --date`、`hot-topic` / `management-discuss-*` 用 `-date`,`security-clue` / `knowledge-batch` / `management-sentiment-indicator` / `-conclusion` / `expert-intel` 用 `-time`);`quote minute-kline` 用 `-time`,其余 Quote / Fundamental / Indicator / `bond` / `fund` / `edb-data` 与 `reference index-weight` 用 `-date`。拿不准看该命令 `--help`。
|
|
409
422
|
|
|
410
423
|
支持排序切换的 list:opinion / summary / pamirs-summary / research / foreign-report / 三个公告 / foreign-opinion / independent-opinion / official-account。**要最新加 `--rank-type 2`(按 `publishTime` 倒序);要最相关用默认 `--rank-type 1` + `--keyword`**——两者从同一结果集取的是**不同子集**,没有 `--keyword` 时无差异。`--search-type 2`(只有 summary / pamirs-summary / research / foreign-report / 三个公告 / official-account 有)扩大命中总数与 `--rank-type 2` 的候选池,**不改变 `--rank-type 1` 取回的条目**,要相关度不必加。判断这两个参数是否生效的方法见 `references/commands/insight.md` 开头。
|
|
411
424
|
|
|
@@ -437,16 +450,16 @@ gangtise reference securities-search --keyword <公司名> --category stock --to
|
|
|
437
450
|
按需 Read 对应文件:
|
|
438
451
|
|
|
439
452
|
- 内资观点 / 纪要 / 路演 / 调研 / 策略 / 论坛 / 财报日历(performance-calendar)/ 研报 / 外资研报 / A 股公告 / 港股公告 / 美股公告 / 外资观点 / 独立观点 / 公众号(official-account)/ 投资者问答(qa)/ 研报图表(report-image)→ `references/commands/insight.md`
|
|
440
|
-
- 行情命令(A 股 / 港股 / 美股 / ETF / 指数日 K、分钟 K、实时行情、资金流向 fund-flow,含全球指数清单) → `references/commands/quote.md`
|
|
453
|
+
- 行情命令(A 股 / 港股 / 美股 / ETF / 指数日 K、分钟 K、实时行情、资金流向 fund-flow / sector-fund-flow,含全球指数清单) → `references/commands/quote.md`
|
|
441
454
|
- 三大报表(A 股 / 港股 / 美股)/ 主营 / 估值 / 盈利预测 / 股东 → `references/commands/fundamental.md`
|
|
442
|
-
- knowledge-batch / security-clue / 个股看点(stock-summary)/ AI agent / 异步任务 / 主题跟踪 / 热点 / 管理层讨论 / 管理层情绪 → `references/commands/ai.md`
|
|
443
|
-
- drive / record / my-conference / wechat /
|
|
455
|
+
- knowledge-batch / security-clue / 个股看点(stock-summary)/ AI 专家情报(expert-intel)/ AI agent / 异步任务 / 主题跟踪 / 热点 / 管理层讨论 / 管理层情绪 → `references/commands/ai.md`
|
|
456
|
+
- drive / record / my-conference / wechat(含群消息文件下载)/ 股票池 / 个股笔记 → `references/commands/vault.md`
|
|
444
457
|
- 行业指标数据库(EDB)/ 题材指数画像与成分股(concept-info / concept-securities)→ `references/commands/alternative.md`
|
|
445
458
|
- 数据指标(EDE:search / cross-section / time-series / screener,证券级指标截面、时序与条件选股)→ `references/commands/indicator.md`
|
|
446
459
|
- 债券(basic-info / issuer-info / daily-quote / valuation / cash-flow / announcement / issuance-* / rating-overview / rating-change / issuer-rating-change / exercise-notice / default-list)→ `references/commands/bond.md`
|
|
447
460
|
- 公募基金(basic-info / nav / fee-rate / manager-* / asset-size / holder-structure / top10-holders / asset-allocation / 持仓与分布六个 / etf-pcf-* / etf-share-change)→ `references/commands/fund.md`
|
|
448
461
|
- PDF 解析(file-parse)/ 联网搜索(web-search)→ `references/commands/tool.md`
|
|
449
|
-
- securities-search / chiefs-search(首席 ID)/ institution-search(机构 ID)/ official-account-search(公众号 ID)/ 常量查询(constant-category / constant-list)/ 题材 ID(concept-search)/ 板块(sector-search / sector-constituents)/ lookup 本地表 / 行业别名 / raw call → `references/commands/reference-and-lookup.md`
|
|
462
|
+
- securities-search / chiefs-search(首席 ID)/ institution-search(机构 ID)/ official-account-search(公众号 ID)/ 常量查询(constant-category / constant-list)/ 题材 ID(concept-search)/ 板块(sector-search / sector-constituents)/ 指数成分股权重(index-weight)/ lookup 本地表 / 行业别名 / raw call → `references/commands/reference-and-lookup.md`
|
|
450
463
|
- 错误码全表 / 不报错的坑 / 退出码 3 与 `screener` 缺列判据 / Troubleshooting → `references/errors.md`
|
|
451
464
|
|
|
452
465
|
跑通流程对照 → `references/examples.md`
|
|
@@ -147,6 +147,32 @@ gangtise ai hot-topic [--start-date <date>] [--end-date <date>] [--category <nam
|
|
|
147
147
|
- 🔴 **计费 10/篇,按返回条数计**(不是按调用次数)。📌 **一「篇」= 一整份报告**(一份早报 / 午报 / 盘中快报 / 晚报),**不是报告里的一条话题**——一份报告通常包含多条热点话题,`--category` 选的也是报告类型而不是话题。所以一页 20 条 = 20 份报告 = 200 积分:**先用 `--start-date`/`--end-date` + `--category` 把范围收窄,再考虑要不要全量**(省略 `--size` 时 CLI 先取 1 篇拿到总数来估算,超过 1000 积分报错,确认要全量加 `--yes`;结果多于 1 篇时这 1 篇会多计一次,知道要几篇就直接传 `--size`)
|
|
148
148
|
- **可查的历史范围是前溯 3 个月**(各档相同)。超出范围的日期**返回空结果、不报错**——拿到空先确认是不是撞了本账号的窗口,别当成「那天没有报告」
|
|
149
149
|
|
|
150
|
+
## AI 专家情报 `ai expert-intel`
|
|
151
|
+
|
|
152
|
+
```bash
|
|
153
|
+
gangtise ai expert-intel [--security <code>...] [--research-area <id>...] [--concept <id>...] [--tag <text>...] [--keyword <text>] [--search-type 1|2] [--start-time <datetime>] [--end-time <datetime>] [--from <n>] [--size <n>] [--yes]
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
AI 从专家会议、会议纪要等一手信息里提炼的个股情报:一条 = 主体公司 + 核心观点标题 + 内容标签 + 正文,适合追踪产品进展、经营与景气变化。按发布时间倒序。
|
|
157
|
+
|
|
158
|
+
- 🔴 **积分:20/条**(按返回条数计),`--size 20` = 400 积分。省略 `--size` 时 CLI 先取 1 条拿总数估算,超过 1000 积分(50 条)报错退出,确认要全量加 `--yes`;**先用筛选收窄,务必带 `--size`**。超时 / 5xx 不自动重发
|
|
159
|
+
- `--security`:带市场后缀的代码(如 `300750.SZ`),可重复;一条情报关联多只证券时任一命中即返回。不带后缀或后缀不存在(如 `.XX`)报 `120001`;⚠️ **后缀存在但与代码的市场对不上(如 `600519.SZ`)不报错、返回空结果**——拿到空先核对后缀。证券简称先用 `reference securities-search` 换代码
|
|
160
|
+
- `--research-area`:研究方向 ID,**用中信码 `1008001xx`**(`reference constant-list --category citicIndustry`)。⚠️ 申万码 `104xx0000` 与方向码 `122000xxx` 在这里返回空结果、不报错;`--concept`:题材 ID(`reference concept-search`);`--tag`:纯文本内容标签(如 `景气上行` / `超预期` / `重大催化` / `产品进展`)。三者写错的值都按无匹配处理,**返回空结果、不报错**——拿到空先核对 ID 与标签写法
|
|
161
|
+
- 不同筛选之间是「且」,同一筛选的多个取值是「或」
|
|
162
|
+
- `--keyword` + `--search-type`:不传 `--search-type` 时按接口默认的全文检索(标题 + 正文);`1` 只搜标题——**标题不含公司名**,按公司查用 `--security`
|
|
163
|
+
- `--start-time` / `--end-time`:按发布时间筛,`yyyy-MM-dd` 或 `yyyy-MM-dd HH:mm:ss`;只写日期的 `--end-time` 含当天整天。起止颠倒报 `110002`,超出账号可查范围报 `110003`
|
|
164
|
+
- `--from` / `--size`:自动翻页(单页 50)
|
|
165
|
+
- 返回字段:`intelId` / `title` / `mainSecurity{securityCode, securityName}`(标题前缀展示用的主体公司)/ `tagList[]`(纯文本)/ `content`(正文,纯文本)/ `publishTime`(北京时间)/ `securityList[]{securityCode, securityName}`(含主体公司在其他市场的上市主体)/ `researchAreaList[]{researchAreaId, researchAreaName}` / `conceptList[]{conceptId, conceptName}`
|
|
166
|
+
- 未开通该数据库的账号报 `999004`
|
|
167
|
+
|
|
168
|
+
**示例:**
|
|
169
|
+
```bash
|
|
170
|
+
# 某公司近期的专家情报
|
|
171
|
+
gangtise ai expert-intel --security 300750.SZ --start-time 2026-10-01 --size 10 --format json
|
|
172
|
+
# 题材 + 标签:特斯拉机器人里景气上行或超预期的
|
|
173
|
+
gangtise ai expert-intel --concept 121000745 --tag 景气上行 --tag 超预期 --size 20 --format json
|
|
174
|
+
```
|
|
175
|
+
|
|
150
176
|
## 管理层讨论-财报 `ai management-discuss-announcement`
|
|
151
177
|
|
|
152
178
|
```bash
|
|
@@ -166,10 +166,10 @@ gangtise fund etf-share-change --security <code>... [--start-date <d>] [--end
|
|
|
166
166
|
- **`etf-pcf-header` / `etf-pcf-components` 只返回最新一份申购赎回清单**,无日期参数,查不了历史清单。`tradeDate` 是清单对应的交易日(清单盘前发布,可能就是当天)
|
|
167
167
|
- **`etf-pcf-header`**:申赎允许情况(`允许申购·允许赎回` 这种 `·` 分隔的组合)、最小申赎单位(份)及其净值(元)、单日申购 / 赎回上限(份,无上限为 `null`)、现金差额与预估现金(元,可为负)、现金替代比例上限(%)、`componentCount` 成分记录数
|
|
168
168
|
- **`etf-pcf-components`**:每个成分一行,按 `serialNumber` 排序:成分代码 `componentCode`、成分名称 `componentName`、收盘价、涨跌幅、市值占比(%)、申购数量(股)、`cashSubstituteFlag`(`允许` / `必须`,中文)、申购 / 赎回现金替代溢价比例(%)、固定替代金额与申购 / 赎回替代金额(元)。宽基 ETF 动辄数百行,多只一起查注意 10000 行上限
|
|
169
|
-
- 🔴 **`componentCode` 是 CLI 按名称匹配补上的**(接口只返回名称),带市场后缀(如 `600519.SH` / `00941.HK` / `NVDA.O` / 国债 `019848.SH`)。匹配方式:按名称找证券(先查证券列表,没有再搜索),再用该行的 `close` 核对候选证券的最新价或昨收;核对不上的(清单价格滞后于行情、停牌等),改按清单价格所属那天的收盘价核对(A 股与港股各自定日期)——A+H 型 ETF 里同名的 A 股与 H
|
|
169
|
+
- 🔴 **`componentCode` 是 CLI 按名称匹配补上的**(接口只返回名称),带市场后缀(如 `600519.SH` / `00941.HK` / `NVDA.O` / 国债 `019848.SH`)。匹配方式:按名称找证券(先查证券列表,没有再搜索),再用该行的 `close` 核对候选证券的最新价或昨收;核对不上的(清单价格滞后于行情、停牌等),改按清单价格所属那天的收盘价核对(A 股与港股各自定日期)——A+H 型 ETF 里同名的 A 股与 H 股两行据此分开。同名证券在两个市场都有时,实时价对上的一方还要另一市场那只的近期收盘价都对不上才直接采用(清单价格滞后时,另一市场那只的实时价可能碰巧等于该行);**两个市场的价格都对得上、或另一市场那只排除不了时,再用该行的 `pctChange` 核对**:哪只证券有一天的收盘价与涨跌幅都和该行相同,就是哪只(同一公司 A / H 股价格碰巧相同的日子,涨跌幅几乎不会也相同)。价格定不了时(债券、停牌、除权除息当天、行情查询失败):成分都在同一市场的 ETF 取该市场里名称完全一致的那只,同市场多只时取与 ETF 同一交易所的。价格与涨跌幅都定不了的(候选里有一只没有近期日 K、或在该收盘价那天算不出涨跌幅、或涨跌幅和哪只都对不上,如除权除息日):另一市场那只的近期收盘价都对不上时按其余行所在的单一市场取,否则为 `null`——这样的行本身就说明 ETF 可能跨市场,不拿其余行替它定。**A+H 等跨市场的 ETF,以及还有一行可能在两个市场(同名 A / H 股、或港股名称更长的同一公司)没定下来、或某个名称查询失败的 ETF,价格定不了的行一律为 `null`**,不按名称猜
|
|
170
170
|
- **匹配不到的为 `null`**:现金行(如 `申赎现金`)、商品(如 `黄金9999`)、交易所简称与证券名称对不上的(如港股 `港交所`、`中海油`)。stderr 会说明匹配了多少行、列出为 `null` 的行
|
|
171
171
|
- ⚠️ 成分的 `close` 是清单给出的价格,日期可能早于 `tradeDate` 的前一交易日,一天之内还会更新,同一清单里 A 股与港股的日期也可能不同。要用价格计算,请以 `quote day-kline` / `quote realtime` 为准
|
|
172
|
-
- 额外请求都免费:下载一次 A 股 / 港股 / 美股证券列表(3
|
|
172
|
+
- 额外请求都免费:下载一次 A 股 / 港股 / 美股证券列表(3 次请求)在本地按名称匹配,列表里没有的名称(债券、被截断的简称、现金行等)才逐个搜索,另加一两次实时行情查询;有实时价格核对不上的行、或同名证券在两个市场都有时(清单价格滞后、停牌、除权除息、A+H 成分等),再加一次日 K 查询。只要接口原始返回时加 `--no-component-code`(不发这些请求,行里没有 `componentCode`)
|
|
173
173
|
- **`etf-share-change`**:逐交易日一行,份额(万份)、规模(万元)及较上期变动,`sharesChangeRate` 为份额变化率(%)。按日期倒序
|
|
174
174
|
|
|
175
175
|
---
|
|
@@ -89,7 +89,7 @@ gangtise fundamental main-business --security-code <code> [--breakdown <type>] [
|
|
|
89
89
|
gangtise fundamental valuation-analysis --security-code <code> --indicator <name> [--start-date <date>] [--end-date <date>] [--limit <n>] [--field <name>] [--skip-null]
|
|
90
90
|
```
|
|
91
91
|
|
|
92
|
-
- **市场与路由**:本命令仅支持 A 股(港股 / 美股会报 `120001`「非有效A股」)。A股单证券估值序列与估值历史分位始终优先本命令;多证券批量取一组已实现估值点值,且 `indicator search` 三项校验都通过时,才优先 EDE `cross-section` / `time-series`。港 /
|
|
92
|
+
- **市场与路由**:本命令仅支持 A 股(港股 / 美股会报 `120001`「非有效A股」)。A股单证券估值序列与估值历史分位始终优先本命令;多证券批量取一组已实现估值点值,且 `indicator search` 三项校验都通过时,才优先 EDE `cross-section` / `time-series`。港 / 美股估值历史分位走 EDE 的 `finc_*_quantile`(各指标覆盖的市场以 `scopeList` 为准,见 `indicator.md`),不能用普通 EDE 点值冒充
|
|
93
93
|
- `--indicator`(**必选**):`peTtm` 滚动PE | `pbMrq` PB | `peg` PEG | `psTtm` 滚动PS | `pcfTtm` 滚动PCF | `em` 企业倍数
|
|
94
94
|
- `--limit` 默认 2000,省略 `--start-date` 时自动查近一年
|
|
95
95
|
- 🔴 **序列按自然日逐日一行(含周末)**,行数超过 `--limit` 时接口**保留最近的行、丢掉区间开头**。CLI 撞满即标 `partial`、退出码 3 并在 stderr 说明(首行恰好就是 `--start-date` 时说明没丢,不标)。取长区间把 `--limit` 设到不小于区间天数:取 N 年就设 `--limit` ≥ 366 × N(且不早于账号权限窗口的起点)
|
|
@@ -13,13 +13,14 @@
|
|
|
13
13
|
| 多证券批量取一组**已实现**财务 / 估值指标 | 先 `indicator search`,通过下方三项校验后用 `cross-section` / `time-series` 一次拉取,避免逐只循环 |
|
|
14
14
|
| A股盈利预测 / 一致预期(含预测 EPS) | `fundamental earning-forecast`;EDE 搜到的基本 / 稀释 EPS 是已实现值,不能替代预测 |
|
|
15
15
|
| A股估值历史分位 | `fundamental valuation-analysis` |
|
|
16
|
+
| 港 / 美股估值历史分位 | EDE `finc_*_quantile`(`sDate` 至 `--date` 区间里的分位;各指标覆盖的市场不同,以 `scopeList` 为准,见下方「银行 / 保险 / 券商专项指标与估值分位数」) |
|
|
16
17
|
| **估值指标的历史序列**(分位 / 回测 / 择时) | 两个接口口径不同、都要交叉核——EDE 按正式财报披露日切换财报口径,`valuation-analysis` 按业绩快报切,见下方专门小节 |
|
|
17
18
|
| 开高低收 / 成交量等行情与 K 线 | `quote`;免费且支持多证券批量。**换接口不换口径**:`quote` 的 `volume` 与 EDE `qte_vol` 逐位相同(A股 / 港股 / 美股,单位均为股)。EDE 只在 `quote` 不提供的口径上才需要——周 / 月 / 季 / 年 / 区间成交量 |
|
|
18
19
|
| 单只基金的净值 / 持仓 / 规模 / 经理 | `fund` 命令组;多只基金批量取分类、复权净值与风险收益指标才用 EDE,见下方「基金指标」 |
|
|
19
20
|
| 单证券资金流向(要占比字段) | `quote fund-flow`;免费,且有 EDE 没有的 `*Ratio` 占比。多证券批量取某一两个档位才用 EDE 的 `flow_*` |
|
|
20
21
|
| 单证券三大报表全部科目 | 对应 `fundamental` 利润表 / 资产负债表 / 现金流量表命令 |
|
|
21
22
|
|
|
22
|
-
EDE 不是“搜到就优先”。取数前必须核对:① `indicatorName` + `description` 与目标语义一致;② `scopeList` 覆盖**全部**目标市场和证券类型;③ `parameterList` 的必填参数与枚举可满足。`scopeList` 缺失 / `null` / 空或任一项不符,都视为无法证明覆盖并回退上表的专用接口;专用接口也不支持目标市场时,如实说明当前 CLI 无可用口径,不能用其他语义代替。`valuation-analysis` / `earning-forecast` 仅支持 A
|
|
23
|
+
EDE 不是“搜到就优先”。取数前必须核对:① `indicatorName` + `description` 与目标语义一致;② `scopeList` 覆盖**全部**目标市场和证券类型;③ `parameterList` 的必填参数与枚举可满足。`scopeList` 缺失 / `null` / 空或任一项不符,都视为无法证明覆盖并回退上表的专用接口;专用接口也不支持目标市场时,如实说明当前 CLI 无可用口径,不能用其他语义代替。`valuation-analysis` / `earning-forecast` 仅支持 A 股:港 / 美股的**盈利预测**当前无可用口径;**估值历史分位**走 EDE 的 `finc_*_quantile`(逐指标核 `scopeList`,见上表)。估值指标本身港 / 美股也有数:`finc_pe_ttm`(PE TTM,`scopeList` 列 A / 港 / 美)与 `finc_pb_mrq`(PB MRQ,列 A / 港)。⚠️ **本文里所有「仅 A 股」「无数据」这类否定结论都只是某个时点的抽查**——服务端在持续补数据,正面结论过期会给错数,负面结论过期则会让你白白拒掉一个现在能跑的查询(不报错、不告警,只是少调一次)。**一律以当次 `scopeList` + 抽查一行为准。**`search` 免费,EDE 取数按单元格计费;除多证券批量的效率收益外,仍优先免费 / 低价的 `quote` 或 `fundamental`。
|
|
23
24
|
|
|
24
25
|
## 指标搜索 `indicator search`
|
|
25
26
|
|
|
@@ -31,7 +32,7 @@ gangtise indicator search --keyword <text> [--limit <n>]
|
|
|
31
32
|
- `--limit`:返回条数上限,默认 50,最大 100
|
|
32
33
|
- 默认 `--format table` 只适合浏览名称;正式路由 / 取数前必须加 `--format json`,才能完成语义、`scopeList`、`parameterList` 三项校验
|
|
33
34
|
- 返回字段:`indicatorCode` / `indicatorName` / `description`(算法与口径)/ `scopeList`(该指标适用的市场 + 证券类型 + `usageRestriction`)/ `parameterList`(可传的 `--indicator-param` 参数名及枚举)/ `score`
|
|
34
|
-
- **市场范围按指标判断**:`scopeList` 会返回实际覆盖范围,且指标之间不同;不能笼统写成每个指标都覆盖 A / 港 / 美股。覆盖面在持续扩,别把抽查结论当常量:例如 `qte_mkt_cptl
|
|
35
|
+
- **市场范围按指标判断**:`scopeList` 会返回实际覆盖范围,且指标之间不同;不能笼统写成每个指标都覆盖 A / 港 / 美股。覆盖面在持续扩,别把抽查结论当常量:例如 `qte_mkt_cptl` / `shr_tot` / `finc_pe_ttm` / `is_op_rev_ttm` / `is_shnp_ttm` 覆盖 A/港/美股,`finc_pb_mrq` 的 `scopeList` 只列 A/港股。目标列表含任一 scope 外证券时,本批 EDE 校验不通过,应回退专用接口
|
|
35
36
|
- **`scopeList[].usageRestriction`**:该指标在具体接口上的限制,`null` = 无限制。⚠️ **它是提示不是硬约束**——标着「不支持指标时间序列接口」的 `qte_vol_intvl` 调时序照样返数据、不会被拦下。当成「口径可能不对、结果别当真」看,别指望它会报错
|
|
36
37
|
- ⚠️ **`scopeList` 是声明不是保证**:它可能**超前于数据**(声明覆盖但该市场暂无数据),也可能**滞后于数据**(已有数据尚未声明)。**「某某仍无数据」这类否定结论过期得和正面结论一样快**,照着它走会白白拒掉一个现在能跑的查询,而且不报错。**判断成本很低**:无数据会保留行列、给一个占位单元格,抽查一行就能看出覆盖情况;code 写错则直接报 `100003`,两种情形不会混淆。占位值统一是 `null`(详见下方「缺数据 vs 代码写错」)
|
|
37
38
|
- 美股代码用交易所后缀 `.O`(NASDAQ) / `.N`(NYSE) / `.A`(NYSE American,原 AMEX):用 `AAPL.O`,`AAPL.US` 取不到数据
|
|
@@ -90,29 +91,29 @@ gangtise indicator cross-section \
|
|
|
90
91
|
```bash
|
|
91
92
|
gangtise indicator time-series --indicator <code> [--indicator <code2>] \
|
|
92
93
|
--security <code> [--security <code2>] --start-date <date> --end-date <date> \
|
|
93
|
-
[--calendar-type <ND|TD|WD>] [--currency <c>] [--scale <s>] [--indicator-param <spec>] [--key-by name|code]
|
|
94
|
+
[--calendar-type <ND|TD|WD|RD>] [--currency <c>] [--scale <s>] [--indicator-param <spec>] [--key-by name|code]
|
|
94
95
|
```
|
|
95
96
|
|
|
96
97
|
- `--indicator` / `--security`:同上,但**只允许「多指标 × 单证券」或「单指标 × 多证券」**,不能两边都多个(要多 × 多用 `cross-section`,否则报 `100003`「仅支持多指标单证券或单指标多证券」)。**单指标时 `--security` 才能传板块 ID**;多指标时只能传一个证券代码、不得传板块 ID
|
|
97
98
|
- `--start-date` / `--end-date`(**均必选**):区间端点 `yyyy-MM-dd`。时序的时间范围由这两个参数统管,**不要**再用 `--indicator-param` 传 `tradeDate` 这类单日期参数
|
|
98
99
|
- ⚠️ **同一 `indicatorCode` 挂多套参数:截面和时序都不支持,这是设计如此,要拆成两次调用**。只有 `screener` 支持(它把指标绑到不同变量 `F1`/`F2` 上,天然可区分)。CLI 也表达不了该请求——`--indicator-param` 按 code 建 Map,同 code 的多组参数会被合并成一组,与服务端设计一致。走 `raw call` 真发出去会报 `100003「指标 xxx 重复配置」`
|
|
99
|
-
- `--calendar-type`:日期类型 `ND`(自然日)
|
|
100
|
+
- `--calendar-type`:日期类型 `ND`(自然日) / `TD`(交易日) / `WD`(工作日) / `RD`(报告期,固定为 `03-31` / `06-30` / `09-30` / `12-31`)。显式传了就按你给的发
|
|
100
101
|
|
|
101
|
-
|
|
102
|
+
**不传时由服务端按指标定日期轴**(CLI 不另发请求、也不改写):
|
|
102
103
|
|
|
103
|
-
| 本次请求的指标 |
|
|
104
|
-
| :-- | :-- |
|
|
105
|
-
|
|
|
106
|
-
|
|
|
107
|
-
|
|
|
104
|
+
| 本次请求的指标 | 返回的日期 |
|
|
105
|
+
| :-- | :-- |
|
|
106
|
+
| 全部是交易日类(行情、日频估值,如 `qte_close` / `finc_pe_ttm`) | 交易日序列 |
|
|
107
|
+
| 全部是报告期类(`is_*` 等财务指标) | 报告期序列(区间内的 `03-31` / `06-30` / `09-30` / `12-31`) |
|
|
108
|
+
| 两类混查 | 两者日期的**并集**:报告期类指标只在报告期末那几行有值,其余行 `null`;报告期末不是交易日时,交易日类指标在那一行是 `null` |
|
|
108
109
|
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
-
|
|
112
|
-
-
|
|
113
|
-
- **`TD`
|
|
110
|
+
- 🔴 **一致预期类指标(`frcst_*`)不传时走交易日序列**,但它们在非交易日也有值、而且会变(节假日期间预测更新)。要逐日完整的序列就显式传 `--calendar-type ND`
|
|
111
|
+
- 🔴 **报告期类指标别传 `TD`**:报告期末常落在非交易日(如 2024-03-31、2024-06-30 均为周日),`TD` 的日期轴里没有那一天,这几期报告期类指标于是**整期缺失、退出码 0、不报错**;落在交易日的报告期末照常有值(2024 年传 `TD` 只有 09-30、12-31 两期),看着像正常数据,很难发现少了期。不传或传 `RD` 即可
|
|
112
|
+
- 混查时要所有指标按同一种日历取值,显式传 `ND` / `TD` / `RD`
|
|
113
|
+
- `TD` 且跨市场时,日期是各市场交易日的**并集**;`RD` 跨市场用同一组报告期日期,不按市场取并集
|
|
114
|
+
- **`ND` 与 `TD` 差多少**:A 股一年约 240~245 个交易日,同一区间 `ND` 的日期列大约是 `TD` 的 **1.5 倍**,多出来的全是非交易日。换算到 30000 上限就是「单指标拉一年,`TD` 能带的证券数比 `ND` 多约一半」。**要精确值就用自己的区间各跑一次比 `dates` 长度**,别套这里的比例——交易日数逐年不同
|
|
114
115
|
- `--currency` / `--scale`:同 `cross-section`(根级 `--scale` 只作用于支持它的指标,价格类与金额类可以混查)
|
|
115
|
-
-
|
|
116
|
+
- **输出(宽表)**:每行一个日期,**按日期倒序(最新在前)**,与接口返回的 `dates` 顺序一致——按相邻行算涨跌、收益率前先按 `date` 升序排好,否则符号全反;列为 `date / <各序列名>…`;序列在「单指标」时是各**证券**,在「单证券多指标」时是各**指标**。**板块 ID 算多证券**——传 1 个 `sectorId` 服务端会展开成 N 只成分股,列就是这 N 只(如中信白酒 → 每只成分股一列)
|
|
116
117
|
- **`--key-by name|code`**(默认 `name`):同 `cross-section`;`code` 模式下单证券列=各 `indicatorCode`、多证券列=各 `securityCode`,批量按 code 回填用它
|
|
117
118
|
- ⚠️ 部分指标标注**不支持时序接口**:`search` 返回的 `scopeList[].usageRestriction` 会写明(如「不支持指标时间序列接口」),`null` 表示无限制。**但它不是硬约束**——`qte_vol_intvl` 带着该标注调时序照样返回数据,不会被拦下。把它当"口径可能不对、结果别当真"的提示,而不是"会报错"的保证
|
|
118
119
|
|
|
@@ -219,17 +220,17 @@ gangtise indicator cross-section --indicator qte_close --security 600519.SH \
|
|
|
219
220
|
|
|
220
221
|
**撞上限就按这个乘积拆批**:截面拆证券或拆指标,时序拆证券或缩日期区间,分批取回后自己合并。
|
|
221
222
|
|
|
222
|
-
⚠️ **两处最容易撞**:① `--security` 传板块 ID 时服务端会展开成全部成分股,实际证券数远大于写进命令的条数(全 A 股板块是数千只,配几个指标就到顶);② 时序的日期轴由 `--calendar-type` 决定,`ND` 的日期列约是 `TD` 的 1.5 倍(周末与节假日各占一列),同一个查询在 `ND` 下更容易超限——纯行情序列走 `TD`
|
|
223
|
+
⚠️ **两处最容易撞**:① `--security` 传板块 ID 时服务端会展开成全部成分股,实际证券数远大于写进命令的条数(全 A 股板块是数千只,配几个指标就到顶);② 时序的日期轴由 `--calendar-type` 决定,`ND` 的日期列约是 `TD` 的 1.5 倍(周末与节假日各占一列),同一个查询在 `ND` 下更容易超限——纯行情序列走 `TD` 就省下这部分(不传 `--calendar-type` 时服务端对行情类指标就是按交易日给,见上文)。
|
|
223
224
|
|
|
224
225
|
**缺数据 vs 代码写错**:
|
|
225
226
|
|
|
226
227
|
**缺数据一律保留行列并给一个占位单元格**,连单指标 × 单证券的 1×1 缺口也有行有列、不是空表。判据是**代码认不认识**,跟有没有数据无关:
|
|
227
228
|
|
|
228
|
-
> 🔴 **报告期类指标(`is_*`)取不到数时返 `null
|
|
229
|
+
> 🔴 **报告期类指标(`is_*`)取不到数时返 `null`,而在逐日的日期轴上(混查,或显式传 `ND` / `TD` / `WD`)时序大部分行都是 `null`——这一条会直接影响聚合结果**
|
|
229
230
|
>
|
|
230
231
|
> 占位值统一是 `null`(截面与时序都一样,不会是 `0`)。`null` 在宽表里一眼可见,**Excel `AVERAGE` / pandas `mean()` / SQL `AVG` 会跳过它**,但**行数不会变**。🔴 **`jq` 不跳过**:`[1,null,2,null,null] | add/length` 得 **0.6**(正确值 1.5),`add` 把 `null` 当加法单位元而 `length` 照数——正是「整列求均值差几十倍」那个错法本身;全为 `null` 时 `add/length` 直接报错。用 jq 聚合前先 `map(select(. != null))`。
|
|
231
232
|
>
|
|
232
|
-
>
|
|
233
|
+
> **时序这一档最容易踩**:报告期类指标与交易日类指标混查、或显式传 `--calendar-type ND` / `TD` / `WD` 时,日期轴是逐日的,**只有报告期末那几行是真值**,其余全是 `null`——`ND` 下查 3 月到 7 月只有 03-31 和 06-30 两行有数(`TD` 下落在非交易日的那期连行都没有,见上文日期轴一节)。用「总和 ÷ 行数」手工求均值会偏低几十倍;用会跳过 `null` 的聚合(如多数 DataFrame 的 `mean()`)才是对的。只要报告期末那几行:单独查报告期类指标,不传 `--calendar-type` 或传 `RD`(时序不收 `tradeDate` / `reportDate` 参数,传了会被拒)。
|
|
233
234
|
>
|
|
234
235
|
> **截面这一档**:日期不落在报告期末(如 `2025-05-15`)时整批返 `null`,`screener` 的任何比较都不成立、筛出空集——**这不是「没有符合条件的标的」,是日期用错了**。
|
|
235
236
|
>
|
|
@@ -292,7 +293,7 @@ gangtise indicator cross-section --indicator qte_close --security 600519.SH \
|
|
|
292
293
|
| `periodNum` | N 期统计(N 期均值/最值,如 `finc_roe_avg_avg` 平均ROE N期均值) | `--indicator-param "finc_roe_avg_avg:periodNum=4"`;`finc_roe_avg_avg` 属报告期类,还要补 `--indicator-param "finc_roe_avg_avg:reportDate=2025-12-31"`(只给 `--date` 报 `100003`) |
|
|
293
294
|
| `sDate` | 区间类的**起始日**(如 `qte_vol_intvl` 区间成交量、`qte_avg_vol` 区间日均成交量),格式 `yyyy-MM-dd` | `--indicator-param "qte_vol_intvl:sDate=2024-01-02"`。⚠️ **`sDate` 不能替代 `tradeDate`**——它是区间起点,`tradeDate`(=区间终点)仍是 required,`--date` 会照常下发。区间起始日的参数名就是 `sDate`,写成 `startDate` 会报 `100003 不支持参数 startDate`。⚠️ **不传 `sDate` 不报错**——它是可选参数,缺了就按默认区间算,所以要的是特定区间就必须显式传。另:`qte_amp_mo`(月振幅)等周期变体只吃 `tradeDate`,没有起始日参数 |
|
|
294
295
|
| `fiscalYear` | 年度/报告期类(如 `div_cash_yr` 年度现金分红)、预测类(如 `frcst_pe`,与 `tradeDate` 同时必填) | `--indicator-param "div_cash_yr:fiscalYear=2025"` |
|
|
295
|
-
| `industryType` + `industryLevel` | `scr_indu` 所属行业(两个都 required,缺任一报 `100001`) | `--indicator-param "scr_indu:industryType=1" --indicator-param "scr_indu:industryLevel=0"` |
|
|
296
|
+
| `industryType` + `industryLevel` | `scr_indu` 所属行业(两个都 required,缺任一报 `100001`;⚠️ 预计下线,改用下文的 `scr_indu_citic` / `scr_indu_sw` / `scr_indu_gics`) | `--indicator-param "scr_indu:industryType=1" --indicator-param "scr_indu:industryLevel=0"` |
|
|
296
297
|
|
|
297
298
|
> `paramValue` 一律按**字符串**约定传(`periodNum=4` 内部即 `"4"`,CLI 已处理)。
|
|
298
299
|
|
|
@@ -339,7 +340,7 @@ gangtise indicator cross-section --indicator mgn_bal --indicator mgn_fin_bal --i
|
|
|
339
340
|
# 茅台 2026-08-07:两融 176.7 亿 / 融资 175.4 亿 / 融券 1.3 亿
|
|
340
341
|
```
|
|
341
342
|
|
|
342
|
-
**行业分类 `scr_indu
|
|
343
|
+
**行业分类 `scr_indu`(所属行业)**——⚠️ **预计下线**:`indicator search` 已搜不到,取数暂时仍可用,新写的取数一律改用下文的**行业组合指标**。一个指标覆盖四套体系,A/港/美股均支持,返回**字符串**:
|
|
343
344
|
|
|
344
345
|
- `industryType`:`1`=申万 `2`=中信 `3`=恒生 `4`=GICS
|
|
345
346
|
- `industryLevel`:`0`=全路径(用 `-` 连接各级)`1`=一级 `2`=二级 `3`=三级 `4`=四级
|
|
@@ -354,11 +355,11 @@ gangtise indicator cross-section --indicator scr_indu \
|
|
|
354
355
|
|
|
355
356
|
体系与市场要配对:A 股查恒生 / GICS、美股查申万,都返 `null`(如茅台 `industryType=3/4` 均为 `null`)。
|
|
356
357
|
|
|
357
|
-
**行业组合指标(3 个)**——把体系写进指标编码,省掉 `industryType
|
|
358
|
+
**行业组合指标(3 个)**——把体系写进指标编码,省掉 `industryType`;`scr_indu` 下线后行业分类走这三个:
|
|
358
359
|
|
|
359
360
|
| 指标 | 体系 | 参数 |
|
|
360
361
|
| :-- | :-- | :-- |
|
|
361
|
-
| `scr_indu_citic` | 中信行业 | `
|
|
362
|
+
| `scr_indu_citic` | 中信行业 | `industryLevel`(**可选**,取值同上;不传为全路径)。`parameterList` 现列为空,但 `--date` 照常传、不会被拒 |
|
|
362
363
|
| `scr_indu_sw` | 申万行业 | 同上 |
|
|
363
364
|
| `scr_indu_gics` | GICS 行业 | 同上 |
|
|
364
365
|
|
|
@@ -367,7 +368,7 @@ gangtise indicator cross-section --indicator scr_indu_citic --indicator scr_indu
|
|
|
367
368
|
--security 600519.SH --date 2026-08-13
|
|
368
369
|
```
|
|
369
370
|
|
|
370
|
-
|
|
371
|
+
多套体系横比就在同一次请求里列多个组合指标(如上例)。⚠️ **恒生体系没有组合指标**:目前只能走 `scr_indu:industryType=3`,`scr_indu` 下线后 EDE 不再提供恒生行业。
|
|
371
372
|
|
|
372
373
|
**`finc_pb_mrq`(市净率 MRQ)是日频指标**:每个交易日都有数且逐日变动,别按报告期末取(那会拿到几个月前的陈值)。
|
|
373
374
|
|
|
@@ -396,6 +397,73 @@ gangtise indicator cross-section --indicator shr_hld --indicator shr_avg_qty \
|
|
|
396
397
|
--indicator-param "shr_avg_qty:shareType=2" --security 600519.SH --date 2026-10-15
|
|
397
398
|
```
|
|
398
399
|
|
|
400
|
+
### 量比、自由流通、流通股本与市值、涨跌停、TTM 利润类指标
|
|
401
|
+
|
|
402
|
+
参数与覆盖市场以 `indicator search` 为准:
|
|
403
|
+
|
|
404
|
+
| 类别 | 指标 | 日期参数 / 覆盖 |
|
|
405
|
+
| :-- | :-- | :-- |
|
|
406
|
+
| 量比 | `qte_vol_ratio` 量比(可选 `periodNum` / `changePeriod`);`qte_vol_ratio_max` / `qte_vol_ratio_min` 区间最大 / 最小量比 | `tradeDate`;区间两项另传 `sDate`,不传返回 `null`。A / 港 / 美 |
|
|
407
|
+
| 自由流通 | `qte_turn_free` 换手率(基于自由流通股,%)、`shr_free` 自由流通股本、`shr_free_rti` 自由流通股占总股本比例 | `tradeDate`。A / 港 |
|
|
408
|
+
| 流通股本与市值 | `shr_float` / `shr_float_2` 流通股本(不含 / 含限售)、`qte_float_mkt_cptl` / `qte_float_mkt_cptl_2` 流通市值(不含 / 含限售)、`shr_float_tot_rti` 流通股合计占总股本比例 | `tradeDate`。A / 港 / 美 |
|
|
409
|
+
| AH 溢价率 | `qte_prem_rate_ah`(%,用 A 股代码查) | `tradeDate`。A 股 |
|
|
410
|
+
| 涨跌停与涨跌幅极值 | `qte_limit_up_num` / `qte_limit_down_num` 涨停 / 跌停天数;`qte_inc_pct_max` / `qte_dec_pct_max` 区间日涨幅最大值 / 日跌幅最大值 | `tradeDate` + `sDate`(前三个 `sDate` 必填;`qte_dec_pct_max` 可选,不传时区间起点元数据未写明,显式传)。涨跌停天数只有 A 股,涨跌幅极值 A / 港 / 美 |
|
|
411
|
+
| 日均价与开盘价 | `qte_avg` 日均价、`qte_open` 开盘价(可选 `adjustType` / `currency`) | `tradeDate`。A / 港 / 美 |
|
|
412
|
+
| TTM 利润类 | `is_net_prft_ttm` 净利润、`is_tot_prft_ttm` 利润总额、`is_op_prft_ttm` 营业利润、`is_gr_prft_ttm` 毛利、`is_invst_incm_ttm` 投资净收益、`is_exchg_incm_ttm` 汇兑收益(均为 TTM) | **`tradeDate`(`--date`),不是 `reportDate`**。A / 港;银行等没有毛利口径的公司 `is_gr_prft_ttm` 为 `null` |
|
|
413
|
+
|
|
414
|
+
```bash
|
|
415
|
+
gangtise indicator cross-section --indicator qte_vol_ratio --indicator qte_turn_free --indicator qte_float_mkt_cptl \
|
|
416
|
+
--indicator qte_limit_up_num --indicator-param "qte_limit_up_num:sDate=2026-01-01" --indicator is_net_prft_ttm \
|
|
417
|
+
--security 600036.SH --security 600519.SH --date 2026-10-30
|
|
418
|
+
```
|
|
419
|
+
|
|
420
|
+
### 银行 / 保险 / 券商专项指标与估值分位数
|
|
421
|
+
|
|
422
|
+
**行业专项财务指标**——`scopeList` 只有 **A 股**,都是报告期类(`reportDate` 必填,`reportType` 可选、默认 `1` 合并报表);**非本行业的公司返回 `null`**。比率类直接是百分数(`0.94` 即 0.94%)。
|
|
423
|
+
|
|
424
|
+
| 族 | 覆盖 | 例 |
|
|
425
|
+
| :-- | :-- | :-- |
|
|
426
|
+
| 银行 `bk_*` | 资本充足率(含 2013 口径 `_2`)与资本净额、存贷款余额与成本 / 收益率、不良贷款率与拨备覆盖率、净息差 / 净利差、流动性比率、非利息收入、客户集中度 | `bk_npl_rti` 不良贷款比率、`bk_npl_prvs_covrg` 拨备覆盖率、`bk_net_int_margin` 净息差 |
|
|
427
|
+
| 保险 `insu_*` | 寿险 / 产险分列(`_li` / `_pci`)的实际资本与偿付能力充足率、产险综合成本率 / 费用率 / 赔付率、退保率、净 / 总投资收益率 | `insu_solv_adeq_rti_li`、`insu_compr_cost_rti_pci` |
|
|
428
|
+
| 券商 `secu_*` | 净资本、净资本 / 净资产、净资本 / 各项风险准备之和 | `secu_net_captl`(另有可选 `currency` / `scale`) |
|
|
429
|
+
|
|
430
|
+
```bash
|
|
431
|
+
gangtise indicator cross-section --indicator bk_npl_rti --indicator bk_npl_prvs_covrg --indicator bk_captl_adeq_rti_2 \
|
|
432
|
+
--indicator-param "bk_npl_rti:reportDate=2025-12-31" --indicator-param "bk_npl_prvs_covrg:reportDate=2025-12-31" \
|
|
433
|
+
--indicator-param "bk_captl_adeq_rti_2:reportDate=2025-12-31" --security 600036.SH --date 2026-11-06
|
|
434
|
+
# 招商银行 2025 年报:不良贷款比率 0.94 / 拨备覆盖率 391.79 / 资本充足率(2013) 18.24
|
|
435
|
+
```
|
|
436
|
+
|
|
437
|
+
**估值分位数(5 个 `finc_*_quantile`)**——`finc_pe_ttm_quantile` 市盈率(TTM)、`finc_pb_mrq_quantile` 市净率(MRQ)、`finc_ps_ttm_quantile` 市销率(TTM)、`finc_pcf_ttm_quantile` / `finc_pcf_ncf_ttm_quantile` 市现率(TTM,经营 / 全部现金净流量)。`scopeList`:`finc_pb_mrq_quantile` 列 A / 港股,其余四个列 A / 港 / 美股——按目标市场逐个核,个别证券取不到时为 `null`。返回当前估值在 `sDate` 至 `tradeDate` 区间里的历史分位(%,0–100,越低越便宜);负值估值不参与计算,取不到时为 `null`。
|
|
438
|
+
|
|
439
|
+
- `tradeDate`(即 `--date`)与 **`sDate`(统计区间起点)都必填**,缺 `sDate` 报 `100001`;`quantile` 可选
|
|
440
|
+
|
|
441
|
+
```bash
|
|
442
|
+
gangtise indicator cross-section --indicator finc_pe_ttm_quantile --indicator-param "finc_pe_ttm_quantile:sDate=2021-11-05" \
|
|
443
|
+
--security 600519.SH --security 00700.HK --date 2026-11-06
|
|
444
|
+
```
|
|
445
|
+
|
|
446
|
+
**其他新增的常用指标**(参数以 `parameterList` 为准):
|
|
447
|
+
|
|
448
|
+
- **N 年增长率 `*_yoy_n`**(营业收入、净利润、归母净利润、扣非归母净利润、营业利润、利润总额、总资产、股东权益、经营现金流、ROE 等)与 `is_tot_op_rev_cagr` 营业总收入复合增长率:报告期类,`reportDate` + `periodNum`(N 年)都必填
|
|
449
|
+
- **相对年初增长率 `*_yoy_ytd`**(总资产、每股净资产、归母权益):报告期类
|
|
450
|
+
- **单季度**:`is_gr_prft_qtr` 毛利、`is_oth_bus_incm_qtr` 其他业务净收益、`cf_op_cf_indir_qtr` 间接法经营现金流、`cf_exchg_eff_qtr` 汇率变动影响
|
|
451
|
+
- **TTM 与交易日类**:`finc_fcff_ttm` 企业自由现金流、`finc_roic_ttm` 投入资本回报率——用 `tradeDate`(`--date`)
|
|
452
|
+
- **`div_cash_paid_ratio_cum` 累计股利支付率**:`tradeDate` + `periodNum` 都必填
|
|
453
|
+
|
|
454
|
+
### 预计下线的指标
|
|
455
|
+
|
|
456
|
+
共 23 个,`indicator search` 已搜不到,取数暂时仍可用,**存量取数尽快迁走**:
|
|
457
|
+
|
|
458
|
+
| 预计下线 | 改用 |
|
|
459
|
+
| :-- | :-- |
|
|
460
|
+
| `scr_indu` 所属行业 | `scr_indu_citic` / `scr_indu_sw` / `scr_indu_gics`(恒生行业暂无替代) |
|
|
461
|
+
| `cdr_conv_ratio` CDR 转换比例 | — |
|
|
462
|
+
| 半年期行情 `qte_*_halfyr`:振幅、涨跌幅、收盘价、最高 / 最低价、前收盘价、换手率与最高 / 最低换手率、成交额、成交量 | 带 `sDate` 的区间指标,`sDate` 取半年前:`qte_amp_intvl` / `qte_chg_pct_intvl` / `qte_high_intvl` / `qte_low_intvl` / `qte_turn_intvl` / `qte_amt_intvl` / `qte_vol_intvl`;收盘价、前收盘价直接用 `quote day-kline` 取对应日 |
|
|
463
|
+
| 周 / 月 / 季 / 半年 / 年均成交额与均成交量 `qte_avg_amt_{wk,mo,qtr,halfyr,yr}` / `qte_avg_vol_{…}` | `qte_avg_amt` 区间日均成交额 / `qte_avg_vol` 区间日均成交量,`sDate` 取对应周期的起点 |
|
|
464
|
+
|
|
465
|
+
区间指标的 `sDate` 是可选参数,**不传不报错、按默认区间算**——要的是特定区间就必须显式传。
|
|
466
|
+
|
|
399
467
|
### 基金指标
|
|
400
468
|
|
|
401
469
|
`--security` 传基金代码(场外 `.OF`,场内 `.SH` / `.SZ`,如 `005827.OF` / `510300.SH`)。
|
|
@@ -408,6 +476,7 @@ gangtise indicator cross-section --indicator shr_hld --indicator shr_avg_qty \
|
|
|
408
476
|
|
|
409
477
|
- 🔴 **区间指标的其余参数一律显式传**,漏传报 `100001`(`parameterList` 列了默认值也一样):`changePeriod` 变化周期、`yieldType`(`0` 普通 / `1` 对数收益率)、`riskFreeRate`(`0` = 常数 0)、`benchmarkCode` 基准代码(Alpha / Beta / 相关系数 / Jensen / Treynor / 非系统风险要)、`industryLevel`(同类排名按哪一级分类)。每个指标要哪几个以 `parameterList` 为准
|
|
410
478
|
- ⚠️ **`changePeriod` 列出的默认值 `6`(区间)不是每个指标都收**:Sharpe 等的 `description` 写明只支持日 / 周 / 月 / 年(`0` / `1` / `2` / `5`),传 `6` 报 `100003`
|
|
479
|
+
- `fund_ret_rank` / `fund_ret_rank_pct` 的「同类」是 `industryLevel` 指定那一级的 Gangtise 分类:`1` 按 `fund_cls1_typ`、`2` 按 `fund_cls2_typ`,同分类的基金分母相同(如两只偏股混合型基金在 `industryLevel=2` 下同为 `/3098`)
|
|
411
480
|
- `finc_intvl_max_dd` 返回负的百分数(`-19.23` 即 -19.23%),无回撤为 `0`;`fund_estb_dt` 返回 `yyyyMMdd` 整数(如 `20180905`),不是日期字符串
|
|
412
481
|
- 这批区间指标的 `scopeList` 标着「不支持指标时间序列接口」,用 `cross-section` 取
|
|
413
482
|
- 单只基金的净值序列、持仓、规模走 `fund` 命令组;EDE 适合多只基金横向比
|
|
@@ -472,6 +541,6 @@ gangtise indicator cross-section --indicator finc_sharpe_ann \
|
|
|
472
541
|
|
|
473
542
|
- **发现流程**:`indicator search --format json` → 核对 `indicatorName` + `description`、`scopeList`(含 `usageRestriction`)、`parameterList`(**参数名以此为准**)→ 三项都通过才用 `cross-section` / `time-series` / `screener`
|
|
474
543
|
- **积分**:`search` 免费;`cross-section` / `time-series` / `screener` 按请求单元格数量计费,标价为每 100 单元格 A 股 0.05 / 港股 0.1 / 美股 0.2 积分,每次查询不足 100 单元格按 100 计
|
|
475
|
-
- **空结果排查顺序**:代码、参数名写错与缺必填参数会直接报错并点名(`100003` / `100001
|
|
544
|
+
- **空结果排查顺序**:代码、参数名写错与缺必填参数会直接报错并点名(`100003` / `100001`),不会以空结果出现。时序整批空结果(`total: 0`、没有任何行)先看区间里有没有该日期轴上的日期:报告期类指标不传 `--calendar-type`(或传 `RD`)时区间要含 `03-31` / `06-30` / `09-30` / `12-31`,交易日类指标区间要含交易日(只查长假会空)——放宽区间,或传 `--calendar-type ND` 拿逐日行。拿到整批 `null` 或 `screener` 空集时按序排查:① 日期语义对不对(`tradeDate` vs `reportDate`——报告期类指标日期用错会整批返 `null`,看着像「没数据」)② 该指标覆不覆盖这批证券(`scopeList`,单查一行确认)③ 真的没有数据
|
|
476
545
|
- **数据权限**:正式账号行情 / 财务 / 指标类可回溯的年限按服务等级而定,试用账号更短。这个时间窗口按**账号**配、不按接口配——三个 EDE 接口同界,区间跨过下界也整批返 `110003`(`quote day-kline` 在同一条界上,但跨界时从下界起返回、不报错),**换接口绕不过去**;整段区间都早于下界时缩短窗口无用,要更长历史联系客户经理开通
|
|
477
546
|
- 所有格式(table/json/jsonl/csv/markdown)均可用;导出宽表给 Excel 直接用 `--format csv --output xxx.csv`
|