本篇文章介绍如何利用SAS实现将MB拆解为误定价与成长机会的方法,在估计上不需要应用到SAS的宏语句,进行回归估计后,再计算系数值的平均,就能得到需要的答案。
若有想了解的议题,请来信sas@jlu.edu.cn。
本篇文章主要参考文献为
Rhodes-Kropf, M.,Robinson, D.,and Viswanathan, S., Valuation Wavesand Merger Activity:The Empirical Evidence, Journalof Financial Economics,2005,77(3):561-603.
Hertzel, M., G., and Li, Z., Behavioral and Rational Explanations of Stock Price Performance around SEOs: Evidence from a Decomposition of Market-to-BookRatios, Journal of Financial and Quantitative Analysis, 2010,15(4): 935-958.
Alzahrani, M., and Rao, R. P., Managerial Behavior and the Link between Stock Mispricing and Corporate Investments: Evidence from Market-to-Book Ratio Decomposition, The Financial Review, 2014, 49(1): 89–116.
Market-to-Book ratio一直以来存在的多种歧异的解释,某些研究认为是股票的误定价,一些文献则认为是公司的成长机会,而另外一派学者认为其跟公司的破产风险有关,也因此采用Market-to-Book ratio来进行研究时,常会出现混淆的结果,Rhodes et al. (2005) 最早将MB ratio拆解成三个成分,用其来检验并购浪潮,后续则开始运用到理性以及非理性的解释,而在中国研究中,也开始采用该指标进行公司决策的研究,也因此本篇文章介绍如何使用SAS来实现MB拆解的编程。
MB拆解中,主要估计下式
m:市场价值:证券市场价格加资产账面价值减递延所得税减权益账面价值,取自然对数
b:权益的账面价值取自然对数
ln(NI):净利润取绝对值后计算自然对数值
I(<0)ln(NI):若净利为负,则I(<0)=1,其他为0,了解亏损企业对价值的影响
Lev:市场杠杆1减去(证券市场价值/市场价值)
首先每个产业每年估计该回归式,求得所有的回归系数值,模型所预测的数值
之后,再计算所有期间下,该产业系数值的均值,并计算该系数均值所能得到的市值预测值。
最后可以将MB拆解为三个部分
接下来为SAS程序的部份
output out=mb_pre p=pred_m;
表示将数据输出到mb_pre这个档案 预测值为pred_m
以下为MB_decompose的档案数据
以下long_est(产业长期均值数据)
完整SAS编程如下
libname aa 'D:\SAS HOME\data';
proc sql;
create table mb as select
a.stkcd,b.year,
sum(a.mv,b.ta,-def_ITAT,def_ITDB,equity) as m,
b.equity as b,ni,
1-a.mv/sum(a.mv,b.ta,-def_ITAT,def_ITDB,equity) as lev
from aa.stk_mprc as a, aa.aacc as b
where a.stkcd=b.stkcd and a.year=b.year
and a.month=12
order bya.year,a.stkcd;
quit;
data mb_de;
set mb;
m=log(m);
b=log(b);
if ni<0 then ini=log(abs(ni));
else ini=0;
ni=log(abs(ni));
if substr(stkcd,1,1)='0' then industry=1;
else industry=0;
run;
proc sort data=mb_de;by industry year;
run;
proc reg data=mb_de noprint outest=decom_est;
model m=b ni ini lev;
by industry year;
output out=mb_pre P=pred_M;
quit;
proc means noprint data=decom_est(where=(_rmse_^=.));
var intercept b ni ini lev ;
by industry;
output out=long_est mean=intercept b ni ini lev;
run;
proc sql;
create table MB_decompose as select distinct
a.year,a.stkcd,a.industry, a.m, a.b, a.m-a.pred_m as FSE,
a.pred_m-(b.intercept+a.b*b.b+a.ni*b.ni+a.ini*b.ini+a.lev*b.lev) as TSSE,
(b.intercept+a.b*b.b+a.ni*b.ni+a.ini*b.ini+a.lev*b.lev)-a.b as LRVTB
from mb_pre a,long_est b
where a.industry=b.industry and a.b^=.;
quit;
[小天使专区] 有需要SAS之家协助,欢迎在小天使专区留言
联系客服