首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R中的财务分析-希望将市值、P/FCF、EV/EBITDA和股东收益率添加到数据集中

R中的财务分析-希望将市值、P/FCF、EV/EBITDA和股东收益率添加到数据集中
EN

Stack Overflow用户
提问于 2016-11-05 05:49:58
回答 1查看 816关注 0票数 1

无可否认,我是R和金融分析的初学者。为了让自己更好,我一直在做一个副业,自动化一个“趋势价值”筛选器。基本上,您提取了6个财务指标- P/E、P/B、P/FCF、P/S、EV/EBITDA和股东收益率,即股息率+股票回购收益率(即以某种方式向股东返还的股权)。如果你想了解更多,here还有更多内容,但提取指标是第一部分。

我基于其他帖子编写的代码已经拉出了市盈率、市盈率和市盈率。因此,我缺少市值、P/FCF、EV/EBITDA和股东收益率。这是我到目前为止所知道的:

代码语言:javascript
复制
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)

任何帮助都将不胜感激!

EN

回答 1

Stack Overflow用户

发布于 2016-11-12 20:46:23

这会做你想做的事。

代码语言:javascript
复制
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
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40432212

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档