大家好,我是木木。
今天给大家分享一个SEC 数据提取的 Python 库,edgartools。
edgartools
edgartools 是一个面向 SEC EDGAR 的 Python 库,常用来下载、检索和解析公司公告、10-K、10-Q、Form 4、13F 等文件。它适合金融研究、基本面分析、合规审查和需要把公开披露文件转成结构化数据的场景。和直接拼 SEC URL 或手写 HTML 解析相比,edgartools 把 filing、company、financials 这些概念封装成对象,代码会更像业务语言。
项目地址:https://github.com/dgunning/edgartools
官方文档:https://edgartools.readthedocs.io/
三大特点
对象清晰
Company、Filing、Financials 等对象把 SEC 文件访问整理得更直观。
覆盖丰富
适合年报、季报、内幕交易、机构持仓等常见披露数据。
注意身份
正式访问 SEC 时要设置 identity,并控制请求频率。
最佳实践
安装方式:pip install edgartools。访问 SEC 数据前建议设置 set_identity("name email"),并把缓存目录和请求节流纳入项目配置。
第一段代码解决的问题是:确认当前安装版本和核心入口对象,先把可用 API 摸清楚。
importwarningswarnings.filterwarnings("ignore")importedgarfromedgarimportCompany,Filing,get_filings,set_identityprint("edgar:",edgar.__version__)forobjin[Company,Filing,get_filings,set_identity]:print(f"{obj.__name__}: ready")
第二段代码解决的问题是:用一个 filing 的核心字段构建对象,理解 CIK、表单类型、日期和 accession number 的关系。
importwarningswarnings.filterwarnings("ignore")fromedgarimportFilingfiling=Filing(cik=320193,company="Apple Inc.",form="10-K",filing_date="2023-11-03",accession_no="0000320193-23-000106")print(filing)print("cik:",filing.cik)print("company:",filing.company)print("form:",filing.form)print("homepage:",filing.homepage_url)
环境与版本信息
本文示例使用 Python 3.11.0、edgartools 5.36.0。截图示例不请求 SEC 远端接口,只演示本地对象与 URL 构造;生产使用时要处理网络、缓存和 SEC 访问规范。
高级功能
edgartools 的进阶价值在于把 filing 作为稳定对象纳入数据流水线。先用元数据定位文件,再按表单类型选择解析逻辑,会比一上来抓全文更稳。
importwarningswarnings.filterwarnings("ignore")fromedgarimportFilingfilings=[Filing(320193,"Apple Inc.","10-K","2023-11-03","0000320193-23-000106"),Filing(789019,"Microsoft Corp","10-K","2023-07-27","0000950170-23-035122"),Filing(1018724,"Amazon.com Inc","10-Q","2023-10-27","0001018724-23-000021"),]forms={}forfilinginfilings:forms[filing.form]=forms.get(filing.form,0)+1print("filings:",len(filings))forform,countinsorted(forms.items()):print(f"{form}: {count}")print("first archive dir:",filings[0].base_dir)
适用场景
适合 SEC 披露数据研究、财报解析、Form 4 内幕交易监控、13F 持仓分析和公告检索。
不适用场景
不适合需要交易所实时行情的数据链路,也不适合在没有缓存、身份标识和请求节流的情况下高频抓取 SEC。
上线检查
- 配置 SEC identity。2. 为下载结果启用缓存。3. 按 form 类型分开解析和测试。4. 对 accession number、CIK 和日期建立唯一键。
总结
edgartools 的好处是把 SEC 文件处理变成清楚的 Python 对象流程。只要尊重访问规范,它会让披露数据工程少很多手写解析。