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?
a<-read.table("C:/Users/user/Documents/input1.txt", sep=",")
variacion<-function(n,inicio){
a=length(n)
for(i in 1:989){
inicio=inicio+n[i,]
}
return(inicio)
}
resultado1=variacion(a,0)
resultado1
## [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. ¿Cuál es primer precio que ocurre dos veces dada la lista de variaciones? Codigo repeticion<-function(n,inicio){ A=c(inicio) bandera=FALSE i=1 j=1 while(bandera==FALSE){ if(i>length(n)) i=1 inicio=inicio+n[i] if(inicio %in% A) bandera=TRUE A[j]=inicio j=j+1 i=i+1 } return(inicio) } resultado2=repeticion(a,0)
##El código está fuera del chunk ya que al cabo de 1 hr no compilaba
print("El resultado es 124645")
## [1] "El resultado es 124645"
3)Encuentre la suma de todos los multiplos de 3 o 5 menores a 1000.
sumaNaturales<-function(tope,a,b){
j=1
A=c()
for(n in 1:tope-1){
if(n%%a==0){
A[j]=n
j=j+1
next
}
if(n%%b==0){
A[j]=n
j=j+1
}
}
B=cumsum(A)
w=B[length(B)]
return(w)
}
resultado3=sumaNaturales(1000,3,5)
resultado3
## [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
fiboMenores<-function(n){
A=c(0,1)
i=1
j=3
while(i<n){
A[j]=A[j-2]+A[j-1]
i=A[j]+A[j-1]
j=j+1
}
return(A)
}
sumaPares<-function(A){
n=0
for(i in 1:length(A)){
if(A[i]%%2==0)
n=n+A[i]
}
return(n)
}
sumaImpares<-function(A){
n=0
for(i in 1:length(A)){
if(A[i]%%2!=0)
n=n+A[i]
}
return(n)
}
cocienteFibo<-function(n){
A=fiboMenores(n)
y=sumaPares(A)
x=sumaImpares(A)
return(x/y)
}
resultado4=cocienteFibo(1000000000)
resultado4
## [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.
fibo<-function(n){
A=c(0,1)
for(i in 3:n){
A[i]=A[i-1]+A[i-2]
}
return(A)
}
sonPares<-function(A){
n=0
for(i in 1:length(A)){
if(A[i]%%2==0)
n=n+1
}
return(n)
}
sonImpares<-function(A){
a=sonPares(A)
n=length(A)-a
return(n)
}
cociente<-function(n){
a=10*n
A=fibo(a)
x=sonImpares(A)
y=sonPares(A)
return(x/y)
}
funcion<-function(n){
A=c()
for(i in 1:n){
A[i]=cociente(i)
}
return(A)
}
##x=seq(1:200)
##y=funcion(200)
##plot(x,y)
##Dejaré lo ultimo comentado ya que me marca error
##Al principio tendremos resultados mayores a 1, por lo que tendremos más elementos impares que pares, pero despues esto tenderá rápidamente a 0, es decir a tener mas pares que impares.
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)
primos<-function(n){
j=3
t=4
A=c(2,3)
bandera=FALSE
while(t<=n){
for(i in 2:(t-1)){
if(t%%i==0){
bandera=TRUE
}
}
if(bandera==FALSE){
A[j]=t
j=j+1
}
bandera=FALSE
t=t+1
}
return(A)
}
funcion1<-function(n){
A=c()
for(i in 1:n){
A[i]=(primos(i)/i)
}
return(A)
}
##x6=seq(1:100)
##y6=funcion1(100)
##plot(x6,y6)
##Dejaré lo último comentado ya que me marca error
7)Es bien sabido que ro(X,Y)=0 ??? X???Y es falso. Simule un contraejemplo. CONTRAEJEMPLO Sean X,Y v.a’s tales que cumplen: P(X=x)=1/3 con x???(-1,0,1) Y=X cuadrada Nos bastará con señalar que Cov(X,Y)=0 para notar que ro(X,Y)=0, sin embargo, podemos afirmar que no son independientes.
x7=c(-1,0,1)
y7=x7^2
respuesta7=cov(x7,y7)
respuesta7
## [1] 0
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.
casino<-function(costo){
a=0
final=(-costo)
for(i in 1:3){
a<-sample(1:6,1)
if(a==6)
final=final+20
}
return(final)
}
repCasino<-function(rep,costo){
A=c()
for(i in 1:rep){
A[i]=casino(costo)
}
return(A)
}
x100=repCasino(100,10)
x1000=repCasino(1000,10)
x10000=repCasino(10000,10)
media100=mean(x100)
media100
## [1] -0.6
media1000=mean(x1000)
media1000
## [1] -0.1
media10000=mean(x10000)
media10000
## [1] -0.02
varianza100=var(x100)
varianza100
## [1] 157.2121
varianza1000=var(x1000)
varianza1000
## [1] 163.3534
varianza10000=var(x10000)
varianza10000
## [1] 165.2961
##Notemos que incluso si la media se acerca al cero, la varianza es muy grande, es decir, hay eventos con ganancias tan grandes como pérdidas, por lo tanto no es conveniente el juego, ya que la media ni siquiera es estrictamente positiva
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.
casinoPro<-function(n,inicio,costo,apuesta){
u=1
a=0
gj=0
A<-c()
B<-c()
while(u<=n){
inicio=inicio-costo
for(i in 1:3){
a<-sample(1:6,1)
if(a==6){
gj=gj+apuesta
}
}
A[u]=gj
B[u]=inicio+gj
gj=0
u=u+1
}
b=seq(1:n)
plot(b,B, xlab= "numero de juego", ylab= "ganancia acumulada")
d<-data.frame("ganancia del juego" =A, "ganancia acumulada" =B)
return(d)
}
##Sea numero de juegos=n=1000
n=100
resultado8.1=casinoPro(n,10,10,10)
resultado8.2=casinoPro(n,10,2,5)
resultado8.3=casinoPro(n,100, 10, 20)
resultado8.4=casinoPro(n,1000, 5, 10)
resultado8.1
## ganancia.del.juego ganancia.acumulada
## 1 0 0
## 2 10 0
## 3 10 -10
## 4 0 -30
## 5 0 -40
## 6 0 -50
## 7 10 -50
## 8 10 -60
## 9 20 -60
## 10 10 -80
## 11 0 -100
## 12 0 -110
## 13 10 -110
## 14 0 -130
## 15 10 -130
## 16 10 -140
## 17 20 -140
## 18 10 -160
## 19 10 -170
## 20 0 -190
## 21 20 -180
## 22 0 -210
## 23 0 -220
## 24 10 -220
## 25 0 -240
## 26 10 -240
## 27 10 -250
## 28 0 -270
## 29 10 -270
## 30 10 -280
## 31 10 -290
## 32 0 -310
## 33 20 -300
## 34 0 -330
## 35 0 -340
## 36 0 -350
## 37 0 -360
## 38 0 -370
## 39 10 -370
## 40 0 -390
## 41 20 -380
## 42 10 -400
## 43 0 -420
## 44 10 -420
## 45 10 -430
## 46 10 -440
## 47 20 -440
## 48 10 -460
## 49 0 -480
## 50 10 -480
## 51 0 -500
## 52 10 -500
## 53 10 -510
## 54 10 -520
## 55 20 -520
## 56 0 -550
## 57 20 -540
## 58 0 -570
## 59 0 -580
## 60 0 -590
## 61 10 -590
## 62 0 -610
## 63 10 -610
## 64 10 -620
## 65 10 -630
## 66 10 -640
## 67 10 -650
## 68 0 -670
## 69 10 -670
## 70 10 -680
## 71 10 -690
## 72 0 -710
## 73 10 -710
## 74 10 -720
## 75 10 -730
## 76 10 -740
## 77 0 -760
## 78 0 -770
## 79 0 -780
## 80 0 -790
## 81 10 -790
## 82 0 -810
## 83 0 -820
## 84 0 -830
## 85 0 -840
## 86 10 -840
## 87 0 -860
## 88 0 -870
## 89 10 -870
## 90 0 -890
## 91 0 -900
## 92 0 -910
## 93 0 -920
## 94 0 -930
## 95 0 -940
## 96 0 -950
## 97 10 -950
## 98 10 -960
## 99 0 -980
## 100 10 -980
resultado8.2
## ganancia.del.juego ganancia.acumulada
## 1 5 13
## 2 5 11
## 3 0 4
## 4 5 7
## 5 0 0
## 6 10 8
## 7 5 1
## 8 0 -6
## 9 0 -8
## 10 0 -10
## 11 0 -12
## 12 5 -9
## 13 5 -11
## 14 5 -13
## 15 5 -15
## 16 0 -22
## 17 0 -24
## 18 0 -26
## 19 0 -28
## 20 5 -25
## 21 5 -27
## 22 5 -29
## 23 0 -36
## 24 5 -33
## 25 5 -35
## 26 0 -42
## 27 0 -44
## 28 0 -46
## 29 0 -48
## 30 0 -50
## 31 0 -52
## 32 0 -54
## 33 5 -51
## 34 5 -53
## 35 0 -60
## 36 0 -62
## 37 0 -64
## 38 0 -66
## 39 0 -68
## 40 5 -65
## 41 0 -72
## 42 5 -69
## 43 0 -76
## 44 0 -78
## 45 10 -70
## 46 0 -82
## 47 0 -84
## 48 0 -86
## 49 5 -83
## 50 0 -90
## 51 0 -92
## 52 5 -89
## 53 0 -96
## 54 5 -93
## 55 0 -100
## 56 5 -97
## 57 0 -104
## 58 0 -106
## 59 0 -108
## 60 0 -110
## 61 5 -107
## 62 5 -109
## 63 0 -116
## 64 0 -118
## 65 5 -115
## 66 0 -122
## 67 5 -119
## 68 5 -121
## 69 5 -123
## 70 0 -130
## 71 5 -127
## 72 0 -134
## 73 5 -131
## 74 0 -138
## 75 0 -140
## 76 0 -142
## 77 0 -144
## 78 5 -141
## 79 0 -148
## 80 5 -145
## 81 0 -152
## 82 0 -154
## 83 5 -151
## 84 0 -158
## 85 5 -155
## 86 0 -162
## 87 0 -164
## 88 0 -166
## 89 5 -163
## 90 0 -170
## 91 10 -162
## 92 5 -169
## 93 10 -166
## 94 0 -178
## 95 0 -180
## 96 5 -177
## 97 0 -184
## 98 0 -186
## 99 0 -188
## 100 0 -190
resultado8.3
## ganancia.del.juego ganancia.acumulada
## 1 20 110
## 2 20 100
## 3 20 90
## 4 0 60
## 5 0 50
## 6 0 40
## 7 0 30
## 8 20 40
## 9 20 30
## 10 20 20
## 11 0 -10
## 12 0 -20
## 13 20 -10
## 14 0 -40
## 15 40 -10
## 16 0 -60
## 17 40 -30
## 18 0 -80
## 19 0 -90
## 20 0 -100
## 21 0 -110
## 22 40 -80
## 23 20 -110
## 24 0 -140
## 25 0 -150
## 26 0 -160
## 27 20 -150
## 28 0 -180
## 29 0 -190
## 30 0 -200
## 31 20 -190
## 32 0 -220
## 33 20 -210
## 34 20 -220
## 35 0 -250
## 36 20 -240
## 37 0 -270
## 38 0 -280
## 39 0 -290
## 40 0 -300
## 41 20 -290
## 42 0 -320
## 43 0 -330
## 44 0 -340
## 45 20 -330
## 46 0 -360
## 47 0 -370
## 48 20 -360
## 49 20 -370
## 50 20 -380
## 51 0 -410
## 52 0 -420
## 53 0 -430
## 54 0 -440
## 55 0 -450
## 56 0 -460
## 57 20 -450
## 58 20 -460
## 59 40 -450
## 60 20 -480
## 61 40 -470
## 62 20 -500
## 63 0 -530
## 64 0 -540
## 65 0 -550
## 66 0 -560
## 67 0 -570
## 68 0 -580
## 69 0 -590
## 70 0 -600
## 71 0 -610
## 72 0 -620
## 73 0 -630
## 74 0 -640
## 75 0 -650
## 76 60 -600
## 77 0 -670
## 78 0 -680
## 79 0 -690
## 80 0 -700
## 81 0 -710
## 82 20 -700
## 83 0 -730
## 84 40 -700
## 85 20 -730
## 86 40 -720
## 87 20 -750
## 88 0 -780
## 89 0 -790
## 90 0 -800
## 91 0 -810
## 92 0 -820
## 93 0 -830
## 94 20 -820
## 95 0 -850
## 96 20 -840
## 97 0 -870
## 98 20 -860
## 99 0 -890
## 100 0 -900
resultado8.4
## ganancia.del.juego ganancia.acumulada
## 1 0 995
## 2 10 1000
## 3 10 995
## 4 10 990
## 5 0 975
## 6 0 970
## 7 10 975
## 8 0 960
## 9 0 955
## 10 10 960
## 11 10 955
## 12 0 940
## 13 0 935
## 14 20 950
## 15 0 925
## 16 10 930
## 17 0 915
## 18 10 920
## 19 0 905
## 20 10 910
## 21 10 905
## 22 0 890
## 23 20 905
## 24 10 890
## 25 10 885
## 26 10 880
## 27 0 865
## 28 0 860
## 29 0 855
## 30 10 860
## 31 10 855
## 32 0 840
## 33 0 835
## 34 10 840
## 35 0 825
## 36 10 830
## 37 0 815
## 38 0 810
## 39 0 805
## 40 0 800
## 41 0 795
## 42 10 800
## 43 10 795
## 44 10 790
## 45 0 775
## 46 0 770
## 47 0 765
## 48 0 760
## 49 20 775
## 50 10 760
## 51 0 745
## 52 10 750
## 53 0 735
## 54 0 730
## 55 10 735
## 56 0 720
## 57 0 715
## 58 0 710
## 59 0 705
## 60 0 700
## 61 0 695
## 62 0 690
## 63 10 695
## 64 10 690
## 65 0 675
## 66 10 680
## 67 0 665
## 68 0 660
## 69 0 655
## 70 0 650
## 71 0 645
## 72 0 640
## 73 0 635
## 74 10 640
## 75 10 635
## 76 10 630
## 77 10 625
## 78 0 610
## 79 0 605
## 80 0 600
## 81 0 595
## 82 0 590
## 83 10 595
## 84 0 580
## 85 0 575
## 86 10 580
## 87 0 565
## 88 10 570
## 89 0 555
## 90 10 560
## 91 10 555
## 92 0 540
## 93 10 545
## 94 10 540
## 95 0 525
## 96 10 530
## 97 0 515
## 98 0 510
## 99 0 505
## 100 0 500
##Notemos que en todas las simulaciones la pendiente es negativa, es decir que la riqueza decrece, hay más perdidas que ganancias. Por lo tanto podría considerarse un juego "seguro" para la casa, solo habría que modificar el costo del juego y de la apuesta dependiendo del saldo inicial para asegurar cierta ganancia.