2016-03-23 15 views
0

Ref bu yazı Similar questiondaha hesaplamak aylık döner

Ben sembollerin bir seri indiriyorum yapılan ve yakın düzeltilmiş aylık getiri hesaplamak gerekir ve yapamıyorum çalışıyor gibi görünüyor. Daha önceki yazıda, konuyla ilgili olarak ROC @Joshua Ulrich'i kullanmam gerekti, ancak bu günlük iadeler için geçerli. Diğer örnekler, benim için iyi olmayan 'yakın' kullanır.

Benim başlangıç ​​noktası:

library('quantmod') 
tickers <- c("XOM","MSFT","JNJ","GE","CVX","WFC","PG","JPM","VZ","PFE", 
     "T","IBM","MRK","BAC","DIS","ORCL","PM","INTC","SLB") 
#The following gives me what I need, but using Close instead of Adjusted 
stocks_ret <- lapply(tickers, function(sym) monthlyReturn(type = 'log',(na.omit(getSymbols(sym, from='2013-01-01, auto.assign=FALSE))))) 

Joshua Ulrich çözümü (büyük çalışır, ancak ben aylık getiriler çevirmek için nasıl hiçbir fikrim var): Sonra

# create environment to load data into 
Data <- new.env() 
getSymbols(c("^GSPC",Symbols), from="2007-01-01", env=Data) 
# calculate returns, merge, and create data.frame (eapply loops over all 
# objects in an environment, applies a function, and returns a list) 
Returns <- eapply(Data, function(s) ROC(Ad(s), type="discrete")) 
ReturnsDF <- as.data.frame(do.call(merge, Returns)) 
#adjust column names are re-order columns 
colnames(ReturnsDF) <- gsub(".Adjusted","",colnames(ReturnsDF)) 
ReturnsDF <- ReturnsDF[,c("GSPC",Symbols)] 

Denedim:

Returns <- eapply(Data, function(s) ROC(Ad(s)[endpoints(tickers, on = 'months'),], type="discrete")) 

İkincisi bana bir hata mesajı veriyor: "try.xts (x, error =" hatası) xts-coercible veya timeB olmalıdır Esaslı ")" Ancak

, ben AYLIK bazda hesaplayabilir yerine og günlük .. 'n = 21' ..

herkes sorunu çözmez nasıl bir çözüm bulamıyorum ??

cevap

2

Chris, bu çabalarınız için soru

library('quantmod') 
library('dplyr') 
tickers <- c("XOM","MSFT","JNJ","GE","CVX","WFC","PG","JPM","VZ","PFE", 
      "T","IBM","MRK","BAC","DIS","ORCL","PM","INTC","SLB") 

Stock_Data <- tickers %>% lapply(function(x) getSymbols(x,auto.assign=FALSE)) %>% 
    lapply(function(x) monthlyReturn(Ad(x))) 
+0

Teşekkür çözümü için tek yoldur. Başka bir paket kullanmadan bunu yapmanın herhangi bir yolu? – cJc

+0

Evet. Stok_Veri <- lapply (işaretleyiciler, işlev (x) getSymbols (x, auto.assign = YANLIŞ)) Stock_Data_Final <- lapply (Stok_Veri, işlev (x) monthReturn (Ad (x))) –

+0

Çok fazla Tnx, harika çalışıyor! – cJc