Your DATE column may be a date, but it is actually either a character, a coefficient, an integer, or a number vector.
First you need to convert the DATE column to a DATE object. You can then create the xts object from the CLOSE and DATE columns of your PRICE data.frame. Finally, you can use the xts object to calculate returns and Calmar relationships.
PRICE <- structure(list( DATE = c(20070103L, 20070104L, 20070105L, 20070108L, 20070109L, 20070110L, 20070111L, 20070112L, 20070115L), CLOSE = c(54.7, 54.77, 55.12, 54.87, 54.86, 54.27, 54.77, 55.36, 55.76)), .Names = c("DATE", "CLOSE"), class = "data.frame", row.names = c("1", "2", "3", "4", "5", "6", "7", "8", "9")) library(PerformanceAnalytics) # loads/attaches xts # Convert DATE to Date class PRICE$DATE <- as.Date(as.character(PRICE$DATE),format="%Y%m%d") # create xts object x <- xts(PRICE$CLOSE,PRICE$DATE) CalmarRatio(Return.calculate(x)) # [,1] # Calmar Ratio 52.82026
Joshua Ulrich Jan 04 2018-12-12T00: 00Z
source share