** mvport package v2 * backtest command * Author: Alberto Dorantes, July, 2016 * cdorante@itesm.mx capture program drop backtest program define backtest, rclass version 11.0 syntax varlist(numeric) [if] [in], Weights(string) tempname numvariables HRS HRPORT W i marksample touse local numvariables: word count `varlist' capture matrix `W' = `weights' if (_rc!=0) { display as error "The weight Matrix `weights' does not exist; define a Stata Matrix for the portfolio weights" exit } else if (rowsof(`weights')!=`numvariables' | colsof(`weights')!=1) { display as error "The weight Matrix must have 1 column and the number of rows has to be equal to the number of assets of the portfolio" exit } qui holdingrets `varlist' if `touse' matrix `HRS'=r(holdingrets) matrix `HRPORT'=`weights''*`HRS' matrix colnames `weights' = "Weight" display "It was assumed that the dataset is sorted chronologically" display "The holding return of the portfolio is " `HRPORT'[1,1] display r(N) " observations/periods were used for the calculation (casewise deletion was applied)" display "The holding return of each price variable for the specified period was:" matlist `HRS', rowtitle(Price variable) noblank twidth(30) border display "The portfolio weights used were: " matlist `weights', rowtitle(Asset) noblank twidth(30) border return scalar retport=`HRPORT'[1,1] return scalar N=r(N) end