A comprehensive exploration of how to calculate, interpret, and apply portfolio expected returns, variance, and standard deviation in investment management.
Sometimes, when we’re assembling an investment portfolio (maybe just a couple of stocks or maybe a giant multi-asset mix), we get that “uh-oh” feeling: Is this going to work out the way I imagine? The core of that question boils down to understanding expected return and risk measurements like variance and standard deviation. These concepts are, frankly, the bread and butter of portfolio mathematics. They help us figure out not only how much we might gain, on average, but also how wildly our returns might fluctuate.
In this section, we’ll tackle the essence of how to calculate a portfolio’s expected return—the main reward we’re after—and how to measure its risk through variance and standard deviation. We’ll look at two-asset examples and then extend the same approach to multi-asset portfolios. And, yep, we’ll glance at the dreaded covariance, which sounds more complicated than it really is. Throughout, we’ll keep it slightly informal, share a story or two, and still get the job done with formulas, code snippets, and everything you need to know for exam day (and real-world investing).
Expected return is just like the average of your potential outcomes—except in finance, we weigh those outcomes by the probability of each one happening. For a portfolio, we’re basically combining the expected returns of each individual asset, proportionate to how much of the portfolio we have in each asset.
If you have assets A, B, and C in your portfolio, with weights wₐ, w_b, and w_c, and expected returns E(Rₐ), E(R_b), and E(R_c) respectively, then the expected return on your portfolio, E(Rₚ), is:
It seems super straightforward. And it is, mostly—just make sure your weights add up to 1 (or 100%), meaning your entire investment is accounted for. If you accidentally let them sum to 1.1, you’re effectively investing 110% of your capital (which can happen in leveraged portfolios, but that’s a more advanced scenario). For a standard, unlevered portfolio, wₐ + w_b + w_c = 1.
Let’s say you have a portfolio with: • 40% in Asset A (E(Rₐ) = 8%), • 30% in Asset B (E(R_b) = 10%), • 30% in Asset C (E(R_c) = 12%).
Then your portfolio’s expected return is:
So, you’d expect on average to earn 9.8% per year net of these allocations, assuming the assets deliver precisely their expected returns (big assumption, but it’s a valuable baseline).
Variance is the measure of how much actual returns might fluctuate around the mean (i.e., the expected return). In portfolio-land, it’s not just about each individual asset’s variance—assets also affect each other. Specifically, how do they move together? That’s where covariance (or correlation) comes into play. Covariance is a measure of how two variables move relative to each other:
• If Cov(Rₐ, R_b) is positive, they move in the same direction more often than not.
• If Cov(Rₐ, R_b) is negative, they tend to move in opposite directions.
For a two-asset portfolio, the variance formula is:
Where:
• \( w_a \) and \( w_b \) are the portfolio weights for assets A and B.
• \( \sigma_a^2 \) and \( \sigma_b^2 \) are the variances of each asset (i.e., \(\mathrm{Var}(R_a)\) and \(\mathrm{Var}(R_b)\)).
• \(\mathrm{Cov}(R_a, R_b)\) is their covariance.
Once you have three or more assets, you just keep adding the pairwise terms:
In matrix form, you might see it as:
where:
• \( \mathbf{w} \) is the column vector of portfolio weights.
• \( \Sigma \) is the variance–covariance matrix of the asset returns.
Honestly, it’s not as daunting as it looks: you take your vector of weights, multiply it by the variance–covariance matrix, and then multiply again by the vector of weights transposed. That just systematically accounts for each \( w_i \times w_j \times \mathrm{Cov}(R_i, R_j) \) combination.
Covariance can be expressed in terms of correlation:
If you find even a single asset that’s not perfectly positively correlated with the rest, you can reduce your portfolio risk via diversification. This is one of the fundamental ideas behind portfolio construction.
After you compute portfolio variance, standard deviation is simply its square root:
So it’s still capturing the same concept of dispersion around the expected return, but in the same units as the return itself (for instance, if returns are expressed in percentages, standard deviation is in percentage points too).
Exams often like to test your ability to go from standard deviation to variance or vice versa. More than once, I’ve seen folks inadvertently add or forget to square or take the square root at the wrong time. So, when you see “variance,” think “square,” and when you see “standard deviation,” think “square root.” It’s that simple check.
When the portfolio has many assets—could be 10, 20, or 2,000—the principle stays the same:
The math might look bigger, but it’s no different in concept. In fact, computers love the matrix version because it’s a straightforward linear algebra multiplication. If you’re doing it manually, watch out for silly mistakes: missing a pair or doubling one by accident is a classic error.
Here’s a small conceptual diagram in Mermaid that depicts the flow from each asset’s risk inputs to the overall portfolio variance:
flowchart TB A["Asset 1: <br/> E(R_1), Var(R_1)"] B["Asset 2: <br/> E(R_2), Var(R_2)"] C["Asset 3: <br/> E(R_3), Var(R_3)"] M["Covariances <br/> (Cov(R_1,R_2), <br/> Cov(R_1,R_3), <br/> Cov(R_2,R_3))"] W["Weights <br/> (w_1, w_2, w_3)"] Calc["Compute <br/> E(R_p) <br/> and <br/> Var(R_p)"] A --> Calc B --> Calc C --> Calc M --> Calc W --> Calc
This diagram shows each asset’s expected return and variance, along with the covariances and the weight vector, all funneling into the final calculation of both expected portfolio return and portfolio variance.
If you’re a bit of a coding enthusiast, here’s how you might do it in Python for a three-asset portfolio:
1import numpy as np
2
3w = np.array([0.4, 0.3, 0.3]) # weights
4Sigma = np.array([[0.04, 0.01, 0.00],
5 [0.01, 0.09, 0.02],
6 [0.00, 0.02, 0.16]])
7
8port_variance = w.T @ Sigma @ w
9port_std_dev = np.sqrt(port_variance)
10
11print("Portfolio Variance:", round(port_variance, 4))
12print("Portfolio Std Dev:", round(port_std_dev, 4))
In a real-world investment environment, you might estimate \(\Sigma\) by looking at historical data or modeling forward-looking returns. But the formula remains the same.
Let’s do a small story: A friend of mine, who runs a boutique wealth advisory firm, once told me she’d meticulously built a client’s portfolio from 10 different funds—some equity, some bond, with a dash of REITs. She wanted a 7% expected return for the client, so she carefully assigned weights to each instrument. But the real question that popped up was, “What’s the risk?” She had to gather all the correlation data among those assets to compute the total portfolio variance and standard deviation. Only then could she say, “We expect around 7% annual return, and we might see about 6–8% volatility in a typical year.”
It’s that second number that’s the difference between an anxious client and a comfortable client. Understanding that “this is normal volatility” can help keep investors from panicking at the first sign of a downturn. So, in practice, expected return and standard deviation form the basis of client discussions, investment policy statements, and ongoing portfolio rebalancing.
• Double-Check Weights: Always ensure your portfolio weights sum to 1 (or reflect any leverage accurately).
• Keep a Consistent Time Frame: Make sure the returns, variances, and covariances you use are all annualized (or monthly, or weekly), but keep it consistent.
• Watch Data Quality: Garbage in, garbage out. If your covariance data are stale or incorrectly estimated, your final portfolio risk number might be misleading.
• Diversification ≠ Zero Correlation: Diversification helps reduce risk, but it doesn’t magically eliminate all risk. It just reduces nonsystematic risk.
• Non-Stationary Data: Sometimes correlations between assets change over time (especially in crises). Relying solely on historical estimates might fail to capture future shifts.
When you’re sitting for a CFA exam (or any finance exam), expect that you may be asked to:
• Compute the expected return for a 2- or 3-asset portfolio.
• Compute the standard deviation (or variance) of that portfolio using pairwise covariances or correlations.
• Interpret your results in an investment context.
Exam questions often arrive in these forms:
• “Given these weights, expected returns, and correlation matrix, find the portfolio’s standard deviation.”
• “How would the portfolio variance change if correlation between two assets increases or decreases?”
• “Which portfolio offers the greatest diversification benefit?”
A final thought: Don’t forget to label your steps. Too many times, I’ve seen candidates under stress skip an essential formula or incorrectly handle the square root. If the exam question says “Show your calculations,” do exactly that—line by line, writing each formula. And if time permits, do a quick sanity check: if you thought correlation was negative, you should see a smaller standard deviation than if correlation were positive. If your final standard deviation ended up larger, reevaluate your arithmetic.
Important Notice: FinancialAnalystGuide.com provides supplemental CFA study materials, including mock exams, sample exam questions, and other practice resources to aid your exam preparation. These resources are not affiliated with or endorsed by the CFA Institute. CFA® and Chartered Financial Analyst® are registered trademarks owned exclusively by CFA Institute. Our content is independent, and we do not guarantee exam success. CFA Institute does not endorse, promote, or warrant the accuracy or quality of our products.