Search code examples
rtime-seriesfinance

Time-series relater error while calculating Sharpe Ratio in R


am trying to calculate Sharpe Ratio for dataset managers from PredictiveAnalytics package.

It results in an error, although the data format seems to be correct. what can be an issue?

'data.frame':   132 obs. of  11 variables:
 $ date       : Date, format: "1996-01-31" "1996-02-29" "1996-03-31" "1996-04-30" ...
 $ HAM1       : num  0.0074 0.0193 0.0155 -0.0091 0.0076 -0.0039 -0.0231 0.0395 0.0147 0.0288 ...
 $ HAM2       : num  NA NA NA NA NA ...
 $ HAM3       : num  0.0349 0.0351 0.0258 0.0449 0.0353 -0.0303 -0.0337 0.0461 0.0653 0.0395 ...
 $ HAM4       : num  0.0222 0.0195 -0.0098 0.0236 0.0028 -0.0019 -0.0446 0.0351 0.0757 -0.018 ...
 $ HAM5       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ HAM6       : num  NA NA NA NA NA NA NA NA NA NA ...
 $ EDHEC LS EQ: num  NA NA NA NA NA NA NA NA NA NA ...
 $ SP500 TR   : num  0.034 0.0093 0.0096 0.0147 0.0258 0.0038 -0.0442 0.0211 0.0563 0.0276 ...
 $ US 10Y TR  : num  0.0038 -0.03532 -0.01057 -0.01739 -0.00543 ...
 $ US 3m TR   : num  0.00456 0.00398 0.00371 0.00428 0.00443 0.00412 0.00454 0.00451 0.0047 0.00428 ...

> SharpeRatio(managers1$HAM3,managers1$`US 3m TR`)
Error in checkData(R) : 
  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'. 
> SharpeRatio(managers1$`SP500 TR`,managers1$`US 3m TR`)
Error in checkData(R) : 
  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'. 

Solution

  • You need a xts series not a data.frame. Try something like this:

    managers2 = as.xts(managers1[,!colnames(managers1)%in%"date"],managers1$date)
    
    SharpeRatio(managers2$HAM3,managers2$US.3m.TR)
    
    SharpeRatio(managers2$SP500.TR,managers2$US.3m.TR)
    
    # > SharpeRatio(managers2$HAM3,managers2$US.3m.TR)
    # HAM3
    # StdDev Sharpe (Rf=0.3%, p=95%): 0.2525301
    # VaR Sharpe (Rf=0.3%, p=95%):    0.2504936
    # ES Sharpe (Rf=0.3%, p=95%):     0.2093343
    # > SharpeRatio(managers2$SP500.TR,managers2$US.3m.TR)
    # SP500.TR
    # StdDev Sharpe (Rf=0.3%, p=95%): 0.12558293
    # VaR Sharpe (Rf=0.3%, p=95%):    0.07957460
    # ES Sharpe (Rf=0.3%, p=95%):     0.05760917