Starting from:

$35

MFE409 Risk Management Homework 6 Solved.

Risk Management Homework 6

Question 1
BNP

Credit Risk and Counterparty Risk
Credit risk is the risk of incurring an economic loss on loans and receivables existing or potential due to commitments given resulting from change in the credit quality of the Banks debtors which can ultimately result in default. Credit risk is measured at portfolio level taking into account correlations between the values of the loans and receivables making up the portfolio concerned.

The Basel II standardised method is used based on external ratings. Each transaction and each counterparty is rated by the Group using the same methods regardless of the model used to calculate regulatory capital requirements. Internal estimates of risk parameters are used in the Banks day-to-day management in line with Basel II recommendations For example apart from calculating capital requirements they are used when making new loans or reviewing existing loans to measure profitability determine collective impairment and for internal and external reporting purposes. For colleteral and other security, thebanking regulations set clear guidelines for assessing the risk-mitigating effect of collateral and other security under the Basel II advanced approaches.

In the measurement of counterparty Risk, ValRisk is used to produce the information needed to compute economic capital distribution of potential future exposures on each counterparty and Basel II regulatory capital expected effective positive exposures.The BNP Paribas Group is involved in securitisation transactions as originator sponsor and investor as defined by Basel II.

Market Risk
Market risk is the risk of incurring an economic loss of value due to adverse trends in market factors whether directly tradable or not.

The market risk related to banking activities encompasses equity holding risk on the one hand and the interest rate and currency risks stemming from banking intermediation activities on the other hand Only the equity and currency risks give rise to weighted assets calculation under Pillar of Basel II.

The Group uses an internal model derived from the one used to calculate daily VaR GEaR on the trading book. Various types of risk factors are used to measure equity risk and they depend largely on the level of available or useable share price information. The model has been validated by the banking supervisor for measuring the capital requirement for equity risk as part of the Basel II approval process.

Currency risk relates to all transactions whether part of the trading book or not This risk is treated in the same way under both Basel and Basel II

Operational Risk
Operational risk is the risk of incurring an economic loss due to inadequate or failed internal processes or due to external events whether deliberate accidental or natural occurrences Management of operational risk is based on an analysis of the cause event effect chain.

Operational risk management is governed by strict regulatory framework including Basel II which requires the allocation of capital to operational risk

Question 2
For this problem, we calculate the lambda for the periods for which the probability is provided.

Using the lambda and the formula for probability of default using lambda, we can calculate probability of default at every point there is a cashflow (in this case 0.5,1,1.5,2...,6 years).

Once we know probability, we can find present value of the default adjusted cash flows (cash flow * probability). We also need to add the recovery rate in case of default into the price of the bond.

Assumed a risk free rate and recovery rate of 0.

*3,lambda[1]*

  )

library(knitr) suppressMessages(library(expm))

#Questions : what is r, what is residual rate calculate6yearbondprice <- function(lambda,coupon,faceVal,r,recovery){ couponTime <- seq(0.5,6,0.5) lambdaUse <- c(lambda[1]*0.5,lambda[1],lambda[1]*1.5,lambda[1]*2,lambda[1]*2.5,lambda[1]

lambda[1]*3+lambda[2],lambda[1]*3+lambda[2]*1.5,lambda[1]*3+lambda[2]*2, lambda[1]*3+lambda[2]*2+lambda[3]*0.5,lambda[1]*3+lambda[2]*2+lambda[3], lambda[1]*3+lambda[2]*2+lambda[3]*1.5,lambda[1]*3+lambda[2]*2+lambda[3]*2

names(lambdaUse) <- couponTime

price <- 0 for(i in 1:length(lambdaUse)){ price <- price + (coupon*exp(-lambdaUse[i])/(1+r)^i) if(i == length(lambdaUse)){ price <- price + (faceVal*exp(-lambdaUse[i])/(1+r)^i)

} }

price <- price + recovery*faceVal*(1-exp(-lambdaUse[length(lambdaUse)])) price

}

cds <- c(0.005,0.006,0.01) recovery <- 0.6 lambda <- c() lambda[1] <- cds[1]/(1-recovery) lambda3Calc <- function(lambda3,cds,recovery,lambda0){ lft <- (cds/(1-recovery))*(((1-exp(-3*lambda0))/lambda0)+((exp(-3*lambda0)*(1-exp(-2* rgt <- ((1-exp(-3*lambda0))+(exp(-3*lambda0)*(1-exp(-2*lambda3)))) lft-rgt

}

lambda5Calc <- function(lambda5,cds,recovery,lambda0,lambda3){ lft <- (cds/(1-recovery))*(((1-exp(-3*lambda0))/lambda0)+((exp(-3*lambda0)*(1-exp(-2*

+((exp(-3*lambda0-2*lambda3)*(1-exp(-5*lambda5)))/(lambda5)))

rgt <- ((1-exp(-3*lambda0))+(exp(-3*lambda0)*(1-exp(-2*lambda3))) + (exp(-3*lambda0-2* lft-rgt

} lambda[2] <- uniroot(lambda3Calc,cds=cds[2],recovery=recovery,lambda0=lambda[1], interval = lambda[3] <- uniroot(lambda5Calc,cds=cds[3],recovery=recovery,lambda0=lambda[1], lambda3 = kable(t(lambda),col.names=c(3,5,10),caption="Lambdas")
lambda3)))/(lambd

lambda3)))/(lambd lambda3)*(1-exp

c(-1,1))$roo lambda[2], in Table 1: Lambdas

 
3
5
10
 
0.0125
0.0188986
0.0363932
 
coupon <- 3 faceVal <- 100 r <- 0

recovery <- 0.6 price <- calculate6yearbondprice(lambda,coupon,faceVal,r,recovery) kable(t(price),col.names = "Price")
Price

134.0319

Question 3
These two estimates of the probability of default are so different. The table also shows that the ratio of the implied hazard rate to historicak default rate decreases as the credit quality declines. However, the difference between these two rates increases as credit quality declines. The reason is that bond traders do not base their prices for bonds only on the actuarial probability of default. They build in an extra return to compensate for the risks they are bearing. The historical hazard rate is the real word default probability. The implied hazard rate is the risk neutral default probability. Real-world default probabilities are usually less than risk-neutral default probabilities. This means that bond traders earn more than the risk-free rate on average from holding corporate bonds. Investors always expect significantly higher returns from investing in corporate bonds than from investing in risk-free bonds. As the credit rating of the corporate bonds declined, the extent of the higher returns increased.

Question4
1 a
For P(0), each element is the probability of being in category j at time 0, given that it was in category i at time 0. So in this case we will have 1 along the diagonals (Identity matrix)

creditRat <- c("AAA","AA","A","BBB","BB","B","CCC","Default") P <- matrix(0,nrow = 8, ncol=8,dimnames=list(creditRat,creditRat)) for(i in 1:nrow(P)){P[i,i] <- 1} kable(P)

 
AAA
AA
A
BBB
BB
B
CCC
Default
AAA
1
0
0
0
0
0
0
0
AA
0
1
0
0
0
0
0
0
A
0
0
1
0
0
0
0
0
BBB
0
0
0
1
0
0
0
0
BB
0
0
0
0
1
0
0
0
B
0
0
0
0
0
1
0
0
CCC
0
0
0
0
0
0
1
0
Default
0
0
0
0
0
0
0
1
b

This will be the transition matrix as provided in the slides. The last row is for default which has 0 for all transition to other ratings and 100% for transition to default.

setwd("/Users/auroracappadocian/Downloads/409FRM/HW6") P1 <- read.csv("Transition.csv",header=F) colnames(P1) <- creditRat row.names(P1) <- creditRat kable(P1)

 
AAA
AA
A
BBB
BB
B
CCC
Default
AAA
90.81
8.33
6.68
0.06
0.12
0.00
0.00
0.00
AA
0.70
90.65
7.79
0.64
0.06
0.14
0.02
0.00
A
0.09
2.27
91.05
5.52
0.74
0.26
0.01
0.06
BBB
0.02
0.33
5.95
86.93
5.30
1.17
1.12
0.18
BB
0.03
0.14
0.67
7.73
80.53
8.84
1.00
1.06
B
0.00
0.11
0.24
0.43
6.48
83.46
4.07
5.20
CCC
0.22
0.00
0.22
1.30
2.38
11.24
64.86
19.79
Default
0.00
0.00
0.06
0.18
1.06
5.20
19.79
0.00
2

IF Λ contains λi,j, such that λi,j dt is the probability of moving from category i to category j in dt. P(t) is the transitional probability from time 0 to t. As it is a markov chain, when we move from t to t+∆t, we need only P(t) for calculation of P(t+∆t)

Imagine the first row of the P(1) matrix, which indicates the probability of moving from AAA to various credit ratings. Imagine we want the first element of P(2), which is probability of it moving from AAA at t=0 to AAA at t=2. For this we can take the first row of P(1) and multiply the first column of Λ (which indicates instantaneous probability of moving from one rating to AAA).

This shows us that P(t) Λ (Matrix multiplication) = P(t + ∆t)

P(t+∆t) = P(t) Λ∆t

Λ∆t = P(t)−1P(t + ∆t) = P(t)−1(∆P(t) + P(t))

Λ = (P(t)−1∆P(t) + I)∆1t = (P(t)−1dP(t) + I)dt1

3

We know P(0) is Identity matrix (I) Λ = I−1(P(1)-I) + I = P(1)

4

Λ based on data is P(1)

Lambda <- as.matrix(P1/100) kable(Lambda)

                                      AAA               AA                               BBB               BB                               CCC        Default

AAA              0.9081 0.0833 0.0668 0.0006 0.0012 0.0000 0.0000 0.0000 AA 0.0070 0.9065 0.0779 0.0064 0.0006 0.0014 0.0002 0.0000 A 0.0009 0.0227 0.9105 0.0552 0.0074 0.0026 0.0001 0.0006

BBB              0.0002    0.0033    0.0595    0.8693    0.0530    0.0117    0.0112    0.0018

 
AAA
AA
A
BBB
BB
B
CCC
Default
BB
0.0003
0.0014
0.0067
0.0773
0.8053
0.0884
0.0100
0.0106
B
0.0000
0.0011
0.0024
0.0043
0.0648
0.8346
0.0407
0.0520
CCC
0.0022
0.0000
0.0022
0.0130
0.0238
0.1124
0.6486
0.1979
Default
0.0000
0.0000
0.0006
0.0018
0.0106
0.0520
0.1979
0.0000
5

The default probabilites for each year, can be calculated by performing Λn and taking the last column.

timevals <- c(1,2,3,4,5,7,10) q5 <- sapply(timevals,function(x){(Lambda%^%(x))[c(1:7),8]*100}) colnames(q5) <- timevals row.names(q5) <- creditRat[c(1:7)] kable(q5)

 
1
2
3
4
5
7
10
AAA
0.00
0.005388
0.0143694
0.0279966
0.0466993
0.0997166
0.2155228
AA
0.00
0.017700
0.0370285
0.0595318
0.0853901
0.1469877
0.2600460
A
0.06
0.087909
0.1366883
0.1965682
0.2633000
0.4054260
0.6142888
BBB
0.18
0.498712
0.7388624
0.9320745
1.0891037
1.3231746
1.5353596
BB
1.06
1.525514
1.9076496
2.1887926
2.3853672
2.5844925
2.5823202
B
5.20
5.214979
5.2193010
5.0509953
4.8006443
4.2160287
3.3915362
CCC
19.79
13.447974
10.1823860
7.8300211
6.1677669
4.1070961
2.6082531
 6

The difference in the numbers might be because Moody’s might not assuming a Markov process, while transitioning from one year to another. That is an important assumption in the method we have provided.

7

Price of the BBB bond can be calculated using similar methodology as the first question. Before that we need to calculate the lambda using the default probabilities and use those for the calculations.

calculateLambda <- function(conditionalDefault,t){ vt <- 1-conditionalDefault integrallamb <- -log(vt) nmr <- diff(integrallamb) dnr <- diff(t) lambda <- nmr/dnr

names(lambda) <- t[-length(t)] return(lambda)

}

calculate6yearbondprice_2 <- function(lambda,coupon,faceVal,r,recovery){ couponTime <- seq(0.5,6,0.5) lambdaUse <- c(lambda[1]*0.5,lambda[1],lambda[1]+lambda[2]*0.5,lambda[1]+lambda[2],lambda

lambda[1]+lambda[2]+lambda[3],lambda[1]+lambda[2]+lambda[3]+0.5*lambda[4] lambda[1]+lambda[2]+lambda[3]+lambda[4]+0.5*lambda[5],lambda[1]+lambda[2] lambda[1]+lambda[2]+lambda[3]+lambda[4]+lambda[5]+0.5*lambda[6], lambda[1]+lambda[2]+lambda[3]+lambda[4]+lambda[5]+lambda[6], lambda[1]+lambda[2]+lambda[3]+lambda[4]+lambda[5]+1.5*lambda[6],
[1]+lambda[2

,lambda[1]+lam

+lambda[3]+lam

lambda[1]+lambda[2]+lambda[3]+lambda[4]+lambda[5]+2*lambda[6])

names(lambdaUse) <- couponTime

price <- 0 for(i in 1:length(lambdaUse)){ price <- price + (coupon*exp(-lambdaUse[i])/(1+r)^i) if(i == length(lambdaUse)){ price <- price + (faceVal*exp(-lambdaUse[i])/(1+r)^i)

} }

price <- price + recovery*faceVal*(1-exp(-lambdaUse[length(lambdaUse)])) price

}

BBBDef <- c(0,q5[4,]/100) t <- c(0,1,2,3,4,5,7,10) lambdas7 <- calculateLambda(BBBDef,t) pricebbb <- calculate6yearbondprice(lambdas7,3/2,100,0,0.6) kable(t(pricebbb),col.names = "Price")
Price

120.1674

##8

The CDS spread can be calculated using the relation between λ s and recovery rate as provided in the slides.

The complete formula has been used for these calculations.

cds <- c() recovery <- 0.6 nmtr_3 <- ((1-exp(-lambdas7[1])) + exp(-lambdas7[1])*(1-exp(-lambdas7[2])) + exp(-lambdas7[ dmtr_3 <- ((1-exp(-lambdas7[1]))/lambdas7[1] + exp(-lambdas7[1])*(1-exp(-lambdas7[2]))/ exp(-lambdas7[1]-lambdas7[2])*(1-exp(-lambdas7[3]))/lambdas7[3])

cds[1] <- nmtr_3*(1-recovery)/dmtr_3 nmtr_5 <- nmtr_3 + exp(-lambdas7[1]-lambdas7[2]-lambdas7[3])*(1-exp(-lambdas7[4])) + exp(-lambdas7[1]-lambdas7[2]-lambdas7[3]-lambdas7[4])*(1-exp(-lambdas7[5]))

dmtr_5 <- dmtr_3 + exp(-lambdas7[1]-lambdas7[2]-lambdas7[3])*(1-exp(-lambdas7[4]))/ exp(-lambdas7[1]-lambdas7[2]-lambdas7[3]-lambdas7[4])*(1-exp(-lambdas7[5]))/

cds[2] <- nmtr_5*(1-recovery)/dmtr_5 nmtr_10 <- nmtr_5 + exp(-lambdas7[1]-lambdas7[2]-lambdas7[3]-lambdas7[4]-lambdas7[5]-2* dmtr_10 <- dmtr_5 + exp(-lambdas7[1]-lambdas7[2]-lambdas7[3]-lambdas7[4]-lambdas7[5]-2* cds[3] <- nmtr_10*(1-recovery)/dmtr_10 names(cds) <- c(3,5,10) kable(t(cds))
   1]-lambdas7[ lambdas7[2] + lambdas7[4] + lambdas7[5]

lambdas7[6])*(1lambdas7[6])*(1-

3
5
10
0.0009886
0.0008764
0.0006565
 

More products