最近在跟着一个NLP的项目,爬取了EDGAR上2021Q1到2022Q2的所有10-Q、10-K和8-K报表并清洗出特定Item的内容。做到现在半个月,总结了大致流程、遇到的问题和解决方法,希望能帮助到有同样需求的朋友们。完整内容大概会拆成3个部分,第一部分先介绍爬取报表的方法。
1. INTRO
关于美国证券交易委员会(SEC)的EDGAR系统,请参考:其中包含EDGAR系统的访问权限、访问方法、报表类型等常见问题。由于之后使用的爬取方法不需要自己设置请求间隔,此处仅作了解即可。常用的报表类型包括10-K(annual report)、10-Q(quarterly report)和8-K(current report),具体说明可参考:
SEC.gov | Forms Listhttps://www.sec.gov/forms关于报表的编成,简单来说, EDGAR系统给予每个编写报表的人员一个独特的索引码,称为CIK(central index key),我们查找报表也是基于CIK码而不是公司名称。如果想了解更多EDGAR系统中报表类型及索引问题,可参考论文:
- García, D., & Norli, Ø. (2012). Crawling EDGAR. The spanish review of financial economics, 10(1), 1-10.
2. 获取季度报表主索引(Quarterly Master Index)
每个季度SEC会给出该季度内上传到EDGAR系统的报表的信息,包括CIK、公司名称、编成日期及文件名等等,称为quarterly master index。获取QMI可以帮助我们了解该季度内报表的编成情况,比如对QMI根据CIK进一步筛选来了解某个公司在一段时间内各类报表的编成数量。
很多基于Python、R的packages都能帮助我们获取QMI信息,我使用的是一个近两年新发布的R package,edgar。之后爬取特定时间段内的特定类型的报表也将用到这个包。使用这个包不需要很进阶的爬虫搭建技巧,只要求基本的R语言使用知识,可以说是非常便捷的一个黑箱。该R包与其他更早发布的P