Ejercicio 1:

Usted tiene un algoritmo que estima, dado un instante de tiempo Δt1, la variación de precio que tendrá una acción en la bolsa en los instantes Δt siguientes. Una vez que corre el algoritmo recibe una sucesión de variaciones de precio. Un valor de +3 significa que el precio tendrá un incremento de 3 unidades monetarias, un valor de -5 significa que el precio decrece en 5 unidades monetarias. Empezando con un precio de $0, ¿cuál será el precio resultante de la acción después de que ocurran todas las variaciones?

x <- read.delim("input.txt")
sum(x)

El resultado es: 423

Ejercicio 2:

Usted recuerda que un supuesto fuerte del análisis técnico de acciones es, palabras más palabras menos, que la historia siempre se repite. Por lo cual como parte de su estrategia, y esperando tener cierta ventaja sobre el resto del mercado, se ve interesado en encontrar el primer precio que ocurre dos veces si las variaciones que obtuvo se repiten todo el tiempo. ¿Cuál es primer precio que ocurre dos veces dada esta lista de variaciones?

v <- input.txt
x <- c()
y <- c()
x[1] <- 0 
b = TRUE
  while(b =TRUE){
       for ( j in 1:100000){
         for(i in 1:(length(v))){
            x[i+1] <- x[i]+v[i]
         b <<-- ifelse(x[i+1]%in%x,TRUE,FALSE)
       }
         }
      ifelse(b== FALSE,print(x[j+1]," ")
}

El resultado es: 124645

Ejercicio 3:

Si hacemos una lista de los números naturales menores a 10 que son multiplos de 3 o 5 obtendremos c(3, 5, 6, 9), la suma de esos multiplos es 23. Encuentre la suma de todos los multiplos de 3 o 5 menores a 1000.

n <- 1:1000
sum(n[n < 1000 & (n %% 5 == 0 | n %% 3 == 0)])

El resultado es: 233168

Ejercicio 4:

Como bien sabe, cada término de la sucesión de Fibonacci se obtiene sumando los dos elementos anteriores.

Considere los elementos de la sucesión de Fibonacci menores a 1,000,000,000. Sea x la suma de los elementos impares, y la suma de los elementos pares. Encuentre z=x/y

fibo <- function(n) {
  f <- c()
  f[c(1,2)] <- 1
  b <- TRUE
  i <- 3 
  
  while (b == TRUE) {
    if(f[i-1]<=n) {
      
      f[i] <- f[i-1]+f[i-2]
      i <- i+1
    } else {
      b <- FALSE
      return(f[1:(length(f)-1)])
    }
    
  }
}

t <- fibo(1000000000)

t_p <- t[t%%2==0]

t_i <- t[t%%2!=0]

sum(t_i)/sum(t_p)

El resultado es: 4.236068

Ejercicio 5:

Ahora considere los primeros 10n elementos de la sucesión de Fibonacci con n∈(1,200), sean x el número de elementos impares, y el número de elementos pares y z=xy. Haga un gráfico interactivo del vector de z′s. Explique un par de insights interesantes sobre el ejercicio.

fibo2 <- function(n) {
  f <- c()
  f[c(1,2)] <- 1
  for(i in 3:n){
    f[i] <- f[i-1]+f[i-2]
  }
return(f)
}

z <- c()
pasos <- c(10*c(1:200))
for(i in 1:200){
  z[i] <- sum(fibo2(pasos[i])%%2!=0)/sum(fibo2(pasos[i])%%2==0)
  print(z[i])
} 
grafica=plot(1:200,z)

El resultado es: Vemos que la grafica se pega a cero, esto quiere decir que conforme la serie crece hay más numero pares que impares.

Ejercicio 6:

Escriba una función que encuentre los números primos entre 1 y n. Haga un gráfico animado de la proporción de números primos en los primeros 10k naturales con k∈(1:100)

Criba <- function(n){
  f <- c()
  f[1] <- 0
   for(i in 2:n){
     if((i!=2 & i!=3 & i!=5 & i!=7)&(i%%2==0|i%%3==0|i%%5==0|i%%7==0)) {
       f[i] <- 0
     } else {
      f[i] <- i
    }
   }
  grafica=plot(1:1000,f)
  return(f)
  
  }

El resultado: La funcion nos regresa un vector con ceros en aquellas posiciones que no representan a un número primo. El grafico muestra la distribucion de los primos en los primeros 1000 naturales si evaluamos la función en n=1000.

Ejercicio 7:

Es bien sabido que ρX,Y=0→X⊥Y es falso. Simule un contraejemplo.

x <- rnorm(1000)
y <- x^2
round(cov(x,y))

El resultado es: Vemos que la covarianza si es cero.

Ejercicio 8:

Usted trabaja en un casino donde existe el siguiente juego: un jugador lanza tres dados y gana 20 pesos por cada 6 que aparece, el costo de jugar es de 10 pesos.

Escriba una función que simule el juego y regrese la cantidad que se gana en cada juego i.e. ganancia - costo. Calcule la media y varianza al simular 100, 1000 y 10000 juegos. Explique sus hallazgos al dueño del casino.

Adapte su función para que tome los argumentos: numero de juegos, dinero inicial, costo del juego, apuesta del juego y que devuelva una lista con:

Un data frame que tenga como columnas: la ganancia del i-ésimo juego y la ganancia acumulada hasta el juego i

Un grafico de la ganancia acumulada

Explore y explique las siguientes combinaciones para dinero inicial, costo del juego, apuesta del juego: (10,10,10), (10,2,5), (100, 10, 20), (1000, 5, 10). Explique.

juego <- function(n,c,a,d_i){
  g_a <- d_i
  g<-c()
  for(i in 1:n){
  d <- sample (6,3,replace=TRUE)
  s <- sum(d==6)
  g[i] <- (s*a) -c
  g_a[i]<-g_a[i]+ g[i]
  }
  results <- list(ganancia=data.frame(tiempo=1:n,ganancia=g_a),graficos=plot(1:n,g_a))
  return(results)