Introduction

These study notes are based on Chapter 7 the Exam 9 syllabus reading Investments by Bodie, Kane, and Marcus. This chapter illustrates how to allocate assets to create an optimal risky portfolio, which is used as an input to the capital allocation process described in Chapter 6. This chapter corresponds to learning objectives A2-A4 on the syllabus.

easypackages::packages("dplyr", "ggplot2", "DT", "data.table", "quadprog")
options(scipen = 999)

Optimal Portfolios

Portfolio Expected Return and Standard Deviation

Assume we have a portfolio that consists of \(n\) risky assets, where asset \(i\) has return \(r_i\), weight \(w_i\), and standard deviation \(\sigma_i\). Assume that the correlation coefficient between asset \(i\) and \(j\) is given by \(\rho_{i,j}\). Let \(r_p\) and \(\sigma_p\) be the return and standard deviation of the whole portfolio. Then \[ E[r_p] = \sum_{1\leq i \leq n} w_i E[r_i] \] and \[ \sigma_p^2 = \sum_{1\leq i\leq n}\sum_{1\leq j \leq n} w_iw_j\sigma_i\sigma_j\rho_{i,j} \]

Special cases

When there are only two assets, the formula for \(\sigma_p\) reduces to \[ \sigma_p^2 = w_1^2 \sigma_1^2 + w_2^2\sigma_2^2 + 2w_1w_2 \mathrm{Cov}(r_1, r_2) \] When two assets are perfectly positively correlated, this reduces to \[ \sigma_p^2 = w_1^2 \sigma_1^2 + w_2^2 \sigma_2^2 + 2w_1w_2\sigma_1\sigma_2 = (w_1\sigma_1 + w_2 \sigma_2)^2 \] and therefore \[ \sigma_p = w_1\sigma_1 + w_2 \sigma_2 \] When the assets are less than perfectly correlated, the standard deviation will be less than this value, indicating the benefits of diversification. At the other extreme, when assets are perfectly negatively correlated, \[ \sigma_p^2 = (w_1 \sigma_1 - w_2 \sigma_2)^2 \] This represents thet maximum reduction in standard deviation that can be provided by a new asset. Assets that have a negative correlation with the other assets in the portfolio are called hedge assets. If an asset is perfectly negatively correlated, then a perfectly hedged position can be obtained by setting \[ w_1 \sigma_1 = w_2 \sigma_2 \] Since \(w_2 = 1 - w_1\) for a two-asset portfolio, we obtain \[ w_1 = \frac{\sigma_2}{\sigma_1 + \sigma_2} \] and \[ w_2 = \frac{\sigma_1}{\sigma_1 + \sigma_2} \]

Visualizing the impact of Correlation

The effect of correlation can be visualized using graphs of standard deviation against portfolio weight at various degrees of correlation. The parameters used in the reading are:

return.1 = 0.08
return.2 = 0.13
sd.1 = 0.12
sd.2 = 0.20

The correlation levels to be tested are:

correlation.levels = data.frame(correlation_description = c("Perfect positive", "Partial positive", "Uncorrelated", "Partial negative", "Perfect Negative"), rho = c(1, 0.3, 0, -0.3, -1))
correlation.levels
##   correlation_description  rho
## 1        Perfect positive  1.0
## 2        Partial positive  0.3
## 3            Uncorrelated  0.0
## 4        Partial negative -0.3
## 5        Perfect Negative -1.0

Calculate the standard deviation at each portfolio weight and correlation level:

correlation.visualization = merge(data.frame(weight_1 = 0:100 / 100), correlation.levels)
correlation.visualization = correlation.visualization %>% mutate(portfolio_var = weight_1^2 * sd.1^2 + (1 - weight_1)^2 * sd.2^2 + 2 * weight_1 * (1 - weight_1) * sd.1 * sd.2 * rho, portfolio_sd = sqrt(portfolio_var))
datatable(correlation.visualization)
ggplot(data = correlation.visualization, aes(x = weight_1, y = portfolio_sd, col = correlation_description)) + geom_line() + labs(x = "Weight of Asset 1", y = "Portfolio Standard Deviation", title = "Impact of Correlation on Diversification Potential")

Note that as the degree of correlation decreases, the portfolio with the smallest variance moves further to the left, toward asset 2. Since this asset has a higher return, the lack of correlation enables a reduction of risk and increase in reward.

The minimum variance porfolio can be constructed analytically by minimizing the expression for variance, as a function of the weight of asset 1 in the portfolio. Let \[ V(w) = w^2 \sigma_1^2 + (1 - w)^2 \sigma_2^2 + 2w(1 - w)\sigma_1\sigma_2\rho \] Then \[ V'(w) = 2w\sigma_1^2 - 2(1-w)\sigma_2^2 + (2 - 4w)\sigma_1\sigma_2\rho \] Solving for the value of \(w\) such that \(V'(w)=0\) gives the following weight on asset 1 in the minimum variance portfolio: \[ w = \frac{\sigma_2^2 - \sigma_1\sigma_2\rho}{\sigma_1^2 + \sigma_2^2 - 2 \sigma_1\sigma_2\rho} \] In the example above, we can calculate the weight and corresponding return at each correlation level. Note that the weight needs to be capped at 1 in the case of perfect correltaion, because there is no local minimum in this case.

correlation.levels = correlation.levels %>% mutate(min_var_weight = pmin(1, (sd.2^2 - sd.1 * sd.2 * rho) / (sd.1^2 + sd.2^2 - 2 * sd.1 * sd.2 * rho)), portfolio_sd = sqrt(min_var_weight^2 * sd.1^2 + (1 - min_var_weight)^2 * sd.2^2 + 2 * min_var_weight * (1 - min_var_weight) * sd.1 * sd.2 * rho), portfolio_return = min_var_weight * return.1 + (1 - min_var_weight) * return.2)
correlation.levels
##   correlation_description  rho min_var_weight      portfolio_sd
## 1        Perfect positive  1.0      1.0000000 0.120000000000000
## 2        Partial positive  0.3      0.8200000 0.114472704170033
## 3            Uncorrelated  0.0      0.7352941 0.102899151085505
## 4        Partial negative -0.3      0.6860465 0.087284618640186
## 5        Perfect Negative -1.0      0.6250000 0.000000001317089
##   portfolio_return
## 1       0.08000000
## 2       0.08900000
## 3       0.09323529
## 4       0.09569767
## 5       0.09875000

The tradeoff between expected return and standard deviation at various levels of correlation can be visualized as follows:

correlation.visualization = correlation.visualization %>% mutate(expected_return = weight_1 * return.1 + (1 - weight_1) * return.2)
ggplot(data = correlation.visualization, aes(x = portfolio_sd, y = expected_return, col = correlation_description)) + geom_point() + labs(x = "Portfolio Standard Deviation", y = "Portfolio Expected Return", title = "Impact of Correlation on Risk-Reward Tradeoffs")

The curves aboves are referred to as opportunity sets of risk assets.

Optimal Risky Portfolio

From an capital allocation perspective, the risky portfolio that provides the most potential is the one with the highest Sharpe ratio. Geometrically, this Sharpe ratio is the slope of the line tangent to the opportunity set whose \(y\)-intercept is the risk-free rate \(r_f\). It is convenient to express the results in terms of the excess return over the risk-free rate, so we let \(R_i = r_i - r_f\). To determine the optimum weight of the first asset, let \[ S(w) = \frac{E[r_p] - r_f}{\sigma_p} = \frac{wR_1 + (1-w)R_2}{\sqrt{w^2\sigma_1^2 + (1-w)^2\sigma_2^2 + 2w(1-w)\mathrm{Cov}(R_1, R_2)}} \] By setting \(S'(w) = 0\) and solving for \(w\), the result is \[ w = \frac{R_1\sigma_2^2 - R_2\mathrm{Cov}(R_1, R_2)}{R_1\sigma_2^2 + R_2\sigma_1^2 - (R_1 + R_2)\mathrm{Cov}(R_1, R_2)} \] The formula aligns with our intuition for the following reasons:

  • Asset 1 should receive a higher weight if it has a higher return, or if the variance of asset 2 is higher. This is consistent with the \(R_1\sigma_2^2\) term.

  • When adjusting for the impact that covariance has on reducing the benefits of diversification, if asset 2 has a higher return, then it’s better to concentrate investment in this asset. This is consistent with the term that subtracts \(R_2 \mathrm{Cov}(R_1, R_2)\).

  • The weights for asset 1 and asset 2 must sum to 1, explaining the denominator.

Applying this formula to our earlier examples, we can compute the optimal weight, corresponding return and standard deviation, and Sharpe ratio. For comparison, the Sharpe ratio for the minimum variance portfolio is also given. For the case of perfect negative correlation, the optimum Sharpe ratio is not defined because it is possible to create a perfectly hedged position, corresponding to an infinite Sharep ratio.

risk.free.rate = 0.05
excess.return.1 = return.1 - risk.free.rate
excess.return.2 = return.2 - risk.free.rate
correlation.levels = correlation.levels %>% filter(correlation_description != "Perfect Negative") %>% mutate(optimum_weight = pmin(1, (excess.return.1 * sd.2^2 - excess.return.2 * sd.1 * sd.2 * rho) / (excess.return.1 * sd.2^2 + excess.return.2 * sd.1^2 - (excess.return.1 + excess.return.2) * sd.1 * sd.2 * rho)), optimum_return = optimum_weight * return.1 + (1 - optimum_weight) * return.2, optimum_sd = sqrt(optimum_weight^2 * sd.1^2 + (1 - optimum_weight)^2 * sd.2^2 + 2 * optimum_weight * (1 - optimum_weight) * sd.1 * sd.2 * rho), optimum_sharpe_ratio = (optimum_return - risk.free.rate) / optimum_sd, min_var_sharpe_ratio = (portfolio_return - risk.free.rate) / portfolio_sd)
correlation.levels
##   correlation_description  rho min_var_weight portfolio_sd
## 1        Perfect positive  1.0      1.0000000   0.12000000
## 2        Partial positive  0.3      0.8200000   0.11447270
## 3            Uncorrelated  0.0      0.7352941   0.10289915
## 4        Partial negative -0.3      0.6860465   0.08728462
##   portfolio_return optimum_weight optimum_return optimum_sd
## 1       0.08000000      1.0000000      0.0800000 0.12000000
## 2       0.08900000      0.4000000      0.1100000 0.14198591
## 3       0.09323529      0.5102041      0.1044898 0.11551814
## 4       0.09569767      0.5648855      0.1017557 0.09289019
##   optimum_sharpe_ratio min_var_sharpe_ratio
## 1            0.2500000            0.2500000
## 2            0.4225771            0.3406926
## 3            0.4716991            0.4201715
## 4            0.5571710            0.5235478

Optimal Complete Portfolio

Once the optimal risky portfolio has been constructed, we can apply the capital allocation method from Chapter 6 to construct the optimum complete portfolio:

  1. Determine the optimum weight for each asset class in the risky portfolio

  2. Calculate the expected return and standard deviation for the risky portfolio

  3. Determine the optimum weight for the risky portfolio given the investor’s utility function

  4. Calculate the weight of each asset in the complete portfolio, along with its expected return and standard deviation.

Continuing the above example, assuming a utility function of \(U = E[r] - 2\sigma^2\), we obtain the following:

A = 4
correlation.levels = correlation.levels %>% filter(correlation_description != "Perfect Negative") %>% mutate(risky_portfolio_weight = (optimum_return - risk.free.rate) / (A * optimum_sd^2), complete_portfolio_return = risk.free.rate + risky_portfolio_weight * (optimum_return - risk.free.rate), complete_portfolio_sd = risky_portfolio_weight * optimum_sd, asset_1_complete_weight = risky_portfolio_weight * optimum_weight, asset_2_complete_weight = risky_portfolio_weight * (1 - optimum_weight), t_bill_weight = 1 - risky_portfolio_weight)
correlation.levels %>% select(correlation_description, optimum_sharpe_ratio, risky_portfolio_weight, complete_portfolio_return, complete_portfolio_sd, asset_1_complete_weight, asset_2_complete_weight, t_bill_weight)
##   correlation_description optimum_sharpe_ratio risky_portfolio_weight
## 1        Perfect positive            0.2500000              0.5208333
## 2        Partial positive            0.4225771              0.7440476
## 3            Uncorrelated            0.4716991              1.0208333
## 4        Partial negative            0.5571710              1.4995421
##   complete_portfolio_return complete_portfolio_sd asset_1_complete_weight
## 1                0.06562500             0.0625000               0.5208333
## 2                0.09464286             0.1056443               0.2976190
## 3                0.10562500             0.1179248               0.5208333
## 4                0.12760989             0.1392928               0.8470696
##   asset_2_complete_weight t_bill_weight
## 1               0.0000000    0.47916667
## 2               0.4464286    0.25595238
## 3               0.5000000   -0.02083333
## 4               0.6524725   -0.49954212

Note that for the uncorrelated and partial negative portfolios, the weight assigned to the risky portfolio is above 1, so these values would need to be re-calculated at the borrowing rate rather than the risk-free rate.

The results for the partial positive example can be illustrated as follows:

complete.return = as.numeric(correlation.levels %>% filter(correlation_description == "Partial positive") %>% select(complete_portfolio_return))
complete.sd = as.numeric(correlation.levels %>% filter(correlation_description == "Partial positive") %>% select(complete_portfolio_sd))
sharpe.ratio = as.numeric(correlation.levels %>% filter(correlation_description == "Partial positive") %>% select(optimum_sharpe_ratio))
utility = complete.return - 2 * complete.sd^2
utility.curve.data = data.frame(sd = 0:30 / 100)
utility.curve.data = utility.curve.data %>% mutate(indifference_curve = utility + 2 * sd^2)
ggplot(data = utility.curve.data, aes(x = sd, y = indifference_curve)) + geom_line() + geom_point(aes(x = complete.sd, y = complete.return), size = 4, colour = "blue") + ylim(0, 0.3) + geom_abline(intercept = risk.free.rate, slope = sharpe.ratio, colour = "red") + geom_point(data = correlation.visualization %>% filter(correlation_description == "Partial positive"), aes(x = portfolio_sd, y = expected_return), colour = "green", size = 0.5) + labs(x = "Standard Deviation", y = "Expected Return")

In the above, the green curve is the opportunity set for the risky portfolio. The red line is the capital allocation line, the blue dot is the complete portfolio, and the black curve is the investor’s indifference curve.

Markowitz Portfolio Selection Model

The Markowitz model is a security selection model based on the idea of a minimum variance frontier, which is a collection of portfolios which minimize the variance subject to a given expected return. It is a collection of solutions to the quadratic programming problem \[ \text{Minimize } y^TCy \] subject to \[ \sum y_i = 1 \] and \[ \sum y_i R_i = r_p \] where \(C\) is the covariance matrix, and \(r_p\) is a given target return. This idea can be illustrated using the folowing data from the textbook:

covariance.matrix = as.matrix(read.csv("./Data/BKM_7.csv", row.names = 1))
covariance.matrix
##               US     UK France Germany Australia  Japan Canada
## US        0.0224 0.0184 0.0250  0.0288    0.0195 0.0121 0.0205
## UK        0.0184 0.0223 0.0275  0.0299    0.0204 0.0124 0.0206
## France    0.0250 0.0275 0.0403  0.0438    0.0259 0.0177 0.0273
## Germany   0.0288 0.0299 0.0438  0.0515    0.0301 0.0183 0.0305
## Australia 0.0195 0.0204 0.0259  0.0301    0.0261 0.0147 0.0234
## Japan     0.0121 0.0124 0.0177  0.0183    0.0147 0.0353 0.0158
## Canada    0.0205 0.0206 0.0273  0.0305    0.0234 0.0158 0.0298
expected.returns = read.csv("./Data/BKM_7b.csv") %>% mutate(standard_deviation = sqrt(variance), expected_return = excess_return + risk.free.rate)
expected.returns
##     country excess_return variance standard_deviation expected_return
## 1        US         0.060   0.0224          0.1496663           0.110
## 2        UK         0.053   0.0223          0.1493318           0.103
## 3    France         0.070   0.0403          0.2007486           0.120
## 4   Germany         0.080   0.0515          0.2269361           0.130
## 5 Australia         0.058   0.0261          0.1615549           0.108
## 6     Japan         0.045   0.0353          0.1878829           0.095
## 7    Canada         0.059   0.0298          0.1726268           0.109

This matrix (or more precisely, its transpose) is used to define the two constraints that the weights must sum to 1, and the target expected return must be achieved.

A.matrix = matrix(data = c(rep(1, 7), expected.returns$expected_return), nrow = 7, ncol = 2, byrow = FALSE)
A.matrix
##      [,1]  [,2]
## [1,]    1 0.110
## [2,]    1 0.103
## [3,]    1 0.120
## [4,]    1 0.130
## [5,]    1 0.108
## [6,]    1 0.095
## [7,]    1 0.109

This function calculates the minimum standard deviation for a given target return:

min.variance.portfolio = function(required.return) {
  QP = solve.QP(Dmat = covariance.matrix, dvec = matrix(data = rep(0, 7), nrow = 7, ncol = 1), Amat = A.matrix, bvec = c(1, required.return), meq = 2)
  return(sqrt(2 * QP$value))
}
min.variance.portfolio(required.return = 0.10)
## [1] 0.1239001

Calculate over a wide range of target returns:

min.variance.frontier = data.frame(expected_return = 800:1300/10000)
min.variance.frontier$standard_deviation = apply(min.variance.frontier, 1, function(y) {min.variance.portfolio(y)})
ggplot(data = min.variance.frontier, aes(x = standard_deviation, y = expected_return)) + geom_point(colour = "blue", size = 0.25) + ylim(0.08, 0.13) + geom_point(data = expected.returns, aes(x = standard_deviation, y = expected_return), colour = "red")

The efficient frontier is the set of portfolios on the minimum variance frontier that are above and to the right of the minimum variance portfolio. (Anything below this point is outperformed by the portfolio directly above it.) Note that the individual assets (red points) all fall strictly below and to the right of the efficient frontier. This is because using single assets do not allow us to benefit from diversification.

Once the efficient frontier has been determined, we can determine the capital allocation line by selecting the portfolio with the largest Sharpe ratio:

min.variance.frontier = min.variance.frontier %>% mutate(sharpe_ratio = (expected_return - risk.free.rate) / standard_deviation)
optimal.sharpe.ratio = max(min.variance.frontier$sharpe_ratio)
optimal.portfolio = min.variance.frontier %>% filter(sharpe_ratio == optimal.sharpe.ratio)
optimal.portfolio
##   expected_return standard_deviation sharpe_ratio
## 1          0.1064          0.1374234    0.4104106

The Capital Allocation line is shown in black below. Note that this is the line tangent to the efficient frontier whose y-intercept is the risk-free rate.

ggplot(data = min.variance.frontier, aes(x = standard_deviation, y = expected_return)) + geom_point(colour = "blue", size = 0.25) + ylim(0, 0.13) + geom_point(data = expected.returns, aes(x = standard_deviation, y = expected_return), colour = "red") + geom_abline(intercept = risk.free.rate, slope = optimal.portfolio$sharpe_ratio) + xlim(0, 0.25)

A key drawback to this approach is that in relies on a large number of parameter estimates (one correlation coefficient for every pair of securities).

Additional constraints can also be applied. For example, if taking short positions is not allowed, we add a constraint that all weights have to be non-negative.

A.matrix.noshort = cbind(A.matrix, diag(7))
min.variance.portfolio.noshort = function(required.return) {
  QP = solve.QP(Dmat = covariance.matrix, dvec = matrix(data = rep(0, 7), nrow = 7, ncol = 1), Amat = A.matrix.noshort, bvec = c(1, required.return, rep(0, 7)), meq = 2)
  return(sqrt(2 * QP$value))
}
min.variance.portfolio.noshort(required.return = 0.10)
## [1] 0.1395792
min.variance.frontier.noshort = data.frame(expected_return = 1000:1300/10000)
min.variance.frontier.noshort$standard_deviation = apply(min.variance.frontier.noshort, 1, function(y) {min.variance.portfolio.noshort(y)})
ggplot(data = min.variance.frontier.noshort, aes(x = standard_deviation, y = expected_return)) + geom_point(colour = "purple", size = 0.25) + ylim(0.10, 0.13) + geom_point(data = expected.returns, aes(x = standard_deviation, y = expected_return), colour = "red") + geom_point(data = min.variance.frontier, aes(x = standard_deviation, y = expected_return), colour = "blue", size = 0.25)
## Warning: Removed 1 rows containing missing values (geom_point).
## Warning: Removed 200 rows containing missing values (geom_point).

The purple line is the minimum variance frontier when short positions are not allowed. As a general rule, any frontiers corresponding to additional constraints will lie below and to the right of the unconstrained frontier. Notice also that in this case, the asset with the highest return will always appear on the frontier with a weight of 100%.

The separation property is the idea that the portfolio selection task may be separated into two steps: the determination of the optimal risky portfolio, and the allocation of capital between risky and risk-free assets. Note that the investor’s risk aversion only comes into play in the capital allocation step; in particular, a portfolio manager would recommend the same risky portfolio to all clients regardless of risk aversion.

Diversification Strategies

Systematic Risk

Not all risk can be removed through diversification. The risk that cannot be removed is called market risk or systematic risk. In contrast, risk that can be eliminated through diversification is firm-specific risk. Systematic risk can be illustrated mathematically by considering an equally-weighted portfolio of a large number of stocks, \(n\). In this case, the portfolio variance is: \[ \sigma_p^2 = \sum_{1\leq i \leq n} \frac{\sigma_i^2}{n^2} + \sum_{1\leq i \leq n}\sum_{1 \leq j \leq n, i \neq j} \frac{\sigma_i\sigma_j \rho_{i,j}}{n^2} \] If we express the average variance as \[ \overline{\sigma} = \frac{1}{n} \sum_{1 \leq i \leq n} \sigma_i^2 \] and the average covariance as \[ \overline{\mathrm{Cov}} = \frac{1}{n(n-1)} \sum_{1\leq i \leq n}\sum_{1\leq j \leq n, i \neq j} \sigma_i\sigma_j \rho_{i,j} \] then we can express the portfolio variance as \[ \sigma_p^2 = \frac{1}{n}\overline{\sigma} + \frac{n-1}{n} \overline{\mathrm{Cov}} \] From this expression it is clear that as \(n\rightarrow \infty\), \(\sigma^2 \rightarrow \overline{\mathrm{Cov}}\). The quantity \(\overline{\mathrm{Cov}}\) is the systemic risk component. In particular, we can never completely eliminate risk through diversification.

As a further simplification, assume all securities have a common standard deviation \(\sigma\) and correlation coefficient \(\rho\). Then the portfolio variance becomes \[ \sigma_p^2 = \frac{\sigma^2}{n} + \frac{n-1}{n}\sigma^2\rho \] The impact of correlation can be illustraed by computing the above for a range of values of \(\rho\) and \(n\), keeping \(\sigma = 0.5\) fixed.

standard.deviation = 0.5
correlation.illustration = merge(data.frame(rho = 0:100 / 100), data.frame(n = 1:20)) %>% mutate(portfolio_sd = sqrt(standard.deviation^2 / n + (n-1)/n * standard.deviation^2 * rho))
ggplot(data = correlation.illustration, aes(x = rho, y = n, fill = portfolio_sd)) + geom_raster() + scale_fill_gradientn(colours = terrain.colors(10)) 

This heat map demonstrates that at low levels of correlation, the portfolio standard deviation decreases sharply as the number of stocks increases, but in general, the standard deviation can’t be pushed below \(\sqrt{\rho}\sigma\), which provides a quantification of the systematic risk in this simple example.

Risk Sharing and Risk Pooling

The insurance principle is the idea that, provided risk sources are independent, diversification can push risk to arbitrarily low levels. This principle is limited by systemic risk, since it only affects firm-specific risk. The insurance principle is based on risk pooling, in which uncorrelated risks are merged as a means to reduce risk. An important consideration is that pooling increases total risk, though it decreases average risk.

To illustrate this idea, suppose we have two uncorrelated risky assets with identical risk premiums \(R\) and standard deviation \(\sigma\). Consider a complete portfolio in which \(y\) is invested in one of these assets. The properties of this portfolio are:

  • Risk premium is \(yR\)

  • Standard deviation is \(y\sigma\)

  • Sharpe ratio is \(R / \sigma\).

Compare this to a situation in which \(y\) is invested in each of the two assets. In this scenario,

  • Risk premium is \(2yR\)

  • Standard deviation is \(\sqrt{y^2\sigma^2 + y^2\sigma^2} = \sqrt{2}y\sigma\)

  • Sharpe ratio is \(\frac{2yR}{\sqrt{2}y\sigma} = \sqrt{2}R/\sigma\).

Notice that the Sharpe ratio has improved by a factor of \(\sqrt{2}\), but the total risk has also increased by the same factor. The analogy in the insurance context is that the more policies it writes, the better the ratio of expected return to standard deviation becomes — but it must hold more capital in order to accont for the larger aggregate risk. The key is that even though the risk increases, it does so less than proportionately to the number of policies written.

Risk pooling can be enhanced by risk sharing, in whcih shares in a risky portfolio are sold. Suppose that in the two-risk example above, half the shares in each risk were sold to other investors, and the proceeds invested in the risk-free asset. In this case, the weight on each risky asset becomes \(y/2\), so:

  • Risk premium is \(yR\)

  • Standard deviation is \(\sqrt{y^2\sigma^2/4 + y^2\sigma^2/4} = \frac{y\sigma}{\sqrt{2}}\)

  • Sharpe ratio is \(\sqrt{2}R / \sigma\).

In this case, the Sharpe ratio has increased by the same amount, but the total risk has decreased. In an insurance context, this can be achieved through either the issuing of shares in the company or purchase of reinsurance.