cd C:\Users\Vladimir\Dropbox\Z__Natamir\Natasha_Research\Banks\Bailout_2016
use full_returns_with_tierone, clear

******* QUESTIONS
* it is not obvious what is the unique identifier of banks in the data? name? short name? permno?

*** convert t_bill_3_percent to monthly
gen rf_monthly = (1+t_bill_3_percent)^(1/12)-1

*** variables of interest
* tierone
* inverse_tierone
* ret_excess -- constructed below
* mkt_excess -- constructed below

gen ret_excess   = returns-rf_monthly
gen vwmkt_excess = vwret-rf_monthly
gen ewmkt_excess = ewret-rf_monthly
gen inverse_tierone_sq=inverse_tierone^2

* UNIQUE IDENTIFIERS OF BANKS
egen id=group(short_name)

sort id year month
by id: gen t=_n

* CREATE BACKWARD BETA
gen beta_back=.
foreach id of numlist 1/55 {
qui count if id==`id'
local t_max `=r(N)'
if `t_max'>=24 {
	foreach t of numlist 24/`t_max' {
	reg ret_excess vwmkt_excess if id==`id' & t<=`t' & t>=`=`t'-60+1'
	replace beta_back=_b[vwmkt_excess] if id==`id' & t==`t'
	}
}
}

* CREATE FORWARD BETA
gen beta_fwd=.
foreach id of numlist 1/55 {
qui count if id==`id'
local t_max `=r(N)'
if `t_max'>=24 {
	foreach t of numlist 1/`=`t_max'-23' {
	reg ret_excess vwmkt_excess if id==`id' & t>=`t' & t<=`=`t'+60-1'
	replace beta_fwd=_b[vwmkt_excess] if id==`id' & t==`t'
	}
}
}

* CREATE FORWARD BETA -- using log returns
gen beta_log_fwd=.
foreach id of numlist 1/55 {
qui count if id==`id'
local t_max `=r(N)'
if `t_max'>=24 {
	foreach t of numlist 1/`=`t_max'-23' {
	reg y_log x_log if id==`id' & t>=`t' & t<=`=`t'+60-1'
	replace beta_log_fwd=_b[x_log] if id==`id' & t==`t'
	}
}
}

* CREATE LOG FORWARD BETA - UP
capture drop beta_log_fwd_up
capture drop beta_log_fwd_up_cnt
gen beta_log_fwd_up=.
gen beta_log_fwd_up_cnt=.
foreach id of numlist 1/55 {
qui count if id==`id'
local t_max `=r(N)'
if `t_max'>=24 {
	foreach t of numlist 1/`=`t_max'-23' {
	reg y_log x_log if id==`id' & t>=`t' & t<=`=`t'+120-1' & x_log>=0
	replace beta_log_fwd_up=_b[x_log] if id==`id' & t==`t'
	replace beta_log_fwd_up_cnt=`=e(N)' if id==`id' & t==`t'
	}
}
}

* CREATE LOG FORWARD BETA - DOWN
capture drop beta_log_fwd_down
capture drop beta_log_fwd_down_cnt
gen beta_log_fwd_down=.
gen beta_log_fwd_down_cnt=.
foreach id of numlist 1/55 {
qui count if id==`id'
local t_max `=r(N)'
if `t_max'>=24 {
	foreach t of numlist 1/`=`t_max'-23' {
	reg y_log x_log if id==`id' & t>=`t' & t<=`=`t'+120-1' & x_log<0
	replace beta_log_fwd_down=_b[x_log] if id==`id' & t==`t'
	replace beta_log_fwd_down_cnt=`=e(N)' if id==`id' & t==`t'
	}
}
}

capture drop beta_fwd_UMD
gen beta_fwd_UMD=beta_fwd_up-beta_fwd_down

* it is important to run it without a constant -- assumes zero risk in the absence of risky capital
reg beta_fwd inverse_tierone, noconstant vce(cluster id)
reg beta_fwd inverse_tierone i.year, noconstant vce(cluster id)
reg beta_fwd inverse_tierone i.id, noconstant vce(cluster id)

reg beta_fwd      inverse_tierone, noconstant vce(cluster id)
reg beta_fwd_up   inverse_tierone, noconstant vce(cluster id)
reg beta_fwd_down inverse_tierone, noconstant vce(cluster id)

reg beta_fwd      inverse_tierone, vce(cluster id)
reg beta_fwd_up   inverse_tierone, vce(cluster id)
reg beta_fwd_down inverse_tierone, vce(cluster id)



*** WORK TOWARD SOME GRAPHICAL ILLUSTRATION
*** THERE ARE SOME ISSUES WITH THE GRAPHICAL ILLUSTRATION IF APPROACH THROUGH KERNEL
*** PERHAPS BEST TO ABANDON THE IDEA OF PLOTTING ANYTHING

gen inverse_tierone_grid=.
local step 0.01
foreach i of numlist 1/20 {
replace inverse_tierone_grid=`i' if inverse_tierone!=. & inverse_tierone_grid==. & inverse_tierone<=`=`step'*`i''
}

by inverse_tierone_grid, sort: egen beta_fwd_avg=mean(beta_fwd)


*** SERIAL CORRELATION
* generate lagged monthly return

sort id t
by id: gen ret_excess_prev=ret_excess[_n-1]
by id: gen ret_excess_p2=ret_excess[_n-2]

gen post_crisis=0
replace post_crisis=1 if year>=2008 & month>=8
replace post_crisis=1 if year>=2009

gen ret_excess_prev_post_crisis=ret_excess_prev*post_crisis
gen ret_excess_p2_post_crisis=ret_excess_p2*post_crisis

reg ret_excess ret_excess_prev ret_excess_p2

reg ret_excess ret_excess_prev ret_excess_prev_post_crisis post_crisis if year!=2008, vce(cluster id)
reg ret_excess ret_excess_prev if year>=2008, vce(cluster id)

reg ret_excess ret_excess_prev beta_fwd i.id if year<=2007, vce(cluster id)
reg ret_excess ret_excess_prev beta_fwd i.id if year>=2008, vce(cluster id)


* BW Table

cmf wf_table.txt

reg beta_log_fwd      bhck7204_inv
outreg2 bhck7204_inv using wf_table_2.txt, append bracket adjr2

reg beta_log_fwd_up   bhck7204_inv
outreg2 bhck7204_inv using wf_table_2.txt, append bracket adjr2

reg beta_log_fwd_down bhck7204_inv
outreg2 bhck7204_inv using wf_table_2.txt, append bracket adjr2

reg beta_log_fwd      bhck7204_inv, noconstant
outreg2 bhck7204_inv using wf_table_2.txt, append bracket adjr2

reg beta_log_fwd_up   bhck7204_inv, noconstant
outreg2 bhck7204_inv using wf_table_2.txt, append bracket adjr2

reg beta_log_fwd_down bhck7204_inv, noconstant
outreg2 bhck7204_inv using wf_table_2.txt, append bracket adjr2

*** Figure
lpoly beta_log_fwd bhck7204_inv, noscatter width(0.1) n(20) title("") ytitle("Actual Beta") xtitle("Leverage") lineopts(lpattern(dash) lcolor(black)) graphregion(fcolor(white) style(none)) yscale(range(0 3)) xscale(range(0 25)) ylabel(0(0.5)3) xlabel(0(5)25) note("") plotregion(style(none))

graph export wf_figure.png, replace
