user2893255
user2893255

Reputation: 33

calculate Value at Risk in a data frame

My data set has 1000s hedge fund returns for 140 months and I was trying to calculate Value at Risk (VaR) suing command VaR in PerformanceAnalytics package. However, I have come up with many questions when using this function. I have created a sample data frame to show my problem.

df=data.frame(matrix(rnorm(24),nrow=8))
df$X1<-c('2007-01','2007-02','2007-03','2007-04','2007-05','2007-06','2007-07','2007-08')
df[2,2]<-NA
df[2,3]<-NA
df[1,3]<-NA
df

I got a data frame:

           X1         X2          X3
    1 2007-01 -1.4420195          NA
    2 2007-02         NA          NA
    3 2007-03 -0.4503824 -0.78506597
    4 2007-04  1.4083746  0.02095307
    5 2007-05  0.9636549  0.19584430
    6 2007-06  1.1935281 -0.14175623
    7 2007-07 -0.3986336  1.58128683
    8 2007-08  0.8211377 -1.13347168

I then run

apply(df,2,FUN=VaR, na.rm=TRUE)

and received a warning message:

The data cannot be converted into a time series. If you are trying to pass in names from a data object with one column, you should use the form 'data[rows, columns, drop = FALSE]'. Rownames should have standard date formats, such as '1985-03-15'.

I have tried to convert my data frame into combination of time series using zoo() but it didn't help. Can someone help to figure out what should I do now?

Upvotes: 2

Views: 1316

Answers (2)

hvollmeier
hvollmeier

Reputation: 2986

@user2893255, you should convert your data frame into an xts-object before using the apply function:

df.xts <- as.xts(df[,2:3],order.by=as.Date(df$X1,"%Y-%m"))

and then

apply(df.xts,2,FUN=VaR, na.rm=TRUE)

gives you the result without warnings or error messages.

Upvotes: 1

Ricardo Saporta
Ricardo Saporta

Reputation: 55360

Try dropping the Date column:

 apply(df[,-1L], 2, FUN=VaR, na.rm=TRUE)

Upvotes: 0

Related Questions