温馨提示: 定期 清理浏览器缓存,可以获得最佳浏览体验。
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh
作者:彭礼敏 (中山大学)
邮箱:penglm3@mail2.sysu.edu.cn
目录
Fama 和 MacBeth (1973) 提出了两阶段截面回归方法 (下文简称 FM 方法或 FM 回归) ,用于检验资产预期收益和因子暴露在截面上是否呈线性关系。以原文 Period1 (1926.7-1938.7) 为例,FM 方法具体过程如下:
首先,作者用前四年的数据 (1926.7-1929.6) 估计 435 个股票的
基于估计值
在 1934.7-1938.6 期间,继续每年重新估计上式,即每年更新个股
在 1934.7-1938.7 期间,对每个投资组合,以前一月的市场因子载荷估计的均值
其中,
上述假设的理论依据为:如果 CAPM 成立,那么
上文简要介绍了 FM 回归在 Fama 和 MacBeth (1973) 文中的应用,接下来,我们将具体介绍模型是如何设定的。
从最简单的 CAPM 模型开始:
其中,
用
更一般的,如果有
对于上述模型,FM 方法分两步进行估计:
第一步:先对各个资产
第二步:用第一步得到的
最后,对每一期估计结果
FM 方法的优势是得到了异方差稳健的标准误,且修正了面板数据在截面上的相关性。此外,由于第二步是每期做一次截面回归,所以允许使用时变的
EIV 问题和修正
由于以第一阶段估计量作为第二阶段自变量引入了 EIV 问题,FM 标准误是不一致的。Shanken (1992) 给出了对 EIV 的修正项。如果残差项
其中,
时序相关问题和修正
当残差序列存在时序相关时,FM 标准误也是不一致的。Newey 和 West (1987) 的思路是在因子收益率协方差矩阵估计
对于 FM 回归,现有的两个命令 xtfmb
和 asreg fmb
都只是做了第二步截面回归,并都可以汇报 Newey-West 标准误。
FM 第一阶段时序回归可以通过 asreg
的 bysort
和 window
选项对各个资产进行带滚动时间窗口的分组回归实现。
FM 第二阶段截面回归可以通过 asreg
的 fmb
选项实现。该选项在每一时期进行一次截面回归,最终汇报的系数估计值和 R 方是每次回归对应系数估计值和 R 方的均值。
[bysort varlist:] asreg depvar indepvars [if] [in] [, window(rangevar # )
noconstant recursive minimum(#) by(varlist) {statistics_options}
newey(#) fmb save(file name) first]
主要选项的含义为:
bysort varlist
: 按 varlist
中的变量进行分组回归;depvar
:被解释变量;indepvars
:解释变量;window(rangevar # )
: 设置滚动窗口长度,由 rangevar #
给出长度,如 window(year 24)
的意思就是时间长度对应 year 变量 24 个观测值;recursive
: 递归时间窗口,即固定起始时刻,结束时刻不断前移;minimum(#)
: 设定在样本数高于 #
时才做回归;by(varlist)
: 与 bysort varlist
功能相同,按 varlist
中的变量进行分组回归;statistics_options
: 汇报相应统计量,有 fitted
, serror
, rmse
, nonconstant
, other
五个选项;fmb
:进行 FM 第二阶段回归;newey(#)
:汇报考虑 #
阶滞后项异方差、自相关一致的 Newey-West (1987) 标准误,#
必须是整数;save(file name)
:将第二阶段回归每一期截面回归的系数估计值、R 方和调整后 R 方保存至 file name.dta
;first
:显示第二阶段回归每一期截面回归的系数估计值、R 方和调整后 R 方。与 asreg
的 fmb
选项相同, xtfmb
在每一时期进行一次截面回归,最终汇报每期截面回归系数估计值和 R 方的均值。
xtfmb depvar [indepvars] [if] [in] [weight] [, level(#) verbose lag(#)]
主要选项的含义为:
depvar
:被解释变量;indepvars
:解释变量;level(#)
:设置汇报结果时的置信区间水平,默认是 95% 置信区间;verbose
:显示第二阶段回归每一期截面回归的系数估计值和 R 方;lag(#)
:汇报考虑 # 阶滞后项异方差、自相关一致的 Newey-West (1987) 标准误。注意事项:
xtfmb
和 asreg fmb
帮助文件中说第一阶段是对每期进行截面回归,第二阶段是取每期系数平均得到最终估计值。这里的第一、二阶段实际都是 FM 第二阶段回归;xtfmb
之前,要对数据进行 tsset
;asreg fmb
在估计 Newey-West 标准误时允许数据集在时间序列上有缺失,而 xtfmb
会报错。
下面我们用投资组合数据估计一个简单的 CAPM 模型,来说明 FM 两阶段回归的基本步骤。其中,数据来源于「Ken French 主页」的研究数据,主要使用了「25 Portfolios Formed on Size and Book-to-Market」 中的 25 个投资组合 1926.7-2020.10 期间的月度收益率,和「Fama/French 3 Factors」 中的无风险收益、市场超额收益数据。主要变量如下:
经过初步处理后数据形式如下:
*完整数据和程序地址:https://gitee.com/arlionn/data/tree/master/data01/Fama-Macbeth
list in 1131/1135
+--------------------------------------+
| port_num t mktrf rpe |
|--------------------------------------|
1. | 1 2020m9 -0.036 -0.002 |
2. | 1 2020m10 -0.021 -0.032 |
3. | 2 1926m7 0.030 -0.033 |
4. | 2 1926m8 0.026 -0.056 |
5. | 2 1926m9 0.004 -0.018 |
+--------------------------------------+
主要描述性统计量如下:
. tabstat mktrf rpe if (t>=ym(1930,1) & t<=ym(1938,12)), ///
stats(mean sd min max p1 p25 p50 p75 p99) ///
column(s) long format(%4.3f)
variable | mean sd min max p1 p25 p50 p75 p99
----------+-----------------------------------------------------------------
mktrf | 0.005 0.107 -0.291 0.389 -0.238 -0.062 0.004 0.057 0.371
rpe | 0.013 0.179 -0.532 1.546 -0.319 -0.088 0.002 0.078 0.702
----------------------------------------------------------------------------
结果显示,收益率方差较大,且存在异常值。由于缩尾处理后对整体结果没有太大影响,因此后文使用了未经缩尾的原始数据。
第一阶段使用 asreg
估计
在第一个滚动窗口 (1930m1-1934m12),对每个投资组合
其中,
使用 bysort
和 asreg
实现对每个投资组合的滚动窗口回归:
bys port_num: asreg rp mktrf if (t>=ym(1930,1) & t<=ym(1938,12)) , wind(t 60) rmse se // 分组时序回归,窗口60月,每个投资组合为一组,保存rmse se
keep if _Nobs==60 // 保留样本数为60的
list in 46/50
+---------------------------------------------------------------------------------------------------------------+
| port_num t mktrf rpe _rmse _Nobs _R2 _adjR2 _b_mktrf _b_cons _se_mk~f _se_cons |
|---------------------------------------------------------------------------------------------------------------|
1. | 1 1938m9 0.01 -0.14 0.16 60 0.42 0.41 1.90 -0.00 0.29 0.02 |
2. | 1 1938m10 0.08 0.12 0.16 60 0.42 0.41 1.91 -0.00 0.29 0.02 |
3. | 1 1938m11 -0.02 -0.04 0.16 60 0.44 0.43 1.97 -0.00 0.29 0.02 |
4. | 1 1938m12 0.04 0.04 0.15 60 0.47 0.46 1.97 0.00 0.28 0.02 |
5. | 2 1934m12 0.00 -0.01 0.22 60 0.48 0.47 1.62 0.03 0.22 0.03 |
+---------------------------------------------------------------------------------------------------------------+
对于投资组合
下面是 25 个投资组合时序回归的结果:
tabstat _b_mktrf _se_mktrf _R2 _rmse, by(port_num) stat(mean) format(%4.2f) // pass1 均值
Summary statistics: mean
by categories of: port_num (portfolio number)
port_num | _b_mktrf _se_mk~f _R2 _rmse
---------+----------------------------------------
1 | 1.89 0.26 0.48 0.21
2 | 1.82 0.23 0.52 0.19
3 | 1.87 0.15 0.72 0.12
(省略)
23 | 1.26 0.04 0.95 0.03
24 | 1.50 0.06 0.92 0.05
25 | 1.69 0.12 0.78 0.10
---------+----------------------------------------
Total | 1.50 0.10 0.81 0.08
--------------------------------------------------
在正式做回归之前,大致查看下超额收益和市场
该图画出了 1935m1 和 1938m1 两个时间节点上投资组合超额收益率 rpe 和上一月
当前数据结构:
tsset port_num t
panel variable: port_num (strongly balanced)
time variable: t, 1935m1 to 1938m12
delta: 1 month
format rpe beta Lbeta %4.2f
list in 47/51
+-------------------------------------------+
| port_num t rpe beta Lbeta |
|-------------------------------------------|
1. | 1 1938m11 -0.04 1.97 1.91 |
2. | 1 1938m12 0.04 1.97 1.97 |
3. | 2 1935m1 -0.07 1.62 1.62 |
4. | 2 1935m2 -0.16 1.62 1.62 |
5. | 2 1935m3 -0.15 1.63 1.62 |
+-------------------------------------------+
第二阶段是以第一阶段
对于第一次截面回归 (
下面使用 xtfmb
进行第二阶段估计,基本的命令如下:
global regvar "rpe Lbeta"
xtfmb $regvar
est store m1
Fama-MacBeth (1973) Two-Step procedure Number of obs = 1200
Num. time periods = 48
F( 1, 47) = 0.91
Prob > F = 0.3437
avg. R-squared = 0.2567
---------------------------------------------------------------------
| Fama-MacBeth
rpe | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------+-------------------------------------------------------------
Lbeta | 0.012 0.013 0.96 0.344 -0.014 0.038
_cons | -0.003 0.013 -0.22 0.823 -0.029 0.024
---------------------------------------------------------------------
verbose
选项给出每一时期截面回归的结果,lag(4)
选项汇报考虑四阶自相关的 Newey-West 修正标准误。
tfmb $regvar, verbose lag(4) // verbose显示每期回归的lambda_t,考虑四阶自相关的 newey-west correction
est store m2
Fama-MacBeth (1973) Two-Step procedure Number of obs = 1200
Num. time periods = 48
F( 1, 47) = 0.75
Prob > F = 0.3899
Newey-West corrected SE (lag length: 4) avg. R-squared = 0.2567
--------------------------------------------------------------------
| Fama-MacBeth
rpe | Coef. Std. Err. t P>|t| [95% Conf. Interval]
-------+------------------------------------------------------------
Lbeta | 0.012 0.014 0.87 0.390 -0.016 0.041
_cons | -0.003 0.012 -0.25 0.806 -0.027 0.021
--------------------------------------------------------------------
Coefficient estimates and R-squared of the cross-sectional regressions in step 1
+-----------------------------------------+
| t Lbeta constant R2 |
|-----------------------------------------|
| -300 -.024564 -.010588 .0349527 |
| -299 -.163997 .1709705 .7057621 |
| -298 -.0481288 -.0088595 .1374627 |
(截取部分结果)
| -255 .1308773 -.0390214 .2675762 |
| -254 -.0661581 .058338 .3761048 |
| -253 -.0134165 .0538785 .0088549 |
|-----------------------------------------|
| Mean .0122536 -.0029518 .2567224 |
| N 48 48 48 |
+-----------------------------------------+
下面使用 asreg fmb
实现同样的功能,基本命令如下:
asreg $regvar, fmb
estadd scalar r2_a = e(adjr2) //asreg fmb汇报的adjr2需要手动添加
est store m3
asreg $regvar, fmb first newey(4) save(FirstStage) //考虑四阶自相关的newey&west correction,保存lambda_t至FirstStage.dta
estadd scalar r2_a = e(adjr2)
est store m4
local mt "xtfmb xtfmb_newey asreg asreg_newey"
local m "m1 m2 m3 m4"
local t "Fama-Macbeth second pass regression"
local n "Data Source: Ken French Data Library"
esttab `m', title(`t') mtitle(`mt') star(* 0.1 ** 0.05 *** 0.01) r2 ar2 label nogap addnote(`n') b(%4.3f) t(%4.3f)
Fama-Macbeth second pass regression
-----------------------------------------------------------------------
(1) (2) (3) (4)
xtfmb xtfmb_newey asreg asreg_newey
-----------------------------------------------------------------------
beta_i,t-1 0.012 0.012 0.012 0.012
(0.956) (0.868) (0.956) (0.868)
Constant -0.003 -0.003 -0.003 -0.003
(-0.224) (-0.247) (-0.224) (-0.247)
-----------------------------------------------------------------------
Observations 1200 1200 1200 1200
R-squared 0.257 0.257 0.257 0.257
Adjusted R-squared 0.257 0.257
-----------------------------------------------------------------------
t statistics in parentheses
Data Source: Ken French Data Library
* p<0.1, ** p<0.05, *** p<0.01
上表的前两列是 xtmfb
的结果,后两列是 asreg fmb
的结果,(1)、(3) 列汇报了 FM 标准误,(2)、(4) 列是 Newey-West 修正标准误。
值得一提的是,asreg fmb
比 xtfmb
多了保存每一时期回归结果的功能,即 save
选项。此外 xtfmb
不返回调整后 R 方,需要我们手动计算。
除了 xtfmb
和 asreg fmb
,也可以用 statsby
命令得到相似的结果,命令如下:
* 分组回归:以每个时期为一组
use pass1, clear
statsby _b _se, by(t): reg $regvar // 每期做一次截面回归
如果第二阶段回归有多个自变量,可以通过局部暂元和 foreach
语句简便快捷地得到它们的斜率估计值、标准误和 t 值:
local vars "_b_Lbeta"
foreach v of varlist `vars'{
qui sum `v'
scalar lambda_`v' = r(mean)
scalar se_`v' = r(sd)/sqrt(r(N))
scalar t_`v' = lambda_`v'/se_`v'
disp in green "Second Pass result of " in yellow "`v'"
disp in green "coefficient " in yellow %4.3f lambda_`v'
disp in green "standard error " in yellow %4.3f se_`v'
disp in green "t statistics " in yellow %4.3f t_`v'
}
Second Pass result of _b_Lbeta
coefficient 0.012
standard error 0.013
t statistics 0.956
相比而言,这个方法能让我们看到 xtfmb
、asreg fmb
不汇报的统计量,比如每次截面回归斜率的标准误,而 xtfmb
、asreg fmb
能让我们更方便地获得 Newey-West 标准误。
Note:产生如下推文列表的命令为:
lianxh 滚动 分组, m
安装最新版lianxh
命令:
ssc install lianxh, replace
连享会-直播课 上线了!
http://lianxh.duanshu.com
免费公开课:
直击面板数据模型 - 连玉君,时长:1小时40分钟,课程主页 Stata 33 讲 - 连玉君, 每讲 15 分钟. Stata 小白的取经之路 - 龙志能,时长:2 小时,课程主页 部分直播课 课程资料下载 (PPT,dofiles等)
支持回看
专题 | 嘉宾 | 直播/回看视频 |
---|---|---|
⭐ 最新专题 | 因果推断, 空间计量,寒暑假班等 | |
⭕ 数据清洗系列 | 游万海 | 直播, 88 元,已上线 |
研究设计 | 连玉君 | 我的特斯拉-实证研究设计,-幻灯片- |
面板模型 | 连玉君 | 动态面板模型,-幻灯片- |
面板模型 | 连玉君 | 直击面板数据模型 [免费公开课,2小时] |
Note: 部分课程的资料,PPT 等可以前往 连享会-直播课 主页查看,下载。
关于我们
课程, 直播, 视频, 客服, 模型设定, 研究设计, stata, plus, 绘图, 编程, 面板, 论文重现, 可视化, RDD, DID, PSM, 合成控制法
等
连享会小程序:扫一扫,看推文,看视频……
扫码加入连享会微信群,提问交流更方便
✏ 连享会学习群-常见问题解答汇总:
✨ https://gitee.com/arlionn/WD
New!
lianxh
命令发布了:
随时搜索连享会推文、Stata 资源,安装命令如下:
. ssc install lianxh
使用详情参见帮助文件 (有惊喜):
. help lianxh