2013-02-23 1 views
3

Я пытаюсь импортировать финансовые отчеты всех компаний, перечисленных на NYSE, чья рыночная капитализация больше, чем первая квартиль образца. Вот мой код:R quantmod: getFinancials

require(TTR) 
require(quantmod) 
data.init="2013/01/01" 
start.date <- as.numeric(gsub("/", "",data.init)) 
nyse.symbols <- stockSymbols("NYSE")[,-c(3,5)] 
nyse.symbols <- na.omit(nyse.symbols[which(nyse.symbols[,"MarketCap"]>0),]) 

######## Selection Criteria 
# Filter 1 : stock mkt cap > 1st quartile --> remove the less liquid stocks 
mktcap.filter <- quantile(nyse.symbols[,"MarketCap"],0.25) 
nyse.symbols <- nyse.symbols[which(nyse.symbols[,"MarketCap"]>mktcap.filter),] 

# Filter 2 : 
nyse.fs <- new.env() 
tickers.fs <- nyse.symbols[,1] 
tickers.fs <- tickers.fs[- match(c("IHG","AF","BAP","BBD","BBDO"),tickers.fs)] 
lapply(tickers.fs, getFinancials,env=nyse.fs) 

Я удалил следующие акции c("IHG","AF","BAP","BBD","BBDO"), потому что quantmod не удается импортировать заявления Financials: Я получил сообщение об ошибке, как, что:

Error in thead[x]:thead[x + 1] : NA/NaN argument 
In addition: There were 39 warnings (use warnings() to see them) 

и вот что я получаю при использовании функции warnings():

Предупреждающие сообщения (у меня есть 39 сообщений об ошибках этого типа):

1: In readLines(tmp) : 
    incomplete final line found on '/var/folders/9q/pwdpb5nj7bb8jjc_kb3np__h0000gn/T//RtmpeUS9Uh/file7de4698fa5b' 
2: In readLines(tmp) : 
    incomplete final line found on '/var/folders/9q/pwdpb5nj7bb8jjc_kb3np__h0000gn/T//RtmpeUS9Uh/file7de655c9092' 
3: In readLines(tmp) : 
    incomplete final line found on '/var/folders/9q/pwdpb5nj7bb8jjc_kb3np__h0000gn/T//RtmpeUS9Uh/file7de2017953b' 

Я нашел проблемные запасы шаг за шагом. То, что я хотел бы сделать, - это автоматически избавиться от всех акций, чьи финансовые отчеты недоступны. Любая идея?

+0

Опишите проблему с этим изделием. Что вы получаете, когда запускаете 'getFinancials (« IHG »), viewFin (IHG.f)'? – nograpes

ответ

3

Вы можете позвонить по телефону getFinancials между tryCatch. Пример:

options(warn=-1) ## optional to not get horrible quantlib messages! 
## here I choose 2 goods symbols and 2 bad symbols  
ll <- lapply(c("AF","IHG","BAP",ny.se[1,1]), function(x) 
    tryCatch(getFinancials(x,env=nyse.fs), 
        error=function(e){print(paste(x,'not found'));NA})) 
### "AF not found" 
### "BAP not found" 
options(warn=0) 
## I apply to remove NA 
rapply(ll,na.omit) 
"IHG.f" "A.f" 
+0

В чем смысл вашей функции ошибки? Должен ли я вводить в функцию ошибки сообщение об ошибке, которое я получаю на консоли R? – marino89

+0

@ marino89 он регистрирует ошибку. вы можете заменить сообщение «не foud» любой строкой, но возвращает NA. Я использую его в rapply для фильтрации окончательного списка. – agstudy

+0

Он отлично работает! Отличная функция! Большое спасибо! – marino89