Computing Tangency Portfolio Weights from Covariance and Excess Returns
Summary
The document shows how to compute the composition of the efficient risky portfolio, also called the one-fund or tangency portfolio, from asset covariances and expected excess returns. It gives a three-asset example with specified volatilities, a correlation between the first two assets, and expected returns relative to a risk-free rate. The response constructs the covariance matrix and excess-return vector, then applies the inverse-covariance weighting rule.
The resulting vector is normalized by the sum of its components so the weights add to one. This normalization is essential: the unscaled inverse-covariance product gives relative positions, not portfolio weights. The document states the requested first-asset weight as 87%, but offers no step-by-step arithmetic or discussion of assumptions. The method relies on estimated means and covariances and does not address constraints such as short-sale limits or estimation error.
Key ideas
- The tangency portfolio uses covariance-adjusted expected excess returns to determine relative asset positions.
- Multiply the inverse covariance matrix by the vector of expected returns above the risk-free rate.
- Normalize the resulting vector so its weights sum to one.
- The example reports an 87% allocation to the first asset, subject to the stated inputs and unconstrained setup.
Tags
Full text
# Calculate weight of an asset
# Calculate weight of an asset
Suppose there are three assets, and the first asset has volatility 18%, the second asset has volatility 16%, and the third asset has volatility 16%. Suppose also that the first two assets' returns are correlated with each other with correlation coefficient 0.7, but the third asset is not correlated with the first two assets.
Suppose the risk free rate is 2%, and the expected returns of the three assets are 7%, 4% and 5% respectively.
Now consider the efficient portfolio of risky assets, i.e. the "one fund" F. What is the weight of the first asset? Answer should be 0.87 (87%)
What I have done so far: Using matrix notation: M(covariance matrix)* v(vector of unscaled weights) = r (mean return value)- risk free rate
Step1. I constructed M using volatilities and p given.
Step 2. subtracted mean returns - risk fee rate
Step 3. Taking inverse of M solved for v, scaled to w(weights) But as a weight of first asset I am getting 0.51 instead of 0.87. What am I doing wrong?
## Answer by Kermittfrog (score 2)
https://quant.stackexchange.com/a/60623
You indeed seem to have an error in your calculation somewhere.
Let the covariance matrix be
$$\Sigma=\begin{pmatrix}0.0324&0.021016&0\\ 0.021016 & 0.0256 & 0 \\ 0 & 0 & 0.0256\end{pmatrix}$$ and the vector of (excess) returns are
$$ \mu-r_f=\begin{pmatrix}0.05 \\ 0.02 \\ 0.03\end{pmatrix} $$
Ultimately, the weights are then computed as
$$ w^*=\frac{\Sigma^{-1}\left(\mu-r_f\right)}{e^T\Sigma^{-1}\left(\mu-r_f\right)} $$
where $e$ is a vector of ones, as usual.
HTH?Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.