mcpField
E
EdgarTools

EdgarTools

本地服务
github.com/dgunning金融数据2.8k3 天前更新

关于 EdgarTools

EdgarTools 是一个开源 Python 库,可将 SEC EDGAR 文件转为结构化数据,面向金融研究人员和开发者。它通过统一 API 提供类型化文件对象、标准化报表和文件文本。

主要功能

  1. 01SEC 表格的类型化对象
  2. 02标准化财务报表
  3. 03文件全文搜索
  4. 04文件章节与 Markdown
  5. 05解析持仓和内幕交易

适用场景

  1. 01比较公司财务报表
  2. 02研究机构持仓
  3. 03查看内幕交易
  4. 04整理用于 RAG 的文件文本

MCP 相关

EdgarTools 在 `ai` 扩展中包含本地 MCP 服务,向 MCP 客户端提供 SEC 文件相关能力。edgar.tools 也提供托管 MCP 服务。

配置

本地服务的配置在各客户端中通用,复制后粘贴到客户端的 MCP 配置文件即可。

mcp.json · 通用配置
{
"mcpServers": {
"edgartools": {
"command": "uvx",
"args": [
"edgartools"
],
"env": {
"EDGAR_IDENTITY": "<EDGAR_IDENTITY>"
}
}
}
}
启动命令uvx edgartools
需要配置的环境变量
EDGAR_IDENTITYYour name and email for SEC EDGAR API identification (e.g. 'Your Name [email protected]')

本地服务需要在你的电脑上安装运行环境(如 Node.js 18+)。各客户端的配置文件位置不同,请参考客户端文档。

安装包
pypiedgartools5.62.1

工具

13

收录的工具列表 · 更新于 2 周前

参数类型必填说明
annualboolean否已弃用。请改用 'period'。年度(true)或季度(false)财务数据
periodenum否期间类型:'annual'、'quarterly' 或 'ttm'(过去十二个月)annual | quarterly | ttm
includearray否要包含的数据。默认值:profile、financials、filings
periodsinteger否财务期间数(默认值为 4)
identifierstring是公司股票代码(AAPL)、CIK(320193)或名称(Apple Inc)

详细介绍

EdgarTools 标志

EdgarTools — SEC EDGAR 文件的 Python 库


PyPI - 版本 Python 版本 构建状态 每月下载量

EdgarTools 是一个用于将 SEC EDGAR 文件转换为结构化数据的 Python 库,涵盖财务报表、内部人士交易、基金持仓、委托书声明及数十种其他文件类型,并通过统一的 Python API 提供访问。SEC 免费发布自 1994 年以来的所有文件,但几乎没有文件可以直接使用;EdgarTools 会将文件转换为带类型的 Python 对象。免费开源,采用 MIT 许可证。

文档 · 速查表 · Agent:技能 · MCP 服务 · 托管服务:edgar.tools

EdgarTools SEC 文件数据提取演示

快速开始

1. 安装。 包名为 edgartools;导入的模块名为 edgar。需要 Python 3.11+。

uv add edgartools        # or: pip install edgartools

2. 向 SEC 表明身份。 EDGAR 要求每次请求都提供联系邮箱。无需密钥、注册或速率限制等级。

from edgar import Company, set_identity

set_identity("[email protected]")

3. 获取数据。

# Five fiscal years of standardized income statement, from XBRL
Company("NVDA").income_statement(periods=5)
#> Total Revenue $215.9B $130.5B $60.9B

为什么不直接调用 SEC 的 API?

data.sec.gov 提供 JSON 格式的事实数据和文件索引。除此之外都得由你编写代码。EdgarTools 帮你处理这些工作:

  • 章节文本和 Markdown。 将 10-K 或 10-Q 的 Item 1A、Item 7 或任意 Item 提取为文本,并将完整文件转换为 Markdown,以供 RAG 使用。手写解析器往往会在处理原始 HTML 时出错。
  • 解析后的表单,而非 XML。 将 13F 持仓、Form 4 交易、N-PORT 投资组合和 8-K 条目转换为带类型的对象和 DataFrame。
  • 统一口径的报表。 对不同申报公司的行进行标准化,因此“总收入”对银行和芯片制造商含义一致;还提供离散季度(由 10-K 推导 Q4)和过去 12 个月数据。
  • 搜索和基础设施。 对文件内容进行全文搜索,提供实时文件流、速率限制、缓存和离线存储。

它在你自己的进程中运行,采用 MIT 许可证,无需 API 密钥,也没有供应商配额;但仍须遵守 SEC 每秒 10 个请求的公平访问限制,EdgarTools 会遵守此限制。

你可以做什么

搜索 SEC 文件全文

搜索自 2001 年以来每份文件的文本,而不仅仅是表单类型和日期。

from edgar import search_filings

# Every 10-K filed since 2025 that mentions tariffs
results = search_filings("tariff", forms="10-K", start_date="2025-01-01")
hit = results[0]
hit.accession_number, hit.form, hit.filed, hit.company  # a hit's fields; filed is the filing date
hit.get_filing()  # the Filing behind a hit, ready for .obj() or .markdown()

# Structured: 8-Ks that reported a cybersecurity incident (Item 1.05) in 2025
search_filings(forms="8-K", items="1.05", start_date="2025-01-01", end_date="2025-12-31")
#> 19 total

全文搜索指南 →

查看多年财务报表
Company("MSFT").income_statement(periods=10)  # also .balance_sheet() and .cash_flow_statement()

财务报表指南 →

跨公司比较同一指标

根据标准化标签选择行,绝不要按位置选择:损益表的第一行并不总是总收入。

import pandas as pd

revenue = {
    ticker: Company(ticker).income_statement(periods=3, as_dataframe=True)
            .set_index("label").filter(like="FY").loc["Total Revenue"] / 1e9
    for ticker in ["JPM", "PFE", "CAT"]
}
pd.DataFrame(revenue).round(1)  # $ billions
#> FY 2025 182.4 62.6 67.6
季度数据和过去 12 个月数据
nvda = Company("NVDA")
nvda.get_ttm_revenue()                                 # the last four quarters, summed
nvda.income_statement(period="quarterly", periods=8)   # discrete quarters; Q4 is derived from the 10-K
用于 RAG 的章节和 Markdown
filing = Company("NVDA").latest("10-K")
filing.markdown()          # the whole filing as markdown

tenk = filing.obj()
tenk.risk_factors          # Item 1A as text
tenk["Item 1C"]            # any Item by number

章节指南 →

按任意条件查找申报文件
from edgar import find, get_current_filings, get_filings

get_filings(2025, 4, form="10-K")   # every 10-K filed in Q4 2025
get_current_filings()               # the live feed, as SEC posts it
find("0000320193-25-000079")        # an accession number, CIK or ticker

查找申报文件指南 →

find() 解析股票代码、CIK 和 accession number

get_current_filings() 显示 SEC 实时申报文件动态

13F 机构持仓
thirteenf = Company("BRK.A").get_filings(form="13F-HR").latest().obj()
thirteenf.holdings  # one row per security: Issuer, Cusip, Ticker, SharesPrnAmount, Value, ...

机构持仓指南 →

伯克希尔·哈撒韦最新的 13F 持仓

Form 4 内部人交易
form4 = Company("TSLA").get_filings(form="4").latest().obj()
form4.to_dataframe()  # buys, sells, grants and exercises

内部人交易指南 →

特斯拉最新的 Form 4 被解析为结构化对象

N-PORT 基金持仓
from edgar import Fund

Fund("VOO").get_portfolio()  # the latest N-PORT holdings as a DataFrame

基金投资组合指南 →

8-K 事件和财报发布
eightk = find("0001045810-26-000073").obj()  # NVIDIA, 2026-08-26
eightk.items      # ['Item 2.02', 'Item 9.01']
eightk.earnings   # the EX-99.1 press release tables, parsed

当前事件指南 →

使用库还是托管平台?

EdgarTools 是此处的库:免费、采用 MIT 许可证,可在你自己的 Python 进程中运行。edgar.tools 是基于它构建的托管平台:解析能力相同,持续运行并保持最新,每个答案都附有申报文件引文。你付费购买的不是解析能力,而是让它持续运行并随时提供答案。我们绝不会为了销售平台而从库中移除任何功能。

如果你想要……使用
构建可运行的内容:管道、回填、回测、模型语料库、笔记本、自定义联接,以及任何需要对数百个名称重复执行或在你自己的网络中运行的内容该库
只需提问,无需构建:你关注的公司提交了哪些文件、与上次相比有何变化、谁卖出了、谁持有某项资产、某个人涉及的所有公司、覆盖整个范围的筛选、提醒,以及可转发或分享给团队的引用答案。可通过浏览器、手机、Excel、Claude 或 ChatGPT 使用,也可供无法运行 Python 的 Agent 使用edgar.tools。免费注册即可开始
获取维护好的数据集(内部人交易、13F、BDC 投资组合、重大事件),每行都可追溯至对应申报文件,且无需运行管道edgar.tools 数据授权
通过脚本一次性获取某份已知申报文件或某个 JSON 文档两者都不用:直接调用 EDGAR

两者都提供 MCP 服务:库的 MCP 服务在本地运行(见下文“AI 集成”),edgar.tools 的 MCP 服务则托管在 app.edgar.tools/mcp。每个客户端只连接一个,不要同时连接两者:它们的功能重叠,会分散助手的路由。

AI 集成

EdgarTools 在 ai extra 中提供 Agent 技能和本地 MCP 服务。对于无法运行 Python 的助手,请改用上文中的托管连接器。

pip install "edgartools[ai]"
python -c "from edgar.ai import install_skill; install_skill()"  # the skill, for Claude Code and Claude Desktop

该 MCP 服务适用于任何 MCP 客户端。对于 Claude Desktop,请将其添加到 claude_desktop_config.json:

{
  "mcpServers": {
    "edgartools": {
      "command": "uvx",
      "args": ["--from", "edgartools[ai]", "edgartools-mcp"],
      "env": {
        "EDGAR_IDENTITY": "Your Name [email protected]"
      }
    }
  }
}

uvx 需要安装 uv;如果没有,可运行 pip install "edgartools[ai]" 并执行 python -m edgar.ai。其他客户端的设置方法:MCP 服务指南 · 技能指南。

支持项目

SEC 每年都会更改申报格式并发布新的 XBRL 分类标准。赞助有助于让解析器保持最新,并为新披露内容出现时开发新的解析器提供资金。

  • GitHub Sponsors:每月赞助或一次性赞助。公司可以通过现有的 GitHub 账单进行赞助。
  • Buy Me a Coffee:一次性的感谢。
  • 咨询服务:由该库的作者协助构建 SEC 数据管道和基于该库的金融 AI。

在 GitHub 上赞助    请我喝杯咖啡

文档、帮助与贡献

EdgarTools 根据 MIT License 发布。

评论

支持 Markdown

第一次接触 MCP?

从协议是什么,到在客户端里装上第一个服务,这几条回答覆盖了大多数入门问题。

一个开放协议,规定了 AI 应用如何以统一方式连接外部工具与数据源。客户端负责与模型对话,MCP 服务负责提供工具、资源和提示模板,两者通过标准消息通信,同一个服务可以被不同客户端复用。