Disclaimer: The content of this RMarkdown note came from a course (chapter 2) called Introduction to Portfolio Analysis in R in datacamp.

Balancing risk and reward

A risk-averse investor would prefer an investment that has the highest average return with the lowest volatility.

Non-normality of the return distribution

  1. When we use the standard deviation as a measure of risk, we assume that portfolio returns have a normal distribution. It means that large gains (positive extremes) are as equally likely as large losses (negative extremes) of the same magnitude.
  2. In reality, returns are skewed to the left with fatter tails: negative returns are more likely.
  3. Hence, need for additional risk measures.
    • Semi-deviation, Value at risk, and 5% expected short fall
  4. Additional measures
    • Skewness, kurtosis
  5. measure of the worst case risk
    • the portfolio’s drawdowns, or peak-to-trough decline in cumulative returns.
    • The metrics discussed above do not do a great job at describing the worst case risk of buying at a peak, and selling at a trough.

Detecting non-normality using skewness and kurtosis

Two metrics key to understanding the distribution of non-normal returns:

  • Skewness (is it symmetric?)
  • Excess kurtosis (does it have fat-tails?)

Skewness

  • Zero: symmetric
  • Negative: large negative returns occur more often
  • Positive: large positive returns occur more often

Kurtosis

  • Zero: normal distribution
  • Greater than zero: large returns of both positive and negative occur more often
# Load packages  
library(PerformanceAnalytics)
library(quantmod)
library(xts)

Alternative 2: Import data with getSymbols()

data.MSFT <- getSymbols("MSFT", from = "1985-12-31", to = "2016-08-01", auto.assign = FALSE)

MSFT_monthly <- to.monthly(data.MSFT, indexAt = "startof") 
# to.monthly documentation https://www.rdocumentation.org/packages/xts/versions/0.10-0/topics/to.period
MSFT_monthly <- MSFT_monthly[, "data.MSFT.Adjusted"]
head(MSFT_monthly)
##            data.MSFT.Adjusted
## 1986-03-13           0.063419
## 1986-04-01           0.074373
## 1986-05-01           0.080715
## 1986-06-02           0.070914
## 1986-07-01           0.065725
## 1986-08-01           0.065725

Measure Skewness and Kurtosis

# Calcuate net returns
MSFT_monthly <- Return.calculate(MSFT_monthly)
MSFT_monthly <- MSFT_monthly[-1, ]
colnames(MSFT_monthly) <- "MSFT"
head(MSFT_monthly)
##                    MSFT
## 1986-04-01  0.172724262
## 1986-05-01  0.085272881
## 1986-06-02 -0.121427244
## 1986-07-01 -0.073173139
## 1986-08-01  0.000000000
## 1986-09-02 -0.008763789

#  Compute the skewness  
skewness(MSFT_monthly)  
## [1] 0.67842

# Compute the excess kurtois
kurtosis(MSFT_monthly)
## [1] 2.413123

Interpreation

  • Skewness- Positive: large positive returns occur more often
  • Kurtosis- Greater than zero: large returns of both positive and negative occur more often

Downside risk measures

When the return distribution is asymmetric (skewed), investors use additional risk measures that focus on describing the potential losses.

  • Semi-deviation: the variability of returns below the mean return
  • Value-at-Risk (or VaR): the 5% quantile of the return distribution, meaning that a more negative return can only happen with a probability of 5%. For example, you might ask: “what is the largest loss I could potentially take within the next quarter, with 95% confidence?”
  • Expected Shortfall: the average of the 5% (p = 0.05) or 2.5% (p = 0.025) most negative returns
# Calculate the SemiDeviation
SemiDeviation(MSFT_monthly)
##                      MSFT
## Semi-Deviation 0.06663768

# Calculate the value at risk
VaR(MSFT_monthly, p = 0.025)
##           MSFT
## VaR -0.1534668
VaR(MSFT_monthly, p = 0.05)
##           MSFT
## VaR -0.1185257

# Calculate the expected shortfall
ES(MSFT_monthly, p = 0.025)
##          MSFT
## ES -0.1534668
ES(MSFT_monthly, p = 0.05)
##          MSFT
## ES -0.1431922

Interpreation

  • Semi-Deviation of 0.066 means that the standard deviation of returns below the mean return is 0.066.
  • VaR of - 0.12 means that – 12% is the largest loss one could expect with 95% confidence. Is it possible that you could lose more than 12%? Yes. What’s the odd? 5%. In other word, a more negative return can only happen with a probability of 5%.
  • ES of – 0.143 means that – 14.3% is the average of the 5% (p = 0.05) most negative returns.

Drawdowns due to buying high, selling low

The volatility, semi-deviation, value-at-risk, and expected shortfall are all measures that describe risk over 1 period. These metrics do not do a great job at describing the worst case risk of buying at a peak, and selling at a trough. This sort of risk can be quantified by analyzing the portfolio’s drawdowns, or peak-to-trough decline in cumulative returns.

The function table.Drawdowns() in PerformanceAnalytics reports the five largest drawdown episodes over a sample period. The package also has another function chart.Drawdown() to visualize the evolution of the drawdowns from each peak over time.

# Table of drawdowns
table.Drawdowns(MSFT_monthly)
##         From     Trough         To   Depth Length To Trough Recovery
## 1 2000-01-03 2009-02-02 2014-07-01 -0.6670    175       110       65
## 2 1987-10-01 1987-11-02 1988-06-01 -0.3245      9         2        7
## 3 1988-07-01 1988-11-01 1989-09-01 -0.2948     15         5       10
## 4 1992-12-01 1993-07-01 1994-05-02 -0.2054     18         8       10
## 5 1986-06-02 1986-09-02 1986-10-01 -0.1929      5         4        1

# Plot of drawdowns
chart.Drawdown(MSFT_monthly)

Interpreation

  • The worst cumulative loss from peak value happend from january of 2000 to january of 2001.
  • The asset lost more than half of its value during the period.
  • It took a little more than 12 years to recover its previous peak value.

Compare Microsoft to S&P 500. Which would have been the riskier investment during the period?

  • Comparing Microsoft and S&P 500, Microsoft would have been the riskier investment during the period.