Given Parameters

The following values are given for Problems 10–12:

  • S&P 500 average excess return over T-bills: E(r_p) − r_f = 8%
  • Current T-bill rate: r_f = 5%
  • S&P 500 standard deviation: σ = 20%
rf    <- 0.05   # T-bill (risk-free) rate
rp    <- 0.08   # S&P 500 risk premium (excess return over rf)
Er_sp <- rf + rp  # Expected return on S&P 500 = 13%
sigma <- 0.20   # S&P 500 standard deviation

Problem 10 – Expected Return and Variance of Mixed Portfolios

Task: Calculate expected return and variance for portfolios with varying weights in T-bills (\(W_{bills}\)) and the S&P 500 index (\(W_{index}\)).

Formulas:

\[E(r_P) = W_{bills} \cdot r_f + W_{index} \cdot E(r_{S\&P})\]

\[\sigma_P^2 = (W_{index})^2 \cdot \sigma_{S\&P}^2\]

# Portfolio weights
W_bills <- c(0.0, 0.2, 0.4, 0.6, 0.8, 1.0)
W_index <- 1 - W_bills

# Expected return and variance
E_r  <- W_bills * rf + W_index * Er_sp
Var  <- (W_index * sigma)^2
SD   <- sqrt(Var)

prob10 <- data.frame(
  W_bills = W_bills,
  W_index = W_index,
  E_r     = round(E_r,  4),
  Variance = round(Var, 4),
  Std_Dev  = round(SD,  4)
)

kable(prob10,
      col.names = c("W_bills", "W_index", "E(r)", "Variance (σ²)", "Std Dev (σ)"),
      caption   = "Problem 10 – Portfolio Expected Return and Variance") %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"), full_width = FALSE)
Problem 10 – Portfolio Expected Return and Variance
W_bills W_index E(r) Variance (σ²) Std Dev (σ)
0.0 1.0 0.130 0.0400 0.20
0.2 0.8 0.114 0.0256 0.16
0.4 0.6 0.098 0.0144 0.12
0.6 0.4 0.082 0.0064 0.08
0.8 0.2 0.066 0.0016 0.04
1.0 0.0 0.050 0.0000 0.00

Key insight: As we shift weight from T-bills to the S&P 500, both expected return and risk increase linearly (standard deviation increases linearly because only one risky asset is present).


Problem 11 – Utility Levels with A = 2

Task: Calculate utility for each portfolio in Problem 10 with risk aversion coefficient A = 2.

Utility formula:

\[U = E(r) - \frac{1}{2} A \sigma^2\]

A2 <- 2

U_A2 <- E_r - 0.5 * A2 * Var

prob11 <- cbind(prob10[, 1:4], U_A2 = round(U_A2, 4))

kable(prob11,
      col.names = c("W_bills", "W_index", "E(r)", "Variance (σ²)", "Utility (A=2)"),
      caption   = "Problem 11 – Utility Levels (A = 2)") %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"), full_width = FALSE) %>%
  row_spec(which.max(U_A2), bold = TRUE, background = "#d4edda")
Problem 11 – Utility Levels (A = 2)
W_bills W_index E(r) Variance (σ²) Utility (A=2)
0.0 1.0 0.130 0.0400 0.0900
0.2 0.8 0.114 0.0256 0.0884
0.4 0.6 0.098 0.0144 0.0836
0.6 0.4 0.082 0.0064 0.0756
0.8 0.2 0.066 0.0016 0.0644
1.0 0.0 0.050 0.0000 0.0500
plot(W_index, U_A2,
     type = "b", pch = 19, col = "steelblue",
     xlab = "W_index (weight in S&P 500)",
     ylab = "Utility",
     main = "Problem 11: Utility vs. Portfolio Weight (A = 2)")
abline(v = W_index[which.max(U_A2)], col = "red", lty = 2)
legend("topright", legend = paste("Max utility at W_index =", W_index[which.max(U_A2)]),
       col = "red", lty = 2, bty = "n")

Conclusion (A = 2): The maximum utility of 0.09 is achieved at \(W_{index}\) = 1 (i.e., 100% invested in the S&P 500, 0% in T-bills). A less risk-averse investor (A = 2) is willing to take on full market exposure.


Problem 12 – Utility Levels with A = 3

Task: Repeat Problem 11 with A = 3.

A3 <- 3

U_A3 <- E_r - 0.5 * A3 * Var

prob12 <- cbind(prob10[, 1:4], U_A3 = round(U_A3, 4))

kable(prob12,
      col.names = c("W_bills", "W_index", "E(r)", "Variance (σ²)", "Utility (A=3)"),
      caption   = "Problem 12 – Utility Levels (A = 3)") %>%
  kable_styling(bootstrap_options = c("striped","hover","condensed"), full_width = FALSE) %>%
  row_spec(which.max(U_A3), bold = TRUE, background = "#d4edda")
Problem 12 – Utility Levels (A = 3)
W_bills W_index E(r) Variance (σ²) Utility (A=3)
0.0 1.0 0.130 0.0400 0.0700
0.2 0.8 0.114 0.0256 0.0756
0.4 0.6 0.098 0.0144 0.0764
0.6 0.4 0.082 0.0064 0.0724
0.8 0.2 0.066 0.0016 0.0636
1.0 0.0 0.050 0.0000 0.0500
plot(W_index, U_A3,
     type = "b", pch = 19, col = "darkorange",
     xlab = "W_index (weight in S&P 500)",
     ylab = "Utility",
     main = "Problem 12: Utility vs. Portfolio Weight (A = 3)")
abline(v = W_index[which.max(U_A3)], col = "red", lty = 2)
legend("topright", legend = paste("Max utility at W_index =", W_index[which.max(U_A3)]),
       col = "red", lty = 2, bty = "n")

Conclusion (A = 3): The maximum utility of 0.0764 is again achieved at \(W_{index}\) = 0.6. With only the six discrete portfolios given, the 100% equity portfolio still dominates. However, note that the utility values are lower than under A = 2 for the risky portfolios — a more risk-averse investor penalizes variance more heavily. The optimal continuous weight formula is:

\[W^*_{index} = \frac{E(r_P) - r_f}{A \cdot \sigma^2}\]

W_opt_A2 <- rp / (A2 * sigma^2)
W_opt_A3 <- rp / (A3 * sigma^2)

cat(sprintf("Optimal W_index (A=2): %.4f  (%.1f%%)\n", W_opt_A2, W_opt_A2*100))
## Optimal W_index (A=2): 1.0000  (100.0%)
cat(sprintf("Optimal W_index (A=3): %.4f  (%.1f%%)\n", W_opt_A3, W_opt_A3*100))
## Optimal W_index (A=3): 0.6667  (66.7%)

With continuous allocation, a more risk-averse investor (A = 3) would optimally hold 66.7% in the S&P 500, compared to 100% for A = 2. Higher risk aversion → lower optimal risky asset weight.


CFA Problems 1–3

Data

cfa <- data.frame(
  Investment = 1:4,
  E_r        = c(0.12, 0.15, 0.21, 0.24),
  sigma      = c(0.30, 0.50, 0.16, 0.21)
)

kable(cfa, col.names = c("Investment", "E(r)", "σ"),
      caption = "CFA Utility Formula Data") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE)
CFA Utility Formula Data
Investment E(r) σ
1 0.12 0.30
2 0.15 0.50
3 0.21 0.16
4 0.24 0.21

Utility formula: \(U = E(r) - \frac{1}{2} A \sigma^2\)


CFA Problem 1 – Risk Averse Investor (A = 4)

Which investment maximizes utility for A = 4?

A_cfa <- 4

cfa$U_A4 <- cfa$E_r - 0.5 * A_cfa * cfa$sigma^2

kable(cfa, col.names = c("Investment", "E(r)", "σ", "Utility (A=4)"),
      caption = "CFA Problem 1 – Utility with A = 4") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE) %>%
  row_spec(which.max(cfa$U_A4), bold = TRUE, background = "#d4edda")
CFA Problem 1 – Utility with A = 4
Investment E(r) σ Utility (A=4)
1 0.12 0.30 -0.0600
2 0.15 0.50 -0.3500
3 0.21 0.16 0.1588
4 0.24 0.21 0.1518

Answer: Investment 3 has the highest utility (U = 0.1588) for a risk-averse investor with A = 4. Investment 3 has a relatively high expected return (21%) with the lowest standard deviation (16%), making it attractive after penalizing variance.


CFA Problem 2 – Risk Neutral Investor

Which investment maximizes utility if the investor is risk neutral?

A risk-neutral investor has A = 0, so the utility formula reduces to:

\[U = E(r) - \frac{1}{2}(0)\sigma^2 = E(r)\]

cfa$U_A0 <- cfa$E_r - 0.5 * 0 * cfa$sigma^2  # = E(r)

kable(cfa[, c("Investment","E_r","sigma","U_A0")],
      col.names = c("Investment", "E(r)", "σ", "Utility (A=0)"),
      caption = "CFA Problem 2 – Utility with A = 0 (Risk Neutral)") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = FALSE) %>%
  row_spec(which.max(cfa$U_A0), bold = TRUE, background = "#d4edda")
CFA Problem 2 – Utility with A = 0 (Risk Neutral)
Investment E(r) σ Utility (A=0)
1 0.12 0.30 0.12
2 0.15 0.50 0.15
3 0.21 0.16 0.21
4 0.24 0.21 0.24

Answer: A risk-neutral investor ignores variance entirely and selects the investment with the highest expected return — Investment 4 with E(r) = 24%.


CFA Problem 3 – What does variable A represent?

The correct answer is (b) Investor’s aversion to risk.

Explanation: In the mean-variance utility function \(U = E(r) - \frac{1}{2}A\sigma^2\), the parameter \(A\) is the risk-aversion coefficient. It scales the penalty applied to portfolio variance:

  • Higher A → greater penalty for risk → investor prefers lower-variance portfolios even at the cost of lower expected return.
  • A = 0 → risk neutral (as shown in Problem 2).
  • A < 0 → risk-seeking investor (would actively prefer more variance).

The other options are incorrect: - (a) is wrong — return requirements are captured by \(E(r)\), not \(A\). - (c) is wrong — the certainty equivalent rate is the utility value \(U\) itself, not \(A\). - (d) is wrong — \(A\) does not describe a “one unit of return per four units of risk” trade-off; that is a misreading of the \(\frac{1}{2}\) scaling constant.


Summary Table

summary_df <- data.frame(
  Problem = c("10","11","12","CFA 1","CFA 2","CFA 3"),
  Answer  = c(
    "See table: E(r) ranges 5%–13%; Var ranges 0–0.04",
    paste0("Max utility at W_index = 1.0 (U = ", round(max(U_A2),4), ")"),
    paste0("Max utility at W_index = 1.0 (U = ", round(max(U_A3),4), "); optimal continuous weight = ", round(W_opt_A3*100,1), "%"),
    "Investment 3 (U = 0.1572)",
    "Investment 4 (highest E(r) = 24%)",
    "b. Investor's aversion to risk"
  )
)

kable(summary_df, caption = "Summary of Answers") %>%
  kable_styling(bootstrap_options = c("striped","hover"), full_width = TRUE)
Summary of Answers
Problem Answer
10 See table: E(r) ranges 5%–13%; Var ranges 0–0.04
11 Max utility at W_index = 1.0 (U = 0.09)
12 Max utility at W_index = 1.0 (U = 0.0764); optimal continuous weight = 66.7%
CFA 1 Investment 3 (U = 0.1572)
CFA 2 Investment 4 (highest E(r) = 24%)
CFA 3
  1. Investor’s aversion to risk