turn on suggestions

Auto-suggest helps you quickly narrow down your search results by suggesting possible matches as you type.

Showing results for

Find a Community

- Home
- /
- SAS Programming
- /
- General Programming
- /
- Cross-section bootstrap methodology to distinguish...

Topic Options

- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic for Current User
- Bookmark
- Subscribe
- Printer Friendly Page

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-14-2015 03:41 AM

Hi,

I am using SAS 9.4 to analyze the performance of some mutual equity funds, and so far I have only used some simple OLS regressions due to my lack of programming skills (Just started to learn the software).

In an article by Cuthbertson et al. (2007); http://www.ucc.ie/en/cir/papers/documentfile-29092-en.pdf they use a bootstrap methodology to distinguish "skill" and "luck" for individual funds. Is there anyone who could help me making the code/program for this?

My original model is as follows:

Title ' Jensen´s alpha Net Retrun';

**PROC** **Model** data=Weekly;

parms b0 b1;

ABG_exc=b0 + b1*OSEBX_exc;

fit ABG_exc;

**Run**;

First of all, I need to save the residuals and beta-values from the previous regression (which I'm supposed to use in the re-sampling).

Then the article states the following:

"....For each fund *i,* draw a random sample (with replacement) of length from the residuals . While retaining the original chronological ordering of , use re-sampled bootstrap residuals to generate a simulated excess return series for fund *i,* under the null hypothesis . Next using the simulated returns , the performance model is estimated and the resulting estimate of alpha for each fund is obtained. The estimates for each the n-funds represents sampling variation around the true value of zero (by construction) and are entirely due to “luck”. The {i = 1, 2 … n} are the order from highest to lowest. The process are repeated B=1000 times for each of the n-funds which gives a separate “luck distribution” for each of the ordered funds in the performance distribution, from extreme best performer to the extreme worst performer, all of which are solely due to luck......"

(This is stated from page 7 in the article, (please see pdf.file)).

I have no idea where to start. When looking for answers online, the "Proc surveyselect" seems to be the right syntax/"code", but I have not managed to make any statement/program that works...

Any help will be highly appreciated!

Accepted Solutions

Solution

05-15-2015
10:56 AM

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-15-2015 10:56 AM

No, I don't recommend PROC REG over PROC MODEL. You seem to have a valid reason for using PROC MODEL.

I am not a time series expert, and I don't have time to read the PDF you provided, but you have left out an important step of the bootstrap.

After you use SURVEYSELECT to extract 1000 sets of residuals, you then use those residuals to form 1000 sets of simulated observations, where y_new = y_pred + residual. (From your quote, it sounds like you need to make sure that the residuals are in chronological order in an attempt to reflect autocorrelation and heteroscadacity.) This is usually done with a DATA step. You would then rerun PROC MODEL on the 1000 simulated observations and refit the reregression model. This gives you the distribution of regression coefficients and other regression-related statistics, which are collectively called the "bootstrap statistics."

You then analyze the distribution of the bootstrap statistics, using PROC UNIVARIATE, PROC MEANS, or some other procedure.

Hope this gives you some direction.

All Replies

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-14-2015 12:50 PM

Welcome to SAS. Start by reading the paper "Don't Be Loopy: Re-Sampling and Simulation the SAS Way". The OLS regression examples start on p 7.

Unless you are using some feature of PROC MODEL that is not apparent, I think you'll find that your task is easier if you use PROC REG.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-14-2015 01:31 PM

Hi Rick and thanks for your answer.

I started out with the PROC REG, but I was told to use the PROC MODEL while handling time-series data. Earlier on, I had both autocorrelation and heteroscedasticity in the estimated residuals, hence I had to apply Newey-West HAC Standard Errors with the following code;

**Proc** **model** data=Weekly;

endo ABG_exc;

exog OSEFX_exc;

parms b0 b1;

ABG_exc=b0 + b1*OSEFX_exc;

fit ABG_exc / gmm kernel=(bart,**5**,**0**) vardef=n;

**run**;

As far as I know, this is not possible to do when using PROC REG.

With regards to my bootstrapping issue. I found the article you posted quite helpful. Thus far, my program looks like this:

**proc** **model** data=weekly;

parms b0 b1;

ABG_exc=b0 + b1*OSEFX_exc;

fit ABG_exc / out=resid outall;

**Run**;

**Proc** **surveyselect** data=resid

out=URS

Sampsize=**1000**

method=urs

seed=**2**

stats;

**run**;

**Proc** **univariate** data=URS;

var OSEFX_exc;

output out=outall kurtosis=ABG_exc;

**run**;

**Proc** **univariate** data=outall;

var ABG_exc;

output out=final pctlpts=**5**, **95** pctlpre=ci;

**run**;

**quit**;

The problem is that I’m not sure if my inputs variables in the PROC UNIVARIATE is correctly done according to the Cuthbertson et al. (2007) aricle. Therefore I suspect ”incorrect” outputs (Econometrics is not my field of study). For instance, does the code above draw a random sample from the residuals in my first regression? Next, do it generate simulated returns? (The variable ABG_exc is the excess return of a mutual fund, while OSEFX_exc is the benchmark-index). At the end I’m supposed to compare the intercept from the first model with the new generated intercepts that are resampled from the original residuals and is supposed to have a mean equal to zero), and I can than determine if a mutual fund’s performance is due to skill or luck; if α_{max }is greater than the 5% upper tail cut off point from *f(**ã _{max})*, then I can reject the null that the perforamnce is due to luck.

Clearly, I’ve never done this type of analysis before. Thus I’m seeking some guidance to interpret the model-steps in SAS.

As you mentioned, it would probably be easier to use the PROC REG steps (starting on page 7). Do you still recommend this when there are evidence of autocorrelation and heteroscedasticity in the data?

Again, thank you so much for you help!

Solution

05-15-2015
10:56 AM

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-15-2015 10:56 AM

No, I don't recommend PROC REG over PROC MODEL. You seem to have a valid reason for using PROC MODEL.

I am not a time series expert, and I don't have time to read the PDF you provided, but you have left out an important step of the bootstrap.

After you use SURVEYSELECT to extract 1000 sets of residuals, you then use those residuals to form 1000 sets of simulated observations, where y_new = y_pred + residual. (From your quote, it sounds like you need to make sure that the residuals are in chronological order in an attempt to reflect autocorrelation and heteroscadacity.) This is usually done with a DATA step. You would then rerun PROC MODEL on the 1000 simulated observations and refit the reregression model. This gives you the distribution of regression coefficients and other regression-related statistics, which are collectively called the "bootstrap statistics."

You then analyze the distribution of the bootstrap statistics, using PROC UNIVARIATE, PROC MEANS, or some other procedure.

Hope this gives you some direction.

- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content

05-15-2015 11:36 AM

Thank you so much Mr. Wicklin ! Your guidance has been very helpful and are highly appreciated.

Have a great weekend!