Portfolio Return Contribution: How to Calculate What Each Stock Added
Calculate portfolio return contribution from starting weights and returns. Follow a worked example in percentage points and dollars, then check a historical replay.
Portfolio return contribution measures how much one holding added to or subtracted from the portfolio's overall return. For a single historical window with starting allocations and no interim trades or cash flows, multiply each holding's starting weight by its return over that same window. A stock that starts at 20% and rises 15% adds 3 percentage points to the portfolio return.
The stock with the largest percentage gain may contribute less than a slower-growing stock with a larger starting allocation. Calculating the contributions lets you check which positions account for the result, including losses that offset gains elsewhere.
Portfolio return contribution formula
Use these formulas for a fully allocated, unlevered example with no changes to the positions during the measurement window:
Holding contribution, in percentage points = starting weight (%) × holding return (%) ÷ 100
Portfolio return (%) = sum of the holding contributions
For a 20% starting weight and a 15% return, calculate 20 × 15 ÷ 100 = 3 percentage points. With decimal inputs, the same calculation is 0.20 × 0.15 = 0.03, or 3% of the starting portfolio value. Mixing percentage inputs and decimal inputs is a common source of errors.
Interactive Brokers' PortfolioAnalyst white paper, page 9, illustrates contribution using beginning weight multiplied by return. Its broader account methodology includes transaction assumptions. The example below uses no transactions, distributions, fees, or taxes and measures price movement alone.
A worked example: the biggest gain is not the biggest contribution
Suppose a hypothetical $10,000 portfolio starts with three positions. All returns cover the same start and end dates in the same currency. These are invented figures for explaining the arithmetic, not market observations or suggested allocations.
| Holding | Starting weight | Starting value | Holding price return | Contribution to portfolio return | Dollar change |
|---|---|---|---|---|---|
| Stock A | 50% | $5,000 | +12% | +6.00 percentage points | +$600 |
| Stock B | 10% | $1,000 | +40% | +4.00 percentage points | +$400 |
| Stock C | 40% | $4,000 | −15% | −6.00 percentage points | −$600 |
| Total | 100% | $10,000 | +4.00 percentage points | +$400 |
Stock B has the highest individual return, at 40%. Stock A contributes more to the portfolio because it starts with five times as much weight. Stock C offsets Stock A's gain, leaving the mix with a 4% return and a $10,400 ending value.
Check that result in dollars: the ending values are $5,600, $1,400, and $3,400. Their sum is $10,400. Subtract the $10,000 starting value and divide by $10,000 to get 4%.
An equal average of the three stock returns would give (12 + 40 − 15) ÷ 3 = 12.33%. That calculation assumes equal starting weights. It does not describe this 50%/10%/40% mix. The equal-weight vs. market-cap-weighting guide explains how weighting changes each position's influence.
Percentage points, dollars, and share of the gain
Keep these three measures separate when reading a performance breakdown:
| Measure for Stock A | Calculation | Result |
|---|---|---|
| Return on the position | $600 ÷ $5,000 | 12% |
| Contribution to portfolio return | $600 ÷ $10,000 | 6 percentage points |
| Share of the portfolio's net gain | $600 ÷ $400 | 150% |
Stock A accounts for 150% of the net gain because another position lost money. Stock B accounts for 100%, while Stock C accounts for −150%. Those shares sum to 100%, but the figures are harder to interpret than the percentage-point contributions.
A share-of-gain calculation becomes undefined if the portfolio's net gain is zero. Contributions in percentage points still work: +6 points and −6 points sum to zero. Prefer those contributions when explaining offsetting gains and losses.
To translate a contribution into dollars, multiply the starting portfolio value by the contribution divided by 100. On a $25,000 illustration, Stock A's 6-point contribution would equal $1,500. Changing the starting dollar amount changes the dollar display while leaving the return percentages unchanged.
Use beginning weights, not ending weights
Stock B starts at 10% and ends at about 13.46% of the example portfolio: $1,400 ÷ $10,400 × 100. Multiplying that ending weight by its earlier 40% return would produce about 5.38 percentage points. Its actual contribution in this example is 4 points.
The ending weight already reflects the stock's gain. Use the allocation at the start of the period whose return you are measuring. A current holdings screen cannot establish the beginning allocation for an earlier year if you changed positions along the way.
For a continuous window with no trades or cash flows, you can use each holding's original weight and cumulative window return even as its share of the ending value changes. You do not need to reset the weights to keep the calculation valid. Tracking a changing account with purchases and sales requires more detail.
Do not add monthly contribution figures to get an annual result
Contributions add across holdings for a matching period. Adding contribution figures across separate periods can miss compounding.
Consider a hypothetical portfolio containing one stock. It gains 10% in month one and 10% in month two. Starting with $10,000 gives $11,000, then $12,100. The two-month return is 21%. Adding the two monthly contributions gives 20 percentage points because each month's calculation uses a different starting value.
For the full two-month window, the original 100% weight multiplied by the stock's cumulative 21% return gives the correct 21-point contribution. For accounts with changing holdings, use a performance system that handles transaction timing and links periods. The PerformanceAnalytics documentation explains the distinction between summing contributions across assets and aggregating them through time.
Depositing money is a separate meaning of “contribution.” An account deposit increases the balance without being an investment gain. Read time-weighted vs. money-weighted return if your question involves dated deposits or withdrawals.
Contribution vs. attribution: explaining a gain and explaining a benchmark gap
A holding's positive contribution tells you it added to the measured portfolio return. It does not establish that the holding helped the portfolio outperform a benchmark.
For example, a stock can contribute +4 points while a comparable benchmark exposure would have contributed more. Evaluating that difference requires benchmark weights and returns as well as the portfolio's figures. CFA Institute's overview of performance attribution describes attribution as an explanation of performance relative to a benchmark and the sources of excess return.
Choose the reference with care. The portfolio benchmarking guide explains why the S&P 500 is not a complete comparison for every mix.
Read the contribution breakdown in Equity Replay
Equity Replay applies your percentages once at the start of a selected historical window. It aligns the available closing-price series to shared dates and calculates each position's contribution from its starting weight and price change over those dates. The breakdown uses rounded figures, so displayed contributions can differ slightly from the displayed total when you add them.
The What moved the estimate panel displays contributions with a percent sign. Read those numbers as percentage-point contributions to the combined historical change. A displayed +3.00% contribution means the position added 3 percentage points to that replay, rather than that the position itself rose 3%.
You can build an illustrative portfolio, inspect the largest positive and negative contributions, and compare them with the starting weights. Check the actual start/end dates and Data through label before comparing two runs. The optional SPY reference line sits outside your allocation and does not contribute to your portfolio's total.
An ETF contributes as one position through its own price series. The replay does not calculate separate contributions for the stocks inside that ETF. Dividends can also change the answer: a closing-price contribution excludes the income included in a total-return calculation.
Equity Replay is an educational historical simulator, not investment advice, a broker, or a record of trades. It excludes execution, dividends, fees, taxes, deposits, withdrawals, and interim trading or rebalancing. Read the replay calculation method alongside the breakdown. A large historical contribution explains a past result under those assumptions; it does not predict a future contribution or establish an allocation to use with real money.
About our educational content
Published by Equity Replay, an educational historical portfolio simulator operated by Quadri LLC. We use AI-assisted drafting. No independent financial, legal, or tax expert review is claimed.
Check the linked sources, article dates, and stated assumptions before relying on a number. Historical simulations are not forecasts, records of trades, or personal investment advice. Rules and market data can change after publication.
Found an error? Send a correction to our team.