使用R分析资产负债表和损益表

使用R分析资产负债表和损益表,r,finance,R,Finance,我对使用R分析资产负债表和损益表很感兴趣。我看到有R软件包从雅虎和谷歌金融获取信息,但我看到的所有例子都涉及历史股价信息。有没有办法用R从资产负债表和损益表中提取历史信息?你犯了一个常见的错误,将“访问雅虎或谷歌数据”与“我在雅虎或谷歌财经上看到的一切都可以下载”混淆起来 当R函数下载历史股价数据时,它们几乎总是访问为此目的而明确设计的接口,例如cgi处理程序,提供给定股票符号和开始和结束日期的csv文件。因此,我们所需要做的就是形成适当的查询,点击Web服务器,获取csv文件并对其进行dpar

我对使用R分析资产负债表和损益表很感兴趣。我看到有R软件包从雅虎和谷歌金融获取信息,但我看到的所有例子都涉及历史股价信息。有没有办法用R从资产负债表和损益表中提取历史信息?

你犯了一个常见的错误,将“访问雅虎或谷歌数据”与“我在雅虎或谷歌财经上看到的一切都可以下载”混淆起来

当R函数下载历史股价数据时,它们几乎总是访问为此目的而明确设计的接口,例如cgi处理程序,提供给定股票符号和开始和结束日期的csv文件。因此,我们所需要做的就是形成适当的查询,点击Web服务器,获取csv文件并对其进行dparse

现在,资产负债表信息(据我所知)在这样的界面中是不可用的。因此,您需要“screen scrape”并直接解析html


目前还不清楚R是否是实现这一点的最佳工具。我知道一些Perl模块用于从Yahoo Finance获取非时间序列数据,但尚未使用它们。

您想问的问题,并获得答案!,我在哪里可以获得免费的XBRL数据来分析公司的资产负债表,是否有一个图书馆可以在R中使用这些数据

XBRL(Extensible Business Reporting Language,可扩展业务报告语言)是一种标准,用于以XML格式标记会计报表(损益表、资产负债表、损益表),以便计算机轻松解析并将其放入电子表格中

据我所知,许多公司监管机构(如美国的SEC、澳大利亚的ASIC)正在鼓励其管辖范围内的公司使用这种格式进行报告,或进行试点,但我认为目前还没有强制执行这种格式。如果您将您的投资范围(我假设您希望此数据以电子格式用于投资目的)限制为以XBRL格式免费提供季度报告的公司,我希望您将有一个非常简短的投资公司列表


彭博社、路透社等都提供了获取企业基本数据的昂贵信息。也可能有人以XBRL格式发布资产负债表,经营着一家整洁的企业。XIgnite和web服务更便宜,但仍然是付费的,但您无法从它们那里获得完整的资产负债表数据。

考虑到最后两条评论,您可以使用EdgardOnline以经济的方式获取公司财务报表。它不是免费的,但比彭博社和路透社便宜。另一个需要考虑的是财务报告的规范化/标准化。仅仅因为两家公司在同一个行业,销售类似的产品,并不一定意味着如果你将两家公司的损益表或资产负债表并排放置,那么报告项目就必须对齐。Compustat已规范化/标准化财务报告

我对R一无所知,但假设它可以调用REST API并使用XML格式的数据,您可以尝试一下Mergent Company Fundamentals API,它有很多非常详细的财务报表数据(资产负债表/损益表/现金流量表/比率),跨公司标准化,追溯到20多年前

我写了一个C#程序,我认为它能满足你的需求。它从nasdaq.com页面解析html。它解析html并为每只股票创建一个csv文件,其中包括损益表、现金流和资产负债表值,这些值可以追溯到5-10年前,具体取决于股票的年龄。我现在正在努力添加一些分析计算(目前主要是历史比率)。我对学习R及其在基础分析中的应用很感兴趣。也许我们可以互相帮助。

我在网上找到了你的问题的部分解决方案,因为我只检索了一年的资产负债表信息和财务报表。我不知道怎么做了很多年。 R中有一个名为quantmod的包,可以从CRAN安装

install.packages('quantmod')
然后你可以做以下事情:假设你想从一家在纽约证券交易所上市的公司获得财务信息:通用电气。股票代码:GE

 library(quantmod)
 getFinancials('GE')
 viewFinancials(GE.f)
要仅获取年度报告的损益表作为数据框架,请使用以下内容:

viewFinancials(GE.f, "IS", "A")

请让我知道,如果您知道如何在多年内做到这一点。

要阅读财务信息,请尝试此功能(我几个月前选择了它,并做了一些小的调整)

在浏览器的地址栏中输入上述URL并点击回车键后。CSV将自动下载到您的计算机上,您应获得如下所示的cvs文件(数据为2016年7月22日):

基本数据的一些yahoo标记:


事实上,我是在谷歌表单上这样做的。我认为这也是最简单的方法,因为它可以提取真实的实时数据是另一个优点。最后,保存这些语句不会占用我的任何空间

=importhtml(“&B1&&stmtView=Ann”,“表”,0)

其中B1单元格包含股票代码


你可以对资产负债表和现金流做同样的事情。

我最近在CRAN上发现了这个R软件包。我相信这正符合你的要求


您可以从in R免费获取所有三种类型的财务报表。此外,您还可以获取报表和标准化报表。从SEC获取XBRL文件的问题在于没有标准化选项,这意味着如果要进行跨股权比较,必须手动映射财务报表项目。以下是一个例子:

#Install httr, which you need to request data via API
install.packages("httr")
require("httr")

#Install jsonlite which parses JSON
install.packages("jsonlite")
require("jsonlite")

#Create variables for your usename and password, get those at intrinio.com/login
username <- "Your_API_Username"
password <- "Your_API_Password"

#Making an api call for roic. This puts together the different parts of the API call

base <- "https://api.intrinio.com/"
endpoint <- "financials/"
type <- "standardized"
stock <- "YUM"
statement <- "income_statement"
fiscal_period <- "Q2"
fiscal_year <- "2015"

#Pasting them together to make the API call
call1 <- paste(base,endpoint,type,"?","identifier","=", stock, "&","statement","=",statement,"&","fiscal_period",
               "=", fiscal_period, "&", "fiscal_year", "=", fiscal_year, sep="")

# call1 Looks like this "https://api.intrinio.com/financials/standardized?identifier=YUM&statement=income_statement&fiscal_period=Q2&fiscal_year=2015"

#Now we use the API call to request the data from Intrinio's database

YUM_Income <- GET(call1, authenticate(username,password, type = "basic"))

#That gives us the ROIC value, but it isn't in a good format so we parse it

test1 <- unlist(content(YUM_Income, "text"))

#Convert from JSON to flattened list

parsed_statement <- fromJSON(test1)

#Then make your data frame:

df1 <- data.frame(parsed_statement)
#安装httr,您需要通过API请求数据
安装程序包(“httr”)
要求(“httr”)
#安装解析JSON的jsonlite
安装。
tickers <- c("AAPL","GOOG","F")
stats <- ldply(tickers, getKeyStats_xpath)
rownames(stats) <- tickers
write.csv(t(stats), "FinancialStats_updated.csv",row.names=TRUE) 
http://finance.yahoo.com/d/quotes.csv?s=MSFT+AAPL+F&f=ser
#Install httr, which you need to request data via API
install.packages("httr")
require("httr")

#Install jsonlite which parses JSON
install.packages("jsonlite")
require("jsonlite")

#Create variables for your usename and password, get those at intrinio.com/login
username <- "Your_API_Username"
password <- "Your_API_Password"

#Making an api call for roic. This puts together the different parts of the API call

base <- "https://api.intrinio.com/"
endpoint <- "financials/"
type <- "standardized"
stock <- "YUM"
statement <- "income_statement"
fiscal_period <- "Q2"
fiscal_year <- "2015"

#Pasting them together to make the API call
call1 <- paste(base,endpoint,type,"?","identifier","=", stock, "&","statement","=",statement,"&","fiscal_period",
               "=", fiscal_period, "&", "fiscal_year", "=", fiscal_year, sep="")

# call1 Looks like this "https://api.intrinio.com/financials/standardized?identifier=YUM&statement=income_statement&fiscal_period=Q2&fiscal_year=2015"

#Now we use the API call to request the data from Intrinio's database

YUM_Income <- GET(call1, authenticate(username,password, type = "basic"))

#That gives us the ROIC value, but it isn't in a good format so we parse it

test1 <- unlist(content(YUM_Income, "text"))

#Convert from JSON to flattened list

parsed_statement <- fromJSON(test1)

#Then make your data frame:

df1 <- data.frame(parsed_statement)