Announcement

Collapse
No announcement yet.
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Generating Idiosyncratic skewness

    I want to use the code which is written below to generate monthly idiosyncratic skewness which is equal to skewness of residuals obtained each month by regressing rt on mkt, smb and hml using twelve months daily rt, mkt, smb and hml data from months beginning t-11 and ending month t. This code I get from some post in Stata forum. I am not getting what these two line (which is highlighted in red colour below in code) are telling and what -99 is representing. Please help me in understanding these lines. Thank you

    * Change date to STATA format
    gen date1=date(month,"DMY")
    format date1 %td
    drop month
    rename date1 date
    gen mdate= mofd(date)
    format mdate %tm
    * Calculate Raw Returns Returns
    bysort stock_id (date) : gen rt_r =((pr[_n]-pr[_n-1])/pr[_n-1])
    bysort stock_id (date) : gen mkt_r =((mk[_n]-mk[_n-1])/mk[_n-1])
    gen rt=rt_r-rf
    gen mkt=mkt_r-rf
    gen mkt2 = mkt^2
    * Generate monthly idiosyncratic skewness
    capture program drop one_regression
    program define one_regression
    regress rt mkt mkt2
    tempvar resid // no need to keep resid around after the program
    predict `resid', resid
    summ `resid', detail
    gen double skewness = r(skewness)
    gen obs = r(N)
    end

    bysort stock_id mdate (date): gen high = cond(_n==1, mdate, -99)
    rangerun one_regression, by(stock_id) interval(mdate -11 high)


    keep if mdate==high // <-- just to help reduce to 1 summary observation per mdate-stock combination
    keep stock* mdate skewness obs // <-- keep summary variables

    drop if mdate<ym(2002,6)
    drop if mdate>ym(2003,5)
    replace skewness =. if obs<200
    drop obs
    rename skewness idioskew
Working...
X