2016-11-04 31 views
1

我承認R和財務分析是一個整體初學者。爲了讓自己更好,我一直在做一個側面項目來自動化「趨勢價值」篩選器。基本上,您可以提取6個財務指標 - P/E,P/B,P/FCF,P/S,EV/EBITDA和股東收益率,即股息收益率+股票回購收益率(即以某種方式返回股東的權益) 。還有更多關於here的信息,如果您想了解更多信息,但是拉動指標是第一部分。R中的財務分析 - 希望將市值,P/FCF,EV/EBITDA和股東收益增加到數據集

我根據其他職位放在一起的代碼已經拉動了市盈率P/E,P/B,& P/S。所以我錯過了市值,P/FCF,EV/EBITDA和股東收益率。這是我到目前爲止:

library(quantmod) # also loads xts and TTR 
require(plyr) 

# Fetch all Symbols & store only the tickers to retrieve the data 
symbols <- stockSymbols() 

# Convert to just tickers. 
tickers <- symbols[,1] 

# Pull P/E, P/B, P/S 
what_metrics <- yahooQF(c("P/E Ratio", 
          "Price/Book", 
          "Price/Sales")) 

# Not all the metrics are returned by Yahoo. 
metrics <- getQuote(paste(tickers, sep="", collapse=";"), what=what_metrics) 

#Add tickers as the first column and remove the first column which had date stamps 
metrics <- data.frame(Symbol=tickers, metrics[,2:length(metrics)]) 

#Change colnames 
colnames(metrics) <- c("Symbol","P/E","P/B","Price/Sales") 

#Persist this to the csv file 
write.csv(metrics, "FinancialMetrics.csv", row.names=FALSE) 

任何幫助,將不勝感激!

+0

歡迎來到堆棧溢出。詢問問題時,您應該使用最小數據集,而您從所有股票中提取數據。另外,如果您不縮小範圍,您的問題非常廣泛,並且可能會被關閉。你想要什麼樣的趨勢價值分析來幫助計算,看起來可能是什麼樣的? – shayaa

+0

謝謝!所以,本質上,類似於我到目前爲止每個股票都是如何拉動P/E,P/B和P/S,我的目標是向數據集中添加數據列(價格/自由現金流,企業價值/ EBITDA ,市值和股東收益率)。不幸的是,我無法從yahooQF功能訪問該信息,所以希望可能有另一種方法或包,我目前不知道。 對不起,如果這仍然是模糊的! –

回答

0

這會做你想做的。

library(XML) 

stocks <- c("AXP","BA","CAT","CSCO") 

for (s in stocks) { 
     url <- paste0("http://finviz.com/quote.ashx?t=", s) 
     webpage <- readLines(url) 
     html <- htmlTreeParse(webpage, useInternalNodes = TRUE, asText = TRUE) 
     tableNodes <- getNodeSet(html, "//table") 

     # ASSIGN TO STOCK NAMED DFS 
     assign(s, readHTMLTable(tableNodes[[9]], 
       header= c("data1", "data2", "data3", "data4", "data5", "data6", 
          "data7", "data8", "data9", "data10", "data11", "data12"))) 

     # ADD COLUMN TO IDENTIFY STOCK 
     df <- get(s) 
     df['stock'] <- s 
     assign(s, df) 
} 

# COMBINE ALL STOCK DATA 
stockdatalist <- cbind(mget(stocks)) 
stockdata <- do.call(rbind, stockdatalist) 
# MOVE STOCK ID TO FIRST COLUMN 
stockdata <- stockdata[, c(ncol(stockdata), 1:ncol(stockdata)-1)] 

# SAVE TO CSV 
write.table(stockdata, "C:/Users/your_path_here/Desktop/MyData.csv", sep=",", 
      row.names=FALSE, col.names=FALSE) 

# REMOVE TEMP OBJECTS 
rm(df, stockdatalist) 
+0

非常感謝!雖然不幸的是我不認爲EV/EBITDA和回購收益率(對股東收益的等式的一部分)在Finviz上。這些信息在雅虎上,儘管我也無法從那裏提取數據。 –