SuperAPI AI 工具集

bigdata-skill

数据与分析

查看项目

更新于 10-15 09:16

技能介绍

用途

bigdata-skill 用于从 Bigdata.com(RavenPack)拉取金融与新闻数据。它针对一个具体问题:Bigdata MCP 服务器返回的是可读段落或预综合的 tearsheet,适合聊天场景,但不提供构建数据管道所需的机器可读底层字段——其搜索工具只返回文本与相关性,没有逐块情感数值和实体字符跨度;其 tearsheet 只给聚合值,没有可按财季计算的时间序列、universe 筛选器或逐字段 JSON。

该技能通过官方 bigdata-client SDK 加一层薄 REST 透传,访问同一后端、同一 JWT 可达的官方 /v1/* 端点。这些结构化字段是官方公开文档化的 REST 端点,且 Bigdata 正在淘汰 SDK(EOL 2026-12-31),转向 REST API,因此 REST 层是向前兼容的路径。

主要能力

  • 实体解析:公司名称 / ISIN / CUSIP / SEDOL → rp_entity_id(EntityResolver)。
  • 结构化财务数据(REST):分析师前瞻共识(analyst_estimates)、最新盈利超预期(latest_surprise)、财报与事件日历(events_calendar)、分析师评级与目标价(analyst_ratings / price_target)、完整财务报表(利润表 / 资产负债表 / 现金流量表)、TTM 估值指标与比率、公司概况、每日 OHLC 价格与股息历史、按地区 / 产品分部的收入、每日实体情感时间序列(entity_sentiment)、共现图(connected_entities,按块计费)、公司筛选器(company_screener)。
  • 带注释新闻块(SDK):AnnotatedSearcher.search_entity 返回含情感数值与实体跨度的块。
  • 批量搜索:BatchSearch(create→upload→poll→download),比普通搜索便宜 50%。
  • 成本追踪与预算:CostTracker / CostModel,可在运行前否决超预算任务。
  • 未封装端点:client.http.post("v1/<resource>/query", body)。

使用方式

一次性设置:

  1. 设置 API 密钥(不要硬编码):export BIGDATA_API_KEY=bd_v2_xxxxxxxx
  2. 创建隔离 Python 环境并安装官方 SDK:uv venv .venv --python 3.12;uv pip install --python .venv/bin/python bigdata-client
  3. 如需出站代理:export HTTPS_PROXY=http://<host>:<port>(聊天 / WebSocket 另需 WSS_PROXY);若代理做 TLS 拦截导致 SSL 握手错误,使用 BigdataClient(verify_ssl="<proxy-CA>.pem")。
  4. 将技能的 scripts/ 加入 PYTHONPATH 或 sys.path。

冒烟测试:BIGDATA_API_KEY=bd_v2_xxx PYTHONPATH=scripts .venv/bin/python scripts/probe_example.py

快速开始示例(保留原代码):

import sys sys.path.insert(0, "<this-skill>/scripts") from bigdata_toolkit import ( BigdataClient, EntityResolver, AnnotatedSearcher, StructuredDataREST, CostTracker, CostModel, rc, )

c = BigdataClient() er = EntityResolver(c) nvda = rc(lambda: er.resolve_id("NVIDIA", country="US"))

rest = StructuredDataREST(c) est = rc(lambda: rest.analyst_estimates(nvda, period="quarter", limit=5)) surp = rc(lambda: rest.latest_surprise(nvda)) cal = rc(lambda: rest.events_calendar(nvda, categories=["earnings-call"], start_date="2026-06-01", end_date="2026-12-31"))

s = AnnotatedSearcher(c) docs = rc(lambda: s.search_entity(nvda, keyword="data center", chunk_limit=10))

ct = CostTracker(c); ct.snapshot() print(ct.delta())

所有网络调用建议包在 rc(lambda: ...) 中,因为首次握手的 SSL: UNEXPECTED_EOF 常见,SDK 内部重试不覆盖它。

适用场景

  • 用户使用 Bigdata.com / RavenPack 且觉得 MCP 结果太薄,需要情感分数、实体级数据或日历。
  • 需要某股票的前瞻 / 结构化财务数据:分析师估计、财报或事件日历、盈利超预期、评级、目标价、公司筛选器。
  • 需要带数值情感与实体跨度的注释新闻块,或情感时间序列 / 共现图。
  • 提到 bd_v2_ API 密钥、rp_entity_id、query_unit / chunk 成本、bigdata-client,或“bigdata MCP 不够用”。
  • 构建投资研究数据集,需要可复用、成本感知的数据拉取层。

限制

  • 中文 / A 股数据分两面:结构化财务面(REST)可用,通过英文名或 ISIN 解析 rp_entity_id(不是中文名),数据新鲜,但存在小缺口(部分 A 股目标价返回实体但无数值目标);非结构化中文 NLP(中文新闻实体检测、逐块中文情感)是数据源层面的死胡同——中文实体检测约等于 0,逐块 CJK 情感是文档级继承值,语言会把中文文件误标为英文。中文块内容需搭配中国本土数据源。
  • 成本纪律:1 query_unit = 10 chunks;只有块搜索计费,结构化 /v1/* 端点免费(0 chunks),connected_entities 与 AnnotatedSearcher 按块计费。使用 ChunkLimit 而非裸 int;rerank 只对返回块计费;批量搜索便宜 50%。
  • 已知陷阱:首次握手 SSL UNEXPECTED_EOF 需 rc() 包裹;All(entity, Keyword(kw)) 会抛 TypeError,需用 & 组合;文档限制计费陷阱(约 52 倍差距,为单次测量数据点);循环闭包捕获需绑定循环变量;analyst_estimates(period="quarter") 在 limit≈20 以上返回 400;company_screener 过滤器必须嵌套在 "filters" 下,否则被静默丢弃;Document.reporting_period 始终为 None,需用 fetch_reporting_period_raw。
  • 该技能只读,不写入或上传;不硬编码 API 密钥;不虚构端点或 schema。
  • 文件布局包含 SKILL.md、scripts/bigdata_toolkit/(client.py、kg.py、search.py、rest_ext.py、cost.py、retry.py)、scripts/probe_example.py 及 references/ 下的架构、签名、成本、陷阱文档。