BookmarkSubscribeRSS Feed
raphaelchaves
Calcite | Level 5

Dear all,

I have used the following R function in order to estimate the upper bound PD given the number of obligors and defaults, considering the Pluto & Tasche approach. I'd be so grateful if you tell me how can I achieve the same results, however, just using PROC IML and SAS native functions, instead of having the R running in the background?
Thanks in advance.

Rgs,

Raphael

 

proc iml;

submit / R;

# Estimates the Upper Pound PD given the number of obligors and defaults
plutotashe <- function(n, i, theta, rho, T, Conf, N) {

hh = uniroot(error, interval=c(0,1), lower=0.000000001, upper=0.999999999, tol = 1e-8, maxiter=500,
n=n, i=i, theta=theta, rho=rho, T=T, Conf=Conf, N=N)
names(hh) = c("UpperBoundPD", "Function", "iter", "estim.prec")
return(hh)
}

# Error Function
error <- function(pd, n, i, theta, rho, T, Conf, N) {

AverageSim = 1-mean(replicate(N, sim(pd,n,i,theta,rho, T)))
error = AverageSim-Conf
return(error)
}

# Simulation Run
sim = function(pd, n, i, theta, rho, T) {

# Generate a state of the economy
Z=array(0,c(T,1))
Z[1] = rnorm(1)
if (T > 1) {
for (j in 2:T) {
Z[j] = theta*Z[j-1]+sqrt(1-theta^2)*rnorm(1)
}
rm(j)
}
p = 1-prod(1 - pnorm((qnorm(pd)-Z*sqrt(rho))/sqrt(1-rho))) # Prob of Defaulting
(tt=binom_cum(n,p,i))
return(tt)
}

# Cumulative Binomial
binom_cum = function (n,p,i) {
bc = 0
for (j in 0:i) {
bc = bc + choose(n,j)*(p^j)*((1-p)^(n-j))
}
return(bc)
}

n <- 800 #number of obligors
i <- 0 #number of defaults
theta <- 0.30 #year-to-year correlation
rho <- 0.12 #asset correlation
T <- 5 #number of years
Conf <- 0.99 #confidence level
N <- 1000 #number of simulations

plutotashe(n, i, theta,rho,T,Conf, N)

endsubmit;


quit;

1 REPLY 1
sbxkoenk
SAS Super FREQ

Koen

sas-innovate-2024.png

Available on demand!

Missed SAS Innovate Las Vegas? Watch all the action for free! View the keynotes, general sessions and 22 breakouts on demand.

 

Register now!

Multiple Linear Regression in SAS

Learn how to run multiple linear regression models with and without interactions, presented by SAS user Alex Chaplin.

Find more tutorials on the SAS Users YouTube channel.

From The DO Loop
Want more? Visit our blog for more articles like these.
Discussion stats
  • 1 reply
  • 408 views
  • 0 likes
  • 2 in conversation