Integrantes: Regina Enríquez, Maximiliano Carvajal, Guillermo Cazares
library(forecast)
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
library(finreportr)
library(tidyverse)
## -- Attaching core tidyverse packages ------------------------ tidyverse 2.0.0 --
## v dplyr 1.1.0 v readr 2.1.2
## v forcats 1.0.0 v stringr 1.5.0
## v ggplot2 3.4.1 v tibble 3.1.8
## v lubridate 1.9.3 v tidyr 1.3.0
## v purrr 1.0.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
## i Use the ]8;;http://conflicted.r-lib.org/conflicted package]8;; to force all conflicts to become errors
options(HTTPUserAgent = "a a@gmail.com")
AnnualReports("AAPL")
## filing.name filing.date accession.no
## 1 10-K 2023-11-03 0000320193-23-000106
## 2 10-K 2022-10-28 0000320193-22-000108
## 3 10-K 2021-10-29 0000320193-21-000105
## 4 10-K 2020-10-30 0000320193-20-000096
## 5 10-K 2019-10-31 0000320193-19-000119
## 6 10-K 2018-11-05 0000320193-18-000145
## 7 10-K 2017-11-03 0000320193-17-000070
## 8 10-K 2016-10-26 0001628280-16-020309
## 9 10-K 2015-10-28 0001193125-15-356351
## 10 10-K 2014-10-27 0001193125-14-383437
## 11 10-K 2013-10-30 0001193125-13-416534
## 12 10-K 2012-10-31 0001193125-12-444068
## 13 10-K 2011-10-26 0001193125-11-282113
## 14 10-K 2010-10-27 0001193125-10-238044
## 15 10-K/A 2010-01-25 0001193125-10-012091
## 16 10-K 2009-10-27 0001193125-09-214859
## 17 10-K 2008-11-05 0001193125-08-224958
## 18 10-K 2007-11-15 0001047469-07-009340
## 19 10-K 2006-12-29 0001104659-06-084288
## 20 10-K 2005-12-01 0001104659-05-058421
## 21 10-K 2004-12-03 0001047469-04-035975
## 22 10-K 2003-12-19 0001047469-03-041604
## 23 10-K 2002-12-19 0001047469-02-007674
## 24 10-K405 2001-12-21 0000912057-01-544436
## 25 10-K 2000-12-14 0000912057-00-053623
## 26 10-K 1999-12-22 0000912057-99-010244
## 27 10-K405 1998-12-23 0001047469-98-044981
## 28 10-K/A 1998-01-23 0001047469-98-001822
## 29 10-K 1997-12-05 0001047469-97-006960
## 30 10-K 1996-12-19 0000320193-96-000023
## 31 10-K 1995-12-19 0000320193-95-000016
## 32 10-K 1994-12-13 0000320193-94-000016
apple_income_2011 <- GetIncome("AAPL", 2011)
apple_income_2014 <- GetIncome("AAPL", 2014)
apple_income_2017 <- GetIncome("AAPL", 2017)
Apple_OpExp_11 <- select(apple_income_2011,Metric,Amount,endDate)
Apple_OpExp_11 <- subset(Apple_OpExp_11, Metric == "Total operating expenses")
Apple_OpExp_14 <- select(apple_income_2014,Metric,Amount,endDate)
Apple_OpExp_14 <- subset(Apple_OpExp_14, Metric == "Operating Expenses")
Apple_OpExp_17 <- select(apple_income_2017,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)
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_1 <- forecast(arima_OpExp, level=c(95), h=6)
pronostico_1
## 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_1)
Apple_Net_11 <- select(apple_income_2011,Metric,Amount,endDate)
Apple_Net_11 <- subset(Apple_Net_11, Metric == "Research and Development Expense")
Apple_Net_14 <- select(apple_income_2014,Metric,Amount,endDate)
Apple_Net_14 <- subset(Apple_Net_14, Metric == "Research and Development Expense")
Apple_Net_17 <- select(apple_income_2017,Metric,Amount,endDate)
Apple_Net_17 <- subset(Apple_Net_17, Metric == "Research and Development Expense")
Apple_Net_complete <- rbind(Apple_Net_11,Apple_Net_14,Apple_Net_17)
Apple_Net_complete <- Apple_Net_complete[order(Apple_Net_complete$endDate),]
Apple_Net_complete$Amount <- as.numeric(Apple_Net_complete$Amount)
Apple_Net_complete
## Metric Amount endDate
## 23 Research and Development Expense 1.3330e+09 2009-09-26
## 24 Research and Development Expense 1.7820e+09 2010-09-25
## 25 Research and Development Expense 2.4290e+09 2011-09-24
## 251 Research and Development Expense 3.3810e+09 2012-09-29
## 231 Research and Development Expense 4.4750e+09 2013-09-28
## 241 Research and Development Expense 6.0410e+09 2014-09-27
## 26 Research and Development Expense 8.0670e+09 2015-09-26
## 27 Research and Development Expense 1.0045e+10 2016-09-24
## 28 Research and Development Expense 1.1581e+10 2017-09-30
ts_Net <- ts(data=Apple_Net_complete$Amount, start = c(2012,1), frequency = 1)
ts_Net
## Time Series:
## Start = 2012
## End = 2020
## Frequency = 1
## [1] 1.3330e+09 1.7820e+09 2.4290e+09 3.3810e+09 4.4750e+09 6.0410e+09 8.0670e+09
## [8] 1.0045e+10 1.1581e+10
arima_Net <- auto.arima(ts_Net)
arima_Net
## Series: ts_Net
## ARIMA(0,2,0)
##
## sigma^2 = 1.121e+17: log likelihood = -147.34
## AIC=296.67 AICc=297.47 BIC=296.62
summary(arima_Net)
## Series: ts_Net
## ARIMA(0,2,0)
##
## sigma^2 = 1.121e+17: log likelihood = -147.34
## AIC=296.67 AICc=297.47 BIC=296.62
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set 120756858 295229848 229820061 3.285274 4.249377 0.1794068
## ACF1
## Training set 0.2873511
pronostico_2 <- forecast(arima_Net, level=c(95), h=6)
pronostico_2
## Point Forecast Lo 95 Hi 95
## 2021 1.3117e+10 12460884059 13773115941
## 2022 1.4653e+10 13185880155 16120119845
## 2023 1.6189e+10 13734038944 18643961056
## 2024 1.7725e+10 14131304989 21318695011
## 2025 1.9261e+10 14395113953 24126886047
## 2026 2.0797e+10 14538052835 27055947165
plot(pronostico_2)
apple_balance_2011 <- GetBalanceSheet("AAPL",2011)
apple_balance_2014 <- GetBalanceSheet("AAPL",2014)
apple_balance_2017 <- GetBalanceSheet("AAPL",2017)
Bingus_bal <- apple_balance_2011[,-2]
Bingus_bal <- subset(Bingus_bal, Metric == "Total assets")
Bingus_bal <- Bingus_bal[order(Bingus_bal$endDate),]
Bingus_bal2 <- apple_balance_2014[,-2]
Bingus_bal2 <- subset(Bingus_bal2, Metric == "Assets")
Bingus_bal2 <- Bingus_bal2[order(Bingus_bal2$endDate),]
Bingus_bal3 <- apple_balance_2017[,-2]
Bingus_bal3 <- subset(Bingus_bal3, Metric == "Assets")
Bingus_bal3 <- Bingus_bal3[order(Bingus_bal3$endDate),]
apple_balance_2015 <- GetBalanceSheet("AAPL",2015)
Bingus_bal4 <- apple_balance_2015[,-2]
Bingus_bal4 <- subset(Bingus_bal4, Metric == "Assets")
Bingus_bal4 <- Bingus_bal4[order(Bingus_bal4$endDate),]
Bingus_bal4 <- Bingus_bal4[-1,]
apple_balance_2012 <- GetBalanceSheet("AAPL",2012)
Bingus_bal5 <- apple_balance_2012[,-2]
Bingus_bal5 <- subset(Bingus_bal5, Metric == "Assets")
Bingus_bal5 <- Bingus_bal5[order(Bingus_bal5$endDate),]
Bingus_bal5 <- Bingus_bal5[-1,]
bingus_balance <- rbind(Bingus_bal,Bingus_bal2,Bingus_bal3, Bingus_bal4, Bingus_bal5)
str(bingus_balance)
## 'data.frame': 9 obs. of 4 variables:
## $ Metric : chr "Total assets" "Total assets" "Total assets" "Assets" ...
## $ Amount : chr "47501000000" "75183000000" "116371000000" "207000000000" ...
## $ startDate: chr NA NA NA NA ...
## $ endDate : chr "2009-09-26" "2010-09-25" "2011-09-24" "2013-09-28" ...
bingus_balance$year <- year(as.Date(bingus_balance$endDate))
bingus_balance$Amount <- as.numeric(bingus_balance$Amount)
bingus_balance
## Metric Amount startDate endDate year
## 11 Total assets 4.75010e+10 <NA> 2009-09-26 2009
## 12 Total assets 7.51830e+10 <NA> 2010-09-25 2010
## 13 Total assets 1.16371e+11 <NA> 2011-09-24 2011
## 111 Assets 2.07000e+11 <NA> 2013-09-28 2013
## 121 Assets 2.31839e+11 <NA> 2014-09-27 2014
## 27 Assets 3.21686e+11 <NA> 2016-09-24 2016
## 28 Assets 3.75319e+11 <NA> 2017-09-30 2017
## 122 Assets 2.90479e+11 <NA> 2015-09-26 2015
## 123 Assets 1.76064e+11 <NA> 2012-09-29 2012
bingus_balance$Amount <- log(as.numeric(bingus_balance$Amount))
bingus_balance <- bingus_balance%>% arrange(year)
bingus_balance
## Metric Amount startDate endDate year
## 11 Total assets 24.58402 <NA> 2009-09-26 2009
## 12 Total assets 25.04319 <NA> 2010-09-25 2010
## 13 Total assets 25.48005 <NA> 2011-09-24 2011
## 123 Assets 25.89411 <NA> 2012-09-29 2012
## 111 Assets 26.05598 <NA> 2013-09-28 2013
## 121 Assets 26.16931 <NA> 2014-09-27 2014
## 122 Assets 26.39480 <NA> 2015-09-26 2015
## 27 Assets 26.49684 <NA> 2016-09-24 2016
## 28 Assets 26.65104 <NA> 2017-09-30 2017
bingus_balance <- bingus_balance[,c(2,5)]
bingus_balance
## Amount year
## 11 24.58402 2009
## 12 25.04319 2010
## 13 25.48005 2011
## 123 25.89411 2012
## 111 26.05598 2013
## 121 26.16931 2014
## 122 26.39480 2015
## 27 26.49684 2016
## 28 26.65104 2017
ts_Assets <- ts(data=bingus_balance$Amount, frequency = 1, start = c(2009), end = c(2017))
plot(ts_Assets)
ts_Assets
## Time Series:
## Start = 2009
## End = 2017
## Frequency = 1
## [1] 24.58402 25.04319 25.48005 25.89411 26.05598 26.16931 26.39480 26.49684
## [9] 26.65104
arima_Assets <- auto.arima(ts_Assets)
summary(arima_Assets)
## Series: ts_Assets
## ARIMA(0,2,0)
##
## sigma^2 = 0.01409: log likelihood = 5.03
## AIC=-8.05 AICc=-7.25 BIC=-8.1
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE
## Training set -0.03621508 0.104699 0.07517371 -0.1396808 0.2875401 0.2909445
## ACF1
## Training set -0.2564044
arima_Assets
## Series: ts_Assets
## ARIMA(0,2,0)
##
## sigma^2 = 0.01409: log likelihood = 5.03
## AIC=-8.05 AICc=-7.25 BIC=-8.1
pronostico_3 <- forecast(arima_Assets, h=5)
pronostico_3
## Point Forecast Lo 80 Hi 80 Lo 95 Hi 95
## 2018 26.80524 26.65310 26.95739 26.57256 27.03792
## 2019 26.95944 26.61924 27.29964 26.43915 27.47974
## 2020 27.11364 26.54438 27.68291 26.24303 27.98426
## 2021 27.26784 26.43452 28.10116 25.99339 28.54230
## 2022 27.42204 26.29372 28.55036 25.69643 29.14766
plot(pronostico_3)
Dentro de los 3 pronósticos se puede observar que la empresa de Apple mantiene una tendencia positiva con un crecimiento general durante los años, lo cual hace sentido ya que la empresa está creciendo e innovando constantemente. En este caso creemos que es mejor manejar los datos de manera trimestral, debido a que si se maneja por año el pronóstico comienza a ser un poco más pesado y los pronósticos terminan siendo obsoletos ya que el paquete de ‘forecast’ simplemente no cambia. De igual forma identificamos que en ocasiones puede haber repeticiones de los años, por lo que es importante hacer nota de estos y seleccionar los necesarios a través de manipulación de bases de datos para crear un buen pronóstico.