Skip to content
All library documents

Estimating Dollar Portfolio Volatility with Long and Short Positions

Article Quant Q&A · Author: Alex

Summary

The document raises how to estimate a portfolio’s expected daily movement in dollars from historical asset prices and current positions. Its portfolio contains long and short exposures, and some instruments have contract multipliers that make one unit represent more than its quoted price. The question is whether to use returns, how to apply those multipliers, and how to interpret a covariance-based calculation that appears too large.

It supplies a code fragment that computes a covariance matrix from returns and combines it with position sizes, but provides no accepted answer or worked resolution. Thus, the material identifies a practical portfolio risk estimation problem rather than establishing a definitive formula. A sound calculation must express each asset’s changes in consistent dollar exposure units, apply signed positions and contract scalars consistently, and ensure the covariance inputs and weights use compatible units and frequency. The stated historical window is limited, and the document does not establish that it is sufficient to predict future volatility.

Key ideas

  • Portfolio variance can be estimated from a covariance matrix and a vector of signed exposures.
  • Long and short positions should retain their positive and negative signs in the portfolio calculation.
  • Contract multipliers affect dollar exposure and must align with the units used in the covariance inputs.
  • The document poses the scaling and return-versus-price question but does not provide a validated solution.

Tags

Full text
# One day standard deviation of a portfolio (long/short, different scalars)


# One day standard deviation of a portfolio (long/short, different scalars)












I am attempting to calculate the expected one-day standard deviation of a portfolio in dollars. In other words, I am looking for the following: "I expect my portfolio to move _______ dollars on average each day."

I have historical price data for each asset in my portfolio for the previous 90 days, as well as my current position sizes for each asset. The portfolio includes both long & short positions.

One complicating factor is that not all assets have the same weighting. For example, 1 unit of asset XYZ has a scalar of 100, similar to options. In other words, if XYZ has a price of 3 dollars, owning 1 unit of asset XYZ is equivalent to owning $300 of XYZ.

My python code is below. What I am currently doing is multiplying my positions by their scalars and using this as weights_df. Then, I am calculating the covariance matrix of the assets from the historical prices (with no scaling). However, I am not positive that this is mathematically correct.

```
prices_df = pd.pivot_table(df, values='VALUE', index=['PUBLISH_DATE'], columns=['Product']).ffill(axis=0)
cov_df = returns_df.cov()
weights_df = pd.read_excel('posfrombook.xlsx', sheetname='Match')
portfolio_weights = np.asarray(weights_df['Position Size'])
portfolio_volatility = (np.dot(portfolio_weights.T, np.dot(cov_df, portfolio_weights)))
print((portfolio_volatility**.5))
```

I was expecting a portfolio variance around $2000, yet the number I'm getting with the following method seems to be much too high (10-15x what I expected). Should I be using return data? If so, how do I deal with the short positions, as well as the scaling issues?

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.