WorkBuddy PandaData 数据源覆盖
本技能在 WorkBuddy 专家包中运行时,所有实时和历史金融数据必须来自已连接的
pandadata Connector。若下文、参考资料或脚本提到 Python panda_data SDK、
AkShare、Tushare、网页抓取、直连 HTTP 或本地凭证,以本节为准:不得使用这些
方式获取正式数据。
- 数据型任务必须先完成
auth_status 和至少一次真实的 call_pandadata 业务调用;在收到
Connector 返回前,禁止输出分析、排名、数字结论或“无数据”。本 Skill 的流程不得绕过
主 Agent 的最低接口调用清单。
- 先按本 Skill 的
references/pandadata-interface-contracts.md 选择已登记方法和参数。只要任务能映射到已登记接口,
就直接通过 call_pandadata 传入该业务方法和 params;常规调用前不得执行接口检索。
- 仅当已登记方法被 Connector 明确报告为参数契约不兼容、字段契约变化或调用失败时,
才对该方法调用一次
get_method_doc,修正参数后最多重试一次。
- 仅当本地接口表没有匹配项,或 Connector 明确报告方法不存在/不受支持时,才调用
search_methods 动态发现接口;不得靠猜测连续试用名称相近的 get_* 方法。
- 只有
call_pandadata 实际返回 0 行时才允许写“无数据”。必须先完成一次复查调用:校验
最新交易日与代码格式,放宽日期窗口,移除非必填过滤条件,或使用登记的备用参数;仍为
0 行才可如实报告,并保留两次调用回执。0 行不得触发 search_methods。
- 不向
call_pandadata 添加未登记参数或顶层行数限制;记录实际方法、参数、数据日期、
频率、复权口径、行数、空值和错误状态。
- 包内脚本只可处理 Connector 已返回的数据或执行纯本地计算与校验,不得自行联网取数。
最终答案必须包含“数据调用回执”表:接口、实际参数、状态、行数、数据日期范围和关键字段。
缺少回执表示任务未完成,必须继续调用工具而不是结束回答。
权限不足、配额限制、空结果、延迟发布和字段缺失都必须明确披露,不得切换到其他数据源
或用模型推断补数。
{
"version": 1,
"task": {
"placeholder": "补充扫描窗口、行业范围、折溢价阈值或重点席位;留空则按默认近期开窗扫描"
},
"fields": [
{
"key": "symbol",
"label": "股票代码(可选)",
"type": "text",
"placeholder": "如:600519.SH;留空扫描全市场"
},
{
"key": "date",
"label": "截至日期",
"type": "date",
"help": "留空由前端使用今天,并自动按交易日处理"
}
],
"prompt_template": "{{#task}}任务与材料:\n{{task}}\n\n{{/task}}{{#attachments}}用户上传的材料(已放入工作区):\n{{attachments}}\n\n{{/attachments}}请运行 A 股大宗交易雷达{{#symbol}},聚焦 {{symbol}}{{/symbol}}{{#date}},截至 {{date}}{{/date}},计算相对同日收盘价的折溢价率,识别机构专用买卖方向、重复折价接盘与买卖营业部相同的疑似对倒,并按成交额和折溢价排名,输出中文报告。"
}
Block Trade Radar
Use this skill to scan and read A-share block-trade (大宗交易) activity: for the whole market over a window or a single name, join every block trade to the same-day close to compute a discount/premium rate (折溢价率), read whether the buyer or seller is 机构专用 (institutional seat), flag repeated discounted takeovers and same-branch (buyer==seller) prints, and rank names by block-trade amount and by premium/discount. Prefer Pandadata as the data source, keep every figure traceable to get_block_trade (plus the get_stock_daily close used for the discount math) and a trade date, and never invent prices, amounts, discounts, or directions.
Scope And Positioning (read first to avoid overlap)
This skill is the block-trade discount/premium view. It is deliberately distinct from its siblings:
- Unlike
market-daily-review (daily whole-market review that merely lists the day's block trades as one line item): this skill is a block-trade-centric analysis — same-day discount/premium math, institutional-direction read, repeat-discount and wash-print flags, and a cross-sectional premium/amount ranking. If the user wants a full end-of-day market review, hand off to market-daily-review.
- Unlike
smart-money-profiler (龙虎榜 / 北向 / 两融 "smart money" across 营业部 seat behaviour on the daily公开信息 board): block trades are a separate off-exchange channel with their own discount signal; this skill reads get_block_trade in depth rather than the 龙虎榜 board. Names surfaced here can be cross-checked there.
- Unlike
event-risk-alert (per-name watchlist risk monitoring — unlocks, pledges, reductions): a block trade may implement a shareholder reduction but is not itself a filing-level risk event. If the user wants to watch their own holdings for reduction/unlock risk, hand off to event-risk-alert.
- Unlike
a-share-stock-dossier (single-name deep due diligence): this skill is a block-trade scan, not a company dossier.
Block Trade Model (read before analysis)
get_block_trade returns one row per block-trade print (成交笔), keyed by symbol + date + sequence_id. A single name on a single day may have several prints; a large reduction is often split into many.
- Discount/premium (折溢价率) — not a returned field; you compute it.
折溢价率 = price / 同日收盘价 - 1, where the close comes from get_stock_daily for the same symbol and date. Negative = 折价 (below market, the common case — a buyer demands a discount to absorb a block); positive = 溢价 (above market, rarer, sometimes signals demand). Always state the close you used.
- Direction / institutional flag —
buyer and seller are 营业部/席位 names. 机构专用 on the buyer side = an institution is absorbing the block (接盘); on the seller side = an institution is distributing (出货). Read direction from the seat text verbatim; do not infer identity beyond what the string says.
- Same-branch print (对倒式) — when
buyer == seller (same 营业部), the print may be an internal transfer / 过券 rather than a genuine change of beneficial ownership. Flag it; do not count it as directional institutional flow.
- Scale —
amount (成交额, 元) and volume (成交量, 股) size each print. price is the block price. Aggregate per name per day for a name-level view; keep print-level detail for the timeline.
- Dates —
date is the trade date. A scan over a window is a snapshot of prints in that window.
Workflow
- Resolve the target: whole-market scan over a window, or a single name's block-trade timeline. Confirm the date window (default a recent trailing window, e.g. last ~30 trading days, for a market scan).
- Read
references/block-trade-playbook.md before the first run in a session. Use it for the routing table, the discount/premium formula and edge cases, direction/wash-print rules, aggregation rules, the report skeleton, empty-data handling, and the QA checklist.
- Use the registered
get_block_trade and get_stock_daily contracts in references/pandadata-interface-contracts.md, then call them directly through call_pandadata. Use search_methods only when no registered method covers the task, and use get_method_doc only after an explicit contract error; do not invent parameters, fields, symbols, or credentials.
- Collect evidence:
- Block trades:
get_block_trade for the window (empty symbol for whole market; a specific symbol for one name's history).
- Same-day close for the discount math:
get_stock_daily for the traded symbols over the window.
- Identity & industry:
get_stock_detail and get_stock_industry to name prints and roll them up by sector.
- Calendar:
get_last_trade_date / get_trade_cal to bound the window.
- Compute per print: 折溢价率 against the same-day close; tag buyer/seller institutional direction; flag same-branch prints. Aggregate per name per day (总成交额, 笔数, 加权折溢价率), then rank: largest by amount, deepest 折价, notable 溢价, repeat-discount names, and net institutional 接盘/出货. Keep raw print counts long enough to cite source method, window, and missing-close status.
- Generate the Markdown report following the skeleton in the playbook. Save to
reports/block-trade/<scope>-<date>.md (e.g. reports/block-trade/market-20260706.md) unless the user gives another path.
- Run
scripts/validate_report.py <report-path> after writing. Fix missing sections, missing source notes, a missing discount-basis (close) note, missing wash-print/institutional caveats, missing window/date labels, or a missing disclaimer before presenting the result.
Interface Map
Routing aid only; the exact call contract must still come from pandadata.
| Report section |
Lead methods |
What it answers |
| 大宗成交总览 |
get_block_trade |
Prints in the window; distinct names & total amount. |
| 折溢价分布 |
get_block_trade (price) + get_stock_daily (close) |
How prints split across 折价 / 平价 / 溢价 and how deep. |
| 机构专用方向 |
get_block_trade (buyer, seller) |
Net institutional 接盘 (buy) vs 出货 (sell). |
| 成交额 / 折价榜 |
get_block_trade (amount) + computed 折溢价率 |
Largest by amount, deepest discount, repeat-discount names. |
| 对倒式提示 |
get_block_trade (buyer==seller) |
Same-branch prints to exclude from directional read. |
| 行业分布 |
get_stock_industry + the above |
Which industries see the most block-trade flow. |
Analysis Modes
- Whole-market scan: all prints in the window → 折溢价 distribution, net institutional direction, largest-by-amount and deepest-discount leaders, repeat-discount names, and industry distribution. Separate genuine directional prints from same-branch (
buyer==seller) prints.
- Single-name timeline: one ticker's block-trade history — each print's date, discount/premium vs that day's close, buyer/seller direction, and whether prints cluster (e.g. a reduction being worked off in pieces).
- Discount read: a persistent, deepening 折价 with
机构专用 on the seller side may indicate distribution pressure; a shrinking discount or 溢价 with institutional buyers may indicate absorption. State these as relative observations, not signals to act.
- Wash-print screen: surface
buyer==seller prints separately and exclude them from the institutional net; they are internal transfers, not a change in beneficial ownership.
Report Rules
- Write in Chinese unless the user requests another language.
- Always state the discount basis. 折溢价率 is derived; name the close (
get_stock_daily, same symbol+date) it was computed against. Never present a 折溢价率 without its price basis.
- Never over-read a single print. One large 折价 block is a transaction, not a verdict; aggregate and look for repetition before calling anything a pattern.
- Read direction from
buyer/seller text verbatim; 机构专用 is a seat label, not a named institution — do not invent who it is. Flag buyer==seller prints as possible 对倒/过券.
- Mark the scan window and as-of date. Prints accumulate; a scan is a snapshot — state the snapshot date and the trade-date range.
- Separate facts (raw price, amount, volume, seats), derived metrics (折溢价率, per-name aggregates, ranks, net institutional flow), and judgment. Label all derived calculations.
- Treat empty API results as evidence. State "无数据" with the method name and queried window instead of silently omitting a section. If the same-day close is missing for a print, mark 折溢价率 as 待补 rather than fabricating a basis.
- Keep the tone factual and structural. Use "折价接盘", "净接盘/净出货", "可能提示承接/派发意愿" rather than directional calls; never give trading instructions or personalized investment advice.
Automation (optional scheduling)
When the user asks for an automated block-trade radar, create a task that runs on trading days after market close (e.g. after 18:00 Asia/Shanghai) to catch that day's block-trade prints. Make it idempotent: if reports/block-trade/<scope>-<date>.md exists, regenerate and overwrite. Skip non-trading days.
Resource Guide
references/block-trade-playbook.md: routing table, discount/premium formula and edge cases, direction/wash-print rules, aggregation rules, report skeleton, empty-data handling, and the QA checklist.
scripts/validate_report.py: checks the report for required sections, source notes, the discount-basis (close) note, institutional/wash-print caveats, window/date labels, and the disclaimer.
Quality Bar
- Every material claim traces to
get_block_trade, a trade date, the scan window, and (for 折溢价率) the get_stock_daily close used.
- 折溢价率 is always presented with its price basis; a missing close is marked 待补, never fabricated.
- Institutional direction is read from
buyer/seller text; 机构专用 is never named as a specific institution.
buyer==seller prints are flagged and excluded from the directional net.
- End every report with this disclaimer:
本报告基于公开数据与规则化分析生成,仅供研究参考,不构成任何投资建议。
1---2name: block-trade-radar3description: Scan and read A-share block-trade (大宗交易) activity with the Pandadata get_block_trade interface, joining each trade to the same-day close from get_stock_daily to compute discount/premium (折溢价率), reading institutional (机构专用) buy/sell direction, flagging repeated discounted takeovers and same-branch wash-like prints, and ranking names by block-trade amount and premium/discount — for the whole market over a window or a single name. Use when the user asks for 大宗交易, 大宗折价, 大宗溢价, 折溢价率, 机构专用接盘, 大宗交易扫描, 大宗成交榜, 折价接盘, or an A-share block-trade radar report.4---5
6## WorkBuddy PandaData 数据源覆盖
7
8本技能在 WorkBuddy 专家包中运行时,所有实时和历史金融数据必须来自已连接的
9`pandadata` Connector。若下文、参考资料或脚本提到 Python `panda_data` SDK、
10AkShare、Tushare、网页抓取、直连 HTTP 或本地凭证,以本节为准:不得使用这些
11方式获取正式数据。
12
131. 数据型任务必须先完成 `auth_status` 和至少一次真实的 `call_pandadata` 业务调用;在收到
14 Connector 返回前,禁止输出分析、排名、数字结论或“无数据”。本 Skill 的流程不得绕过
15 主 Agent 的最低接口调用清单。
162. 先按本 Skill 的 `references/pandadata-interface-contracts.md` 选择已登记方法和参数。只要任务能映射到已登记接口,
17 就直接通过 `call_pandadata` 传入该业务方法和 `params`;常规调用前不得执行接口检索。
183. 仅当已登记方法被 Connector 明确报告为参数契约不兼容、字段契约变化或调用失败时,
19 才对该方法调用一次 `get_method_doc`,修正参数后最多重试一次。
204. 仅当本地接口表没有匹配项,或 Connector 明确报告方法不存在/不受支持时,才调用
21 `search_methods` 动态发现接口;不得靠猜测连续试用名称相近的 `get_*` 方法。
225. 只有 `call_pandadata` 实际返回 0 行时才允许写“无数据”。必须先完成一次复查调用:校验
23 最新交易日与代码格式,放宽日期窗口,移除非必填过滤条件,或使用登记的备用参数;仍为
24 0 行才可如实报告,并保留两次调用回执。0 行不得触发 `search_methods`。
256. 不向 `call_pandadata` 添加未登记参数或顶层行数限制;记录实际方法、参数、数据日期、
26 频率、复权口径、行数、空值和错误状态。
277. 包内脚本只可处理 Connector 已返回的数据或执行纯本地计算与校验,不得自行联网取数。
28
29最终答案必须包含“数据调用回执”表:接口、实际参数、状态、行数、数据日期范围和关键字段。
30缺少回执表示任务未完成,必须继续调用工具而不是结束回答。
31
32权限不足、配额限制、空结果、延迟发布和字段缺失都必须明确披露,不得切换到其他数据源
33或用模型推断补数。
34
35
36```json qsh-form
37{
38 "version": 1,
39 "task": {
40 "placeholder": "补充扫描窗口、行业范围、折溢价阈值或重点席位;留空则按默认近期开窗扫描"
41 },
42 "fields": [
43 {
44 "key": "symbol",
45 "label": "股票代码(可选)",
46 "type": "text",
47 "placeholder": "如:600519.SH;留空扫描全市场"
48 },
49 {
50 "key": "date",
51 "label": "截至日期",
52 "type": "date",
53 "help": "留空由前端使用今天,并自动按交易日处理"
54 }
55 ],
56 "prompt_template": "{{#task}}任务与材料:\n{{task}}\n\n{{/task}}{{#attachments}}用户上传的材料(已放入工作区):\n{{attachments}}\n\n{{/attachments}}请运行 A 股大宗交易雷达{{#symbol}},聚焦 {{symbol}}{{/symbol}}{{#date}},截至 {{date}}{{/date}},计算相对同日收盘价的折溢价率,识别机构专用买卖方向、重复折价接盘与买卖营业部相同的疑似对倒,并按成交额和折溢价排名,输出中文报告。"
57}
58```
59
60# Block Trade Radar
61
62Use this skill to **scan and read A-share block-trade (大宗交易) activity**: for the whole market over a window or a single name, join every block trade to the **same-day close** to compute a **discount/premium rate (折溢价率)**, read whether the buyer or seller is **机构专用 (institutional seat)**, flag **repeated discounted takeovers** and **same-branch (buyer==seller) prints**, and rank names by block-trade amount and by premium/discount. Prefer Pandadata as the data source, keep every figure traceable to `get_block_trade` (plus the `get_stock_daily` close used for the discount math) and a trade date, and never invent prices, amounts, discounts, or directions.
63
64## Scope And Positioning (read first to avoid overlap)
65
66This skill is the **block-trade discount/premium** view. It is deliberately distinct from its siblings:
67
68- Unlike `market-daily-review` (daily whole-market review that merely *lists* the day's block trades as one line item): this skill is a **block-trade-centric** analysis — same-day discount/premium math, institutional-direction read, repeat-discount and wash-print flags, and a cross-sectional premium/amount ranking. If the user wants a full end-of-day market review, hand off to `market-daily-review`.
69- Unlike `smart-money-profiler` (龙虎榜 / 北向 / 两融 "smart money" across **营业部 seat** behaviour on the daily公开信息 board): block trades are a **separate off-exchange channel** with their own discount signal; this skill reads `get_block_trade` in depth rather than the 龙虎榜 board. Names surfaced here can be cross-checked there.
70- Unlike `event-risk-alert` (per-name watchlist risk monitoring — unlocks, pledges, reductions): a block trade may *implement* a shareholder reduction but is not itself a filing-level risk event. If the user wants to watch their own holdings for reduction/unlock risk, hand off to `event-risk-alert`.
71- Unlike `a-share-stock-dossier` (single-name deep due diligence): this skill is a block-trade scan, not a company dossier.
72
73## Block Trade Model (read before analysis)
74
75`get_block_trade` returns **one row per block-trade print** (成交笔), keyed by `symbol` + `date` + `sequence_id`. A single name on a single day may have several prints; a large reduction is often split into many.
76
77- **Discount/premium (折溢价率)** — *not* a returned field; you compute it. `折溢价率 = price / 同日收盘价 - 1`, where the close comes from `get_stock_daily` for the same `symbol` and `date`. Negative = 折价 (below market, the common case — a buyer demands a discount to absorb a block); positive = 溢价 (above market, rarer, sometimes signals demand). Always state the close you used.
78- **Direction / institutional flag** — `buyer` and `seller` are 营业部/席位 names. `机构专用` on the **buyer** side = an institution is *absorbing* the block (接盘); on the **seller** side = an institution is *distributing* (出货). Read direction from the seat text verbatim; do not infer identity beyond what the string says.
79- **Same-branch print (对倒式)** — when `buyer == seller` (same 营业部), the print may be an internal transfer / 过券 rather than a genuine change of beneficial ownership. **Flag it**; do not count it as directional institutional flow.
80- **Scale** — `amount` (成交额, 元) and `volume` (成交量, 股) size each print. `price` is the block price. Aggregate per name per day for a name-level view; keep print-level detail for the timeline.
81- **Dates** — `date` is the trade date. A scan over a window is a snapshot of prints in that window.
82
83## Workflow
84
851. Resolve the target: whole-market scan over a window, or a single name's block-trade timeline. Confirm the date window (default a recent trailing window, e.g. last ~30 trading days, for a market scan).
862. Read `references/block-trade-playbook.md` before the first run in a session. Use it for the routing table, the discount/premium formula and edge cases, direction/wash-print rules, aggregation rules, the report skeleton, empty-data handling, and the QA checklist.
873. Use the registered `get_block_trade` and `get_stock_daily` contracts in `references/pandadata-interface-contracts.md`, then call them directly through `call_pandadata`. Use `search_methods` only when no registered method covers the task, and use `get_method_doc` only after an explicit contract error; do not invent parameters, fields, symbols, or credentials.
884. Collect evidence:
89 - Block trades: `get_block_trade` for the window (empty `symbol` for whole market; a specific `symbol` for one name's history).
90 - Same-day close for the discount math: `get_stock_daily` for the traded `symbol`s over the window.
91 - Identity & industry: `get_stock_detail` and `get_stock_industry` to name prints and roll them up by sector.
92 - Calendar: `get_last_trade_date` / `get_trade_cal` to bound the window.
935. Compute per print: 折溢价率 against the same-day close; tag buyer/seller institutional direction; flag same-branch prints. Aggregate per name per day (总成交额, 笔数, 加权折溢价率), then rank: largest by amount, deepest 折价, notable 溢价, repeat-discount names, and net institutional 接盘/出货. Keep raw print counts long enough to cite source method, window, and missing-close status.
946. Generate the Markdown report following the skeleton in the playbook. Save to `reports/block-trade/<scope>-<date>.md` (e.g. `reports/block-trade/market-20260706.md`) unless the user gives another path.
957. Run `scripts/validate_report.py <report-path>` after writing. Fix missing sections, missing source notes, a missing discount-basis (close) note, missing wash-print/institutional caveats, missing window/date labels, or a missing disclaimer before presenting the result.
96
97## Interface Map
98
99Routing aid only; the exact call contract must still come from `pandadata`.
100
101| Report section | Lead methods | What it answers |
102|---|---|---|
103| 大宗成交总览 | `get_block_trade` | Prints in the window; distinct names & total amount. |
104| 折溢价分布 | `get_block_trade` (`price`) + `get_stock_daily` (close) | How prints split across 折价 / 平价 / 溢价 and how deep. |
105| 机构专用方向 | `get_block_trade` (`buyer`, `seller`) | Net institutional 接盘 (buy) vs 出货 (sell). |
106| 成交额 / 折价榜 | `get_block_trade` (`amount`) + computed 折溢价率 | Largest by amount, deepest discount, repeat-discount names. |
107| 对倒式提示 | `get_block_trade` (`buyer==seller`) | Same-branch prints to exclude from directional read. |
108| 行业分布 | `get_stock_industry` + the above | Which industries see the most block-trade flow. |
109
110## Analysis Modes
111
112- **Whole-market scan**: all prints in the window → 折溢价 distribution, net institutional direction, largest-by-amount and deepest-discount leaders, repeat-discount names, and industry distribution. Separate genuine directional prints from same-branch (`buyer==seller`) prints.
113- **Single-name timeline**: one ticker's block-trade history — each print's date, discount/premium vs that day's close, buyer/seller direction, and whether prints cluster (e.g. a reduction being worked off in pieces).
114- **Discount read**: a persistent, deepening 折价 with `机构专用` on the seller side may indicate distribution pressure; a shrinking discount or 溢价 with institutional buyers may indicate absorption. State these as **relative observations**, not signals to act.
115- **Wash-print screen**: surface `buyer==seller` prints separately and exclude them from the institutional net; they are internal transfers, not a change in beneficial ownership.
116
117## Report Rules
118
119- Write in Chinese unless the user requests another language.
120- **Always state the discount basis.** 折溢价率 is derived; name the close (`get_stock_daily`, same `symbol`+`date`) it was computed against. Never present a 折溢价率 without its price basis.
121- **Never over-read a single print.** One large 折价 block is a transaction, not a verdict; aggregate and look for repetition before calling anything a pattern.
122- Read direction from `buyer`/`seller` text verbatim; `机构专用` is a seat label, not a named institution — do not invent who it is. Flag `buyer==seller` prints as possible 对倒/过券.
123- Mark the scan window and as-of date. Prints accumulate; a scan is a snapshot — state the snapshot date and the trade-date range.
124- Separate facts (raw price, amount, volume, seats), derived metrics (折溢价率, per-name aggregates, ranks, net institutional flow), and judgment. Label all derived calculations.
125- Treat empty API results as evidence. State "无数据" with the method name and queried window instead of silently omitting a section. If the same-day close is missing for a print, mark 折溢价率 as 待补 rather than fabricating a basis.
126- Keep the tone factual and structural. Use "折价接盘", "净接盘/净出货", "可能提示承接/派发意愿" rather than directional calls; never give trading instructions or personalized investment advice.
127
128## Automation (optional scheduling)
129
130When the user asks for an automated block-trade radar, create a task that runs on trading days after market close (e.g. after `18:00 Asia/Shanghai`) to catch that day's block-trade prints. Make it idempotent: if `reports/block-trade/<scope>-<date>.md` exists, regenerate and overwrite. Skip non-trading days.
131
132## Resource Guide
133
134- `references/block-trade-playbook.md`: routing table, discount/premium formula and edge cases, direction/wash-print rules, aggregation rules, report skeleton, empty-data handling, and the QA checklist.
135- `scripts/validate_report.py`: checks the report for required sections, source notes, the discount-basis (close) note, institutional/wash-print caveats, window/date labels, and the disclaimer.
136
137## Quality Bar
138
139- Every material claim traces to `get_block_trade`, a trade date, the scan window, and (for 折溢价率) the `get_stock_daily` close used.
140- 折溢价率 is always presented with its price basis; a missing close is marked 待补, never fabricated.
141- Institutional direction is read from `buyer`/`seller` text; `机构专用` is never named as a specific institution.
142- `buyer==seller` prints are flagged and excluded from the directional net.
143- End every report with this disclaimer: `本报告基于公开数据与规则化分析生成,仅供研究参考,不构成任何投资建议。`