Skip to content
All library documents

Recalculate Portfolio Weights After Asset Returns

Article Quant Q&A · Author: Jared M

Summary

To update portfolio weights after a period of asset returns, multiply each starting weight by one plus that asset’s return. These products represent the assets’ ending values relative to the portfolio’s initial total value. Sum the products to find the portfolio’s ending value, then divide each asset’s product by that sum to obtain its new weight.

The example applies this process to three assets and shows how gains and losses shift their relative weights. The method assumes the starting weights and returns cover the same period and that the weights represent the portfolio before the returns occur. It describes drifted weights; it does not include rebalancing, transaction costs, cash flows, or other portfolio changes.

Key ideas

  • Multiply each initial portfolio weight by one plus its asset’s return to estimate its ending value.
  • Normalize the resulting asset values by their sum to calculate ending portfolio weights.
  • Returns change portfolio weights even when no trades are made.

Tags

Full text
# Calculate New Portfolio Weights Given Today's Returns


# Calculate New Portfolio Weights Given Today's Returns












I'm looking for a formula to recalculate my portfolio's weights at the end of time $T$, given a vector of the asset weights at $T$ and a vector of returns at $T$.

For example:

```
weights = 0.2, 0.3, 0.5
returns = 0.05, -0.05, 0.10
```

I'd like to calculate the new weighting going into $T_{t+1}$ to be based on this information.

## Answer by AlRacoon (score 3, accepted)

https://quant.stackexchange.com/a/43446

Multiply the weight of the assets times the 1 + returns of the corresponding asset.

This will give you the value of each asset at the end of your horizon.

In your example:

```
(0.2)(1+0.05) = 0.21; 
(0.3)(1+-0.05) = 0.285;
(0.5)(1+0.10) = 0.55;
```

Now add all of these values to get Total Assets:

```
(0.2)(1.05) + (0.3)(0.95) + (0.5)(1.10) = 1.045
```

Finally take each of the asset values and divide it by the Total Asset Value.

This will give you the weight of each asset at end of the horizon.

```
Weight A = 0.21/1.045 = 0.200957; 
Weight B = 0.285/1.045 = 0.272727; 
Weight C = 0.55/1.045 = 0.526316;

Weight(0) * return / Sum(weight * return) = Weight(t);
```

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.