Codigo

u<-5 #Capital Inicial 
int<-0 # Actualizacion (Dejar en 0 para modelo clasico)

simular<-function(time){
  U<-1:(time+1)
  U[1]<-u
  for(i in 2:(time+1)){
    if(U[i-1]<=0){
      U[i]<-0
    }else{
      U[i]<-max(U[i-1]+(4.5 - rgeom(1,.2))*((1+int)^(i-2)),0)
    }
  }
  U
}
#Simulanadp

simular(15) #1 Simulacion de  15 Años
##  [1]  5.0  9.5 13.0 12.5 16.0 18.5 23.0 15.5 17.0 21.5 20.0 18.5 22.0 19.5
## [15] 22.0 26.5
#### Simular 5 Veces 50 Años (Filas =  Años, Columnas = Simulaciones)
(y<-replicate(10,simular(50)) )
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
##  [1,]  5.0  5.0  5.0  5.0  5.0  5.0  5.0  5.0    5     5
##  [2,]  7.5  0.5  9.5  6.5  7.5  8.5  3.5  2.5    0     0
##  [3,]  9.0  3.0  0.0  7.0 11.0  3.0  8.0  0.0    0     0
##  [4,] 13.5  7.5  0.0  4.5 11.5  7.5 11.5  0.0    0     0
##  [5,] 13.0 12.0  0.0  1.0 13.0  9.0 12.0  0.0    0     0
##  [6,] 15.5 12.5  0.0  5.5 17.5  8.5 16.5  0.0    0     0
##  [7,]  8.0 14.0  0.0  7.0 11.0 11.0 13.0  0.0    0     0
##  [8,] 10.5 18.5  0.0 10.5  5.5 14.5  7.5  0.0    0     0
##  [9,]  9.0 23.0  0.0  6.0  3.0 12.0 11.0  0.0    0     0
## [10,] 13.5 24.5  0.0  0.5  0.0 16.5  6.5  0.0    0     0
## [11,] 18.0 29.0  0.0  3.0  0.0 16.0  7.0  0.0    0     0
## [12,] 19.5 30.5  0.0  1.5  0.0 17.5 11.5  0.0    0     0
## [13,] 17.0 34.0  0.0  0.0  0.0 21.0 14.0  0.0    0     0
## [14,] 10.5 27.5  0.0  0.0  0.0 21.5 13.5  0.0    0     0
## [15,] 12.0 30.0  0.0  0.0  0.0 16.0 15.0  0.0    0     0
## [16,] 14.5 25.5  0.0  0.0  0.0 13.5 18.5  0.0    0     0
## [17,] 17.0 26.0  0.0  0.0  0.0 18.0 10.0  0.0    0     0
## [18,] 16.5 24.5  0.0  0.0  0.0 20.5  7.5  0.0    0     0
## [19,] 20.0 21.0  0.0  0.0  0.0 25.0  5.0  0.0    0     0
## [20,] 24.5  0.0  0.0  0.0  0.0 28.5  2.5  0.0    0     0
## [21,] 27.0  0.0  0.0  0.0  0.0 31.0  3.0  0.0    0     0
## [22,] 31.5  0.0  0.0  0.0  0.0 33.5  3.5  0.0    0     0
## [23,] 24.0  0.0  0.0  0.0  0.0 38.0  6.0  0.0    0     0
## [24,] 24.5  0.0  0.0  0.0  0.0 38.5  5.5  0.0    0     0
## [25,] 19.0  0.0  0.0  0.0  0.0 43.0  3.0  0.0    0     0
## [26,] 23.5  0.0  0.0  0.0  0.0 47.5  5.5  0.0    0     0
## [27,] 27.0  0.0  0.0  0.0  0.0 52.0  9.0  0.0    0     0
## [28,] 31.5  0.0  0.0  0.0  0.0 50.5 10.5  0.0    0     0
## [29,] 35.0  0.0  0.0  0.0  0.0 49.0  3.0  0.0    0     0
## [30,] 34.5  0.0  0.0  0.0  0.0 53.5  0.0  0.0    0     0
## [31,] 35.0  0.0  0.0  0.0  0.0 53.0  0.0  0.0    0     0
## [32,] 35.5  0.0  0.0  0.0  0.0 55.5  0.0  0.0    0     0
## [33,] 36.0  0.0  0.0  0.0  0.0 60.0  0.0  0.0    0     0
## [34,] 37.5  0.0  0.0  0.0  0.0 61.5  0.0  0.0    0     0
## [35,] 40.0  0.0  0.0  0.0  0.0 63.0  0.0  0.0    0     0
## [36,] 41.5  0.0  0.0  0.0  0.0 54.5  0.0  0.0    0     0
## [37,] 46.0  0.0  0.0  0.0  0.0 52.0  0.0  0.0    0     0
## [38,] 45.5  0.0  0.0  0.0  0.0 55.5  0.0  0.0    0     0
## [39,] 43.0  0.0  0.0  0.0  0.0 55.0  0.0  0.0    0     0
## [40,] 43.5  0.0  0.0  0.0  0.0 56.5  0.0  0.0    0     0
## [41,] 46.0  0.0  0.0  0.0  0.0 61.0  0.0  0.0    0     0
## [42,] 45.5  0.0  0.0  0.0  0.0 61.5  0.0  0.0    0     0
## [43,] 38.0  0.0  0.0  0.0  0.0 61.0  0.0  0.0    0     0
## [44,] 35.5  0.0  0.0  0.0  0.0 59.5  0.0  0.0    0     0
## [45,] 40.0  0.0  0.0  0.0  0.0 53.0  0.0  0.0    0     0
## [46,] 42.5  0.0  0.0  0.0  0.0 56.5  0.0  0.0    0     0
## [47,] 43.0  0.0  0.0  0.0  0.0 59.0  0.0  0.0    0     0
## [48,] 47.5  0.0  0.0  0.0  0.0 60.5  0.0  0.0    0     0
## [49,] 52.0  0.0  0.0  0.0  0.0 59.0  0.0  0.0    0     0
## [50,] 49.5  0.0  0.0  0.0  0.0 63.5  0.0  0.0    0     0
## [51,] 54.0  0.0  0.0  0.0  0.0 67.0  0.0  0.0    0     0
#Plotear Serie

matplot(y,type="l") #R-Base

library(zoo)  

autoplot.zoo(y,facets=NULL)#Zoo y ggplot2

#Calculo de la Probabilidade de Ruina

tail(y,1) #Ultimos Valores
##       [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10]
## [51,]   54    0    0    0    0   67    0    0    0     0
tail(y,1) <= 0 #Ruina? 
##        [,1] [,2] [,3] [,4] [,5]  [,6] [,7] [,8] [,9] [,10]
## [51,] FALSE TRUE TRUE TRUE TRUE FALSE TRUE TRUE TRUE  TRUE
mean(tail(y,1)<=0) #Estimar Probabilidad
## [1] 0.8
##### Codigo Comprimido
Nsim<-1000 #NumSim
time<-1000 #Años
(p<-mean(tail(replicate(Nsim,simular(time)),1)<=0)) #Prob Ruina
## [1] 0.652
p+c(-1,1)*qnorm(1-.05/2)*sqrt(p*(1-p)/Nsim) #intervalo de Confianza 95%
## [1] 0.6224769 0.6815231

Codigo

u<-5 #Capital Inicial 
int<-0 # Actualizacion (Dejar en 0 para modelo clasico)

simular<-function(time){
  U<-1:(time+1)
  U[1]<-u
  for(i in 2:(time+1)){
    if(U[i-1]<=0){
      U[i]<-0
    }else{
      U[i]<-max(U[i-1]+(4.5 - rgeom(1,.2))*((1+int)^(i-2)),0)
    }
  }
  U
}
#Simulanadp

simular(15) #1 Simulacion de  15 Años

#### Simular 5 Veces 50 Años (Filas =  Años, Columnas = Simulaciones)
(y<-replicate(10,simular(50)) )


#Plotear Serie

matplot(y,type="l") #R-Base

library(zoo)  
autoplot.zoo(y,facets=NULL)#Zoo y ggplot2


#Calculo de la Probabilidade de Ruina

tail(y,1) #Ultimos Valores
tail(y,1) <= 0 #Ruina? 
mean(tail(y,1)<=0) #Estimar Probabilidad

##### Codigo Comprimido
Nsim<-1000 #NumSim
time<-1000 #Años
(p<-mean(tail(replicate(Nsim,simular(time)),1)<=0)) #Prob Ruina

p+c(-1,1)*qnorm(1-.05/2)*sqrt(p*(1-p)/Nsim) #intervalo de Confianza 95%