Calculating Portfolio Skewness from Asset Returns and Co-Skewness
Summary
Portfolio skewness can be calculated either from the portfolio’s return series or by combining asset-level moments with portfolio weights. The document explains that joint third moments form a rank-three co-skewness tensor, with entries estimated from products of asset returns across time. It gives formulas for the portfolio’s first three raw moments and converts the third raw moment into standardized skewness using the portfolio variance and mean.
For six assets, the full tensor has 216 entries, though symmetry reduces the number of distinct components. The responses also describe a simpler route: compute the weighted portfolio return in each period, then estimate its skewness directly. This produces the same result as the corresponding moment calculation. Returns used for moment estimates should be centered when appropriate, and price histories need consistent adjustment, such as for dividends. The discussion is explanatory rather than an empirical study; it does not compare estimators, address sampling uncertainty, or prescribe a particular software workflow.
Key ideas
- Asset co-skewness is a rank-three tensor of joint third moments, not a matrix.
- Portfolio skewness can be derived by combining tensor entries with the three portfolio weights.
- A direct alternative is to form the weighted portfolio return each period and estimate its skewness from that series.
- Center returns around their means when estimating central moments.
- Use comparable price data so corporate actions do not distort return measurements.
Tags
Full text
# How do I calculate the skewness of a portfolio of assets?
# How do I calculate the skewness of a portfolio of assets?
I need to calculate the skewness of a portfolio consisting of 6 assets. I know that for that I would need the co-skewness matrix between the assets. Does anybody know the formula for co-skewness or any simple software to calculate a co-skewness matrix?
Any useful information would be highly appreciated.
## Answer by Derek Ploor (score 14)
https://quant.stackexchange.com/a/1571
Actually, co-skewness is represented by a rank 3 tensor, rather than a matrix.
I'm going to reproduce the formulation from Bhandari and Das, Options on portfolios with higher-order moments, but I'll add and omit some details.
The co-skewness tensor is $$ S_{ijk} = E \left[ r_i \times r_j \times r_k \right] = \frac{1}{T} \sum_{t=1}^T r_i(t) \times r_j(t) \times r_k(t) $$ where $r$ are asset returns over $T$ time periods.
Then, given portfolio weights $w$, mean asset returns $\mu$, covariance matrix $\Sigma$, and portfolio variance $\sigma_p^2(w) = w\prime \Sigma w$, we calculate moments: $$\begin{eqnarray*} m_1 & = & w\prime \mu \\ m_2 & = & \sigma_p^2 + m_1^2 \\ m_3 & = & \sum_{i=1}^N \sum_{j=1}^N \sum_{k=1}^N w_i w_j w_k S_{ijk} \end{eqnarray*}$$
The portfolio skewness is then $$ S_p = \frac{1}{\sigma_p^3} \left[ m_3 - 3m_2 m_1 + 2m_1^3 \right] $$
In the case of a 6-asset portfolio, the co-skewness tensor will contain 216 components; however, due to symmetry, it only contains 56 independent components.
Therefore, it can be helpful to reformulate the portfolio skewness equation for computational efficiency. To do this, we can start with the definition of skewness for portfolio returns, $$ S_p = \frac{1}{\sigma_p^3} E [ \left( \sum_{i=1}^N w_i r_i \right)^3 ] \quad , $$
and then apply the multinomial theorem to obtain the portfolio skewness in terms of only the independent components.
Update
- Especially for longer time series, the return moments should be centered on the means, i.e., $r_i = R_i - \bar{R}_i$
- In the case of daily returns, $R_i(t) = \frac{P(t) - P(t-1)}{P(t-1)}$, where $P(t)$ is the closing price at time $t$.
- Be sure the prices for returns are comparable from period to period. For example, stock prices may need adjustments to account for dividend payments. See this Q & A on return measurement for more discussion.
note: I edited the equation for the co-skewness tensor above.
## Answer by Shane (score 2)
https://quant.stackexchange.com/a/1558
Have a look at PortfolioAnalytics in R.
```
> library(PerformanceAnalytics)
> data(managers)
> CoSkewness(managers, managers)
```
## Answer by Richi Wa (score 2)
https://quant.stackexchange.com/a/23229
Maybe you like working with coskewness. But it is not needed if you just want to estimate the skewness of the portfolio. If you have retunr times serise $(r^i_t)_{t=1}^T$ for each asset $i$ and the weights $w_i$ that these assets have in your portfolio then you can form $$ r_t = \sum_{i=1}^6 w_i r^i_t \quad \text{for each } t, $$ and you simple estimate all moments on $(r_t)_{t_1}^T$. The solution will be the same as any matrix operation. Eg the variance is either $$ VAR(r_t) $$ or equivalently (!) $$ w^T \Sigma w $$ where $\Sigma$ is the covariance matrix of those 6 assets. The numbers will be the same. If you need comoments then you do so by using expressions of the form $$ E[r_t^k*(r_t^i)^m], $$ for some integer $k$ and $m$.
## Answer by Toan N (score 0)
https://quant.stackexchange.com/a/78046
Happened to get stuck in this problem years ago. Don't need to use co-skewness or any co-moments to calculate the variance, skewness, and kurtosis of a portfolio. Just use the raw returns of the assets and the weights. This optimization can be implemented in Excel, R (using nonlinear) and Python (nonlinear or minimize with scipy).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.