无可否认,我是R和金融分析的初学者。为了让自己更好,我一直在做一个副业,自动化一个“趋势价值”筛选器。基本上,您提取了6个财务指标- P/E、P/B、P/FCF、P/S、EV/EBITDA和股东收益率,即股息率+股票回购收益率(即以某种方式向股东返还的股权)。如果你想了解更多,here还有更多内容,但提取指标是第一部分。
我基于其他帖子编写的代码已经拉出了市盈率、市盈率和市盈率。因此,我缺少市值、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)任何帮助都将不胜感激!
发布于 2016-11-12 20:46:23
这会做你想做的事。
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)https://stackoverflow.com/questions/40432212
复制相似问题