Ошибка в UseMethod ("as.xts"): нет применимого метода для as.xts, примененного к объекту класса "персонаж" - PullRequest
0 голосов
/ 03 ноября 2018

Я делаю этот код, где он принимает имена переменных, назначенные различным тикерам, и возвращает последние 252 периодических возврата для этого тикера. Вот код, который я использую:

comp1.a <- 'EFA'
comp2.a<- 'MSFT'
comp3.a <- 'GOOG'
comp4.a <- 'AMZN'
comp5.a <- 'VXX'
comp6.a <- 'M'
comp7.a <- 'SPY'


comp1.b <- noquote(comp1.a)
comp2.b <- noquote(comp2.a)
comp3.b <- noquote(comp3.a)
comp4.b <- noquote(comp4.a)
comp5.b <- noquote(comp5.a)
comp6.b <- noquote(comp6.a)
comp7.b <- noquote(comp7.a)

getSymbols(comp1.a, src='yahoo', from='2006-01-01')
getSymbols(comp2.a, src='yahoo', from='2006-01-01')
getSymbols(comp3.a, src='yahoo', from='2006-01-01')
getSymbols(comp4.a, src='yahoo', from='2006-01-01')
getSymbols(comp5.a, src='yahoo', from='2006-01-01')
getSymbols(comp6.a, src='yahoo', from='2006-01-01')
getSymbols(comp7.a, src='yahoo', from='2006-01-01')

Asset.weekly <- periodReturn(tail(Adj.Close,252),'weekly')
comp1.weekly <- periodReturn(tail(comp1.b,252),'weekly')
comp2.weekly <- periodReturn(tail(comp2.b,252),'weekly')
comp3.weekly <- periodReturn(tail(comp3.b,252),'weekly')
comp4.weekly <- periodReturn(tail(comp4.b,252),'weekly')
comp5.weekly <- periodReturn(tail(comp5.b,252),'weekly')
comp6.weekly <- periodReturn(tail(comp6.b,252),'weekly')
comp7.weekly <- periodReturn(tail(comp7.b,252),'weekly')

Возможно, вы удивляетесь, почему я все это сделал. Это потому, что если класс, используемый для данных возврата периода, является символом, он не работает.

Теперь, когда я делаю это, я получаю название этого поста:

Error in try.xts(x) : 
Error in UseMethod("as.xts") :   no applicable method for 'as.xts' 
applied to an object of class "noquote"

Есть идеи, что я сделал не так? Спасибо за вашу помощь, время и усилия.

1 Ответ

0 голосов
/ 11 ноября 2018

Вы можете сделать это более компактно, используя аргумент env для getSymbols() с вектором тикеров.

tickers <- c('EFA', 'MSFT', 'GOOG', 'AMZN', 'VXX', 'M', 'SPY')
# Create a new environment to store the getSymbols() results
portf <- new.env()
# Import ticker data, storing it in the 'portf' environment
getSymbols(tickers, src = 'yahoo', from = '2006-01-01', env = portf)

# Loop over each object in 'portf',
# and calculate the weekly adjusted close return for the last year
wkly <- lapply(portf, function(x) { periodReturn(tail(Ad(x), 252), 'weekly') })

# Merge the weekly returns into one xts object
wkly <- setNames(Reduce(merge, wkly), names(wkly))
...