Integrantes:
Regina Enríquez Chapa A01721435
Maximiliano Carvajal A01552179
Guillermo Cazares Cruz A01283709
#install.packages("finreportr")
#install.packages("tidyverse")
#install.packages("forecast")
library(finreportr)
library(tidyverse)
options(HTTPUserAgent = "a a@gmail.com")
CompanyInfo("AAPL")
## company CIK SIC state state.inc FY.end street.address
## 1 Apple Inc. 0000320193 3571 CA CA 0928 ONE APPLE PARK WAY
## city.state
## 1 CUPERTINO CA 95014
Se planea analizar los operating costs y net revenue de la empresa,
ambas provienen de GetIncome.
options(HTTPUserAgent = "a a@gmail.com")
Apple11_income <- GetIncome("AAPL",2011)
A13_income <- GetIncome("AAPL",2013)
Apple14_income <- GetIncome("AAPL",2014)
A15_income <- GetIncome("AAPL",2015)
A16_income <- GetIncome("AAPL",2016)
Apple17_income <- GetIncome("AAPL",2017)
#options(HTTPUserAgent = "a a@gmail.com")
#Apple11_balance <- GetBalanceSheet("AAPL",2011)
#Apple11_cash <- GetCashFlow("AAPL",2011)
#Apple14_balance <- GetBalanceSheet("AAPL",2014)
#Apple14_cash <- GetCashFlow("AAPL",2014)
#Apple17_balance <- GetBalanceSheet("AAPL",2017)
#Apple17_cash<- GetCashFlow("AAPL",2017)
El proceso consiste en: seleccionar una variable, cortarla de cada tabla, juntarlas para obtener todas las fechas, armar la time series, y hacer la predicción.
Apple_OpExp_11 <- select(Apple11_income,Metric,Amount,endDate)
Apple_OpExp_11 <- subset(Apple_OpExp_11, Metric == "Total operating expenses")
Apple_OpExp_14 <- select(Apple14_income,Metric,Amount,endDate)
Apple_OpExp_14 <- subset(Apple_OpExp_14, Metric == "Operating Expenses")
Apple_OpExp_17 <- select(Apple17_income,Metric,Amount,endDate)
Apple_OpExp_17 <- subset(Apple_OpExp_17, Metric == "Operating Expenses")
Apple_OpExp_complete <- rbind(Apple_OpExp_11,Apple_OpExp_14,Apple_OpExp_17)
Apple_OpExp_complete <- Apple_OpExp_complete[order(Apple_OpExp_complete$endDate),]
Apple_OpExp_complete$Amount <- as.numeric(Apple_OpExp_complete$Amount)
library(forecast)
ts_OpExp <- ts(data=Apple_OpExp_complete$Amount, start = c(2009,1), frequency = 1)
ts_OpExp
## Time Series:
## Start = 2009
## End = 2017
## Frequency = 1
## [1] 5.4820e+09 7.2990e+09 1.0028e+10 1.3421e+10 1.5305e+10 1.8034e+10 2.2396e+10
## [8] 2.4239e+10 2.6842e+10
arima_OpExp <- auto.arima(ts_OpExp)
arima_OpExp
## Series: ts_OpExp
## ARIMA(0,1,0) with drift
##
## Coefficients:
## drift
## 2670000000
## s.e. 296005922
##
## sigma^2 = 7.752e+17: log likelihood = -175.58
## AIC=355.17 AICc=357.57 BIC=355.33
summary(arima_OpExp)
## Series: ts_OpExp
## ARIMA(0,1,0) with drift
##
## Coefficients:
## drift
## 2670000000
## s.e. 296005922
##
## sigma^2 = 7.752e+17: log likelihood = -175.58
## AIC=355.17 AICc=357.57 BIC=355.33
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 312444.3 776486811 563201333 -0.7305296 3.821376 0.2109368
## ACF1
## Training set -0.3443892
pronostico_2 <- forecast(arima_OpExp, level=c(95), h=6)
pronostico_2
## Point Forecast Lo 95 Hi 95
## 2018 2.9512e+10 27786343272 31237656728
## 2019 3.2182e+10 29741552851 34622447149
## 2020 3.4852e+10 31863074870 37840925130
## 2021 3.7522e+10 34070686543 40973313457
## 2022 4.0192e+10 36333314250 44050685750
## 2023 4.2862e+10 38635021544 47088978456
plot(pronostico_2)
Los pronósticos muestran un crecimiento constante durante los siguiente 6 años. En la gráfica se aprecia que las predicciones siguen de manera perfecta la dirección en la que ya se dirigían los datos históricos.
Estas fueron las predicciones:
2018 - 2.9512e+10, 2019 - 3.2182e+10, 2020 - 3.4852e+10
2021 - 3.7522e+10, 2022 - 4.0192e+10, 2023 - 4.2862e+10
Cada base solo trae completo los datos de un año anterior al que seleccionaste en la función GetIncome, las otras dos vienen incompletas.
Bingus <- Apple11_income[,-2]
Bingus <- subset(Bingus, Metric == "Revenue, Net")
Bingus <- Bingus[order(Bingus$endDate),]
Bingus_2 <- Apple14_income[,-2]
Bingus_2 <- subset(Bingus_2, Metric == "Revenue, Net")
Bingus_2 <- Bingus_2[order(Bingus_2$endDate),]
Bingus_3 <- Apple17_income[,-2]
Bingus_3 <- subset(Bingus_3, Metric == "Revenue, Net")
Bingus_3 <- Bingus_3[order(Bingus_3$endDate),]
Después de probar, vi que por trimestre solo viene la info completa del año anterior al seleccionado en getincome(), mientras que los otros dos vienen incompletos
Por lo tanto, ocupo 2017 (2017-2015), 2016 (2015-2014), 2015(2014-2013), 2014(2013-2012), 2013(2012) Si quiero calcular desde 2012 a 2017 por trimestre
RevNet_17 <- subset(Apple17_income, Metric == "Revenue, Net")
RevNet_17 <- RevNet_17[order(RevNet_17$endDate,RevNet_17$startDate),]
RevNet_17 <- RevNet_17[-c(1,5,10),]
RevNet_16 <- subset(A16_income, Metric == "Revenue, Net")
RevNet_16 <- RevNet_16[order(RevNet_16$endDate,RevNet_16$startDate),]
RevNet_16 <- RevNet_16[c(2:4,6),]
RevNet_15 <- subset(A15_income, Metric == "Revenue, Net")
RevNet_15 <- RevNet_15[order(RevNet_15$endDate,RevNet_15$startDate),]
RevNet_15 <- RevNet_15[c(2:4,6),]
RevNet_14 <- subset(Apple14_income, Metric == "Revenue, Net")
RevNet_14 <- RevNet_14[order(RevNet_14$endDate,RevNet_14$startDate),]
RevNet_14 <- RevNet_14[c(2:4,6),]
RevNet_13 <- subset(A13_income, Metric == "Sales Revenue Net")
RevNet_13 <- RevNet_13[order(RevNet_13$endDate,RevNet_13$startDate),]
RevNet_13 <- RevNet_13[c(3,4,6),]
RevNet_complete <- rbind(RevNet_13,RevNet_14,RevNet_15,RevNet_16,RevNet_17)
RevNet_complete <- RevNet_complete[order(RevNet_complete$endDate),]
str(RevNet_complete)
## 'data.frame': 23 obs. of 5 variables:
## $ Metric : chr "Sales Revenue Net" "Sales Revenue Net" "Sales Revenue Net" "Revenue, Net" ...
## $ Units : chr "iso4217_USD" "iso4217_USD" "iso4217_USD" "iso4217_USD" ...
## $ Amount : chr "39186000000" "35023000000" "35966000000" "54512000000" ...
## $ startDate: chr "2012-01-01" "2012-04-01" "2012-07-01" "2012-09-30" ...
## $ endDate : chr "2012-03-31" "2012-06-30" "2012-09-29" "2012-12-29" ...
RevNet_complete$Amount <- as.numeric(RevNet_complete$Amount)
str(RevNet_complete)
## 'data.frame': 23 obs. of 5 variables:
## $ Metric : chr "Sales Revenue Net" "Sales Revenue Net" "Sales Revenue Net" "Revenue, Net" ...
## $ Units : chr "iso4217_USD" "iso4217_USD" "iso4217_USD" "iso4217_USD" ...
## $ Amount : num 3.92e+10 3.50e+10 3.60e+10 5.45e+10 4.36e+10 ...
## $ startDate: chr "2012-01-01" "2012-04-01" "2012-07-01" "2012-09-30" ...
## $ endDate : chr "2012-03-31" "2012-06-30" "2012-09-29" "2012-12-29" ...
library(forecast)
ts_RevNet <- ts(data=RevNet_complete$Amount, start = c(2012,1), frequency = 4)
ts_RevNet
## Qtr1 Qtr2 Qtr3 Qtr4
## 2012 3.9186e+10 3.5023e+10 3.5966e+10 5.4512e+10
## 2013 4.3603e+10 3.5323e+10 3.7472e+10 5.7594e+10
## 2014 4.5646e+10 3.7432e+10 4.2123e+10 7.4599e+10
## 2015 5.8010e+10 4.9605e+10 5.1501e+10 7.5872e+10
## 2016 5.0557e+10 4.2358e+10 4.6852e+10 7.8351e+10
## 2017 5.2896e+10 4.5408e+10 5.2579e+10
arima_RevNet <- auto.arima(ts_RevNet)
arima_RevNet
## Series: ts_RevNet
## ARIMA(0,0,0)(0,1,0)[4] with drift
##
## Coefficients:
## drift
## 849302632
## s.e. 461280066
##
## sigma^2 = 3.92e+19: log likelihood = -455.04
## AIC=914.08 AICc=914.83 BIC=915.97
summary(arima_RevNet)
## Series: ts_RevNet
## ARIMA(0,0,0)(0,1,0)[4] with drift
##
## Coefficients:
## drift
## 849302632
## s.e. 461280066
##
## sigma^2 = 3.92e+19: log likelihood = -455.04
## AIC=914.08 AICc=914.83 BIC=915.97
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 6791039 5538526781 3653271588 -0.7888238 7.147855 0.6723053
## ACF1
## Training set 0.6995847
pronostico_1 <- forecast(arima_RevNet, level=c(95), h=8)
pronostico_1
## Point Forecast Lo 95 Hi 95
## 2017 Q4 81748210526 69477491366 94018929687
## 2018 Q1 56293210526 44022491366 68563929687
## 2018 Q2 48805210526 36534491366 61075929687
## 2018 Q3 55976210526 43705491366 68246929687
## 2018 Q4 85145421053 67792003596 102498838509
## 2019 Q1 59690421053 42337003596 77043838509
## 2019 Q2 52202421053 34849003596 69555838509
## 2019 Q3 59373421053 42020003596 76726838509
plot(pronostico_1)
Los pronósticos muestran un patrón similar a los datos históricos, en donde los trimestres más altos fueron Q1 y el Q4 (en especial el 4). Otro aspecto importante es que aunque el patrón se repita, la cantidad en cada trimestre va aumentando gradualmente conforme pasan los años.
Las predicciones fueron:
2017 Q4 - 81748210526
2018 Q1 - 56293210526, Q2 - 48805210526, Q3 - 55976210526, Q4 - 85145421053
2019 Q1 - 59690421053, Q2 - 52202421053, Q3 - 59373421053