Logotipo

Logotipo

library(quantmod)
library(xts)
library(tseries)
library(forecast)
library(timeSeries)
#library(rugarch)
library(tframePlus)
library(ggplot2)
library(ggfortify)

Problema 1

Suponga que su firma de brokers requiere analizar la tendencia y persistencia de los activos financieros que utilizó en el primer parcial para identificar señales de compra-venta. Utilice la plataforma de Investing para realizar, en una gráfica, el análisis técnico (a partir de enero de 2018 a la fecha en la que elabore el análisis) con los siguientes indicadores: .ADX .RSI .Williams R .Estocástico

-¿Cuáles indicadores coinciden o dan las señalesmás precisas de compra-venta/ sobrecompra-sobreventa? Señale los puntos más importantes dentro del gráfico y de una breve explicación.

Problema 2

Suponga que ahora su firma de brokers requiere pronosticar los precios de las emisoras, ya que a partir de ahí se va a diseñar un portafolio de inversión para sus clientes. Considere las emisoras del primer parcial, utilizando 5 años en sus series (del 3 de abril de 2014 al 3 de abril de 2019) para hacer lo siguiente:

.Grafique la descomposición de variables utilizando una ventana de 252 días (calendario bursátil) y proponga dos modificaciones. Explique la diferencia entre ellas.

.Realice el pronóstico con la ventana de 252 días y las dos adicionales que propuso. Elabore un cuadro com- parativo con los siguientes 2 días pronosticados (4 y 5 de abril de 2019) y compare los resultados contra los datos reales observados, conteste lo siguiente:

-¿Cuál pronóstico tiene el menor diferencial para los siguientes dos días? -¿Cuál modelo ocuparía para tomar decisiones de mediano-largo plazo? Justifique su respuesta.

Alpek Mx

Alpek problema 1

Imagen tomada de https://mx.investing.com/

Imagen tomada de https://mx.investing.com/

En la siguiente imagen podemos observar que Alpek en sus acciones en septiembre del año 2014,se encontró en su primer nivel de sobre compra si observamos los siguientes índices con los que se analiza el movimiento de esta acción podemos ver que en el índice de Williams también se encontraba en un punto de sobrecompra por lo que se pronostica una caída de la acción a lo cual se recomienda vender, en el índice estocástico también da señales de estar en un nivel de sobrecompra para la misma fecha por lo cual también se recomienda en este punto vender para evitar perdidas, el índice de fuerzas relativas RSI también indica que se encuentra en un nivel de sobrecompra apenas visible pero también como los índices antes mencionados indica una posible caída de la acción por lo cual se sugiere una venta y para el índice ADX la línea verde es el +DI la roja el -DI y la negra nuestro ADX, donde en este mismo el +DI se encuentra por arriba del ADX donde se puede apreciar un mercado Bull con una tendencia fuerte pues casi toca los 40 pero enseguida esta cae por debajo del -DI tomando el mando un Bear donde se ve que va a haber una caída de las acciones a futuro donde lo mejor es vender ya que llega a un nivel de sobre compra nuestra emisora.

En el año 2016 nuestra emisora tuvo un mejor rendimiento que en el 2014 pue llego hasta su punto máximo se sobrecompra hasta ahora donde en nuestro índice William podemos ver que nos indica que efectivamente hay un índice de sobrecompra por lo que se recomienda vender porque a largo plazo puede caer, el índice estocástico muestra lo mismo que esta en un nivel de sobrecompra por lo que es preferible vender por repercusiones a futuro ya que puede caer nuestra emisora en cualquier momento, en nuestro índice de fuerzas relativas también indica un estado de sobrecompra al igual que los otros dos y en nuestro ADX nos indica que si habrá un mercado tipo Bull pero que este perderá un poco la fuerza de su tendencia y pasara a ser débil poco a poco hasta caer a un mercado tipo Bear recomendando vender.

Y por último en el año 2018 se vuelve a tener una tendencia de sobrecompra no tan alta como la de 2016 pero si lo suficiente como para obtener bueno resultados, donde nuestro índice estocástico apenas y llega. Nivel de sobrecompra, pero nos indica que va a la baja donde se pronostica que lo mejor es vender, el índice de Williams igual nos indica que esta en nivel de sobrecompra y lo mejor es vender, el RSI por su parte apenas y logra tocar el limite de sobreventa y nos indica una gran caída por lo que se puede decir que se recomienda vender y en nuestro índice ADX nos muestra que tiene una tendencia débil y que esta caerá por debajo de nuestro índice tomando en cuenta a un mercado Bear de nuevo.

Imagen tomada de https://mx.investing.com/

Imagen tomada de https://mx.investing.com/

En el caso de mi análisis el índice que yo elegiría para checar el movimiento de mi acción seria el adx ya que con este a pesar de que coincida con los otros índices que se especificaban como el William, RSI y estocástico, era mas exacto en indicar la posible tendencia de la acción viendo si en +DI y el -DI se iban haciendo mas débil o mas fuerte y con eso tener una idea mas clara de lo que se podría hacer a futuro en este caso con este índice en los puntos marcados nos mostro mas de una vez que lo mejor era empezar a vender ya que en nuestra serie se pueden ver como va perdiendo fuerza nuestro +DI y tomando fuerza el-DI en repetidas ocasiones ahora bien, en el año 2015 podemos ver la peor baja que hay en la acción de la empresa ya que el -DI nos indica que hay un dominio Bear pero este mismo tiene después una tendencia baja y el +DI se recupera y después nuestra emisora llega a mostrar un nivel de sobre compra hasta el 2016, pero en todo ese tiempo fue un Bull el que estuvo dominando poco a poco por eso convenía permanecer, el segundo punto es en el 2018 donde conviene vender ya que se encuentra en un nivel de sobrecompra donde a largo plazo se encontrara en un nivel de sobreventa donde el +DI siempre se encuentra en un nivel por arriba del -DI con poca fuerza pero se mantiene donde lo conveniente a largo plazo indica comprar.

Alpek problema2

Data<-read.csv(file.choose())
nrow(Data)
## [1] 1257
nrow(Data)
## [1] 1257
str(Data$Date)
##  Factor w/ 1257 levels "2014-04-03","2014-04-04",..: 1 2 3 4 5 6 7 8 9 10 ...
Data$Date <- as.Date(Data$Date, "%Y-%m-%d")
str(Data$Date)
##  Date[1:1257], format: "2014-04-03" "2014-04-04" "2014-04-07" "2014-04-08" "2014-04-09" ...
Data <- Data[order(Data$Date), ]

range(Data$Date)
## [1] "2014-04-03" "2019-04-03"
plot(Data$Date, Data$Close, type = "l",
     main="alpeka 2014-2019",
     xlab="Fecha", ylab="alpeka", col= "deeppink")

Elaboracion propia con datos de Yahoo Finance, apartir de codigos de clases de la Dra Ana Lorena Jimenez

years <- format(Data$Date, "%Y")
View(years)
tab <- table(years) 
tab
## years
## 2014 2015 2016 2017 2018 2019 
##  188  251  252  251  251   64
mean(tab[1:(length(tab) - 1)]) 
## [1] 238.6

DESCOMPOSICION

ALPEKA_des <- ts(Data$Close, start = c(2014,04,03), frequency = 252) 

ALPEKA_Trends <- stl(ALPEKA_des, s.window = "periodic") 
plot(ALPEKA_Trends, main="Descomposición de ALPEKA w=252",col= "maroon1")

PRONOSTICO

forecastStl <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 252) 
  fit.stl <- stl(myTs, s.window = 252) 
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  plot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)),
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}

GRAFICO DEL PRONOSTICO

plotForecastResult <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "mediumaquamarine", main = title, 
       xlab = "Tiempo", ylab = "ALPEKA w=252", xlim = range(x$date), #t?tulo de la gr?fica
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet") #CAMBIA EL COLOR DEL PRON?STICO
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", cex=0.5, col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}

RESULTADO

pronostico <- forecastStl(Data, n.ahead = 252)

plotForecastResult(pronostico, title = "Pronóstico de ALPEKA w=252")

View(pronostico)

DESCOMPOSICION

ALPEKA_des <- ts(Data$Close, start = c(2014,04,03), frequency = 260) 

ALPEKA_Trends <- stl(ALPEKA_des, s.window = "periodic") 
plot(ALPEKA_Trends, main="Descomposición de ALPEKA w=260",col= "maroon1")

PRONOSTICO

forecastStl <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 260) 
  fit.stl <- stl(myTs, s.window = 260) 
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  plot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)),
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}

GRAFICO DEL PRONOSTICO

plotForecastResult <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "mediumaquamarine", main = title, 
       xlab = "Tiempo", ylab = "ALPEKA w=260", xlim = range(x$date), 
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet") #CAMBIA EL COLOR DEL PRON?STICO
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", cex=0.5, col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}

RESULTADO

pronostico <- forecastStl(Data, n.ahead = 260)

plotForecastResult(pronostico, title = "Pronóstico de ALPEKA w=260")

View(pronostico)

DESCOMPOSICION

ALPEKA_des <- ts(Data$Close, start = c(2014,04,03), frequency = 239) 

ALPEKA_Trends <- stl(ALPEKA_des, s.window = "periodic") 
plot(ALPEKA_Trends, main="Descomposición de ALPEKA w=239",col= "maroon1")

#MEDIA

PRONOSTICO

forecastStl <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 239) 
  fit.stl <- stl(myTs, s.window = 239) 
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  plot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)),
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}

GRAFICO DEL PRONOSTICO

plotForecastResult <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "mediumaquamarine", main = title, 
       xlab = "Tiempo", ylab = "ALPEKA w=239", xlim = range(x$date), 
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet") #CAMBIA EL COLOR DEL PRON?STICO
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", cex=0.5, col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}

RESULTADO

pronostico <- forecastStl(Data, n.ahead = 239)

plotForecastResult(pronostico, title = "Pronóstico de ALPEKA w=239")

View(pronostico)

Como se menciona anteriormente, los pronosticos se realizaron por el metodo de descomposicion de variables, por lo general, en los métodos de descomposicion de series temporales, se parte de la idea de que la serie temporal se puede descomponer en todos o en algunos de los componentes, ya sea por Tendencia (evaluacion de la serie en el largo plazo), Fluctuacion ciclica (fluctuaciones de caracter periodico no tienen que ser regulares), Variacion estacional (Recoge comportamiento de tipo regular que se dan a lo largo de tiempo), Movimientos irregulares ( Recoge pequeños efectos accidentales, pueden ser aleatorios).

Ahora bien analizando nuestras descomposiciones podemos observar que en el w252 nuestra accion tiene una tendencia la baja con lo cual podemos decir que en los siguientes dos años lo mejor que se podria hacer es comprar pero a la vez estar muy pendiente de los posibles cambios que esta llegue a tener.

En la descomposicion w260 tomando en cuenta 8 dias mas del año bursatil podemos observar que nuestra accion al principio va estar en un nivel alsista por lo que es recomendable vender por posibles caidas bruscas que esta pueda sufrir a futuro.

Para la descomposicion de W239 que es nuestro promedio de cotizaciones podemos observar que la mejor opccion para actuar en esta es vender ya que al principio estaba en un punto alcista perotubo unos rebotes que indican lo contrario pero al final empieza a recuperarse lo cual indica posibles ventas.

Teniendo ya esto considero el mas optimo el de 239 dias para nuestra emisora.

read.csv(file.choose())
##        fecha dato.real     W252     W239     W260
## 1 04/04/2019     25.75 26.45249 26.55341 26.44768
## 2 05/04/2019     26.05 26.52250 26.56335 26.38512

De la siguiente tabla de comparación de pronósticos podemos observar lo siguientes datos:

W239: es nuestro promedio de cotizaciones diarias W252: es nuestro año bursátil W260: ventana a 8 días mas del año bursátil

Tomando en cuenta la siguiente tabla los pronósticos de 05/04/19 son los mas cercanos a los datos reales en especifico el W260 pienso que estos pronósticos estaban algo acertados puesto que no se sabia lo que iba a dar de resultados y no existe manera de saberlo o predecirlo, yo tendría en cuenta estos precios pronosticados, las noticias de los movimientos que llegue a tener Alpek a futuro ya que esta ha tomado decisiones que han cambiado el rumbo de sus acciones desde principios de año, estar al pendiente de esta acción es lo necesario. Y el modelo que tomaría para decisiones a mediano y largo plazo seria el de 260 por ser el mas cercano al precio de cierre.

Nvidia (investing)

Nvidia problema 1

Imagen tomada de https://mx.investing.com/

Imagen tomada de https://mx.investing.com/

¿Cuáles indicadores coinciden o dan las señales más precisas de compra-venta/ sobrecompra-sobreventa? Señale los puntos más importantes dentro del gráfico y de una breve explicación.

Los indicadores todos coinciden en la mayoría de puntos esto se muestra en la imagen de arriba, aunque todos me indiquen que hay sobrecompra el ADX me muestra cómo va estar el mercado si va a tener la tendencia fuerte ya sea alcista o bajista, en las últimas tres líneas del lado derecho nos muestra los indicadores que hay sobreventa y con lo cual hay que comprar pero el ADX nos señala que ya que pasa de los 25 puntos que va tener una tendencia fuerte o muy fuerte pero a la baja por lo cual sería bueno tener una posición de un corto plazo, ya que aunque los demás indique que si va a tener un alza no siempre es así, aquí podrías seguir con la posición de vender por lo que muestra el ADX.

Imagen tomada de https://mx.investing.com/

Imagen tomada de https://mx.investing.com/

  • Ahora, utilice un gráfico únicamente con las herramientas que usted considere le dan las mejores señales (puede incluir las del primer parcial). Identifique los puntos más relevantes de su estrategia e indique porque considera que estas son las mejores herramientas. En mi estrategia utilizo el William %r, MACD,SAR y el bollinger, esta estrategia es la que mas me ayuda ya que con el %R me indica si hay sobrecompra o sobreventa, y también si compro o vendo, lo complemento con el macd ya que me indica como va ir su endencia y puedo mantener posiciones largas o cortas dependiendo de esta, asi como el sar para ver con que volatilidad va estar y con esto puedo predecir más o menos como se mantendrá las acciones y el bollinger es para ver el cambio de tendencia en otras palabras si se contrae va a ver un cambio drástico.

Nvidia problema 2

Data <- read.csv(file.choose())
nrow(Data)
## [1] 1257
View(Data)
str(Data$Date)
##  Factor w/ 1257 levels "2014-04-03","2014-04-04",..: 1 2 3 4 5 6 7 8 9 10 ...
Data$Date <- as.Date(Data$Date, "%Y-%m-%d")
str(Data$Date)
##  Date[1:1257], format: "2014-04-03" "2014-04-04" "2014-04-07" "2014-04-08" "2014-04-09" ...
Data <- Data[order(Data$Date), ]

range(Data$Date)
## [1] "2014-04-03" "2019-04-03"
plot(Data$Date, Data$Close, type = "l",
     main="Tipo de cambio NVIDIA 2014-2019",
     xlab="Fecha", ylab="Tipo de Cambio NVIDIA", col= "darkviolet") 

Elaboracion propia con datos de Yahoo Finance, apartir de codigos de clases de la Dra Ana Lorena Jimenez

years <- format(Data$Date, "%Y")
View(years)
tab <- table(years)
tab
## years
## 2014 2015 2016 2017 2018 2019 
##  188  251  252  251  251   64
mean(tab[1:(length(tab) - 1)])
## [1] 238.6

DESCOMPOSICIóN

ETC_des <- ts(Data$Close, start = c(2014,04,03), frequency = 252) 
ETC_Trends <- stl(ETC_des, s.window = "periodic") 
autoplot(ETC_Trends, main = "descomposicion de NVDA w = 252" , colour = "darkblue")

PRONOSTICO

forecastStl <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 252) 
  fit.stl <- stl(myTs, s.window = 252)
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  plot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)), 
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}

GRAFICO DE PRONOSTICO

plotForecastResult <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "gray18", main = title, 
       xlab = "Tiempo", ylab = "NVIDIA w=252", xlim = range(x$date), 
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet") 
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}

RESULTADO

pronostico <- forecastStl(Data, n.ahead = 252) 

plotForecastResult(pronostico, title = "Pronostico de Tipo de cambio w=365")

View(pronostico)

Frecuentcia de 240 tomado de la media

ETC_des <- ts(Data$Close, start = c(2014,04,03), frequency = 240) 
ETC_Trends <- stl(ETC_des, s.window = "periodic") 
autoplot(ETC_Trends, main = "descomposicion de cambio w = 240" , colour = "darkblue")

PRONOSTICO

forecastStl <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 240)
  fit.stl <- stl(myTs, s.window = 240) 
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  plot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)), 
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}

GRAFICO DE PRONOSTICO

plotForecastResult <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "gray18", main = title, 
       xlab = "Tiempo", ylab = "NVIDIA w=240", xlim = range(x$date), 
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet")
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", cex= 0.5, col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}

RESULTADO

pronostico <- forecastStl(Data, n.ahead = 240) 

plotForecastResult(pronostico, title = "Pronostico de Tipo de cambio w=365")

View(pronostico)

Frecuencia de 360 dias

ETC_des <- ts(Data$Close, start = c(2014,04,03), frequency = 360) 
ETC_Trends <- stl(ETC_des, s.window = "periodic") 
autoplot(ETC_Trends, main = "descomposicion de NVDA w = 360" , colour = "darkblue")

PRONOSTICO

forecastStl <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 360) 
  fit.stl <- stl(myTs, s.window = 360)
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  plot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)), 
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}

GRAFICO DE PRONOSTICO

plotForecastResult <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "gray18", main = title, 
       xlab = "Tiempo", ylab = "FIX w=252", xlim = range(x$date), 
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet") 
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", cex =0.5, col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}

RESULTADO

pronostico <- forecastStl(Data, n.ahead = 360) 

plotForecastResult(pronostico, title = "Pronostico de Tipo de cambio NVIDIA w=365")

View(pronostico)

DESCOMPOSICIóN

ETC_des <- ts(Data$Close, start = c(2014,04,03), frequency = 252) 
ETC_Trends <- stl(ETC_des, s.window = "periodic") 
autoplot(ETC_Trends, main = "descomposicion de NVDA w = 252" , colour = "darkblue")

Frecuentcia de 240 tomado de la media

ETC_des <- ts(Data$Close, start = c(2014,04,03), frequency = 240) 
ETC_Trends <- stl(ETC_des, s.window = "periodic") 
autoplot(ETC_Trends, main = "descomposicion de NVDA w = 240" , colour = "darkblue")

Frecuencia de 360 dias

ETC_des <- ts(Data$Close, start = c(2014,04,03), frequency = 360) 
ETC_Trends <- stl(ETC_des, s.window = "periodic") 
autoplot(ETC_Trends, main = "descomposicion de NVDA w = 360" , colour = "darkblue")

comparacion

casi no se ve mucha diferencia en sus descomposiciones, pero si en la estacionalidad ya que en la propuesta de 360 es mas suavisada que en las otras propuestas, mientras que en la de 240 ya tiene un poco mas de ruido blanco y en la de 252 se nota como estan mas juntas las estacionalidad puesto que se podria decir que hay una mayor frecuencia en las estaciones de esta propuesta. otra diferencia es en la tendencia pero la propuesta de 240 y 252 presentan la misma la cual tiene una caida al final, mientras que en la propuesta 360 se mantiene horizontalmente

read.csv(file.choose())
##          FECHA   original  X      w.252      W.240      W.360
## 1 Apr 08, 2019  3,638.70  NA  3,389.82   3,553.30   3,695.33 
## 2 Apr 05, 2019  3,643.00  NA  3,371.66   3,516.26   3,629.38 
## 3 Apr 04, 2019  3,599.02  NA  3,410.33   3,474.19   3,674.63
  • ¿Cuál pronóstico tiene el menor diferencial para los siguientes dos días? R=el que es menor seria el W=252, pero el que esta mas cerca de los valores reales seria el W=360
  • ¿Cuál modelo ocuparía para tomar decisiones de mediano-largo plazo? Justifique su respuesta. R= ocuparia el modelo de 360 dias ya que es el que mejor aproximamiento tiene en comparacion de las otras dos ya que como seria a mediano y largo plazo seria la opcion mas congrunte por lo mismo que se esta tomando un mayor rango de dias, se demuestra que entre menor dias tomemos va ser menor efectivo el pronostico

Ethereum Classic (investing)

Ethereum Classic problema 1

los indicadores que se utilizan para este analisis son Williams, estocastico, RSI y ADX, tenemos que nos estan inidcando en la fecha del 2018-02-12 que tenemos que los indicadores estocastico, williams y RSI nos indican que hay una sobre compra, y esta la confirma el tipo de tendencia tipo bull en la cual se ve que lo queobservamos en los indicadores nos da una señal de estos movimientos. Los indicadores estocastico y williams nos indican ambos que hay una fuerte sobre compra durante 4 dias consecutivos y se observa junto con el grafico de la accion y las graficas de velas que esta tendencia se mantuvo de forma lateral sin presentar cambios de tendencia durante estas fechas. En 2018-05-11 se observa que hay un nivel de sobreventa por parte de los indicadores en la cual se observa de igual manera en el grafico de velas teniendo un cambio fuerte de tendencia que empieza desde el 2018-05-05 en este periodo marca un fuerte cambio de tendencia hasta que se llega a la sobre venta, teniendo esto hasta el 2018-05-29.

desde el mes de noviembre del 2018 la Ethereum Classic ha tenido problemas en el rendimiento que esta ha ido adquiriendo, sobre todo por que rompe un soprte de su minimo historico, teniendo en cuanta que esta no se ha podido recuperar de esta caida sino hasta estos ultimos dias que pudo romper la mala situacion en la que se encontraba. Analizando tambien al indicador ADX en el periodo de diciembre del 2018 se observa que tuvo cambios de tendencia muy fuertes de los cuales llego hasta la cantidad de 62.72, indicando una tendencia muy fuerte hacia la baja, y no solo se observa en este indicador, sino de igual manera en los demas como los son el estocastico, el williams y el SRI, confirmando este cambio durante al rdededor de dos meses consecutivos.Hay algo curioso que se observa y es que los cuatro indicadores marcaron una sobre compra de las acciones de Ethereum Classic en los mismos niveles junto con la graficaen la cual nos confirma de que se encontro con una fuerte sobre compra de estas acciones.

los indicaodres que se desearon ocupar en esta accion seran el Sar Parabolico y el indicador ADX, en ambos indicadores se pueden llevar de una relacion entre ambos, en estos se puede ver la relacion en tanto en la velocidad en la que cae la accion y su rapido o lento cambio en la tendencia que seguira a lo largo de determinados momentos, tambien por que se considera un optimo elemento para las cripto monedas, ya que en este tipo de acciones tienden a ser muy volatiles en ciertas ocasiones, y el indicador ADX ya que nos indica tambien la fuerza con la que cae el +DI que en varios casos se obtuvo un enfoque hacia la venta de las acciones de la misma teniendo en cuenta que nos indico una fuerte sobre compra y un cambio de tendencia fuerte algo que en el SAR se visualizo con una velocidad lenta en este periodo, en los ultimos dias de la accion se puede ver que que ambos indicadores nos confirman que esta baja a la accion continuara ya que en el ADX se confirma que el +DI tiene una baja y en el SAR una velocidad lenta en la cual podria tomar tiempo que se recupere esta accion y pasar a mejores niveles

Ethereum Classic problema 2

#Carga el archivo CSV
Data<-read.csv(file.choose())

# Cuenta las filas de la base de datos
nrow(Data)
## [1] 981
# Me permite visualizar los datos
View(Data)
str(Data$Date) 
##  Factor w/ 978 levels "2016-07-26","2016-07-27",..: 1 2 3 4 5 6 7 8 9 10 ...
Data$Date <- as.Date(Data$Date, "%Y-%m-%d")
str(Data$Date)
##  Date[1:981], format: "2016-07-26" "2016-07-27" "2016-07-28" "2016-07-29" "2016-07-30" ...
Data <- Data[order(Data$Date), ]

range(Data$Date)
## [1] "2016-07-26" "2019-04-02"
plot(Data$Date, Data$Close, type = "l",
     main="ETC-USD 2016-2019",
     xlab="Fecha", ylab="ETC-USD", col= "darkviolet") #plot grafica las series

Elaboracion propia con datos de Yahoo Finance, apartir de codigos de clases de la Dra Ana Lorena Jimenez

apartir de datos recolectados a traves de Yahoo Finance se obtiene que la serie empieza desde el año 2016 esto se debe a que fue en este periodo en el cual nace esta cripto moneda, por lo tanto no se tienen mas años en los cuales se puedan recopilar mas datos, y se ha mantenido en una tendencia bajista en la cual y se han tenido caidas a partir de mediados del 2018,

head(Data$Date, 10)
##  [1] "2016-07-26" "2016-07-27" "2016-07-28" "2016-07-29" "2016-07-30"
##  [6] "2016-07-31" "2016-08-01" "2016-08-02" "2016-08-03" "2016-08-04"
tail(Data$Date, 10)
##  [1] "2019-03-25" "2019-03-26" "2019-03-27" "2019-03-28" "2019-03-29"
##  [6] "2019-03-30" "2019-03-31" "2019-03-31" "2019-04-01" "2019-04-02"
years <- format(Data$Date, "%Y")
View(years)
tab <- table(years) 
tab
## years
## 2016 2017 2018 2019 
##  158  365  365   93
mean(tab[1:(length(tab) - 1)]) 
## [1] 296
ETC_des <- ts(Data$Close, start = c(2016,07,26), frequency = 365) 
ETC_Trends <- stl(ETC_des, s.window = "periodic") 
autoplot(ETC_Trends, main = "descomposicion de ETC w = 365" , colour = "darkblue")

forecastStl <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 365) 
  fit.stl <- stl(myTs, s.window = 365) 
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  autoplot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)), 
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}
plotForecastResult <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "gray18", main = title, 
       xlab = "Tiempo", ylab = "ETC-USD w=365", xlim = range(x$date), #t?tulo de la gr?fica
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet")
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", cex = 0.8, col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}
pronostico <- forecastStl(Data, n.ahead = 365) 
plotForecastResult(pronostico, title = "Pronóstico de ETC-USD w=365")

View(pronostico)
ETC_des252 <- ts(Data$Close, start = c(2016,07,26), frequency = 252) 
ETC_Trends252 <- stl(ETC_des252, s.window = "periodic") 
autoplot(ETC_Trends252, main = "descomposicion de ETC w = 252" , colour = "darkblue")

forecastStl252 <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 252) 
  fit.stl <- stl(myTs, s.window = 252) 
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  autoplot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)), 
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}
###GR?FICO DE PRONOSTICO


plotForecastResult252 <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "gray18", main = title, 
       xlab = "Tiempo", ylab = "ETC-USD w=252", xlim = range(x$date), #t?tulo de la gr?fica
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet") #CAMBIA EL COLOR DEL PRON?STICO
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", cex = 0.8, col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}
pronostico252 <- forecastStl(Data, n.ahead = 252) 
plotForecastResult252(pronostico, title = "Pronóstico de ETC-USD w=252")

View(pronostico)
ETC_des296 <- ts(Data$Close, start = c(2016,07,26), frequency = 296) 
ETC_Trends296 <- stl(ETC_des296, s.window = "periodic") 

autoplot(ETC_Trends, main = "descomposicion de ETC w = 296" , colour = "darkblue")

forecastStl296 <- function(x, n.ahead =30) {
  myTs <- ts(x$Close, start = 1, frequency = 296) 
  fit.stl <- stl(myTs, s.window = 296) 
  sts <- fit.stl$time.series
  trend <- sts[, "trend"]
  fore <- forecast(fit.stl, h = n.ahead, level = 99)
  autoplot(fore)
  pred <- fore$mean
  upper <- fore$upper
  lower <- fore$lower
  output <- data.frame(actual = c(x$Close, rep(NA, n.ahead)), #Aqu? se cambia el nombre de la variable
                       trend = c(trend, rep(NA, n.ahead)), pred = c(rep(NA, 
                                                                        nrow(x)), pred), lower = c(rep(NA, nrow(x)), lower), 
                       upper = c(rep(NA, nrow(x)), upper), date = c(x$Date, 
                                                                    max(x$Date) + (1:n.ahead)))
  return(output)
}
plotForecastResult296 <- function(x, title = NULL) {
  x <- x[order(x$date), ]
  max.val <- max(c(x$actual, x$upper), na.rm = T)
  min.val <- min(c(x$actual, x$lower), na.rm = T)
  plot(x$date, x$actual, type = "l", col = "gray18", main = title, 
       xlab = "Tiempo", ylab = "ETC-USD w=296", xlim = range(x$date), #t?tulo de la gr?fica
       ylim = c(min.val, max.val))
  grid()
  lines(x$date, x$trend, col = "midnightblue")
  lines(x$date, x$pred, col = "darkviolet") 
  lines(x$date, x$lower, col = "blue")
  lines(x$date, x$upper, col = "blue")
  legend("bottomleft", cex = 0.8, col = c("grey", "yellowgreen", "green", 
                               "blue"), lty = 1, c("Actual", "Trend", "Forecast", "Lower/Upper Bound"))
}
pronostico296 <- forecastStl(Data, n.ahead = 296) 
plotForecastResult296(pronostico, title = "Pronóstico de ETC-USD w=296")

View(pronostico)

la Comparacion de los diversos pronosticos, tenemos que no se observa mucha diferencia entre los distintos periodos de tiempo en la grafica con la media y el año bursatil se observa una estacionalidad a mediados del año, algo que enla del año de 365 dias no se observa en esta se tiene que se presentan a lo largo del final del año, se obtiene que el pronostico en las tres graficas no es diferente del uno del otro, en las tres se presenta que la criptomoneda se recuperara a mediados del año en curso, sin embargo se tiene que va a tener un largo año en lo que se refiere a la recuperacion de esta accion, tenemos que tambien no se obtendra una recuperacion ya que el grafico de tendencia en las descomposciones nos indican que esta tendra una caida de tipo bull.

read.csv(file.choose())
##            X Cierre     W365     W252     W296
## 1 03/04/2019 5.4189 2.374020 2.374020 2.374020
## 2 04/04/2019 5.3378 2.449895 2.449895 2.449895
## 3 05/04/2019 5.7261 2.135771 2.135771 2.135771
## 4 06/04/2019 5.9917 2.351647 2.351647 2.351647

De la siguiente tabla de comparacion de pronosticos podemos observar lo siguiente

W365: año en curso W252: año bursatil W296: media de la fecha de operacion de los dias en los que opero la moneda

tomando en cuenta la tabla anterior se puede observar que el pronostico nos indica que la serie se iba a mantener en una constante lateralidad sin tener alzas en el precio de cierre, comparandolo con los datos reales, tenemso que el pronostico no fue el mas acertado, teniendo en cuenta que en los tres pronosticos indicaban que no iban a tener un incremento, las noticias alrededor de esta pudo dar paso a que los inversionistas y accionistas dieran una confianza que haya hecho que esta tuviera un incremento considerable