Como primer punto se eligió una empresa en Yahoo finanzas, la cual es Apple (AAPL).
library(pdfetch)
## Warning: package 'pdfetch' was built under R version 4.2.2
library(tidyverse)
## Warning: package 'tidyverse' was built under R version 4.2.2
## āā Attaching packages āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā tidyverse 1.3.2 āā
## ā ggplot2 3.3.6 ā purrr 1.0.1
## ā tibble 3.1.7 ā dplyr 1.1.0
## ā tidyr 1.2.0 ā stringr 1.4.0
## ā readr 2.1.3 ā forcats 0.5.1
## Warning: package 'ggplot2' was built under R version 4.2.1
## Warning: package 'readr' was built under R version 4.2.2
## Warning: package 'purrr' was built under R version 4.2.2
## Warning: package 'dplyr' was built under R version 4.2.2
## Warning: package 'forcats' was built under R version 4.2.1
## āā Conflicts āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā tidyverse_conflicts() āā
## ā dplyr::filter() masks stats::filter()
## ā dplyr::lag() masks stats::lag()
library(yuima)
## Warning: package 'yuima' was built under R version 4.2.2
## Loading required package: zoo
##
## Attaching package: 'zoo'
##
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
##
## Loading required package: stats4
## Loading required package: expm
## Warning: package 'expm' was built under R version 4.2.2
## Loading required package: Matrix
##
## Attaching package: 'Matrix'
##
## The following objects are masked from 'package:tidyr':
##
## expand, pack, unpack
##
##
## Attaching package: 'expm'
##
## The following object is masked from 'package:Matrix':
##
## expm
##
## Loading required package: cubature
## Warning: package 'cubature' was built under R version 4.2.2
## Loading required package: mvtnorm
## ########################################
## This is YUIMA Project package v.1.15.22
## Why don't you try yuimaGUI package?
## Visit: http://www.yuima-project.com
## ########################################
##
## Attaching package: 'yuima'
##
## The following object is masked from 'package:tibble':
##
## char
##
## The following object is masked from 'package:stats':
##
## simulate
#obtenemos los datos desde el sitio de yahoo
AAPLdata <- pdfetch_YAHOO("AAPL",from = c("2019-01-01"),to = c("2023-03-06"), interval = '1d')
#Obtenemos la columna que es de nuestro interƩs
Novocure <-AAPLdata[,4]
length(Novocure)
## [1] 1050
#Convertimos en una serie temporal
tsNovoCure <- ts(Novocure, start = c(2019,1),frequency=365)
#Graficamos
plot(tsNovoCure)
Se puede observar en la grÔfica que la empresa Apple ha tenido variaciones con el paso de los años. Sin embargo, se observa una tendencia en los últimos años al alza con pequeños momentos en la serie de tiempo a la baja.
#Ver si estacionaria
#.-....
#Se calculan las diferencias de la serie de datos con logaritmo
l_NovoCure<-diff(log(tsNovoCure))
plot(l_NovoCure)
Con relación a la grÔfica, se puede mencionar que no muestra una tendencia, ya que tiene variaciones muy notorias.
#Calculo parƔmetros iniciales manera 1
Delta <- 1/365
alpha <- mean(l_NovoCure)/Delta
sigma <- sqrt(var(l_NovoCure)/Delta)
mu <- alpha +0.5*sigma^2
x0<-tsNovoCure[1]
#Calculo parƔmetros iniciales manera 2
x <- tsNovoCure
gBm <- setModel(drift="mu*x", diffusion="sigma*x", xinit=x0)
## Warning in yuima.warn("Solution variable (lhs) not specified. Trying to use state variables."):
## YUIMA: Solution variable (lhs) not specified. Trying to use state variables.
mod <- setYuima(model=gBm, data=setData(tsNovoCure, delta=Delta))
set.seed(123)
fit <- qmle(mod, start=list(mu=0, sigma=1),
lower=list(mu=0.1, sigma=0.1),
upper=list(mu=100, sigma=10))
summary(fit)
## Quasi-Maximum likelihood estimation
##
## Call:
## qmle(yuima = mod, start = list(mu = 0, sigma = 1), lower = list(mu = 0.1,
## sigma = 0.1), upper = list(mu = 100, sigma = 10))
##
## Coefficients:
## Estimate Std. Error
## sigma 0.4135522 0.009059515
## mu 0.5522889 0.243943360
##
## -2 log L: 4636.082
#comparación
coef(fit)
## sigma mu
## 0.4135522 0.5522889
sigma
## AAPL.close
## AAPL.close 0.4129284
mu
## AAPL.close
## AAPL.close 0.5520946
gbm_vec <- function(nsim = 10000, t = 25, mu = 0, sigma = 0.1, S0 = 100, dt = 1./365) {
# matrix of random draws - one for each day for each simulation
epsilon <- matrix(rnorm(t*nsim), ncol = nsim, nrow = t)
# get GBM and convert to price paths
gbm <- exp((mu - sigma * sigma / 2) * dt + sigma * epsilon * sqrt(dt))
gbm <- apply(rbind(rep(S0, nsim), gbm), 2, cumprod)
return(gbm)
}
gBm
##
## Diffusion process
## Number of equations: 1
## Number of Wiener noises: 1
## Parametric model with 2 parameters
valores_simulados <- simulate(gBm, true.parameter = list(mu=mu, sigma=sigma))
## Warning in yuima.warn("'delta' (re)defined."):
## YUIMA: 'delta' (re)defined.
plot(valores_simulados)
Por medio de los parÔmetros se puede observar que en la grÔfica la empresa Apple ha demostrado variaciones, ya que se observa una tendencia con mayor proyección al alza que a la baja.
#PROBAR CON FORMA 1 Y FORMA 2
nsim <- 1000
t <- 1055
mu <- 0.5522889
sigma <- 0.4135522
S0 <- x0
dt = 1/365
gbm <- gbm_vec(nsim, t, mu, sigma, S0, dt)
gbm_df <- as.data.frame(gbm) %>%
mutate(ix = 1:nrow(gbm)) %>%
pivot_longer(-ix, names_to = 'sim', values_to = 'price')
gbm_df %>%
ggplot(aes(x=ix, y=price, color=sim)) +
geom_line() +
theme(legend.position = 'none')
En la grƔfica se puede observar la volatilidad de los modelos evaluados, por lo cual se puede analizar que existen diferentes condiciones aleatorias y tambien variaciones en los precios.
data.frame(price = gbm[1051, ]) %>%
ggplot(aes(x = price)) +
geom_histogram(aes(y = ..density..), binwidth = 0.1) +
geom_density() +
ggtitle('terminal price distribution')
D <- gbm[1051, ] %>%
density()
D$x[which.max(D$y)] #resultado del modelo
## [1] 99.61696
Para el presente analisis se necesitaba analizar 5 dias lo cual se demuetra acontinuación.
data.frame(price = gbm[1052, ]) %>%
ggplot(aes(x = price)) +
geom_histogram(aes(y = ..density..), binwidth = 0.1) +
geom_density() +
ggtitle('terminal price distribution')
D <- gbm[1052, ] %>%
density()
D$x[which.max(D$y)] #resultado del modelo
## [1] 101.2768
data.frame(price = gbm[1053, ]) %>%
ggplot(aes(x = price)) +
geom_histogram(aes(y = ..density..), binwidth = 0.1) +
geom_density() +
ggtitle('terminal price distribution')
D <- gbm[1053, ] %>%
density()
D$x[which.max(D$y)] #resultado del modelo
## [1] 101.5863
data.frame(price = gbm[1054, ]) %>%
ggplot(aes(x = price)) +
geom_histogram(aes(y = ..density..), binwidth = 0.1) +
geom_density() +
ggtitle('terminal price distribution')
D <- gbm[1054, ] %>%
density()
D$x[which.max(D$y)] #resultado del modelo
## [1] 103.4291
data.frame(price = gbm[1055, ]) %>%
ggplot(aes(x = price)) +
geom_histogram(aes(y = ..density..), binwidth = 0.1) +
geom_density() +
ggtitle('terminal price distribution')
D <- gbm[1055, ] %>%
density()
D$x[which.max(D$y)] #resultado del modelo
## [1] 102.397
Es importante mencionar que para poder conseguir el mejor modelo seria el que de el resultado mayor que en este caso seria para el dia 4 con un valor de 103.4291.
En conclusión, Apple es una empresa con gran impacto en el mundo porque sus productos son constantemente consumidos, de igual forma han demostrado por medio de sus datos que han tenido variaciones con momentos al alza como a la baja. Sin embargo, es una empresa que muestra, por medio de sus movimientos que es estable.