14.3 Portfolio risk reports
A portfolio risk report summarizes asset and portfolio risk measures as well as risk budgets. Table 14.1 shows a typical portfolio risk report. The individual asset information is in rows with the portfolio information at the bottom. The total dollar amount invested in the portfolio is \(W_{0}\) and the dollar amounts invested in each asset are \(d_{i}=x_{i}W_{0}.\) The asset specific (standalone) risk measures are \(\mathrm{RM}_{i}\) and the portfolio risk measure is \(\mathrm{RM}(\mathbf{x})\).
Asset | $d\(_{i}\) | \(x_{i}\) | RM\(_{i}\) | MCR\(_{i}^{RM}\) | CR\(_{i}^{RM}\) | PCR\(_{i}^{RM}\) |
---|---|---|---|---|---|---|
Asset 1 | $d\(_{1}\) | \(x_{1}\) | RM\(_{1}\) | MCR\(_{1}^{RM}\) | CR\(_{1}^{RM}\) | PCR\(_{1}^{RM}\) |
Asset 2 | $d\(_{2}\) | \(x_{2}\) | RM\(_{2}\) | MCR\(_{2}^{RM}\) | CR\(_{2}^{RM}\) | PCR\(_{2}^{RM}\) |
\(\vdots\) | \(\vdots\) | \(\vdots\) | \(\vdots\) | \(\vdots\) | \(\vdots\) | \(\vdots\) |
Asset N | $d\(_{N}\) | \(x_{N}\) | RM\(_{N}\) | MCR\(_{N}^{RM}\) | CR\(_{N}^{RM}\) | PCR\(_{N}^{RM}\) |
Portfolio (Sum) | \(\$W_{0}\) | 1 | RM(x) | 1 |
Consider creating a portfolio volatility risk report from an equally weighted portfolio of Microsoft, Nordstrom, and Starbucks stock. The initial wealth invested in the portfolio is $100,000. The expected return vector and covariance matrix is based on sample statistics computed over the five-year period January, 1995 through January, 2000. The asset and portfolio expected return and volatility information is:
# asset information
asset.names <- c("MSFT", "NORD", "SBUX")
mu.vec = c(0.0427, 0.0015, 0.0285)
sigma.mat = matrix(c(0.0100, 0.0018, 0.0011,
0.0018, 0.0109, 0.0026,
0.0011, 0.0026, 0.0199),
nrow=3, ncol=3)
sig.vec = sqrt(diag(sigma.mat))
names(mu.vec) = names(sig.vec) = asset.names
dimnames(sigma.mat) = list(asset.names, asset.names)
# equally weighted portfolio information
W0 = 100000
x = rep(1/3, 3)
d = x*W0
names(x) = asset.names
mu.px = as.numeric(crossprod(x, mu.vec))
sig.px = as.numeric(sqrt(t(x)%*%sigma.mat%*%x))
The volatility risk budgeting calculations are:
The volatility risk report is computed using:
riskReportVol.px = cbind(d, x, sig.vec, MCR.vol.x,
CR.vol.x, PCR.vol.x)
PORT = c(W0, 1, NA, NA, sum(CR.vol.x), sum(PCR.vol.x))
riskReportVol.px = rbind(riskReportVol.px, PORT)
colnames(riskReportVol.px) = c("Dollar", "Weight", "Vol",
"MCR", "CR", "PCR")
riskReportVol.px
## Dollar Weight Vol MCR CR PCR
## MSFT 33333 0.333 0.100 0.0567 0.0189 0.249
## NORD 33333 0.333 0.104 0.0672 0.0224 0.295
## SBUX 33333 0.333 0.141 0.1037 0.0346 0.456
## PORT 100000 1.000 NA NA 0.0759 1.000
In the equally weighted portfolio, the risk contributions are not equal across assets. Predictably, the ranking of the risk contributions follows the ranking of the individual asset volatilities \(\sigma_{i},\) with Starbucks giving the highest contributions to portfolio volatility. So if the portfolio manager wants to reduce portfolio volatility the allocation to Starbucks should be reduced first.
To interpret the marginal contributions to risk, suppose that the portfolio manager wants to reduce portfolio volatility and chooses the rebalancing strategy: \(\varDelta x_{MSFT}=-\varDelta x_{SBUX}=0.1\) (i.e., \(x_{MSFT}\) increases to \(0.433\) and \(x_{SBUX}\) decreases to \(0.233).\) Then, from (14.16) the predicted change in portfolio standard deviation is:
## MSFT
## -0.0047
Hence, the predicted volatility after rebalancing is:
## MSFT
## 0.0712
The exact change in volatility from rebalancing is:
## [1] 0.0729
The difference between the approximate change in portfolio volatility computed from the risk report and the actual change is:
## [1] -0.00293
\(\blacksquare\)
Using the asset and portfolio data from the previous example, consider creating a normal portfolio VaR report, where VaR is computed with 5% probability. The R calculations are:
# portfolio 5% normal VaR
alpha = 0.05
# risk budget calculations
VaR.px = abs(W0*(mu.px + sig.px*qnorm(alpha)))
MCR.VaR.x = abs(W0*(mu.vec + MCR.vol.x*qnorm(alpha)))
CR.VaR.x = x*MCR.VaR.x
PCR.VaR.x = CR.VaR.x/VaR.px
# risk report
VaR.vec = abs(W0*(mu.vec + sig.vec*qnorm(alpha)))
riskReportVaR.px = cbind(d, x, VaR.vec, MCR.VaR.x,
CR.VaR.x, PCR.VaR.x)
PORT = c(W0, 1, NA, NA, sum(CR.VaR.x), sum(PCR.VaR.x))
riskReportVaR.px = rbind(riskReportVaR.px, PORT)
colnames(riskReportVaR.px) = c("Dollar", "Weight", "VaR",
"MCR", "CR", "PCR")
riskReportVaR.px
## Dollar Weight VaR MCR CR PCR
## MSFT 33333 0.333 12179 5053 1684 0.168
## NORD 33333 0.333 17023 10907 3636 0.362
## SBUX 33333 0.333 20354 14206 4735 0.471
## PORT 100000 1.000 NA NA 10055 1.000
The qualitative information in the portfolio normal VaR report is essentially the same as in the portfolio volatility report. Because the VaR calculation involve the asset expected returns, \(\mu\), the results are not exactly the same. If we set \(\mu=\mathbf{0}\) in the VaR calculations then the two reports would give same risk information but on different scales (volatility is in return and VaR is in dollars).
To interpret the marginal contributions to risk, suppose that the portfolio manager wants to reduce portfolio VaR and chooses the rebalancing strategy: \(\varDelta x_{MSFT}=-\varDelta x_{SBUX}=0.1\) (i.e., \(x_{MSFT}\) increases to \(0.433\) and \(x_{SBUX}\) decreases to \(0.233).\) Then, from (14.16) the predicted change in portfolio VaR and new portfolio VaR are:
## MSFT
## -915
## MSFT
## 9140
The exact change in portfolio VaR from rebalancing is:
mu.px1 = as.numeric(crossprod(x1, mu.vec))
VaR.px1 = abs(W0*(mu.px1 + sig.px1*qnorm(alpha)))
VaR.px1 - VaR.px
## [1] -624
## [1] 9431
Here, the predicted reduction in VaR is about $300 more than the actual change in VaR.
\(\blacksquare\)