Announcement

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

  • Grs test

    Hi Statalist Members!

    I am conducting a research on variation of the average returns on 12 portfolio industries in the American market and I investigate which, among the Capital Asset Pricing (CAPM), Fama-French Three-Factors (FF3), Carhart (MoM), stor and Stambaugh (liquidity_model) and the Fama-French Five-Factors model is the best model.

    In order to do so, the GRS TEST (analysing IN-SAMPLE and SUB-SAMPLES) is employed as follows:


    // GRS TEST //


    //IN-SAMPLE//
    ** CAPM **
    grstest2 NoDurrf Durblrf Manfrf Enrgyrf Chemsrf BusEqrf Telcmrf Utilsrf Shopsrf Hlthrf Moneyrf Otherrf , flist( mkt_minus_rf) alphas
    ** FF3 **
    grstest2 NoDurrf Durblrf Manfrf Enrgyrf Chemsrf BusEqrf Telcmrf Utilsrf Shopsrf Hlthrf Moneyrf Otherrf , flist( mkt_minus_rf smb hml) alphas
    ** MoM **
    grstest2 NoDurrf Durblrf Manfrf Enrgyrf Chemsrf BusEqrf Telcmrf Utilsrf Shopsrf Hlthrf Moneyrf Otherrf , flist( mkt_minus_rf smb hml mom) alphas
    ** liquidity model **
    grstest2 NoDurrf Durblrf Manfrf Enrgyrf Chemsrf BusEqrf Telcmrf Utilsrf Shopsrf Hlthrf Moneyrf Otherrf , flist( mkt_minus_rf smb hml trad_liq) alphas
    ** FF5 **
    grstest2 NoDurrf Durblrf Manfrf Enrgyrf Chemsrf BusEqrf Telcmrf Utilsrf Shopsrf Hlthrf Moneyrf Otherrf , flist( mkt_minus_rf smb hml rmw cma) alphas


    // SUB-SAMPLES //
    ** VARIABLES CREATION **v
    gen NoDurrf_1= NoDurrf if tin(1970m6, 1978m4)
    gen Durblrf_1= Durblrf if tin(1970m6, 1978m4)
    gen Manfrf_1= Manfrf if tin(1970m6, 1978m4)
    gen Enrgyrf_1= Enrgyrf if tin(1970m6, 1978m4)
    gen Chemsrf_1= Chemsrf if tin(1970m6, 1978m4)
    gen BusEqrf_1= BusEqrf if tin(1970m6, 1978m4)
    gen Telcmrf_1= Telcmrf if tin(1970m6, 1978m4)
    gen Utilsrf_1= Utilsrf if tin(1970m6, 1978m4)
    gen Shopsrf_1= Shopsrf if tin(1970m6, 1978m4)
    gen Hlthrf_1= Hlthrf if tin(1970m6, 1978m4)
    gen Moneyrf_1= Moneyrf if tin(1970m6, 1978m4)
    gen Otherrf_1= Otherrf if tin(1970m6, 1978m4)

    gen NoDurrf_2= NoDurrf if tin(1978m5, 1986m3)
    gen Durblrf_2= Durblrf if tin(1978m5, 1986m3)
    gen Manfrf_2= Manfrf if tin(1978m5, 1986m3)
    gen Enrgyrf_2= Enrgyrf if tin(1978m5, 1986m3)
    gen Chemsrf_2= Chemsrf if tin(1978m5, 1986m3)
    gen BusEqrf_2= BusEqrf if tin(1978m5, 1986m3)
    gen Telcmrf_2= Telcmrf if tin(1978m5, 1986m3)
    gen Utilsrf_2= Utilsrf if tin(1978m5, 1986m3)
    gen Shopsrf_2= Shopsrf if tin(1978m5, 1986m3)
    gen Hlthrf_2= Hlthrf if tin(1978m5, 1986m3)
    gen Moneyrf_2= Moneyrf if tin(1978m5, 1986m3)
    gen Otherrf_2= Otherrf if tin(1978m5, 1986m3)

    gen NoDurrf_3= NoDurrf if tin(1986m4, 1994m2)
    gen Durblrf_3= Durblrf if tin(1986m4, 1994m2)
    gen Manfrf_3= Manfrf if tin(1986m4, 1994m2)
    gen Enrgyrf_3= Enrgyrf if tin(1986m4, 1994m2)
    gen Chemsrf_3= Chemsrf if tin(1986m4, 1994m2)
    gen BusEqrf_3= BusEqrf if tin(1986m4, 1994m2)
    gen Telcmrf_3= Telcmrf if tin(1986m4, 1994m2)
    gen Utilsrf_3= Utilsrf if tin(1986m4, 1994m2)
    gen Shopsrf_3= Shopsrf if tin(1986m4, 1994m2)
    gen Hlthrf_3= Hlthrf if tin(1986m4, 1994m2)
    gen Moneyrf_3= Moneyrf if tin(1986m4, 1994m2)
    gen Otherrf_3= Otherrf if tin(1986m4, 1994m2)

    gen NoDurrf_4= NoDurrf if tin(1994m3, 2002m1)
    gen Durblrf_4= Durblrf if tin(1994m3, 2002m1)
    gen Manfrf_4= Manfrf if tin(1994m3, 2002m1)
    gen Enrgyrf_4= Enrgyrf if tin(1994m3, 2002m1)
    gen Chemsrf_4= Chemsrf if tin(1994m3, 2002m1)
    gen BusEqrf_4= BusEqrf if tin(1994m3, 2002m1)
    gen Telcmrf_4= Telcmrf if tin(1994m3, 2002m1)
    gen Utilsrf_4= Utilsrf if tin(1994m3, 2002m1)
    gen Shopsrf_4= Shopsrf if tin(1994m3, 2002m1)
    gen Hlthrf_4= Hlthrf if tin(1994m3, 2002m1)
    gen Moneyrf_4= Moneyrf if tin(1994m3, 2002m1)
    gen Otherrf_4= Otherrf if tin(1994m3, 2002m1)

    gen NoDurrf_5= NoDurrf if tin(2002m2, 2009m12)
    gen Durblrf_5= Durblrf if tin(2002m2, 2009m12)
    gen Manfrf_5= Manfrf if tin(2002m2, 2009m12)
    gen Enrgyrf_5= Enrgyrf if tin(2002m2, 2009m12)
    gen Chemsrf_5= Chemsrf if tin(2002m2, 2009m12)
    gen BusEqrf_5= BusEqrf if tin(2002m2, 2009m12)
    gen Telcmrf_5= Telcmrf if tin(2002m2, 2009m12)
    gen Utilsrf_5= Utilsrf if tin(2002m2, 2009m12)
    gen Shopsrf_5= Shopsrf if tin(2002m2, 2009m12)
    gen Hlthrf_5= Hlthrf if tin(2002m2, 2009m12)
    gen Moneyrf_5= Moneyrf if tin(2002m2, 2009m12)
    gen Otherrf_5= Otherrf if tin(2002m2, 2009m12)

    gen NoDurrf_6= NoDurrf if tin(2010m1, 2017m12)
    gen Durblrf_6= Durblrf if tin(2010m1, 2017m12)
    gen Manfrf_6= Manfrf if tin(2010m1, 2017m12)
    gen Enrgyrf_6= Enrgyrf if tin(2010m1, 2017m12)
    gen Chemsrf_6= Chemsrf if tin(2010m1, 2017m12)
    gen BusEqrf_6= BusEqrf if tin(2010m1, 2017m12)
    gen Telcmrf_6= Telcmrf if tin(2010m1, 2017m12)
    gen Utilsrf_6= Utilsrf if tin(2010m1, 2017m12)
    gen Shopsrf_6= Shopsrf if tin(2010m1, 2017m12)
    gen Hlthrf_6= Hlthrf if tin(2010m1, 2017m12)
    gen Moneyrf_6= Moneyrf if tin(2010m1, 2017m12)
    gen Otherrf_6= Otherrf if tin(2010m1, 2017m12)

    ** CAPM **
    grstest2 NoDurrf_1 Durblrf_1 Manfrf_1 Enrgyrf_1 Chemsrf_1 BusEqrf_1 Telcmrf_1 Utilsrf_1 Shopsrf_1 Hlthrf_1 Moneyrf_1 Otherrf_1, flist( mkt_minus_rf) alphas
    ** FF3 **
    grstest2 NoDurrf_1 Durblrf_1 Manfrf_1 Enrgyrf_1 Chemsrf_1 BusEqrf_1 Telcmrf_1 Utilsrf_1 Shopsrf_1 Hlthrf_1 Moneyrf_1 Otherrf_1 , flist( mkt_minus_rf smb hml) alphas
    ** MoM **
    grstest2 NoDurrf_1 Durblrf_1 Manfrf_1 Enrgyrf_1 Chemsrf_1 BusEqrf_1 Telcmrf_1 Utilsrf_1 Shopsrf_1 Hlthrf_1 Moneyrf_1 Otherrf_1 , flist( mkt_minus_rf smb hml mom) alphas
    ** liquidity model **
    grstest2 NoDurrf_1 Durblrf_1 Manfrf_1 Enrgyrf_1 Chemsrf_1 BusEqrf_1 Telcmrf_1 Utilsrf_1 Shopsrf_1 Hlthrf_1 Moneyrf_1 Otherrf_1 , flist( mkt_minus_rf smb hml trad_liq) alphas
    ** FF5 **
    grstest2 NoDurrf_1 Durblrf_1 Manfrf_1 Enrgyrf_1 Chemsrf_1 BusEqrf_1 Telcmrf_1 Utilsrf_1 Shopsrf_1 Hlthrf_1 Moneyrf_1 Otherrf_1 , flist( mkt_minus_rf smb hml rmw cma) alphas

    ** 1978m5 to 1986m3 **
    ** CAPM **
    grstest2 NoDurrf_2 Durblrf_2 Manfrf_2 Enrgyrf_2 Chemsrf_2 BusEqrf_2 Telcmrf_2 Utilsrf_2 Shopsrf_2 Hlthrf_2 Moneyrf_2 Otherrf_2 , flist( mkt_minus_rf) alphas
    ** FF3 **
    grstest2 NoDurrf_2 Durblrf_2 Manfrf_2 Enrgyrf_2 Chemsrf_2 BusEqrf_2 Telcmrf_2 Utilsrf_2 Shopsrf_2 Hlthrf_2 Moneyrf_2 Otherrf_2 , flist( mkt_minus_rf smb hml) alphas
    ** MoM **
    grstest2 NoDurrf_2 Durblrf_2 Manfrf_2 Enrgyrf_2 Chemsrf_2 BusEqrf_2 Telcmrf_2 Utilsrf_2 Shopsrf_2 Hlthrf_2 Moneyrf_2 Otherrf_2 , flist( mkt_minus_rf smb hml mom) alphas
    ** liquidity model **
    grstest2 NoDurrf_2 Durblrf_2 Manfrf_2 Enrgyrf_2 Chemsrf_2 BusEqrf_2 Telcmrf_2 Utilsrf_2 Shopsrf_2 Hlthrf_2 Moneyrf_2 Otherrf_2 , flist( mkt_minus_rf smb hml trad_liq) alphas
    ** FF5 **
    grstest2 NoDurrf_2 Durblrf_2 Manfrf_2 Enrgyrf_2 Chemsrf_2 BusEqrf_2 Telcmrf_2 Utilsrf_2 Shopsrf_2 Hlthrf_2 Moneyrf_2 Otherrf_2 , flist( mkt_minus_rf smb hml rmw cma) alphas

    ** 1986m4 to 1994m2 **
    ** CAPM **
    grstest2 NoDurrf_3 Durblrf_3 Manfrf_3 Enrgyrf_3 Chemsrf_3 BusEqrf_3 Telcmrf_3 Utilsrf_3 Shopsrf_3 Hlthrf_3 Moneyrf_3 Otherrf_3, flist( mkt_minus_rf) alphas
    ** FF3 **
    grstest2 NoDurrf_3 Durblrf_3 Manfrf_3 Enrgyrf_3 Chemsrf_3 BusEqrf_3 Telcmrf_3 Utilsrf_3 Shopsrf_3 Hlthrf_3 Moneyrf_3 Otherrf_3 , flist( mkt_minus_rf smb hml) alphas
    ** MoM **
    grstest2 NoDurrf_3 Durblrf_3 Manfrf_3 Enrgyrf_3 Chemsrf_3 BusEqrf_3 Telcmrf_3 Utilsrf_3 Shopsrf_3 Hlthrf_3 Moneyrf_3 Otherrf_3 , flist( mkt_minus_rf smb hml mom) alphas
    ** liquidity model **
    grstest2 NoDurrf_3 Durblrf_3 Manfrf_3 Enrgyrf_3 Chemsrf_3 BusEqrf_3 Telcmrf_3 Utilsrf_3 Shopsrf_3 Hlthrf_3 Moneyrf_3 Otherrf_3 , flist( mkt_minus_rf smb hml trad_liq) alphas
    ** FF5 **
    grstest2 NoDurrf_3 Durblrf_3 Manfrf_3 Enrgyrf_3 Chemsrf_3 BusEqrf_3 Telcmrf_3 Utilsrf_3 Shopsrf_3 Hlthrf_3 Moneyrf_3 Otherrf_3 , flist( mkt_minus_rf smb hml rmw cma) alphas

    ** 1994m3 to 2002m1**
    ** CAPM **
    grstest2 NoDurrf_4 Durblrf_4 Manfrf_4 Enrgyrf_4 Chemsrf_4 BusEqrf_4 Telcmrf_4 Utilsrf_4 Shopsrf_4 Hlthrf_4 Moneyrf_4 Otherrf_4 , flist( mkt_minus_rf) alphas
    ** FF3 **
    grstest2 NoDurrf_4 Durblrf_4 Manfrf_4 Enrgyrf_4 Chemsrf_4 BusEqrf_4 Telcmrf_4 Utilsrf_4 Shopsrf_4 Hlthrf_4 Moneyrf_4 Otherrf_4 , flist( mkt_minus_rf smb hml) alphas
    ** MoM **
    grstest2 NoDurrf_4 Durblrf_4 Manfrf_4 Enrgyrf_4 Chemsrf_4 BusEqrf_4 Telcmrf_4 Utilsrf_4 Shopsrf_4 Hlthrf_4 Moneyrf_4 Otherrf_4 , flist( mkt_minus_rf smb hml mom) alphas
    ** liquidity model **
    grstest2 NoDurrf_4 Durblrf_4 Manfrf_4 Enrgyrf_4 Chemsrf_4 BusEqrf_4 Telcmrf_4 Utilsrf_4 Shopsrf_4 Hlthrf_4 Moneyrf_4 Otherrf_4 , flist( mkt_minus_rf smb hml trad_liq) alphas
    ** FF5 **
    grstest2 NoDurrf_4 Durblrf_4 Manfrf_4 Enrgyrf_4 Chemsrf_4 BusEqrf_4 Telcmrf_4 Utilsrf_4 Shopsrf_4 Hlthrf_4 Moneyrf_4 Otherrf_4 , flist( mkt_minus_rf smb hml rmw cma) alphas


    ** 2002m2 to 2009m12 **
    ** CAPM **
    grstest2 NoDurrf_5 Durblrf_5 Manfrf_5 Enrgyrf_5 Chemsrf_5 BusEqrf_5 Telcmrf_5 Utilsrf_5 Shopsrf_5 Hlthrf_5 Moneyrf_5 Otherrf_5 , flist( mkt_minus_rf) alphas
    ** FF3 **
    grstest2 NoDurrf_5 Durblrf_5 Manfrf_5 Enrgyrf_5 Chemsrf_5 BusEqrf_5 Telcmrf_5 Utilsrf_5 Shopsrf_5 Hlthrf_5 Moneyrf_5 Otherrf_5 , flist( mkt_minus_rf smb hml) alphas
    ** MoM **
    grstest2 NoDurrf_5 Durblrf_5 Manfrf_5 Enrgyrf_5 Chemsrf_5 BusEqrf_5 Telcmrf_5 Utilsrf_5 Shopsrf_5 Hlthrf_5 Moneyrf_5 Otherrf_5 , flist( mkt_minus_rf smb hml mom) alphas
    ** liquidity model **
    grstest2 NoDurrf_5 Durblrf_5 Manfrf_5 Enrgyrf_5 Chemsrf_5 BusEqrf_5 Telcmrf_5 Utilsrf_5 Shopsrf_5 Hlthrf_5 Moneyrf_5 Otherrf_5 , flist( mkt_minus_rf smb hml trad_liq) alphas
    ** FF5 **
    grstest2 NoDurrf_5 Durblrf_5 Manfrf_5 Enrgyrf_5 Chemsrf_5 BusEqrf_5 Telcmrf_5 Utilsrf_5 Shopsrf_5 Hlthrf_5 Moneyrf_5 Otherrf_5 , flist( mkt_minus_rf smb hml rmw cma) alphas

    ** 2010m1 to 2017m12 **
    ** CAPM **
    grstest2 NoDurrf_6 Durblrf_6 Manfrf_6 Enrgyrf_6 Chemsrf_6 BusEqrf_6 Telcmrf_6 Utilsrf_6 Shopsrf_6 Hlthrf_6 Moneyrf_6 Otherrf_6 , flist( mkt_minus_rf) alphas
    ** FF3 **
    grstest2 NoDurrf_6 Durblrf_6 Manfrf_6 Enrgyrf_6 Chemsrf_6 BusEqrf_6 Telcmrf_6 Utilsrf_6 Shopsrf_6 Hlthrf_6 Moneyrf_6 Otherrf_6 , flist( mkt_minus_rf smb hml) alphas
    ** MoM **
    grstest2 NoDurrf_6 Durblrf_6 Manfrf_6 Enrgyrf_6 Chemsrf_6 BusEqrf_6 Telcmrf_6 Utilsrf_6 Shopsrf_6 Hlthrf_6 Moneyrf_6 Otherrf_6 , flist( mkt_minus_rf smb hml mom) alphas
    ** liquidity model **
    grstest2 NoDurrf_6 Durblrf_6 Manfrf_6 Enrgyrf_6 Chemsrf_6 BusEqrf_6 Telcmrf_6 Utilsrf_6 Shopsrf_6 Hlthrf_6 Moneyrf_6 Otherrf_6 , flist( mkt_minus_rf smb hml trad_liq) alphas
    ** FF5 **
    grstest2 NoDurrf_6 Durblrf_6 Manfrf_6 Enrgyrf_6 Chemsrf_6 BusEqrf_6 Telcmrf_6 Utilsrf_6 Shopsrf_6 Hlthrf_6 Moneyrf_6 Otherrf_6 , flist( mkt_minus_rf smb hml rmw cma) alphas



    The problem is that checking the obtained results against the ones reported in the early researches, the t-stat is much higher than the one it should be.
    Did I skip any step?

    Thank you so much for your help!

  • #2
    Make sure the portfolio returns are excess returns.

    There's a new package "grsftest" doing GRS test. It does not adjust for the degrees of freedom when calculating estimator of the sample covariance matrix of the factor portfolios. This approach avoids a common misrepresentation of the GRS paper.

    Code:
    ssc install grsftest

    Comment

    Working...
    X