Announcement

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

  • ado file for gmm wald test?

    Hello everyone,

    I would like to create a gmmwald.ado file to implement Equation (10) from the referenced article (Mackinlay, A. C., & Richardson, M. P. (1991). Using Generalized Method of Moments to Test Mean-Variance Efficiency. The Journal of Finance, 46(2), 511-536. A partial screenshot is attached below).
    • Click image for larger version

Name:	1.png
Views:	1
Size:	75.8 KB
ID:	1768562
    Click image for larger version

Name:	2.png
Views:	1
Size:	206.2 KB
ID:	1768563
    Click image for larger version

Name:	3.png
Views:	1
Size:	36.0 KB
ID:	1768564


    Click image for larger version

Name:	4.png
Views:	1
Size:	165.2 KB
ID:	1768565


    Click image for larger version

Name:	5.png
Views:	1
Size:	217.1 KB
ID:	1768566

    Essentially, this is a GMM test statistic.

    I have attached the first 100 rows of the raw data below, and I have used the following code for preliminary processing (to calculate excess returns).

    Code:
    * Example generated by -dataex-. For more info, type help dataex
    clear
    input int ym double(CAP1RET CAP2RET CAP3RET CAP4RET CAP5RET CAP6RET CAP7RET CAP8RET CAP9RET CAP10RET vwretd rf)
    -12418  .143661  .043982  .003839  .021334  .026445 -.001635  .004253  .002818  .004725 -.003837  .000561 .002951
    -12387 -.045718 -.067602 -.045779 -.079699 -.070859 -.053558  -.05208 -.056464 -.035508 -.022392 -.033046 .002768
    -12359 -.139863 -.095192 -.125909 -.116952 -.093662 -.088367 -.099882 -.075299  -.06946 -.051874 -.064002 .002778
    -12328  .046633  .011215  .010318  .055662  .062817  .021249   .04172  .044396  .034477  .036293  .037029 .003072
    -12298 -.004305 -.021611  .002612  .023445  .009262  -.00964  .012968   .01162  .013865  .013097  .012095 .000342
    -12267  .001354  .048366   .06317  .036993  .037166  .032904  .055509  .053306  .060762  .053729  .053664 .003459
    -12237  .001944  .022262 -.005706  .010793  .007995  .028931  .016036 -.000063  .035584  .039044  .031411   .0022
    -12206   .00541  .066822  .031689  .021817  .036003  .024769  .031235  .021855   .00778  .035295  .028647   .0025
    -12175  .004253  -.02565 -.009283  .008334  .005375 -.011681 -.014328  .004121 -.002456  .011451  .005787   .0023
    -12145 -.022551 -.029155 -.023392 -.051732 -.027948 -.016857 -.044976 -.035516 -.027826  -.02716 -.028996   .0032
    -12114   .00651  .026459  .012604  .034276  .034761  .033904  .038977  .030944  .033647  .025669  .028554   .0031
    -12084  .018044  .026793  .053952  .020025  .032043  .019592  .011399  .032529  .034021  .029075  .029211   .0028
    -12053  .003172  .002805  .014317  .032929  .016315  .000204  .020612  .007512  .007482 -.002207  .002416   .0025
    -12022  .092438   .07166  .058662  .053087  .063236  .064697  .076746  .039833  .042902  .041793   .04537   .0026
    -11994 -.088693 -.008173 -.028944 -.003188 -.032311 -.033397 -.007091 -.014345  .001849  .012043  .003756    .003
    -11963  .039481  .022963 -.002202  .005944  .007973    .0072  .001073 -.006035  .003022  .010453  .007225   .0025
    -11933  .075115  .076116  .102096  .090009  .039405  .064919  .081353  .060786    .0606  .053249  .057773    .003
    -11902 -.031104 -.046546 -.004492 -.006333 -.017199 -.000806 -.015678 -.026593 -.032439 -.019647 -.021087   .0026
    -11872  .072731  .044965  .054679  .030701  .044819  .053533  .063468  .069224  .056557  .086322  .075279    .003
    -11841 -.004154  -.01282  -.01179  -.00099  .005784 -.012889  .006845  .013053  .019656  .029562   .02249   .0028
    -11810 -.006315    .0299  .018491  .027097  .024686  .059165  .056898  .051292  .046465  .051737  .049924   .0021
    -11780  -.05634 -.057721 -.055306 -.017724 -.028274 -.019678 -.032767 -.036301 -.046828 -.042097  -.04077   .0025
    -11749  .151983  .089883  .096032   .11086  .067772  .070954   .07673  .073683  .074324   .06364  .068453   .0021
    -11719  .061282  .010987  .020371  .024959  .032628  .035111   .03349  .035554  .043869  .015569  .023782   .0022
    -11688  .082891  .036933  .050425  .024538  .007223  .032571  .010485 -.005964   .01896 -.013901  -.00334   .0025
    -11657 -.017513 -.017698 -.020122 -.029133  -.03966 -.023506  -.02291 -.040592 -.025027 -.005626 -.014478   .0033
    -11628  .023658  .064201  .076955  .081474  .076788  .075151  .075976  .076318  .076708  .099223  .090478   .0029
    -11597  .224499  .183015  .083906  .057361  .075368  .069206  .068872  .046976  .041375  .036652  .043846   .0022
    -11567   .12849  .036144  .052157  -.01328  .017232  .028186  .020126  .012563  .022465     .016   .01769   .0032
    -11536 -.104891  -.13488 -.069093 -.061488 -.069361 -.052095 -.056888 -.065891 -.059967 -.034886 -.045245   .0031
    -11506  .010951 -.006581  .014548 -.003397  .006102  .009049  .015669 -.004996  .017312   .00916    .0094   .0032
    -11475  .015433  .062216  .047886  .036981   .07533  .076558  .087567  .073003  .079106  .067533  .070206   .0032
    -11444  .097367  .056287  .045872  .047999  .064136  .059114  .054335  .064383  .028912  .022603  .031498   .0027
    -11414  .025601  .051576  .029264  .018854  .019236  .002469  .018249  -.01103  .037063   .01835  .019228   .0041
    -11383  .130821  .227316  .088059  .102203  .114307  .124567  .113406  .093084  .127404  .124411    .1215   .0038
    -11353 -.042115 -.030924 -.011626 -.016361  .012337  .018998 -.007102  .024673  .026132 -.000647  .005557   .0006
    -11322   .03707  .014078  .026836  .018479  .013253  .025703  .024849  .039332  .065507  .059319  .053935   .0034
    -11291 -.007803  .000331  .004008  .002708  .012668   .00517  .019399  .007045 -.001674 -.003365 -.000446   .0036
    -11263  .003639 -.035392 -.050998 -.044424  -.04787 -.035577 -.043825 -.023619 -.018128  .004389 -.007808   .0034
    -11232  .019042 -.004377  .007913 -.001003  .018287   .01909   .03502 -.004106  .012951  .020186  .017179   .0036
    -11202 -.166509  -.14534 -.124481 -.117397 -.087943 -.085604 -.082233 -.062092 -.043471 -.056839 -.059923   .0044
    -11171  .088769  .059679  .054146  .047624  .084693  .086686  .088231  .098724   .10875  .104573  .101573   .0052
    -11141  .007532   .03095  .023216  .009991  .005164  .019716  .047149  .009014  .042647  .055169  .045958   .0033
    -11110 -.015796 -.027972 -.004619   .02113  .017976  .037552  .039934  .047308  .077047  .103681  .085343    .004
    -11079 -.034762 -.120364 -.021394 -.052491 -.040756 -.036012 -.015793 -.028472 -.043051 -.057889 -.050455   .0035
    -11049 -.229883 -.292596 -.198277 -.247534 -.234577 -.212465 -.210601  -.22481 -.196361 -.188684 -.196684   .0046
    -11018 -.143028 -.145817 -.116742 -.129928 -.132945 -.115422 -.136501 -.126292  -.10072 -.127686 -.123812   .0037
    -10988 -.055723  .007445  -.04372 -.027165  .007628 -.009889  .011206 -.009426  .027596   .02018   .01639   .0037
    -10957  .240036  .167626  .119549  .166176  .073301   .09246  .074717  .052793   .05773  .053463  .058407   .0014
    -10926  .057641  .048143  .024057  .039716  .037114  .021057  .010029  .019153  .038548  .027676  .028242    .003
    -10898  .113523  .148527  .102964  .082762  .111455  .114041  .090223  .069006  .072672  .071364  .074631   .0035
    -10867 -.081904 -.034999 -.028679 -.050306 -.041971 -.018092 -.041375 -.055333 -.038932 -.010452 -.020541   .0021
    -10837 -.071979 -.078269 -.045166 -.035207 -.023946 -.034191 -.037347 -.025789 -.016607 -.008523  -.01401   .0026
    -10806 -.237253 -.226064 -.231609 -.220168 -.195867 -.190038 -.180644 -.165592 -.168717 -.152066  -.15998   .0027
    -10776  .039041  .011589  .022182   .05678  .064175  .042877  .036361   .03517  .048418  .041149  .041964    .002
    -10745  -.05377 -.012513  -.04208 -.014341 -.018524  .005221 -.020015 -.013425  .000124   .00862  .003663   .0009
    -10714 -.123727 -.221217 -.181852 -.155971 -.135511 -.135387 -.137273 -.139872 -.129182 -.119795 -.124805   .0022
    -10684 -.112471  -.10566 -.109747  -.11096 -.092347 -.090768  -.09029 -.097451 -.095591 -.082359 -.086579   .0009
    -10653 -.056232 -.034625 -.025861 -.035211 -.015081 -.023398 -.031216 -.021481 -.031108 -.028222 -.028057   .0013
    -10623 -.207887 -.151164 -.139404 -.169597 -.091007 -.091987  -.09202 -.111207 -.090503  -.06842 -.077739   .0014
    -10592  .281433  .208469  .194756  .144317  .123567  .107461  .081096  .083028  .090925   .05144   .06378   .0015
    -10561  .290888  .243834  .155307  .127578  .143261  .158058  .125742  .120132  .097909  .107056  .109695   .0004
    -10533 -.119358 -.053174 -.078331 -.056364 -.076851 -.065308 -.064719 -.085468 -.081896 -.056536 -.062866   .0013
    -10502 -.232438 -.212228  -.16887  -.16653 -.139804 -.172244  -.12102 -.135607 -.118346 -.087841 -.100219   .0008
    -10472 -.153046 -.154801 -.129542 -.136654 -.125867 -.131922  -.14404 -.150284 -.161717 -.126868 -.133836   .0009
    -10441  .231803  .201013  .178055  .152165  .150139  .151982  .135384  .188425  .158618  .132178   .14034   .0008
    -10411 -.068877 -.057442  -.07121 -.063396 -.076305 -.073075  -.07455 -.062892 -.073493 -.064701 -.066438   .0006
    -10380 -.063719 -.063264 -.033312 -.011855 -.009152  .000652 -.027168  .013837  .002859  .004637  .003078   .0003
    -10349 -.350205 -.329675 -.325695 -.319836 -.333994 -.323497 -.299028 -.325057 -.314467 -.281972 -.291731   .0003
    -10319  .079485  .079018  .094134  .095108  .101027  .086504  .110404  .115443  .094808  .074505  .081509    .001
    -10288  -.10708 -.098259 -.109429 -.080187 -.044784 -.075909 -.060965 -.119283 -.087815 -.088233 -.088402   .0017
    -10258 -.257788 -.225707 -.197984 -.159455 -.140664 -.162724 -.154758  -.12934 -.142861 -.131064 -.134971   .0012
    -10227  .237888   .20071  .107753  .065379  .058712  .054104  .020985  .023347  .010074 -.022628 -.010534   .0023
    -10196 -.027567  .004308  .033981 -.014774 -.001461 -.000502  .039605  .021817  .043877  .067463  .057663   .0023
    -10167 -.130632  -.15277 -.131207 -.157113 -.109051 -.131713 -.128092 -.093739 -.118178 -.108705 -.110599   .0016
    -10136 -.186865 -.257934 -.198573 -.192806 -.203727 -.162734  -.16861  -.15384  -.16009 -.184826 -.179417   .0011
    -10106 -.097796 -.129686 -.231994 -.221164 -.229135 -.276508 -.229289 -.212066 -.205019 -.203089 -.206198   .0006
    -10075 -.075865 -.024914  .003154  .072597  .009763  .044731  .048151  .028748  .009084 -.013098 -.004289   .0002
    -10045  .328941  .395982  .442142  .313352  .410286  .364774  .351201   .38162  .352516  .333122  .340643   .0003
    -10014  .991855  .865855   .71168  .607937  .605076  .537786  .417814  .388951  .439538  .341635  .371388   .0003
     -9983 -.167679 -.148931 -.136505 -.116111 -.036298 -.068791 -.025991 -.023133 -.047939 -.021667 -.028649   .0003
     -9953 -.185973 -.212451 -.187554  -.16882 -.205495 -.185901 -.165128  -.15302 -.145665  -.12308 -.132553   .0002
     -9922 -.111214 -.088589 -.123144 -.109206 -.072353 -.076962 -.054712  -.05441 -.079275 -.053226  -.05826   .0002
     -9892 -.103806   -.1146 -.089808 -.079018  -.03897 -.055487  .017689   .01166  .017825  .060233  .045227   .0001
     -9861  .065295  .028455  .015775  .065966   .05467  .061578 -.013129  .018919  .022471   .00551  .009813   .0001
     -9830 -.187573 -.104406 -.173641 -.184832 -.192467 -.168167 -.145526 -.162917 -.145836 -.152732 -.153204  -.0003
     -9802   .09608  .104395  .113697  .130567  .067223  .074416  .111348  .083871  .057825  .018694  .033105   .0004
     -9771  .474258  .576137  .399093  .518625  .535615  .494002  .538021  .514179  .429632  .365025  .394143    .001
     -9741 1.112312  .848976    .8947  .641794  .511894  .494916  .387598  .316837  .230937  .168143  .213261   .0004
     -9710  .385212  .244089  .256677  .152239  .213811  .175284  .168778  .118867  .155304  .122968  .133364   .0002
     -9680 -.070338 -.113216   -.0667 -.142317 -.153948 -.133889 -.094344 -.123161 -.120808 -.085587 -.096341   .0002
     -9649  .021679   .09291  .052621  .115779  .147433  .167943  .183826  .162919  .150755  .106655  .121285   .0003
     -9618 -.185685 -.207425 -.196723 -.167403 -.169759 -.142638 -.109393 -.128616 -.098707 -.099262 -.105836   .0002
     -9588 -.122392 -.134562 -.140349 -.130963 -.136433 -.105948 -.115943 -.095858 -.078051 -.078009  -.08365   .0001
     -9557  .014808  .082916  .043321  .055798  .064293  .062588  .093196  .094486  .085421  .107255  .099896   .0002
     -9527  .020201 -.001696 -.002754  .042504  .066279  .040655 -.002091  .030674  .022983  .014988  .017876   .0002
     -9496  .638277  .455986  .430647   .35377  .271084  .288628  .264314  .152341  .157102  .096053  .126779   .0005
     -9465  .079372  .044094  .023861  .006601  .002744   .01468 -.030013 -.022518 -.028144 -.026788 -.024287   .0002
     -9437  -.01814  .005627  .004384  .007987  .008029 -.009335  .017071  .019419  .014378  .000299  .004425   .0002
     -9406  .022085  .017246  .008348 -.009492 -.024848 -.009761 -.019872 -.018976 -.016014 -.019596 -.018345   .0001
    end
    format %tdnn/dd/CCYY ym
    Code:
    gen vwerm = vwretd-rf
    forvalues i=1/10 {
        gen er`i' = CAP`i'RET-rf
    } 
    
    gmmwald er1-er10, flist(vwerm)
    I have drafted an initial version of the .ado file (indeed from Claude), but the calculated test statistic appears to be incorrect (way too large).

    Code:
    capture program drop gmmwald 
    program define gmmwald, eclass
        version 12
        syntax varlist [if], flist(string) [nqui]
        
        marksample touse
        local nvar: word count `varlist'
        qui count if `touse'
        local T = r(N)
        
        // 1. OLS regression and create residuals
        local i = 1
        foreach var of varlist `varlist' {
            qui reg `var' `flist' if `touse'
            matrix A`i' = e(b)[1,1]  // Store alpha
            qui predict double res`i' if `touse', residuals
            qui gen double resm`i' = res`i' * `flist' if `touse'
            local ++i
        }
        
        // Combine alphas into column vector
        matrix A = A1
        forvalues i = 2/`nvar' {
            matrix A = A \ A`i'
        }
        
        // 2. Calculate sample moment conditions ft(δ)
        tempname ft
        matrix `ft' = J(2*`nvar', `T', .)
        forvalues t = 1/`T' {
            forvalues i = 1/`nvar' {
                qui sum res`i' if _n==`t'
                matrix `ft'[2*`i'-1,`t'] = r(mean)  // εit
                qui sum resm`i' if _n==`t'
                matrix `ft'[2*`i',`t'] = r(mean)    // εit*rpt
            }
        }
        
        // 3. Calculate S0 matrix (equivalent to ST when no serial correlation)
        tempname S0
        matrix `S0' = J(2*`nvar', 2*`nvar', 0)
        forvalues t = 1/`T' {
            matrix `S0' = `S0' + `ft'[.,`t']*`ft'[.,`t']'
        }
        matrix `S0' = `S0'/`T'
        
        // 4. Calculate D0 matrix
        // From paper: D0 = E[∂gT(δ)/∂δ']
        tempname D0
        matrix `D0' = J(2*`nvar', 2*`nvar', 0)
        qui sum `flist' if `touse'
        local rp_mean = r(mean)
        local rp_var = r(Var)*(`T'-1)/`T'
        
        forvalues i = 1/`nvar' {
            matrix `D0'[2*`i'-1,2*`i'-1] = 1
            matrix `D0'[2*`i'-1,2*`i'] = `rp_mean'
            matrix `D0'[2*`i',2*`i'-1] = `rp_mean'
            matrix `D0'[2*`i',2*`i'] = `rp_mean'^2 + `rp_var'
        }
        
        // 5. Create R matrix as in equation (10)
        tempname R phi1
        matrix `R' = J(`nvar', 2*`nvar', 0)
        forvalues i = 1/`nvar' {
            matrix `R'[`i',2*`i'-1] = 1
        }
        
        // 6. Calculate test statistic according to equation (10)
        matrix `phi1' = `T'*A'*invsym(`R'*invsym(`D0''*invsym(`S0')*`D0')*`R'')*A
        
        // Store and display results 
        ereturn clear
        ereturn scalar chi2 = `phi1'[1,1]
        ereturn scalar df = `nvar'
        ereturn scalar p = chi2tail(`nvar', `phi1'[1,1])
        ereturn scalar N = `T'
        
        di as txt _n "GMM test of mean-variance efficiency"
        di as txt "Chi2(" as res `nvar' as txt ") = " as res %8.4f `phi1'[1,1]
        di as txt "Prob > chi2 = " as res %8.4f chi2tail(`nvar', `phi1'[1,1])
        
        // Clean up
        forvalues i = 1/`nvar' {
            cap drop res`i' resm`i'
        }
    end

    Could anyone assist with this issue?

    Thank you!
    Ho-Chuan (River) Huang
    Stata 17.0, MP(4)
Working...
X