Question:
During a particular year, the T-bill rate was 6%, the market return was
14%, and a portfolio manager with beta = 1.2 produced a return of
17%.
Evaluate the manager’s performance using the concepts of
alpha and the Sharpe ratio.
Given: - \(R_f = 6\%\) - \(R_m = 14\%\) - \(\beta_P = 1.2\) - \(R_P = 17\%\)
\[\alpha_P = R_P - [R_f + \beta_P(R_m - R_f)]\]
Rf <- 0.06
Rm <- 0.14
beta <- 1.2
Rp <- 0.17
# Jensen's Alpha
alpha <- Rp - (Rf + beta * (Rm - Rf))
cat("Jensen's Alpha:", round(alpha * 100, 2), "%\n")## Jensen's Alpha: 1.4 %
\[S_P = \frac{R_P - R_f}{\sigma_P}\]
Note: Without the portfolio standard deviation \(\sigma_P\), the Sharpe ratio cannot be computed directly. However, using the Treynor ratio as an alternative:
\[T_P = \frac{R_P - R_f}{\beta_P}\]
# Treynor Ratio (portfolio vs market)
treynor_P <- (Rp - Rf) / beta
treynor_M <- (Rm - Rf) / 1 # beta of market = 1
cat("Treynor Ratio (Portfolio):", round(treynor_P, 4), "\n")## Treynor Ratio (Portfolio): 0.0917
## Treynor Ratio (Market): 0.08
result <- data.frame(
Metric = c("Expected Return (CAPM)", "Actual Return",
"Jensen's Alpha", "Treynor (Portfolio)", "Treynor (Market)"),
Value = c(
paste0(round((Rf + beta*(Rm-Rf))*100, 2), "%"),
paste0(round(Rp*100, 2), "%"),
paste0(round(alpha*100, 2), "%"),
round(treynor_P, 4),
round(treynor_M, 4)
)
)
kable(result, caption = "Chapter 5 Problem 12 — Performance Summary") %>%
kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)| Metric | Value |
|---|---|
| Expected Return (CAPM) | 15.6% |
| Actual Return | 17% |
| Jensen’s Alpha | 1.4% |
| Treynor (Portfolio) | 0.0917 |
| Treynor (Market) | 0.08 |
Interpretation:
The positive alpha of 1.4% indicates the manager
outperformed the CAPM benchmark. The portfolio’s
Treynor ratio (0.0917) also exceeds the market’s Treynor ratio (0.08),
confirming superior risk-adjusted performance.
Question:
Consider a risky portfolio with expected return \(E(r_P) = 18\%\) and \(\sigma_P = 28\%\). The T-bill rate is \(R_f = 8\%\).
(a) What is the Sharpe ratio of the risky
portfolio?
(b) A client with \(A =
3.5\) invests a proportion \(y\)
in the risky portfolio. What is the optimal \(y\)?
(c) What is the expected return and standard deviation
of the complete portfolio?
E_rP <- 0.18
sig_P <- 0.28
Rf_6 <- 0.08
A <- 3.5
# (a) Sharpe ratio
sharpe <- (E_rP - Rf_6) / sig_P
cat("(a) Sharpe Ratio:", round(sharpe, 4), "\n")## (a) Sharpe Ratio: 0.3571
# (b) Optimal allocation y* = (E(rP) - Rf) / (A * sigP^2)
y_star <- (E_rP - Rf_6) / (A * sig_P^2)
cat("(b) Optimal y*: ", round(y_star, 4),
paste0("(", round(y_star*100, 1), "% in risky portfolio)\n"))## (b) Optimal y*: 0.3644 (36.4% in risky portfolio)
# (c) Complete portfolio stats
E_rC <- Rf_6 + y_star * (E_rP - Rf_6)
sig_C <- y_star * sig_P
cat("(c) E(r_complete):", round(E_rC*100, 2), "%\n")## (c) E(r_complete): 11.64 %
## sigma_complete: 10.2 %
tbl21 <- data.frame(
Item = c("Sharpe Ratio", "Optimal y*",
"E(r) Complete Portfolio", "σ Complete Portfolio"),
Value = c(round(sharpe,4),
paste0(round(y_star*100,1),"%"),
paste0(round(E_rC*100,2),"%"),
paste0(round(sig_C*100,2),"%"))
)
kable(tbl21, caption = "Chapter 6 Problem 21 Results") %>%
kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)| Item | Value |
|---|---|
| Sharpe Ratio | 0.3571 |
| Optimal y* | 36.4% |
| E(r) Complete Portfolio | 11.64% |
| σ Complete Portfolio | 10.2% |
Question:
For Problem 21, suppose the client’s risk aversion is \(A = 2.0\) instead.
(a) What is the new optimal \(y^*\)?
(b) What are the new expected return and standard
deviation of the complete portfolio?
(c) Draw the CAL and indicate both clients’ optimal
portfolios.
A2 <- 2.0
y_star2 <- (E_rP - Rf_6) / (A2 * sig_P^2)
E_rC2 <- Rf_6 + y_star2 * (E_rP - Rf_6)
sig_C2 <- y_star2 * sig_P
cat("(a) Optimal y* (A=2):", round(y_star2, 4),
paste0("(", round(y_star2*100,1), "% in risky portfolio)\n"))## (a) Optimal y* (A=2): 0.6378 (63.8% in risky portfolio)
## (b) E(r_complete): 14.38 %
## sigma_complete: 17.86 %
# CAL Plot
sig_range <- seq(0, 0.50, by = 0.001)
cal_return <- Rf_6 + sharpe * sig_range
plot(sig_range * 100, cal_return * 100,
type = "l", col = "steelblue", lwd = 2,
xlab = "Standard Deviation (%)",
ylab = "Expected Return (%)",
main = "Capital Allocation Line (CAL)",
xlim = c(0, 50), ylim = c(8, 22))
# Risky portfolio
points(sig_P * 100, E_rP * 100, pch = 19, col = "red", cex = 1.5)
text(sig_P * 100, E_rP * 100, "P (Risky)", pos = 4, cex = 0.85)
# Risk-free
points(0, Rf_6 * 100, pch = 19, col = "black", cex = 1.5)
text(0, Rf_6 * 100, "Rf", pos = 4, cex = 0.85)
# Client A=3.5
points(sig_C * 100, E_rC * 100, pch = 17, col = "darkorange", cex = 1.5)
text(sig_C * 100, E_rC * 100, "A=3.5", pos = 3, cex = 0.85)
# Client A=2.0
points(sig_C2 * 100, E_rC2 * 100, pch = 17, col = "purple", cex = 1.5)
text(sig_C2 * 100, E_rC2 * 100, "A=2.0", pos = 3, cex = 0.85)
legend("topleft",
legend = c("CAL", "Risky Portfolio", "Rf", "Optimal (A=3.5)", "Optimal (A=2.0)"),
col = c("steelblue","red","black","darkorange","purple"),
pch = c(NA, 19, 19, 17, 17),
lty = c(1, NA, NA, NA, NA),
lwd = c(2, NA, NA, NA, NA),
cex = 0.85)Interpretation:
A less risk-averse client (\(A = 2.0\))
allocates a larger proportion (63.8%) to the risky
portfolio compared to the more risk-averse client (\(A = 3.5\), 36.4%), resulting in a higher
expected return but also greater risk.
Question:
Which of the following statements about the minimum variance portfolio
of all risky securities is/are true?
i. Its variance is lower than any single security.
ii. It may be optimal for a very risk-averse investor.
iii. It lies on the efficient frontier.
Answer:
Statements ii and iii are true.
Question:
Which statement is true regarding the Capital Market
Line (CML)?
Answer: (d) All of the above.
Question:
Assume that expected returns and standard deviations for all securities
(including the risk-free rate) are known.
In this case, all investors would hold the same optimal
risky portfolio because:
Answer:
All investors would hold the same optimal risky portfolio (the tangency portfolio) because, given the same inputs (expected returns, variances, covariances) and access to the same risk-free asset, the Capital Allocation Line from the risk-free asset tangent to the efficient frontier is unique. The tangency portfolio maximizes the Sharpe ratio and is therefore the same for every investor regardless of their individual risk aversion. Differences in risk aversion only affect how much each investor allocates between the risk-free asset and this common risky portfolio (the separation theorem).
Question:
Stocks A and B have the following data:
| Stock A | Stock B | |
|---|---|---|
| Expected Return | 10% | 15% |
| Standard Deviation | 20% | 30% |
Correlation \(\rho_{AB} = 0.2\).
(a) Calculate the expected return and standard
deviation for a portfolio with weights \(w_A =
0.6\), \(w_B = 0.4\).
(b) Calculate the minimum variance portfolio
weights.
(c) Plot the portfolio opportunity set.
# Given
E_A <- 0.10; E_B <- 0.15
sig_A <- 0.20; sig_B <- 0.30
rho <- 0.20
cov_AB <- rho * sig_A * sig_B
# (a) w_A = 0.6, w_B = 0.4
wA <- 0.6; wB <- 0.4
E_port <- wA * E_A + wB * E_B
var_port <- wA^2 * sig_A^2 + wB^2 * sig_B^2 + 2 * wA * wB * cov_AB
sig_port <- sqrt(var_port)
cat("(a) E(r_portfolio):", round(E_port*100, 2), "%\n")## (a) E(r_portfolio): 12 %
## σ(portfolio): 18.59 %
# (b) Minimum Variance Portfolio
# w_A* = (sig_B^2 - cov_AB) / (sig_A^2 + sig_B^2 - 2*cov_AB)
wA_mvp <- (sig_B^2 - cov_AB) / (sig_A^2 + sig_B^2 - 2*cov_AB)
wB_mvp <- 1 - wA_mvp
E_mvp <- wA_mvp * E_A + wB_mvp * E_B
var_mvp <- wA_mvp^2*sig_A^2 + wB_mvp^2*sig_B^2 + 2*wA_mvp*wB_mvp*cov_AB
sig_mvp <- sqrt(var_mvp)
cat("\n(b) MVP Weights: w_A =", round(wA_mvp,4), " w_B =", round(wB_mvp,4), "\n")##
## (b) MVP Weights: w_A = 0.7358 w_B = 0.2642
## E(r_MVP): 11.32 %
## σ(MVP): 18.06 %
# (c) Portfolio Opportunity Set
weights_A <- seq(-0.5, 1.5, by = 0.01)
port_E <- weights_A * E_A + (1 - weights_A) * E_B
port_var <- weights_A^2 * sig_A^2 + (1-weights_A)^2 * sig_B^2 +
2 * weights_A * (1-weights_A) * cov_AB
port_sig <- sqrt(port_var)
plot(port_sig * 100, port_E * 100,
type = "l", col = "steelblue", lwd = 2,
xlab = "Standard Deviation (%)", ylab = "Expected Return (%)",
main = "Portfolio Opportunity Set: Stocks A & B")
points(sig_mvp * 100, E_mvp * 100, pch = 19, col = "red", cex = 1.5)
text(sig_mvp * 100, E_mvp * 100, "MVP", pos = 4, cex = 0.85)
points(sig_A * 100, E_A * 100, pch = 17, col = "darkgreen", cex = 1.5)
text(sig_A * 100, E_A * 100, "A", pos = 2, cex = 0.85)
points(sig_B * 100, E_B * 100, pch = 17, col = "darkorange", cex = 1.5)
text(sig_B * 100, E_B * 100, "B", pos = 4, cex = 0.85)
points(sig_port * 100, E_port * 100, pch = 15, col = "purple", cex = 1.5)
text(sig_port * 100, E_port * 100, "w=(0.6,0.4)", pos = 4, cex = 0.85)Question:
Using the data from Problem 11 and a risk-free rate of \(r_f = 5\%\):
(a) Compute the Sharpe ratio of Stock A, Stock B,
and the MVP.
(b) Find the tangency (optimal risky)
portfolio weights.
(c) What is the Sharpe ratio of the tangency
portfolio?
Rf7 <- 0.05
# (a) Sharpe ratios
sharpe_A <- (E_A - Rf7) / sig_A
sharpe_B <- (E_B - Rf7) / sig_B
sharpe_mvp <- (E_mvp - Rf7) / sig_mvp
cat("(a) Sharpe Ratio — Stock A:", round(sharpe_A, 4), "\n")## (a) Sharpe Ratio — Stock A: 0.25
## Sharpe Ratio — Stock B: 0.3333
## Sharpe Ratio — MVP: 0.3501
# (b) Tangency Portfolio weights
# For two assets: w_A = [(E_A-Rf)*sig_B^2 - (E_B-Rf)*cov_AB] /
# [(E_A-Rf)*sig_B^2 + (E_B-Rf)*sig_A^2
# - (E_A-Rf+E_B-Rf)*cov_AB]
num_tan <- (E_A-Rf7)*sig_B^2 - (E_B-Rf7)*cov_AB
den_tan <- (E_A-Rf7)*sig_B^2 + (E_B-Rf7)*sig_A^2 - (E_A-Rf7+E_B-Rf7)*cov_AB
wA_tan <- num_tan / den_tan
wB_tan <- 1 - wA_tan
E_tan <- wA_tan * E_A + wB_tan * E_B
var_tan <- wA_tan^2*sig_A^2 + wB_tan^2*sig_B^2 + 2*wA_tan*wB_tan*cov_AB
sig_tan <- sqrt(var_tan)
sharpe_tan <- (E_tan - Rf7) / sig_tan
cat("\n(b) Tangency Portfolio: w_A =", round(wA_tan,4), " w_B =", round(wB_tan,4), "\n")##
## (b) Tangency Portfolio: w_A = 0.4925 w_B = 0.5075
## E(r_tangency): 12.54 %
## σ(tangency): 19.72 %
##
## (c) Sharpe Ratio (Tangency): 0.3823
tbl12 <- data.frame(
Portfolio = c("Stock A", "Stock B", "MVP", "Tangency"),
`E(r)` = paste0(round(c(E_A,E_B,E_mvp,E_tan)*100,2),"%"),
`σ` = paste0(round(c(sig_A,sig_B,sig_mvp,sig_tan)*100,2),"%"),
`Sharpe Ratio`= round(c(sharpe_A,sharpe_B,sharpe_mvp,sharpe_tan),4)
)
kable(tbl12, caption = "Chapter 7 Problem 12 — Portfolio Comparison") %>%
kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)| Portfolio | E.r. | σ | Sharpe.Ratio |
|---|---|---|---|
| Stock A | 10% | 20% | 0.2500 |
| Stock B | 15% | 30% | 0.3333 |
| MVP | 11.32% | 18.06% | 0.3501 |
| Tangency | 12.54% | 19.72% | 0.3823 |
Question:
Which of the following portfolios cannot lie on the
efficient frontier?
| Portfolio | E(r) | σ |
|---|---|---|
| A | 15% | 36% |
| B | 12% | 15% |
| C | 5% | 7% |
| D | 9% | 21% |
Answer:
ef_data <- data.frame(
Portfolio = c("A","B","C","D"),
Er = c(15, 12, 5, 9),
Sigma = c(36, 15, 7, 21)
)
# Compute reward-to-variability (Sharpe-like, no Rf specified, use 0)
ef_data$Sharpe_0 <- ef_data$Er / ef_data$Sigma
kable(ef_data, caption = "CFA Problem 12 — Portfolio Data") %>%
kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)| Portfolio | Er | Sigma | Sharpe_0 |
|---|---|---|---|
| A | 15 | 36 | 0.4166667 |
| B | 12 | 15 | 0.8000000 |
| C | 5 | 7 | 0.7142857 |
| D | 9 | 21 | 0.4285714 |
Portfolio D cannot lie on the efficient
frontier.
Portfolio B dominates D: B has a higher expected return (12%
> 9%) and a lower standard deviation (15%
< 21%). A rational investor would always prefer B over D, so D is
inefficient.
Question:
Consider the following data:
| Stock A | Stock B | Market | |
|---|---|---|---|
| Beta | 1.2 | 0.8 | 1.0 |
| Firm-specific σ (residual) | 25% | 20% | — |
| Market σ | — | — | 20% |
(a) Compute the covariance between Stocks A and
B.
(b) Compute the variance of a portfolio with \(w_A = 0.5\), \(w_B = 0.5\).
(c) Break down the portfolio variance into systematic
and firm-specific components.
beta_A <- 1.2; beta_B <- 0.8
sig_eA <- 0.25; sig_eB <- 0.20 # Residual (firm-specific) std dev
sig_M <- 0.20 # Market std dev
# (a) Cov(A,B) under single-index model
# Cov(A,B) = beta_A * beta_B * sigma_M^2
cov_AB_idx <- beta_A * beta_B * sig_M^2
cat("(a) Cov(A,B):", round(cov_AB_idx, 6), "\n")## (a) Cov(A,B): 0.0384
# Variances
var_A <- beta_A^2 * sig_M^2 + sig_eA^2
var_B <- beta_B^2 * sig_M^2 + sig_eB^2
cat(" Var(A): ", round(var_A, 6), "\n")## Var(A): 0.1201
## Var(B): 0.0656
# (b) Portfolio variance (equal weights)
wA8 <- 0.5; wB8 <- 0.5
var_port8 <- wA8^2 * var_A + wB8^2 * var_B + 2 * wA8 * wB8 * cov_AB_idx
sig_port8 <- sqrt(var_port8)
cat("\n(b) Portfolio Variance:", round(var_port8, 6), "\n")##
## (b) Portfolio Variance: 0.065625
## Portfolio σ: 25.62 %
# (c) Decomposition
beta_port <- wA8 * beta_A + wB8 * beta_B
systematic_var <- beta_port^2 * sig_M^2
firm_spec_var <- wA8^2 * sig_eA^2 + wB8^2 * sig_eB^2
cat("\n(c) Portfolio Beta: ", round(beta_port, 4), "\n")##
## (c) Portfolio Beta: 1
cat(" Systematic Variance: ", round(systematic_var, 6),
paste0("(", round(systematic_var/var_port8*100,1), "% of total)\n"))## Systematic Variance: 0.04 (61% of total)
cat(" Firm-Specific Variance: ", round(firm_spec_var, 6),
paste0("(", round(firm_spec_var/var_port8*100,1), "% of total)\n"))## Firm-Specific Variance: 0.025625 (39% of total)
## Total Variance (check): 0.065625
pie(c(systematic_var, firm_spec_var),
labels = c(paste0("Systematic\n", round(systematic_var/var_port8*100,1), "%"),
paste0("Firm-Specific\n", round(firm_spec_var/var_port8*100,1), "%")),
col = c("steelblue","tomato"),
main = "Portfolio Variance Decomposition")Question:
Which of the following factors did Chen, Roll, and Ross
identify as significant macro-economic variables in their APT
(Arbitrage Pricing Theory) study?
Answer: (e) All of the above.
Chen, Roll, and Ross (1986) identified the following as priced factors in their empirical APT model:
apt_factors <- data.frame(
Factor = c(
"IP — Changes in Industrial Production",
"EI — Changes in Expected Inflation",
"UI — Unanticipated Inflation",
"CG — Yield Spread (default risk premium)",
"GB — Term Spread (long minus short-term yield)"
),
Rationale = c(
"Captures real economic activity and business cycle risk",
"Affects discount rates and required nominal returns",
"Transfers wealth between borrowers and lenders",
"Measures credit/default risk premium in the economy",
"Reflects time-value and interest rate risk premium"
)
)
kable(apt_factors, caption = "Chen, Roll & Ross (1986) — APT Macro Factors") %>%
kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE) %>%
column_spec(1, bold = TRUE)| Factor | Rationale |
|---|---|
| IP — Changes in Industrial Production | Captures real economic activity and business cycle risk |
| EI — Changes in Expected Inflation | Affects discount rates and required nominal returns |
| UI — Unanticipated Inflation | Transfers wealth between borrowers and lenders |
| CG — Yield Spread (default risk premium) | Measures credit/default risk premium in the economy |
| GB — Term Spread (long minus short-term yield) | Reflects time-value and interest rate risk premium |
These factors represent systematic risks that cannot be diversified away and therefore command a risk premium in equilibrium under APT.
summary <- data.frame(
Chapter = c("Ch.5 P12","Ch.6 P21","Ch.6 P22","Ch.6 CFA4",
"Ch.6 CFA5","Ch.6 CFA8","Ch.7 P11","Ch.7 P12",
"Ch.7 CFA12","Ch.8 P17","Ch.8 CFA1"),
Topic = c(
"Jensen's alpha & Treynor ratio",
"Optimal allocation y* (A=3.5)",
"Optimal allocation y* (A=2.0) + CAL plot",
"Minimum Variance Portfolio properties",
"Capital Market Line (CML)",
"Separation Theorem",
"Two-asset portfolio opportunity set + MVP",
"Tangency portfolio & Sharpe ratios",
"Efficient frontier dominance",
"Single-index model variance decomposition",
"Chen-Roll-Ross APT macro factors"
),
`Key Result` = c(
paste0("α = ", round(alpha*100,2), "% (outperforms)"),
paste0("y* = ", round(y_star*100,1), "%"),
paste0("y* = ", round(y_star2*100,1), "%"),
"Statements ii & iii are true",
"All of (a)(b)(c) are true",
"Same tangency portfolio; risk aversion → allocation",
paste0("MVP: w_A=", round(wA_mvp,3), ", σ=", round(sig_mvp*100,2), "%"),
paste0("Tangency Sharpe = ", round(sharpe_tan,4)),
"Portfolio D is dominated by B → inefficient",
paste0("Systematic = ", round(systematic_var/var_port8*100,1), "% of total variance"),
"All five macro factors are significant"
)
)
kable(summary, caption = "Complete Answer Summary") %>%
kable_styling(bootstrap_options = c("striped","hover","condensed"),
full_width = TRUE) %>%
column_spec(1, bold = TRUE, color = "white", background = "steelblue")| Chapter | Topic | Key.Result |
|---|---|---|
| Ch.5 P12 | Jensen’s alpha & Treynor ratio | α = 1.4% (outperforms) |
| Ch.6 P21 | Optimal allocation y* (A=3.5) | y* = 36.4% |
| Ch.6 P22 | Optimal allocation y* (A=2.0) + CAL plot | y* = 63.8% |
| Ch.6 CFA4 | Minimum Variance Portfolio properties | Statements ii & iii are true |
| Ch.6 CFA5 | Capital Market Line (CML) | All of (a)(b)(c) are true |
| Ch.6 CFA8 | Separation Theorem | Same tangency portfolio; risk aversion → allocation |
| Ch.7 P11 | Two-asset portfolio opportunity set + MVP | MVP: w_A=0.736, σ=18.06% |
| Ch.7 P12 | Tangency portfolio & Sharpe ratios | Tangency Sharpe = 0.3823 |
| Ch.7 CFA12 | Efficient frontier dominance | Portfolio D is dominated by B → inefficient |
| Ch.8 P17 | Single-index model variance decomposition | Systematic = 61% of total variance |
| Ch.8 CFA1 | Chen-Roll-Ross APT macro factors | All five macro factors are significant |