做美股研究的朋友应该都有过这种经历:想拉一批上市公司的资产负债表数据做分析,要么去SEC EDGAR一家一家扒10-K和10-Q,要么到处找人借数据库账号。这两种路子我自己都走过,前者浪费时间,后者欠人情。后来用了CnOpenData的美股上市公司资产负债表数据库,才算是找到一条比较顺手的路径。这篇文章就把我从获取数据到清洗落地、再到实际计算的完整流程整理出来,顺便把踩过的坑都讲清楚。
CnOpenData这个平台在学术圈和科研机构里用得比较多,它把散落在各个公开渠道的结构化数据做了集中整理,其中就包括美股上市公司的财务三张表。资产负债表作为其中最核心的一张,记录了企业在某个时间点的家底——手里有多少现金、欠了多少钱、股东真正拥有的净资产是多少。无论你是做量化选股、学术论文、还是单纯想研究某家公司的财务健康度,这块数据都是绕不开的基础素材。下面我按实际操作顺序,把整个流程拆开讲。
1. 先搞清楚:CnOpenData的美股资产负债表到底提供了什么
1.1 数据集覆盖范围与更新频率
先说结论:这个数据集在我看来最实用的部分,是它帮你省掉了“从原始文件里提取结构化字段”这步最脏最累的活。它覆盖的美股上市公司范围很广,包含在纽约证券交易所、纳斯达克、美国证券交易所等主要交易所上市的公司。时间跨度方面,不同版本数据更新情况不太一样,我用的版本能追溯到的历史数据从上世纪90年代开始,到最近的财报季基本都有覆盖。
更新频率上,美股公司常规财报是季报加年报,所以数据通常也是跟着财报披露节奏走。每家公司会在财报发布后更新最新的报告期数据。对于做横截面研究的用户来说,这个更新速度够用了;但如果你要做事件驱动的高频分析,最好再核对一下数据落库时间,避免拿到半年前的老数据。
这里需要提醒一点:数据集的“已收录公司”并不是一成不变的。美股市场每年都有新股上市、老股退市,还有合并、私有化等等,CnOpenData一般会跟随交易所公告做增删。所以如果你研究的是某家比较小众的公司,先查一下它在不在库里,别等到代码跑完才发现没数据。
1.2 字段结构到底长什么样
我习惯拿到一张表先看schema,数据字段决定了你能做什么分析、不能做什么分析。CnOpenData的美股资产负债表数据,核心字段大致可以分成这么几类:
| 字段类别 | 典型字段 | 用途说明 |
|---|---|---|
| 标识类 | 公司代码、公司名称、报告期 | 定位到特定公司在特定时点的数据 |
| 资产类 | 现金及现金等价物、应收账款、存货、流动资产合计、固定资产、无形资产、总资产 | 分析企业资源规模和资产结构 |
| 负债类 | 应付账款、短期借款、流动负债合计、长期借款、总负债 | 判断企业偿债压力 |
| 权益类 | 股东权益合计、股本、资本公积、留存收益 | 计算净资产和资本结构 |
| 辅助类 | 报表类型(年报/季报)、货币单位 | 关键用于统一计量口径 |
这个字段设计谈不上惊艳,但胜在“该有的都有”。常见的财务分析场景,比如流动比率、资产负债率、权益乘数等指标,直接用这些字段就能算出来,不需要再回到原始财报里去翻科目明细。
1.3 为什么不干脆自己爬SEC EDGAR
我知道有人会问:SEC EDGAR本身就是免费公开的,为什么还要用经过二次整理的数据?我自己早年也写过爬虫去抓10-K文件里的资产负债表,说句实话:能跑通,但性价比极低。
SEC的原始文件是XBRL和HTML混合格式,虽然XBRL有结构化标签,但实际处理时你会发现,不同公司对同一科目的标注并不完全一致。有的公司把“现金等价物”拆分列示,有的合并列示;有的把递延所得税资产放在非流动资产
