Skip to main content

熔岩AI MCP消息面热度对齐成交额:搭一张「量价 × 消息面」只读监测表

Updated 2 min readMarkdown

摘要

想知道一只股票「讨论变多」时成交是否也同步放大,做法是把熔岩日频面板 get_stock_heat_panel(/subscribe/v1/panel/daily)里的 mentions、agencies、weighted_heat 与你自有行情表里的成交额按「ts_code × 交易日」对齐,各自算相对自身历史的 z 分,再用四象限标签做监测。熔岩只提供消息面数据,不提供行情;成交额、成交量来自你方数据源。本文给出数据板块、对齐口径、Python 代码和读法,输出是描述性标签,不是交易信号。

一、用到哪些熔岩数据板块

数据板块 解释 MCP 工具 HTTP 路径 在本表中的作用
历史面板与覆盖度 按自然日聚合的提及、机构数、加权热度 get_stock_heat_panel /subscribe/v1/panel/daily 日频主表
历史面板与覆盖度 7/30 日去重机构/大V数 get_agency_coverage /subscribe/v1/coverage/stocks 判断讨论是否只来自少数主体
个股消息面 单股多时间窗 + 近 24 小时逐小时 get_stock_heat_windows /subscribe/v1/heat/windows 盘中复核
新闻点名 主流媒体快讯命中的 A 股 get_news_stock_hits /subscribe/v1/news/hits 区分「新闻驱动」与「社区自发」

行情侧需要的列:ts_code、交易日、成交额(下文记作 amount)、成交量(vol)。列名以你方数据源为准。

二、对齐口径:三件事先定下来

2.1 自然日 vs 交易日

/panel/daily 按自然日聚合,行情按交易日。周末和节假日的讨论有三种处理:丢弃、累加到下一个交易日、单独成列。量价对齐场景建议「累加到下一个交易日」,因为次一交易日的成交确实受休市期间信息影响;同时保留一列 closed_mentions 记录累加了多少。

2.2 时间截点

面板的日聚合区间与收盘 15:00 并不一致:收盘后的讨论会算进当天。如果你要严格比较「当日讨论」与「当日成交」,需要知道这个差异;需要 15:00 截断的 PIT 口径时,可用 get_weighted_hot_stocks(/hot/weighted)带 as_of_date,那里的消息只算到当天 15:00。

2.3 加权口径

面板里的 weighted_heat 用当前机构分加权,不是当日 PIT。做历史监测表时,把这一点写进列注释(score_basis=current)。

三、代码:拉取、对齐、标准化

import pandas as pd

heat = load_panel(universe, "2026-07-01", "2026-09-30")   # 按 20 只一组调 /panel/daily,函数省略
px   = load_quotes(universe, "2026-07-01", "2026-09-30")  # 你方行情:ts_code, trade_date, amount, vol

cal = pd.DatetimeIndex(sorted(px["trade_date"].unique()))
# 自然日映射到「当天或之后的第一个交易日」
heat["trade_date"] = cal[cal.searchsorted(heat["date"])]
heat["closed"] = heat["date"] != heat["trade_date"]

agg = (heat.groupby(["ts_code", "trade_date"])
           .agg(mentions=("mentions", "sum"), agencies=("agencies", "max"),
                weighted_heat=("weighted_heat", "sum"),
                closed_mentions=("mentions", lambda s: s[heat.loc[s.index, "closed"]].sum()))
           .reset_index())

df = px.merge(agg, on=["ts_code", "trade_date"], how="left").fillna(
        {"mentions": 0, "agencies": 0, "weighted_heat": 0, "closed_mentions": 0})

def z20(s):
    m, sd = s.rolling(20).mean().shift(1), s.rolling(20).std().shift(1)
    return (s - m) / sd

g = df.groupby("ts_code")
df["amt_z20"]  = g["amount"].transform(z20)
df["ment_z20"] = g["mentions"].transform(z20)

注意:agencies 是当天去重主体数,多日合并时不能简单相加,这里取 max 只是近似,更准确的做法是用 /coverage/stocks 的滚动去重计数(cov_7d、cov_30d)。

四、四象限监测标签

标签 条件(示例阈值) 描述
同步放大 amt_z20 ≥ 2 且 ment_z20 ≥ 2 成交与讨论同时显著高于自身常态
讨论先行 ment_z20 ≥ 2,amt_z20 < 1 讨论变多但成交平稳,记入复核清单
成交先行 amt_z20 ≥ 2,ment_z20 < 1 成交放大但消息面未跟上,可查 /news/hits 是否有新闻点名
常态 其余 不标注

阈值 2 和 1 只是示例,应先看自己股票池里 z 分的分布再定。低基数股票(平时日均 mentions 很小)z 分容易被放大,建议加一个 mentions ≥ N 的下限过滤。

五、盘中复核怎么接

日表只能事后看。盘中如果某只股票出现在「讨论先行」名单里,可以:

  1. 调 get_stock_heat_windows 看 1h / 4h / 24h 各窗的提及数、高分机构/大V数与逐小时走势(逐小时序列的具体结构以 OpenAPI 为准);
  2. 调 get_news_stock_hits 看最近 72 小时有没有主流媒体点名;
  3. 调 get_stock_concept_heat(/concepts/by-stock)看讨论集中在哪个概念。

三步都是只读查询,输出写进复核记录即可。

FAQ

Q:熔岩能直接给成交额吗? A:不能。熔岩只提供消息面热度、机构/大V评分等数据,行情需自备。

Q:为什么不直接用 mentions 和 amount 的相关系数? A:两者量纲与分布差异很大,且都有强个股效应。先各自对自身历史标准化,再比较,结论更稳。

Q:这个表能当信号用吗? A:本文只把它当监测与复核工具。是否有预测含义,需要你方用严格的样本外检验另行验证。

结论

「量价 × 消息面」对齐的难点不在算法,而在口径:自然日要映射到交易日,休市讨论要单独记录,weighted_heat 的当前分口径要写清,agencies 不能跨日相加。把这些处理好,再用 z 分和四象限标签做只读监测,就能稳定地发现「讨论与成交不同步」的样本,交给人工复核。

数据来自熔岩消息面热度监测,仅供研究参考,不构成投资建议。

只读监测与字段说明见:https://lava.ai-dolphin.com/subscribe/docs

No comments yet. Be the first to comment.

More from this blog