Ejercicios

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?

setwd("C:/Users/yyyy/Documents/Cynthia/R/Series de tiempo")
input<-read.table("input.txt",header = FALSE)
precio_i=0
precio_r=precio_i+sum(input)

El precio resultante es:

## [1] 439

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.

Por ejemplo si las variaciones fueran c(+1,-2,+3,+1), se tendría:

  • Precio actual: 0; variación de +1; precio resultante: 1

  • Precio actual: 1; variación de -2; precio resultante: -1

  • Precio actual: -1; variación de +3; precio resultante: 2

  • Precio actual: 2; variación de +1; precio resultante: 3

aquí se vuelve a iniciar con la lista de variaciones (la historia siempre se repite)

  • Precio actual: 3; variación de +1; precio resultante: 4

  • Precio actual: 4; variación de -2; precio resultante: 2

aquí se detiene el algoritmo pues el precio resultante igual a 2 ya fue observado ¿Cuál es primer precio que ocurre dos veces dada esta lista de variaciones?

Note que la lista de variaciones puede repetirse a si misma muchas veces antes de encontrar el precio duplicado; además, el precio duplicado debe ser encontrado en medio del proceso de búsqueda y detenerlo.

variable <-scan("input.txt")
precio <- c(0)
j <- 1
while (1 > 0){
  i <- j %% 989
  if (i == 0){
    x <- precio[j] + variable[989]
  }
  else{
    x <- precio[j] + variable[i]
  }
  if (x %in% precio == TRUE){
    break
  }
  else{
    precio <- c(precio, x)
  }
  j <- j + 1
}

precio[length(precio)]

El primer precio que ocurre dos veces es: 124645

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
s<- sum(n[n %% 3 == 0 | n %% 5 == 0])-1000

Nota: Restamos 1000 ya que pide estrictamente que sean multiplos menores a ese número y si no lo restamos el código lo considerará multiplo de 5 y lo contara en la suma.

Por lo tanto la suma nos da:

## [1] 233168

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)

#Sea x la suma de los elementos impares, y sea y la suma de los elementos pares

x <- t[t %% 2 != 0]
y <- t[t %% 2 == 0]

Z= sum(x)/sum(y)

De resultado obtenemos que Z vale:

## [1] 4.236068

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=x/y. 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)
}

library(ggplot2)
library(gganimate)

df<- data.frame(x=1:100,y=z[1:100])
ggplot(df, aes(x,y))+
  geom_point(size=2, shape=21, fill="red", colour="red")+
  geom_line(colour="red")+
  transition_reveal(x)+
  labs(title = 'Sucesión de Fibonacci',x='n', y = 'Proporción (z)') + 
  theme_light()

En el eje x sólo consideramos hasta 100 para que la gráfica se aprecie mejor

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)

library(dygraphs)

primo <-function(m){
  n<-1:m
  p <- function(num) {
    if (num == 2) {
      TRUE
    } else if (any(num %% 2:(num-1) == 0)) {
      FALSE
    } else { 
      TRUE
    }
  }
  p <- Vectorize(p)
  return(n[p(n)])
}

#Primos 10n naturales con n en 1:100
v<-10*(1:100)
primos<-function(n) length(primo(n))/n
w<-sapply(v,primos)
Valores<-cbind(v,w);colnames(Valores)<-c("Término","Proporción")
Valores<-data.frame(Valores)

dygraph(Valores,main = "Números primos",xlab = "n",ylab = "Proporción") %>%
  dyOptions(colors = RColorBrewer::brewer.pal(3, "Set1")) %>%
  dyOptions(stackedGraph = TRUE) %>%
  dyOptions(axisLabelColor = "black")%>%
  dyRangeSelector(height = 20) %>%
  dyHighlight(highlightSeriesBackgroundAlpha = 0.25)

7

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

library(ggplot2)

x<- rnorm(1000)
y<- x^2

La covarianza entre x y y es:

round(cor(x,y))
## [1] 0

Al graficar tenemos lo siguiente

Como vemos en el ejemplo la covarianza es cero pero claramente podemos observar que la variable y depende de la x.

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.

ganancia_n<-function(n){
  a<-20*rbinom(n,3,1/6)-10
  return(a)
}

medYvar<-function(n){
  muestra<-ganancia_n(n)
  c(mean(muestra),var(muestra))
} 

La media y la varianza de las simulaciones se representa en la siguiente tabla:

juegos<-c(100,1000,10000);juegos<-cbind(juegos)
r<-apply(juegos,1,medYvar)
rownames(r)<-c("Media","Varianza")
colnames(r)<-c("100 juegos","1000 juegos", "10000 juegos")
knitr::kable(r,format = "markdown",align = "c",digits = 3)
100 juegos 1000 juegos 10000 juegos
Media -2.000 0.860 0.060
Varianza 113.131 177.037 169.533

Luego al adaptar la función para que tome los argumentos: numero de juegos, dinero inicial, costo del juego, apuesta del juego tenemos lo siguiente.

set.seed(1)
casino <- function(juegos, dinero_i, costo, apuesta){
  ganancia_neta<-c()
  ganancia_acum<-c()
  for (i in 1:juegos){
    caras <- sample(1:6, size = 3, replace = TRUE)
    ganancia_neta[i] <- sum(caras==6)*apuesta-costo+dinero_i
    ganancia_acum[i]<-ganancia_neta[i]
    dinero_i <- ganancia_neta[i]
  }
  df<-data.frame(Juegos=1:juegos, Ganancias = ganancia_acum)
  grafica<-ggplot(df, aes(x=Juegos,y=Ganancias)) + geom_line(colour = "red") +
    labs(title = 'Juego del casino',x='Número de juegos', y = 'Ganancia/Pérdida')  + 
    theme_light()
  return(list(df,grafica))
}

Para la primer combinación con dinero inicial, costo del juego y apuesta del juego igual a 10, tenemos los siguientes resultados:

## [[1]]
##     Juegos Ganancias
## 1        1         0
## 2        2        10
## 3        3        10
## 4        4         0
## 5        5       -10
## 6        6       -10
## 7        7       -10
## 8        8       -20
## 9        9       -30
## 10      10       -30
## 11      11       -40
## 12      12       -50
## 13      13       -60
## 14      14       -70
## 15      15       -80
## 16      16       -90
## 17      17      -100
## 18      18      -100
## 19      19      -110
## 20      20      -120
## 21      21      -120
## 22      22      -130
## 23      23      -140
## 24      24      -130
## 25      25      -140
## 26      26      -130
## 27      27      -130
## 28      28      -140
## 29      29      -150
## 30      30      -160
## 31      31      -170
## 32      32      -170
## 33      33      -180
## 34      34      -190
## 35      35      -190
## 36      36      -200
## 37      37      -190
## 38      38      -200
## 39      39      -210
## 40      40      -220
## 41      41      -220
## 42      42      -230
## 43      43      -240
## 44      44      -250
## 45      45      -250
## 46      46      -260
## 47      47      -260
## 48      48      -270
## 49      49      -280
## 50      50      -280
## 51      51      -290
## 52      52      -300
## 53      53      -310
## 54      54      -310
## 55      55      -310
## 56      56      -320
## 57      57      -330
## 58      58      -320
## 59      59      -320
## 60      60      -320
## 61      61      -320
## 62      62      -320
## 63      63      -320
## 64      64      -330
## 65      65      -330
## 66      66      -330
## 67      67      -340
## 68      68      -350
## 69      69      -360
## 70      70      -370
## 71      71      -370
## 72      72      -370
## 73      73      -360
## 74      74      -370
## 75      75      -370
## 76      76      -380
## 77      77      -380
## 78      78      -390
## 79      79      -400
## 80      80      -410
## 81      81      -410
## 82      82      -420
## 83      83      -430
## 84      84      -420
## 85      85      -430
## 86      86      -440
## 87      87      -440
## 88      88      -450
## 89      89      -460
## 90      90      -470
## 91      91      -480
## 92      92      -490
## 93      93      -500
## 94      94      -510
## 95      95      -510
## 96      96      -520
## 97      97      -530
## 98      98      -530
## 99      99      -540
## 100    100      -540
## 
## [[2]]

Como podemos observar en la gráfica en general entre mas juguemos mas vamos a perder y esto se debe a que la apuesta es igual al costo lo que no nos deja acumular mucha ganancia a menos de que tengamos una racha ganadora lo cual no pasa ya que perderemos en algunas ocaciones y como el dinero inicial es igual al costo y a la apuesta es mas fácil que perdamos todo y continuemos en nuemros negativos.

Para la segunda combinación con dinero inicial de 10, costo del juego de 2 y apuesta del juego igual a 5, tenemos los siguientes resultados:

## [[1]]
##     Juegos Ganancias
## 1        1         8
## 2        2        11
## 3        3         9
## 4        4         7
## 5        5        10
## 6        6         8
## 7        7        11
## 8        8        14
## 9        9        22
## 10      10        20
## 11      11        23
## 12      12        21
## 13      13        19
## 14      14        27
## 15      15        25
## 16      16        23
## 17      17        21
## 18      18        19
## 19      19        27
## 20      20        30
## 21      21        33
## 22      22        36
## 23      23        34
## 24      24        32
## 25      25        35
## 26      26        38
## 27      27        36
## 28      28        39
## 29      29        37
## 30      30        40
## 31      31        43
## 32      32        41
## 33      33        39
## 34      34        37
## 35      35        50
## 36      36        48
## 37      37        56
## 38      38        54
## 39      39        52
## 40      40        50
## 41      41        48
## 42      42        46
## 43      43        54
## 44      44        62
## 45      45        60
## 46      46        58
## 47      47        61
## 48      48        59
## 49      49        57
## 50      50        60
## 51      51        63
## 52      52        61
## 53      53        64
## 54      54        62
## 55      55        60
## 56      56        63
## 57      57        61
## 58      58        64
## 59      59        67
## 60      60        65
## 61      61        68
## 62      62        71
## 63      63        74
## 64      64        77
## 65      65        75
## 66      66        73
## 67      67        76
## 68      68        74
## 69      69        77
## 70      70        80
## 71      71        83
## 72      72        81
## 73      73        79
## 74      74        77
## 75      75        75
## 76      76        78
## 77      77        86
## 78      78        84
## 79      79        82
## 80      80        80
## 81      81        83
## 82      82        81
## 83      83        84
## 84      84        87
## 85      85        90
## 86      86        88
## 87      87        86
## 88      88        84
## 89      89        87
## 90      90        90
## 91      91        88
## 92      92        86
## 93      93        89
## 94      94        92
## 95      95        90
## 96      96        88
## 97      97        91
## 98      98        89
## 99      99        87
## 100    100        85
## 
## [[2]]

Para la tercera combinación con dinero inicial de 100, costo del juego de 10 y apuesta del juego igual a 20, tenemos los siguientes resultados:

## [[1]]
##     Juegos Ganancias
## 1        1       110
## 2        2       140
## 3        3       150
## 4        4       160
## 5        5       150
## 6        6       140
## 7        7       150
## 8        8       140
## 9        9       130
## 10      10       140
## 11      11       150
## 12      12       140
## 13      13       130
## 14      14       140
## 15      15       150
## 16      16       160
## 17      17       170
## 18      18       180
## 19      19       170
## 20      20       180
## 21      21       170
## 22      22       160
## 23      23       170
## 24      24       160
## 25      25       150
## 26      26       140
## 27      27       130
## 28      28       120
## 29      29       110
## 30      30       120
## 31      31       110
## 32      32       100
## 33      33       110
## 34      34       140
## 35      35       130
## 36      36       120
## 37      37       130
## 38      38       120
## 39      39       110
## 40      40       100
## 41      41       110
## 42      42       120
## 43      43       110
## 44      44       100
## 45      45        90
## 46      46        80
## 47      47        70
## 48      48        60
## 49      49        50
## 50      50        60
## 51      51        70
## 52      52        60
## 53      53        70
## 54      54        60
## 55      55        70
## 56      56        60
## 57      57        70
## 58      58        80
## 59      59        70
## 60      60        80
## 61      61        90
## 62      62       100
## 63      63        90
## 64      64        80
## 65      65        90
## 66      66        80
## 67      67        90
## 68      68       100
## 69      69        90
## 70      70       100
## 71      71        90
## 72      72       100
## 73      73       130
## 74      74       120
## 75      75       130
## 76      76       120
## 77      77       110
## 78      78       140
## 79      79       130
## 80      80       160
## 81      81       170
## 82      82       160
## 83      83       150
## 84      84       160
## 85      85       170
## 86      86       160
## 87      87       150
## 88      88       140
## 89      89       130
## 90      90       120
## 91      91       130
## 92      92       120
## 93      93       110
## 94      94       140
## 95      95       170
## 96      96       160
## 97      97       150
## 98      98       140
## 99      99       130
## 100    100       120
## 
## [[2]]

Para la cuarta combinación con dinero inicial de 1000, costo del juego de 5 y apuesta del juego igual a 10, tenemos los siguientes resultados:

## [[1]]
##     Juegos Ganancias
## 1        1       995
## 2        2       990
## 3        3       985
## 4        4       980
## 5        5       975
## 6        6       970
## 7        7       975
## 8        8       990
## 9        9       995
## 10      10       990
## 11      11       995
## 12      12       990
## 13      13      1005
## 14      14      1010
## 15      15      1005
## 16      16      1000
## 17      17      1005
## 18      18      1010
## 19      19      1015
## 20      20      1010
## 21      21      1005
## 22      22      1000
## 23      23      1015
## 24      24      1020
## 25      25      1025
## 26      26      1020
## 27      27      1015
## 28      28      1020
## 29      29      1015
## 30      30      1020
## 31      31      1015
## 32      32      1010
## 33      33      1005
## 34      34      1000
## 35      35      1005
## 36      36      1000
## 37      37      1015
## 38      38      1020
## 39      39      1035
## 40      40      1030
## 41      41      1025
## 42      42      1030
## 43      43      1025
## 44      44      1020
## 45      45      1025
## 46      46      1020
## 47      47      1025
## 48      48      1020
## 49      49      1015
## 50      50      1020
## 51      51      1015
## 52      52      1030
## 53      53      1025
## 54      54      1030
## 55      55      1035
## 56      56      1040
## 57      57      1045
## 58      58      1040
## 59      59      1045
## 60      60      1040
## 61      61      1035
## 62      62      1030
## 63      63      1035
## 64      64      1030
## 65      65      1025
## 66      66      1020
## 67      67      1025
## 68      68      1020
## 69      69      1015
## 70      70      1020
## 71      71      1015
## 72      72      1010
## 73      73      1005
## 74      74      1000
## 75      75       995
## 76      76      1000
## 77      77      1005
## 78      78      1000
## 79      79       995
## 80      80       990
## 81      81       985
## 82      82       980
## 83      83       975
## 84      84       980
## 85      85       995
## 86      86       990
## 87      87       985
## 88      88       980
## 89      89       995
## 90      90       990
## 91      91       985
## 92      92       980
## 93      93       975
## 94      94       970
## 95      95       975
## 96      96       970
## 97      97       965
## 98      98       970
## 99      99       975
## 100    100       970
## 
## [[2]]

En las tres ultimas combinaciones podemos ver que en todas el costo del juego es menor a la apuesta, lo que a veces nos permite ganar mucho mas o en otras perder pero no tanto como en la combinación uno. Lo que varía es el dinero inicial y podemos ver que con un menor dinero inicial obtenenmos una ganancia mayor y mas “lineal” que el iniciar con mucho mas dinero ya que aquí el comportamiento que obtendremos será mas disparejo.