A 股大宗交易怎么看:折价率与机构席位
大宗交易是大额股份的场外协议转让——它不体现在盘中分时图上,但往往先于股价变化透露资金意图。本文讲清三件事:字段怎么读、折价率说明什么、怎么用 Python 批量扫(附 2026-09-29 真实数据)。
一、大宗交易是什么(30 秒)
大宗交易 = 买卖双方在场外协商一致、通过交易所大宗交易系统成交的大额转让。它不走盘中连续竞价:分时图上看不到这笔成交,但成交信息次日(T+1)会公开披露。
含义:能看到"谁以什么价格、从谁手里、拿走了多少筹码" —— 这是普通盘口数据给不了的信息。
- 想减持的大股东 → 走大宗(不砸盘、快速出清)
- 想建仓的机构 → 接大宗(比盘中慢慢买更快拿到量)
- 折价成交 = 卖方让利换速度(常见);溢价成交 = 买方急(少见,信号更强)
二、一行请求拿到数据
`/v1/block-trade` 是付费端点(需 Key)。参数只有两个:`code`(股票代码,可留空)与 `date`(日期,留空=最近)。
import requests
BASE = "https://api.ashareapi.com/v1"
H = {"Authorization": "Bearer ct-你的Key"}
r = requests.get(f"{BASE}/block-trade",
params={"code": "sh600519"}, # 贵州茅台
headers=H, timeout=30)
body = r.json()
# ⚠️ 关键:data 是「数组」时直接用;不要写 body["structured"](会 KeyError)
rows = body.get("data") if isinstance(body.get("data"), list) else body.get("structured")
if not body.get("ok"):
print("当天没有大宗交易(不是接口坏了)") # 见第四节
else:
for x in rows:
print(x["TurnoverPrice"], x["CloseDiscountRate"],
x["BuySalesDepartment"], x["SellSalesDepartment"])- `data` 可能是数组也可能是 Markdown —— 程序化处理用 `isinstance` 判断(或用 `body.get("structured")` 兜底)
- `ok:false` + 空数组 = 当天没有大宗交易(正常运行结果,不是故障)—— 详见第四节
三、字段怎么读(7 个字段)
| 字段 | 含义 | 单位 | 怎么用 |
|---|---|---|---|
| TurnoverPrice | 成交价 | 元 | 与当日收盘价比较,看折溢价 |
| TurnoverValue | 成交金额 | 元 | > 1 亿 = 大额;看量级判断影响 |
| CloseDiscountRate | 折溢价率 | % | 正=溢价 / 负=折价 / 0=平价(见下节) |
| BuySalesDepartment | 买方营业部 | - | 机构专用 / 具体营业部名 |
| SellSalesDepartment | 卖方营业部 | - | 谁在卖 |
| TradingType | 交易类型 | - | 协议交易 / 盘后定价等 |
| SerialNumber | 序号 | - | 同一交易日的第几笔 |
总量口径提醒:`TurnoverValue` 是单笔金额。看"当天总成交"要把同日的多笔相加 —— 上游对"发生多少次大宗交易"与"总笔数"是两个口径,统计时要说清楚用的是哪个。
四、折价率是最有价值的字段
`CloseDiscountRate` 相对当日收盘价计算:
| 折溢价率 | 含义 | 通常解读 |
|---|---|---|
| 正值(溢价) | 买方出价高于市价 | 买方急(少见)—— 信号相对强 |
| 0(平价) | 按市价成交 | 常见,中性 |
| 负值(折价) | 卖方让利求快 | 常见 —— 折价越深,卖方越急 |
关键理解:折价成交是常态,因为大额减持本就难在市价卖掉 —— 不能把"折价"直接当利空。更有信息量的是:折价幅度是否异常大(如 -8%)+ 买方是谁(机构专用 vs 普通营业部)。
五、真实数据(2026-09-29 实跑)
| 股票 | 成交价 | 成交额 | 折溢价 | 买方 |
|---|---|---|---|---|
| sh600519 贵州茅台 | 1299.52 | 9096.6 万 | 0.00 | 广发证券北京鲁谷路 |
| sh600276 恒瑞医药 | 49.75 | 2.52 亿 | -8.01 | 华泰证券上海分公司 |
| sh601899 紫金矿业 | 29.42 | 1206.2 万 | 0.00 | 兴业证券上海世博馆路 |
| sz300750 宁德时代 | 286.80 | 315.5 万 | 0.00 | 机构专用 |
| sh601318 中国平安 | 56.63 | 311.5 万 | 0.00 | 中信证券总部(非营业场所) |
读法示例:恒瑞医药那笔 2.52 亿、折价 8.01% —— 卖方让利幅度明显(想快速出清),买方是券商的分公司席位。这类"大额 + 深折价"的组合值得单独关注(不代表方向结论,只是说明卖方急切)。
六、怎么批量扫(找出大额与深折价)
CODES = ["sh600519", "sh600276", "sh601899", "sz300750",
"sh601318", "sh600036", "sz000858", "sh600030"]
hits = []
for code in CODES:
b = requests.get(f"{BASE}/block-trade", params={"code": code},
headers=H, timeout=30).json()
if not b.get("ok"):
continue # 当天无大宗
rows = b.get("data") or b.get("structured") or []
for x in rows:
amt = float(x.get("TurnoverValue") or 0)
dis = float(x.get("CloseDiscountRate") or 0)
if amt >= 1e8 or dis <= -5: # 大额 或 深折价
hits.append((code, amt / 1e8, dis, x.get("BuySalesDepartment", "")))
for code, amt, dis, buyer in sorted(hits, key=lambda z: -z[1]):
print("%-10s %.2f 亿 折溢价 %+.2f%% %s" % (code, amt, dis, buyer[:24]))- 筛"大额":成交额 ≥ 1 亿(量级足够影响筹码结构)
- 筛"深折价":折溢价 ≤ -5%(卖方让利明显)
- 组合看:"大额 + 深折价 + 买方是机构专用" 是相对少见且有信息量的组合
七、date 参数:查历史某天
`date=YYYY-MM-DD` 可以查指定日期 —— 非交易日会自动回退到最近交易日(实测:`2026-09-26` 是周六 → 返回 `2026-09-24` 的数据)。
b = requests.get(f"{BASE}/block-trade",
params={"code": "sh600276", "date": "2026-09-26"},
headers=H, timeout=30).json()
print(b["ok"], b.get("data"))- 实测观察:返回的第 1 张表(日期 / 收盘价等元信息)会跟随 date 变化,非交易日回退到最近交易日
- 明细表的行为:实测中多次查询返回的成交明细相同 —— 可能该股期间只有一笔大宗,也可能是明细只给最近一笔。要用连续多日差异明显的样本自行核对,不要默认"多日历史明细"
八、两个常见误判(重要)
- ① `ok:false` 不等于接口坏了 —— 它表示那一天该股没有大宗交易(正常结果)。很多股票大部分交易日都没有大宗成交。判断方法:换一只活跃的大盘股(如 `sh600519`)试,能返回数据就说明接口正常
- ② 折价不代表利空 —— 大额减持天然要折价才能快速成交。"有折价"是常态,"折价异常深 + 买方是机构"才值得单独看
常见问题
不是。这表示当天该股没有大宗交易。大宗交易本身就不是每只股票每天都有 —— 换一只活跃的大盘股(如 sh600519 贵州茅台)试,能返回数据即说明接口正常。
大宗交易成交信息按 T+1 披露。本文实测返回的是最近已披露的交易日数据(返回的 date 字段会标明属于哪一天)。
相对当日收盘价。正值 = 溢价成交(买方出价高于市价),负值 = 折价成交(卖方让利),0 = 平价。折价成交是常态,不能直接当利空。
structured / tables 是条件字段 —— 只在 data 是 Markdown 文本时才附。block-trade 的 data 直接就是数组(本身就是结构化的),所以不需要这一层。代码里请用 body.get("structured") 或先判断 data 类型。
最后更新: 2026-09-29
字段语义取自接口文档与实测返回;示例数据为 ashareapi /v1/block-trade 线上真实返回(2026-09-29 实跑:贵州茅台 / 恒瑞医药 / 紫金矿业 / 宁德时代 / 中国平安);date 参数行为经多日期实测(含非交易日回退)。