STATA HW2
* ====================================== ; * Replicating Baker and Wurgler 2004 * ====================================== ; * ====================================== ; * Step 0 - Upload Compustat Data * ====================================== ; use "C:\Users\Documents\Spring 2020\MFIN 516\STATA\BW2004.dta", clear * ====================================== ; * Step 1 - Creat key variables * ====================================== ; *Create preferred stock gen preferred=pstkl //preferred stock equals preferred stock liquidating value replace preferred=pstkrv if preferred==. //set preferred stock equal to redemption value if liquidating value is missing replace preferred=pstk if preferred==. //set preferred stock equal to par value if both, liquidating and redemption value are missing *Create Shareholder's equity gen be=seq replace be=ceq+pstk if be==. //If shareholder's equity is missing set be to common equity+preferred stock replace be=at-lt if be==. //set be equal to assets - liabilities if be still missing replace txditc=0 if txditc==. // set missing values to zero because they do not require firm to have non-missing value *Create book_equity gen book_equity=be-preferred+txditc *Create market value of equity gen market_equity=prcc_f*csho //closing price * shares outstanding at fiscal year end *Create market value of firm gen market_value=at-book_equity+market_equity *Create earnings before interes replace txdi=0 if txdi==. gen ebi=ib+xint+txdi //earnings before extraordinary+interest expense+income statament deferred taxes *Create earnings to common gen earnings_common=ib-dvp+txdi //earnings before extraordinary-preferred dividends+income statament deferred taxes *Create dividend payer variable gen payer=0 replace payer=1 if dvpsx_f>0 & dvpsx_f!=. //set payer to 1 if positive non-missing dividends gen year=year(datadate) gen liability=at-book_equity replace xrd=0 if xrd==. //set missing R&D to zero because it is not a required filter * ====================================== ; * Step 2 - Apply filters * ====================================== ; *create lagged assets to apply the filter sort gvkey year by gvkey: gen lagged_at=at[_n-1] replace lagged_at=. if year[_n-1]!=year-1 * remove firms that have missing assets in year t or t-1 drop if at==. | lagged_at==. *remove firms with missing price or shares outstanding drop if prcc_f==. | csho==. * remove firms with missing income, interest, pref dividends, dividends on ex date or preferred stock drop if ib==. | xint==. | dvp==. | dvpsx_f==. | preferred==. drop if be==. * remove firms with book_equity<$250,000 or assets<$500,000; total assets and be are reported in millions in compustat drop if book_equity<0.25 | at<0.5 *remove financial and utility firms * SIC code in compustat is saved as character destring sic, replace drop if sic>=6000 & sic<=6999 //drop financial firms drop if sic>=4900 & sic<=4949 //drop utilities keep if exchg>=11 & exchg<=19 *keep if exchg==11 | exchg==12 | exchg==14 save "C:\Users\Documents\Spring 2020\MFIN 516\STATA\Comp_BW_clean.dta", replace * ====================================== ; * Step 3 - Firm Characteristics and payers * ====================================== ; gen m_b=market_value/at //this is only for probability gen asset_growth=(at-lagged_at)/at //investment or asset growth gen e_a=ebi/at // profitability * merge with NYP - size data sort gvkey datadate merge 1:1 gvkey datadate using "C:\Users\Documents\Spring 2020\MFIN 516\STATA\NYP_Baker_Wurgler.dta" keep if _merge==3 drop _merge *use logit regression coefficients to create probability of Payer *p1 - includes M/B gen p1=-0.14+4.26*NYP-0.81*m_b-1.07*asset_growth+15.57*e_a //this is log odds not probability gen exp_payer1=exp(p1)/(1+exp(p1)) //generate probability from log odds *p2 - excludes M/B gen p2=-0.63+3.60*NYP-1.39*asset_growth+10.34*e_a gen exp_payer2=exp(p2)/(1+exp(p2)) sort year save "C:\Users\Documents\Spring 2020\MFIN 516\STATA\Comp_BW1.dta", replace * ====================================== ; * Step 4 - Propensity to Pay * ====================================== ; *aggregate the data to annual level by adding payer variables and counting the total number of firms collapse (sum) payer exp_payer1 exp_payer2 (count) num_firms=payer, by (year) *generate actual and expected proportion of payers gen actual_proportion_payer=payer/num_firms gen exp_proportion_payer1=exp_payer1/num_firms gen exp_proportion_payer2=exp_payer2/num_firms *generate propensity to pay gen ptp1=actual_proportion_payer-exp_proportion_payer1 gen ptp2=actual_proportion_payer-exp_proportion_payer2 *generate values from year t-1 gen lag_ptp1=ptp1[_n-1] gen lag_ptp2=ptp2[_n-1] *change in propensity to pay gen ptp1_chg=ptp1-lag_ptp1 gen ptp2_chg=ptp2-lag_ptp2 gen ptp1_chgp=(ptp1-lag_ptp1)/abs(lag_ptp1) gen ptp2_chgp=(ptp2-lag_ptp2)/abs(lag_ptp2) save "C:\Users\\Documents\Spring 2020\MFIN 516\STATA\Comp_BW_ptp.dta", replace twoway (line ptp1 year, sort) * ====================================== ; * Step 5 - Dividend Premium * ====================================== ; use "C:\Users\Documents\Spring 2020\MFIN 516\STATA\Comp_BW1.dta", clear gen mbc=(at-book_equity+prcc_c*csho)/at //market-to-book ratio for dividend premium gen weighted_mb=at*mbc sort year payer collapse (sum) weighted_mb at, by (year payer) gen mb=weighted_mb/at // book-value-weighted M/B ratio for payers and non-payers drop weighted_mb at *the data is in the long form, non-payers below payers (in different rows) reshape wide mb, i(year) j(payer) gen dividend_premium=log(mb1)-log(mb0) save "C:\Users\Documents\Spring 2020\MFIN 516\STATA\Comp_BW_div_prem.dta", replace *merge dividend premium with propensity to pay data merge 1:1 year using "C:\Users\Documents\Spring 2020\MFIN 516\STATA\Comp_BW_ptp.dta" *create Nixon variable dummy gen nixon=0 replace nixon=1 if year>=1972 & year<=1974 egen dp_std=std(dividend_premium) // standardized dividend premium, i.e. subtract time-series mean and divide by sample standard deviation gen lag_dp=dp_std[_n-1] * ====================================== ; * Step 6 - Replicate Table 1 * ====================================== ; tsset year reg ptp1_chg lag_dp, vce(robust) *univariate with standard error adjustment newey ptp1_chg lag_dp, lag(4) //produces t-statistcs based on Newey-West standard errors robust to heteroskedasticity and serial correlation up to a number of lags *bivariate newey ptp1_chg lag_dp nixon, lag(4) //produces t-statistcs based on Newey-West standard errors robust to heteroskedasticity and serial correlation up to a number of lags *bivariate excluding M/B from PTP calculation newey ptp2_chg lag_dp nixon, lag(4) //produces t-statistcs based on Newey-West standard errors robust to heteroskedasticity and serial correlation up to a number of lags newey ptp1_chg lag_dp nixon if year<=1977, lag(4) * ====================================== ; * Step 7 - Replicate Table 2 * ====================================== ; *generate predicted values based on our coefficients gen predicted_ptp1_chg=-0.0145984+0.0148783*lag_dp-0.0332051*nixon