Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #Full Montecarlo
- n<-100000
- S<- rep(100, n)
- K<- rep(101, n)
- sigma<- rep(0.3,n)
- r<- rep(0.1,n)
- T<-rep(1,n)
- alfa<-0.01
- #Value the portfolio today V(S,t)
- d1<- (log(s/k)+(r+(1/2)*sigma^2)*T)/(sigma*sqrt(T))
- d2<- (d1-sigma*((T)^(1/2)))
- vcall<-(S*pnorm(d1)-exp(-r*T)*K*pnorm(d2))
- vput<- exp(-r*T)*K-S+vcall
- Vcartera<-vcall+0.5*vput
- #Value the portfolio on delta t
- t<-rep(10/365,n)
- max<-0
- Vi<-0
- vcall1<-0
- vput1<-0
- Vcartera1<-0
- L<-0
- #simulem els preus
- #Zi<- rnorm(n, mean=0, sd=1)
- deltaS<-rnorm(n, mean=0,sd=(S*sigma*sqrt(t)))
- #Sn<- S*exp((r-(1/2)sigma^2)(T-t) + sigma*(sqrt(T-t))*Zi)
- #tornem a calcular cada fita amb l'increment de t
- d1<- (log((S+deltaS)/k)+(r+(1/2)*sigma^2)*T)/(sigma*sqrt(T))
- d2<- d1-sigma*(sqrt(T))
- #calculem el valor de la call i de la put per l'increment de t
- vcall1<-(S+deltaS)*pnorm(d1)-exp(-r*(T-t))*K*pnorm(d2)
- vput1<- exp(-r*(T-t))*K-(S+deltaS)+vcall1
- #calculem el nou valor de la cartera
- Vcartera1<- (vcall1+0.5*vput1)
- L<- (Vcartera - Vcartera1)
- #Ordenem de més petit a més gran
- ordena<- sort(L)
- #El VaR és la posició que correspon a n*(1-alfa)
- quantile(ordena, 0.99) #VaR
- i<-99000
- suma<-0
- for(i in i:n)
- {
- suma<- ordena[c(i)] + suma
- }
- ESF<-suma/1000
- ESF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement