aboutsummaryrefslogtreecommitdiffstats
path: root/R/time_of_default.R
diff options
context:
space:
mode:
Diffstat (limited to 'R/time_of_default.R')
-rw-r--r--R/time_of_default.R99
1 files changed, 99 insertions, 0 deletions
diff --git a/R/time_of_default.R b/R/time_of_default.R
new file mode 100644
index 00000000..369621ab
--- /dev/null
+++ b/R/time_of_default.R
@@ -0,0 +1,99 @@
+spreads<-scan(file="clipboard")
+z1<-rnorm(100)
+
+rho<-0.4
+l<-c()
+for(i in 1:10000){
+ z<-rho*z1+sqrt(1-rho^2)*rnorm(1)
+ u<-pnorm(z)
+ l<-c(l,sum(u))
+}
+
+l<-c()
+for(i in 1:10000){
+ u<-runif(100)
+ l<-c(l,sum(u)/100)
+}
+t<-seq(0,5,1/4)
+f<-function(lambda,t){
+ 1-exp(-lambda*t)
+}
+A<-outer(spreads/(1-0.35),t,f)
+
+
+rho<-0.4
+L<-c()
+z1<-rnorm(100)
+for(i in 1:10000){
+ z1<-rnorm(100)
+ z<-sqrt(1-rho^2)*z1+rho*rnorm(1)
+ u<-pnorm(z)
+ L<-rbind(L,colSums(A>u)/100*(1-0.35))
+}
+
+cdf<-c()
+for(l in 0:100){
+ cdf<-c(cdf,sum(L40[,21]<=l/100*(1-0.35))/100000)
+}
+
+
+d<-seq(-5,5,1)
+p<-abs(1/10*1/d)
+p[6]<-0.1
+pnormvec<-function(z,d){
+ f<-function(d,z){
+ pnorm(z-d)
+ }
+ outer(z,d,"f")
+}
+
+L<-c()
+Z<-matrix(rnorm(1000000),100,10000)
+pv1<-c()
+pv2<-c()
+pv3<-c()
+pv4<-c()
+for(i in 1:10000){
+ z <- Z[,i]
+ D <- sample(d,1,prob=p)
+ ztilde <- z+D
+ u <- pnormvec(z,d)%*%p
+ L <- rbind(L,colSums(A>as.vector(u))/100*(1-0.35))
+ pv1<-c(pv1,pl(t,L[i,],r,0,0.08)-0.05*cl(t,L[i,],r,0,0.08))
+ pv2<-c(pv2,pl(t,L[i,],r,0.08,0.15)-0.05*cl(t,L[i,],r,0.08,0.15))
+ pv3<-c(pv3,pl(t,L[i,],r,0.15,0.3)-0.05*cl(t,L[i,],r,0.15,0.3))
+ pv4<-c(pv4,pl(t,L[i,],r,0.3,1)-0.05*cl(t,L[i,],r,0.3,1))
+}
+pv<-100-100*c(mean(pv1/0.08),mean(pv2/0.07),mean(pv3/0.15),mean(pv4/0.7))
+
+u<-c()
+vecD<-c()
+for(i in 1:1000000){
+ D <- sample(d,1,prob=p)
+ #z<-rnorm(1)
+ #u <- c(u,pnormvec(z+D,d)%*%p)
+ vecD<-c(vecD,D)
+}
+
+tranchesize<-function(L, l, u){
+ if( u==1){
+ u - l - pmin(L,u-l) -pmin( pmax(L-l,0), u-l)
+ }else{
+ u - l - pmin( 0, u - l) - pmin( pmax(L-l,0), u-l)
+ }
+}
+
+protectionsize<-function(L, l, u){
+ pmin( pmax(L-l,0), u-l)
+}
+
+cl<-function(t, L, r, l, u){
+ dT <- diff(t)
+ e <- tranchesize(L,l,u)
+ e <- (e[-length(e)]+e[-1])/2
+ return( sum(dT*exp(-r[-1]*t[-1])*e) )
+}
+pl<-function(t, L, r, l, u){
+ result<-sum(exp(-r[-1]*t[-1])*diff(protectionsize(L,l,u)))
+ return(result)
+}