WRDS 实战 - CCM 的下载与预处理

WRDS 实战 - CCM 的下载与预处理

WRDS 中 CCM 的下载与预处理

0 数据库简介

Compustat/CRSP 合并数据库,一般被简称为 CCM,是美国上市公司实证研究中最重要的数据库之一。相当于国内 CSMAR 的资产负债表+利润表+现金流量表+股票信息。

不建议使用单独的 Compustat 数据库,因为信息没有这里的全。

1 获取途径

通过 WRDS 进行获取,登录后可以在标签栏快速进入(注意:合并数据在 CRSP 里面而不是 Compustat - Capital IQ 里面

不出意外的话,你可以找到

根据需要选择年度或者季度数据,这里以年度数据作为案例

恭喜你成功进入 CCM

2 数据筛选

WRDS 提供了一套相当复杂的数据筛选流程,接下来我一步步解释

2.1 选择日期范围

会计年度 fyear
数据日期 datadate

WRDS 提供了两种日期选择:会计年度(fiscal year)和数据日期(datadate)。

会计年度(fiscal year)和日历年度(calendar year)不一定相同,如果企业选择每年的12月份结束自己的会计年度,那么二者就相同;如果企业打算明年三月、六月等时间出报表的时候再结束,那么而这就不同了。在实证研究中,如果控制年份固定效应,一般是控制会计年度。因为企业可能会更改自己的会计期间结束时间,我们只能保证每个“企业-会计年度”有唯一观测,但是不能保证“企业-日历年度”是唯一的。

数据日期(datadate),简单来说就是报表发布的真实时间(年-月),是常用的 merge variable。事实上,CRSP 的数据也是通过 datadate 合并到每个企业的会计年度上的。

2.2 选择公司代码

上面的 Autocomplete 是询问你希望出现的企业 id 形式,因为国外企业不像国内上市公司,拿着一个股票代码就不会变了,而且几乎每个数据库都会有自己的一套 id,这也就导致了美国/全球公司金融实证的难度比中国公司金融难度更高。

优先级最高的两个 id 是:
gvkey:The Global Company Key。Compustat 数据库给每个公司的编码,不会随着时间发生变化
cik:Central Index Key。美国证券交易委员会(SEC)分配给向其提交文件的公司和个人的唯一识别号码,用以在SEC数据库中识别和跟踪实体提交的文件,如年报(10-K)和季度报(10-Q)等披露信息。,也不会随着时间变化

其次是:
permno:CRSP 数据库给每个证券赋予的编码,也是唯一不会变的。但是为什么优先级不如上面两个呢?因为一家公司可以对应多个证券。
permco:CRSP 数据库给每个证券赋予的编码,也是唯一不会变的,和 permno 不同的是,permco 只会唯一对应一家公司。
所以,如果要通过 CRSP 的股票日/月数据计算 beta、volatility、return等数据,建议采用 permno 而不是 permco,因为这些数据需要以证券为单位,而 permco 可能对应多个证券,在数据库中同一天/月会出现多个不同的收益率。

再者是:
CUSIP:Committee on Uniform Securities Identification Procedures。美国和加拿大金融证券的统一识别码,由 CUSIP Global Services(CGS)负责分配,包含9 位字符(前 6 + 后 2 + 校验位 1)。
需要重点注意的是,CUSIP会随着时间发生变化,也就是说一家公司/证券的CUSIP在不同年份可能不同,甚至可能出现不同公司在不同时间使用了同一个CUSIP,所以几乎是没有人采用 CUSIP 进行数据合并。
最后是:
Ticker:最坑爹的 id,证券在交易所挂牌时使用的交易代码,交易所给投资者提供的证券简称。比如:Apple → AAPL,Microsoft → MSFT,Tesla → TSLA。这玩意也会随着时间发生变化,公司退市再上市后,Ticker可能相同也可能不同,公司改名也会导致Ticker发生变化。比如Facebook变成Meta,代码从 FB 变成 META介绍完后,我们需要选择代码的范围,可以自己导入 txt 确定你的研究代码范围,也可以直接选择整个数据,一般是选择整个数据库。

2.3 变量筛选

使用默认即可

这里进行初步的变量筛选。
第一条 Consolidation Level 代表选择的报表层级,和 CSMAR 一样,有合并报表(C)、母公司报表(N)等
第二条 Industry Format 代表选用的报表格式,大部分公司都选择第一个,金融业的企业可能会选择第二种(注意,这里并没有剔除金融业企业,只是报表格式问题而已)
第三条 Data Format 代表选择的报表精简程度,一般选择第一种 STD,标准化的报表
第四条 Population Source,D代表样本包含美国和加拿大的上市公司,I代表纳入国际企业
第五条 Currency,计价方式,美元或者加元,全选,因为去掉 CAD 会导致加拿大上市公司的观测丢失
第六条 Company Status,公司状态,这里全选,不管上市还是退市,先留着
最后那个默认就好,其实就是排除掉一些不合理的观测

2.4 变量选择

最上面的三个选项是问你数据来源于哪里?是报表中的数据项目,还是脚注和数据代码?默认就好
变量可以一个个挑选了,几百个变量看着太累,我一般是全选下来,双击 All 就全过来了

2.5 导出格式

3 数据下载

点击 submit 后,经过漫长等待和网页多次刷新,你会得到以下页面,点击下载即可

4 数据预处理

这个数据并不是打开即用的,我们简单测试发现原始数据有以下问题:

首先解决第一个问题,fyear 缺失。观察这 10 个缺失值发现,我们可以直接用 datadate 的年份进行填充

填充后就没有缺失值了

第二个问题,重复问题,我们只要选择最新的观测即可

然后,我们需要把一些能转化成数值的字符数据进行转化

最后,压缩和保存数据(减小内存)

连起来就是

1
2
3
4
5
6
7
8
9
10
11
12
13
14
use "CCM-raw.dta", clear

ren GVKEY gvkey
order gvkey fyear datadate

replace fyear = year(datadate) if fyear == .
// 建议使用更稳妥的 replace fyear = cond(fyr <= 6, year(datadate)-1, year(datadate)) if fyear == .
// 因为会计结束月份如果在前半年一般是前一年的会计年度
gsort gvkey fyear -datadate
duplicates drop gvkey fyear, force

destring *, replace
compress
save "CCM-predo.dta"

5 常见变量

变量名 数据标签 中文含义
gvkey Standard and Poor’s Identifier 标普标识符
cik CIK Number SEC 提供的公司标识
LPERMNO Historical CRSP PERMNO Link to COMPUSTAT Record CRSP 的公司标识(permno)
LPERMCO Historical CRSP PERMCO Link to COMPUSTAT Record CRSP 的公司标识(permco),但是一个 permno 可能对应多个 permco
cusip CUSIP 美国和加拿大金融证券统一识别码,共 9 位
fyear Data Year - Fiscal 会计年度
fyr Fiscal Year-end Month 会计年度结束月份
datadate Data Date 数据日期,其实就是 日历年 + fyr + 当月最后一天
at Assets - Total 资产总计
lt Liabilities - Total 债务总计
act Current Assets - Total 流动资产
lct Current Liabilities - Total 流动债务
dlc Debt in Current Liabilities - Total 短期负债(流动债务中含息的债务,debt 代表含息的债务,本文使用负债和债务区分二者)
dltt Long-Term Debt - Total 长期负债
sale Sales/Turnover (Net) 净销售额(中国语境:营业收入)
revt Revenue - Total 营业收入(和 sale 完全一样)
oiadp Operating Income After Depreciation 息税前利润(营业利润减去折旧)
ebit Earnings Before Interest and Taxes 息税前利润(和 oiadp 完全一致)
ib Income Before Extraordinary Items 非常项目前收益(不建议用来计算 ROA,2015年被 US-GAAP 取消)
ni Net Income (Loss) 净利润
ceq Common/Ordinary Equity - Total 普通股股东权益总额
che Cash and Short-Term Investments 现金与短期投资
ch Cash 现金持有
oancf Operating Activities - Net Cash Flow 经营活动现金流净额
dp Depreciation and Amortization 折旧和摊销
ppegt Property, Plant and Equipment - Total (Gross) 固定资产总额
ppent Property, Plant and Equipment - Total (Net) 固定资产净额
intan Intangible Assets - Total 无形资产总额
dvc Dividends Common/Ordinary 现金股利
re Retained Earnings 留存收益
csho Common Shares Outstanding 流通中普通股股数
prcc_f Price Close - Annual - Fiscal 会计年度结束时的股票收盘价

6 常用指标

这里我列出一些常见的财务指标

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
xtset gvkey fyear

gen Size = ln(at) // 企业规模
gen MarketCap = ln(prcc_f * csho) // 公司市值规模
bys gvkey: egen AGE = min(fyear)
replace Age = fyear - AGE // 企业年龄,因为 IPO 日期不全,一般研究采用数据最早在 Compustat 中出现的年份作为企业出生日
gen Lev = lt / at // 总负债除以总资产
gen Lev_long = dltt / at // 长期负债除以总资产
gen Book_lev = (dltt + dlc) / at // 长期负债 + 短期负债 除以 总资产
gen ROA = ni / at // net income 除以总资产(可以考虑滞后一期的总资产)
gen ROA2 = oiadp / at // Operating Income After Depreciation 除以总资产
gen ROE = ni / ceq // Net income 除以账面价值
gen ROE2 = oiadp / ceq // Operating Income After Depreciation 除以账面价值
gen Sales_growth = sale / L.sale - 1 // sales 增长率
gen Assets_growth = at / L.at - 1 // 总资产增长率
gen MtoB = prcc_f * csho / ceq // 市值账面比
gen Cash = che / at // 现金及其等价物持有
gen Cash2 = ch / at // 现金持有
gen Cachflow = (ibc + dp) / at // 经营活动现金流
gen Cashflow_net = oancf / at // 经营活动现金流净额
gen Intan_rate = intan / at // 无形资产比例
gen Div = dvc / at // 现金股利
gen DDIV = (Div > 0) // 是否支付现金股利,建议先把 DIV 缺失值替换为 0
gen Zscore = 3.3 * (ebit / at) + 0.99 * (sale / at) + 0.6 * (csho * prcc_f / lt) + 1.2 * (act / at) + 1.4 * (re / at) // Altman Z
gen PPE = ppegt / at // 固定资产 gross
gen PPE_net = ppent / at // 固定资产净额

WRDS 实战 - CCM 的下载与预处理

https://codefoxs.github.io/2025/11/17/20-CCM/

作者

CodeFox

发布于

2025-11-17

更新于

2025-11-17

许可协议

评论