Dear Statalist community,
I am a student from the Netherlands and I am currently writing my master's thesis.
For my research, I am required to calculate the cost of equity capital using the method of Gebhardt et al. (2001), see full reference below.
I already used advice from another post on Statalist on this topic, but still did not proceed to obtain any good results: https://www.statalist.org/forums/for...equity-capital.
The formula for the Gebhardt et al. (2001) model is as follows, as explained by El Ghoul et al. (2011):

The explicit forecast horizon is set to 3 years, beyond which forecasted ROE decays to the median industry ROE by the 12th year, and remains constant thereafter. Dividend payout is assumed to be constant. For the first 3 years, FOREt+i is set equal to FEPSt+i=Bt+i-1.
Beyond the third year, FORE fades linearly to the industry median ROE by the 12th year.
Industries are defined according to the Fama and French (1997) classification and the median industry ROE is calculated over the past 10 years excluding loss firms.
The expected dividend payout ratio DPRt+i is set equal to DPS0=EPS0.
I have attached a .xlsx dataset with the following variables:
bv0-bv11 = book values per share for t = 0 to 11
froe1-froe12 = forecasted return on equity for periods t+1 to t+12
p = current stock price
In a STATA guide that I received from my university, I have found the following code (do-file also included):
In this code we simply tell Stata to try N different values of r to compute v and then store the value of r that results in the smallest distance between v and p.
The code was originally meant to be used with the Claus and Thomas (2001) model that I have succesfully used, but the Gebhardt et al. (2001) model is similar. I have changed the code
for use with the Gebhardt et al. (2001) model. However, when I run the code, I only obtain results of .49000, which happens to be my upper bound in the code.
As I am relatively new to STATA, I do not know how to fix the code.
Therefore, any suggestions to fix my code or another way to code it would be very helpful!
Thank you in advance.
Kind regards,
Robin Wind
I am a student from the Netherlands and I am currently writing my master's thesis.
For my research, I am required to calculate the cost of equity capital using the method of Gebhardt et al. (2001), see full reference below.
I already used advice from another post on Statalist on this topic, but still did not proceed to obtain any good results: https://www.statalist.org/forums/for...equity-capital.
The formula for the Gebhardt et al. (2001) model is as follows, as explained by El Ghoul et al. (2011):
The explicit forecast horizon is set to 3 years, beyond which forecasted ROE decays to the median industry ROE by the 12th year, and remains constant thereafter. Dividend payout is assumed to be constant. For the first 3 years, FOREt+i is set equal to FEPSt+i=Bt+i-1.
Beyond the third year, FORE fades linearly to the industry median ROE by the 12th year.
Industries are defined according to the Fama and French (1997) classification and the median industry ROE is calculated over the past 10 years excluding loss firms.
The expected dividend payout ratio DPRt+i is set equal to DPS0=EPS0.
I have attached a .xlsx dataset with the following variables:
bv0-bv11 = book values per share for t = 0 to 11
froe1-froe12 = forecasted return on equity for periods t+1 to t+12
p = current stock price
In a STATA guide that I received from my university, I have found the following code (do-file also included):
Code:
use [INSERT PATH], clear gen r=. gen diff=. gen id=_n sum id local m=r(max) forvalues u=1(1)`m'{ local a=bv0[`u'] local b=bv1[`u'] local c=bv2[`u'] local i=bv3[`u'] local j=bv4[`u'] local k=bv5[`u'] local l=bv6[`u'] local ff=bv7[`u'] local gg=bv8[`u'] local o=bv9[`u'] local p=bv10[`u'] local aa=bv11[`u'] local d=froe1[`u'] local e=froe2[`u'] local f=froe3[`u'] local bb=froe4[`u'] local s=froe5[`u'] local t=froe6[`u'] local ee=froe7[`u'] local cc=froe8[`u'] local w=froe9[`u'] local x=froe10[`u'] local y=froe11[`u'] local z=froe12[`u'] local h=p[`u'] forvalues q=1(1)4900{ local r=0.01+0.0001*(`q'-1) local v=`a'+(`d'-`r'*`a')/(1+`r')+(`e'-`r'*`b')/(1+`r')^2+ /// (`f'-`r'*`c')/(1+`r')^3+(`bb'-`r'*`i')/(1+`r')^4+(`s'-`r'*`j')/(1+`r')^5+/// (`t'-`r'*`k')/(1+`r')^6+(`ee'-`r'*`l')/(1+`r')^7+(`cc'-`r'*`ff')/(1+`r')^8+/// (`w'-`r'*`gg')/(1+`r')^9+(`x'-`r'*`o')/(1+`r')^10+/// (`y'-`r'*`p')/(1+`r')^11+(`z'-`r'*`aa')/(`r'*(1+`r')^11) local dd=abs(`v'-`h') if `dd'<diff[`u'] { qui replace r=`r' if id==`u' qui replace diff=`dd' if id==`u' } local rr=r[`u'] } di `u' ": " `rr' }
The code was originally meant to be used with the Claus and Thomas (2001) model that I have succesfully used, but the Gebhardt et al. (2001) model is similar. I have changed the code
for use with the Gebhardt et al. (2001) model. However, when I run the code, I only obtain results of .49000, which happens to be my upper bound in the code.
As I am relatively new to STATA, I do not know how to fix the code.
Therefore, any suggestions to fix my code or another way to code it would be very helpful!
Thank you in advance.
Kind regards,
Robin Wind
Comment