#Pikavippi. Simuloidaan m pikavippiyrityksen otospolkua tuottojakauman #tarkastelemiseksi. ####################################################################### #Alkuarvot ####################################################################### a <- 100 #lainasumma euroina k <- 0.25 #kuukausikorko/100 p <- 0.80 #takaisinmaksutodennakoisyys c <- 100000 #alkupaaoma n <- 6 #kuukausien maara e <- 100 #kiinteat kuukausikulut q <- 0.90 #kvantiili ####################################################################### #Tuottojakauman simulointi ####################################################################### m <- 10000 #simuloitavien polkujen maara Y <- matrix(rep(0,n*m), ncol=n) #Alustetaan matriisi, jonka rivit ovat simuloituja polkuja. Kussakin polussa on n kuukautta. for(j in 1:m){ l <- floor((c-e)/a) #lainojen maara C <- c #paaoma U <- runif(l) #simuloidaan l kappaletta riippumattomia satunnaismuuttujia valin [0,1] tasajakaumasta. #Lasketaan ensimmaisen kuukauden tuotto indX <- rep(0,l) #muodostetaan indikaattorivektori, joka ilmaisee ketka ovat maksaneet ja ketka ei indX[which(U> (1-p))] <- 1 Y[j,1] <- sum(indX*(1+k)*a)-l*a - e #ensimmaisen kuukauden tuotto #Lasketaan tuotto kuukausilta 2,...,n for(i in 2:n){ C <- max(0,C+Y[j,(i-1)]) #kaytossa oleva paaoma l <- min(floor(C-min(e,C))/a,1000) #lainojen lukumaara U <- runif(l) #simuloidaan l riippumatonta tasajakautunutta satunnasmuuttujaa indX <- rep(0,l) #muodostetaan indikaattorivektori indX[which(U>(1-p))] <- 1 Y[j,i] <- sum(indX*(1+k)*a)-l*a - min(e,C) #kuukauden i tuotto } } ##################################################################### #Tulokset ##################################################################### #Kumuloituneet kuukausituotto V1 <- Y #lasketaan kumuloituneet tuotot jokaiselle kuukaudelle ja jokaiselle polulle for(i in 1:m){ V1[i,] <- cumsum(Y[i,]) } #Vuosituotto V <- sort(V1[,n]) #simulodut kokonaistuotot tarkastelujaksolta jarjestettyna pienimmasta suurimpaan hist(V,probability=T) #simuloitujen kokonaistuottojen histogrammi mean(V) #simuloimalla laskettu odotusarvo sd(V) #simuloitu keskihajonta min(V) max(V) V[(1-q)*m] #tuotto, joka ylittyy todennakoisyydella q (Value at Risk) mean(V[1:((1-q)*m)]) #todennakoisyydella 1-q toteutuvien alimpien tuottojen odotusarvo length(V[which(V>0)])/m #todennakoisyys, etta tuotto on positiivinen