Skip to content

edgar

美国证券交易委员会(SEC)设计了一种电子数据收集、分析和检索系统(Electronic Data Gathering,Analysis and Retrieval(EDGAR) System),以支持上市公司、证券公司以及个人根据 SEC 证券法规的要求提交各种公共文件。并且 SEC 还提供了面向公共传输的服务(The EDGAR Public Dissemination Service(PDS))。

格式要求

edgar 中要求公共文件必须以 ASCII/SGML 文本文件,即使是二进制文件也必须使用 UUencoded 编码。所有的内容以标题(Header)串联文档(Concatenated Documents)的组成,其中串联文档可以包含 ASCII/SGMLHTML、XML、XBRL 以及有 UUencoded 编码的 PDF、JPG 和 GIF 格式组成。

Tips

Rendered XBRL 文档也可以包含 HTML、XML、CSS、JS、UUencoded 编码的 PNG、XLSX 和 ZIP。

格式长度

ASCII/SGML 文档每行长度不超过 80 个字符,但是文档中的 <TABLE> 标识允许 132 个字符的宽度限制。

HTML、XML 和 XBRL 文档文本没有固定的宽度限制。

UUencoded 编码的二进制文件的文本宽度是 64 字符。

forms-index/type

公共文件包含非常多的类型,例如年报、月报、财务分析等等,他们以不同的类型呈现,不同类型的内容以及解析方式也完全不同:

文件访问

edgar 能够通过 CIK 来实现对文件的索引,CIK 是公司向 SEC 提交组册文件时,EDGAR 为每一个申请人分配一个唯一的数字标识符,成为中央索引文件(Central Index Key),注意他们不会被回收

可以从 https://www.sec.gov/Archives/edgar/cik-lookup-data.txt 获取目前所有的 CIK,他包含基金和个人并且是历史累积的。因此在公司或者基金名称更改的情况下,给定的 CIK 可能与多个名称相互关联。同样它也包含一些退市的不在向 SEC 报备的公司。同样也提供了最新的 CIK、股票代码和交易所对应的文件:

Tips

比较不好理解的是基金公司的: 以贝莱德基金公司(BlackRock)为例,它是世界上最大的资产管理公司之一。在美国,贝莱德的基金产品可能会有多个 seriesId,每个 seriesId 代表一个基金系列,这些系列可能包括不同的投资策略或资产类别。例如,贝莱德可能有一个专注于美国股票的基金系列,另一个可能专注于国际债券。在每个基金系列中,可能会有不同的 classId,这些 classId 代表基金的不同份额类别。例如,一个基金系列可能有A类份额、B类份额和C类份额,每种份额的销售负担、管理费用和分配权益可能不同。投资者可以根据自己的投资目标和费用偏好选择合适的份额类别。

索引文件

有两个位置提供了 1994 年三季度至今的所有公开文件的索引:

他们的每个目录包含四种类型的索引:

  • company.idx: 按照公司名称排序
  • form.idx: 按照表单类型排序
  • master.idx: 按照 CIK 编号排序
  • XBRL.idx: 包含 ZBRL(可扩展商业报告语言,特定格式报告财务数据) 财务文件的提交文件,按照 CIK 编码排序

Tips

还有一个比较特殊的 crawler.idx 文件,保存了原始网页。

每个索引文件中列出了每个申请的以下信息:

  • company name: 公司名称
  • form type: 报表类型
  • central index key: 即 CIK
  • data filed: 提交日期
  • filename: 文件名,包括文件夹路径

而我们要下载的具体文件就是通过 filename 来获取。

Tips

推荐抓取 master.idx 因为他是用 | 分隔的,比较好解析。

API

https://www.sec.gov/edgar/sec-api-documentation 介绍了目前提供的 API。

该 API 目前只包含上市公司的提交历史记录和财务报表的 XBRL 数据。他提供了一个全量的 JSON 下载:

下载所有数据

还有一个下载所有数据的地方:

这里的文件比较多,每个目录都隐式提供了一个 index.xml/index.json 文件来提供列表,例如:

解析数据

https://www.sec.gov/files/edgar/pds_dissemination_spec.pdf 中详细介绍了这些文件是应该如何解析的。

整个流程

  1. 首先我们从中下载所有的数据,推荐使用每日提交存档。
  2. 目前使用来下载, aria2c 多线程或出现问题, curl 没办法很方便的批量,注意下载需要指定 user_agent 和 Host: www.sec.gov
  3. wget -i ../tar_gz_urls_last.csv --header='Host: www.sec.gov' --header='User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/17.4.1 Safari/605.1.15'
  4. 下载并解析,推荐下载 master.idx
  5. 匹配两者查看下载的数据是否有缺失,具体如何匹配需要确认
  6. 最终在通过索引文件来补齐缺少的内容

参考