quinta-feira, 2 de outubro de 2008

Duration

########### Valor presente (pv e pp) e Duration #### Exercíco introdutório m<-1000 n<-20
c<-rep(m/n,n)
c
t<-1:n
r<-c(0.05,0.04,0.045,.049,0.0499,0.0501,0.051,0.055, 0.06)
pv<-function(c,r,M)sum(c/((1+r)^t))+M/(1+r)^n pp<-sapply (r,function(j) pv(c,j,m))
pp
dp<-sapply(1:length(r),function(k)(pp[k]-pp[1])/pp[1])
dp*100
dp*100 [1] 0.0000000 13.5903263 6.5039682 1.2568559 [5] 0.1247278 -0.1245165 -1.2357217 -5.9751912 [9] -11.4699212 duration <- function(c, r, M,p) { n <- length(c) ( sum((c*t)/((1+r)^t)) + M*n/((1+r)^n))/p } duration(c, .05, m,pv(c,0.05,m))
durations<-sapply(r, function(rr) duration(c, rr, m,pv(c,rr,m)))
durations [1] 13.08532 13.54472 13.31615 13.13165 13.08996 13.08068 [7] 13.03892 12.85262 12.61844 dr<-sapply(1:length(r),function(h)(r[h]-r[1])) dr*100
aprox<-function(dur,taxa,d)((-1*dur)/(1+taxa))*d
aproximacao<-aprox(durations[1],r[1],dr[2:length(dr)]) aproximacao plot(r[2:length(r)],aproximacao,type="l",col=3, xlab="taxa de juros", ylab="preço")
lines(dp[2:length(r)],lty=3)
########### Gráfico em 3d########
taxa <- seq(0.04, 0.06, length= 80)
preco <- seq(800, 1135, length= 80)
fun <- function(taxa,preco) { d<-(sum((50*(1:n))/((1+taxa)^(1:n))) + 1000*n/((1+taxa)^n))/preco }
duration.3d <- outer(taxa, preco, fun)
op <- par(bg = "white") persp(taxa, preco, duration.3d, theta = 80, phi = 30, expand = 0.5, col = "lightblue")










Nenhum comentário: