Message Font: Serif | Sans-Serif

No. of Recommendations: 25
CAGR, CAGR + 1sigma, CASM, GSD, GSD-M, Sharpe Ratio

_EXACTLY_ where do these come from and _EXACTLY_ how are they calculated?

This is the promised revision to post 77188. If you were bored the first time, this is worse. If you want additional detail to 77188 or were hoping that certain details were clarified or expanded, you may be in luck.

The revision includes:

. CAGR + 1sigma section: Add reference to klouche's test for applicability across 10 MI screens.
. CAGR + 1sigma section: Add reference to DaveGoldman's equivalent method of calculating CAGR + 1sigma using GSD.
. GSD-M section: Add reference to BarryDTO's comparison of GSD-A calculations from daily, monthly, and annual data.
. Sharpe Ratio section: Add reference to RatioFool's calculation for strictly accurate differential return
. Add section for Generalized Forms by RatioFool
. Correct capitalization for quoted MI researcher names.
. Convert notation to more closely resemble standard Excel functions where practical. (Nothing actually quoted is edited.)
. Numerous edits for “flow” and refinements for clarity.

'sorry to post twice. -Dave Heinrich

1. CAGR

CAGR is Compound Annual Growth Rate. Here are 2 valid and equivalent methods for calculating CAGR that predate the MI board and anyone alive ('hard to find the source material on this one):

1.1. CAGR calculated using Nth root:

CAGR = (R1*R2*…Ry*…RN)^(1/N)
Where:
Ry = Annual return for year y
N = number of years
CAGR and R figures are in decimal multiplier form. 27.3% converted to decimal multiplier form is 1.273.

1.2. CAGR calculated using logs:

CAGR = EXP[(LnR1 + LnR2 + …LnRy + … LnRN)/N]
Where
Ry = Annual return for year y
N = number of years
CAGR and R figures are in decimal multiplier form. 27.3% converted to decimal multiplier form is 1.273.

CAGR calculated using logs works elegantly well with MI calculations for CAGR + 1sigma and GSD.

2. CAGR + 1sigma

CAGR + 1sigma is the annual return at one standard deviation above the mean return. The standard adopted at the MI board is to use log returns to calculate Standard Deviation, proposed by WilliamLipp in 31790, 7/16/99. bdfinney demonstrated the method with data in 32264. klouche demonstrated its applicability across 10 popular MI screens in 32333. Quoting bdfinney who reduced the calculation to minimalist expression in 35041:

Quote>
First add 1 to each annual return value, then convert those results to logs (or ln's).

Then find the AVG and SD of the log values.

Then:
CAGR = 10^AVG - 1

And:

CAGR - 3sigma = 10^(AVG - 3*SD) - 1
CAGR - 2sigma = 10^(AVG - 2*SD) - 1
CAGR - 1sigma = 10^(AVG - 1*SD) - 1
CAGR + 1sigma = 10^(AVG + 1*SD) - 1
CAGR + 2sigma = 10^(AVG + 2*SD) - 1
CAGR + 3sigma = 10^(AVG + 3*SD) - 1
<Unquote

SD is calculated using the “n - 1” method.

DaveGoldman in 32348 proposed an alternate and equivalent method for calculating CAGR +/- Nsigma using CAGR and GSD in decimal multiplier form. Interpreting DaveGoldman in 32348:

CAGR + Nsigma = CAGR*(GSD^N)
CAGR - Nsigma = CAGR/(GSD^N)

Where CAGR and GSD are in decimal multiplier form. 27.3% converted to decimal multiplier form is 1.273.

The results of both bdfinney's and gritton's backtesters are consistent with these methods.

3. CASM

CASM is the Compounded Average of Starting Months, proposed by DeepBlue in 40510 on 10/6/99. The name “CASM” was given by TMFElan in 40534. Quoting RatioFool who reduced CASM to minimalist expression in 40520:

Quote>
CASM = ((R1^N + R2^N + ... + R12^N)/12)^(1/N)
where:
Rm = CAGR for start in month m
N = number of years
<Unquote

CASM and R figures are in decimal multiplier form. 27.3% converted to decimal multiplier form is 1.273.

4. GSD

GSD is Geometric Standard Deviation of annual returns, proposed by DaveGoldman in a thread beginning with 31907 on 7/16/99. DaveGoldman named it “Geometric SD” in 31930 and finally “GSD” in 32348. Portions of the long thread started by WilliamLipp in 31790 contain important discussion of SD in log space. Growing acceptance of GSD for MI is evident toward the end of the long thread started by klouche at 35003 on 8/20/99.

GSD = EXP[STDEV(LnR1, LnR2, … LnRy, … LnRN)]

Where Ry = Annual return for year y
N = number of years
SD is calculated using the “n - 1” method.
GSD and Ry figures are in decimal multiplier form. 27.3% converted to decimal multiplier form is 1.273.

MI standardizes GSD to mean the geometric standard deviation of return calculated strictly from annual return figures. This is true regardless of whether a screen is held for monthly, quarterly, semiannual, or annual periods. A geometric standard deviation of monthly returns, quarterly returns, or any other periodic returns can be calculated; however for consistency, such geometric standard deviations of return should be identified as GSD-M, GSD-Q, etc. This is due to the fact that the math keeps these non-annual geometric standard deviations of return from being directly comparable to annual GSD.

5. GSD-M (and other period GSD-X's)

GSD-M is Geometric Standard Deviation of Monthly returns. BarryDTO in 56195, 1/23/00, proposed a method for using GSD-Ms to calculate GSD-A, the theoretical annual GSD implied by monthly returns. Regarding 14 year backtests he remarked, “The theoretical annual GSD is based on 168 monthly points; the actual annual GSD is based on only 14.”

Issaquah 56255 and klouche 56269 acknowledge that GSD-A is superior to GSD for 14 year backtests due to the relative lack of data points for GSD. If GSD-A is significantly higher than the annual GSD, then TMFElan in 56274 says to suspect excessive datamining for low GSD.

BarryDTO in 76636 compared GSD-A's calculated from annual, monthly, and daily data, and noted the similarity of GSD-A values calculated from daily and monthly data. RatioFool in 76668 suggested that monthly data may be sufficient to capture most of the volatility of screens with holding periods longer than a month.

Quoting BarryDTO in 56195:

Quote>
The basic formula is:

GSD-A = [GSD-M ^ (12^0.5)], or

GSD-A = GSD-M ^ 3.4641

where,

. All GSD values are expressed in multiplier form (GSD of 41.7% as normally presented is used in the formula above as 1.417)

. GSD-A is the GSD calculated based on the annual returns of the backtest (14 points if 1986-1999 is used)

. GSD-M is the GSD calculated based on the monthly returns of the backtest (168 points if 1986-1999 is used)

. Monthly returns are assumed to be log-normally distributed (i.e., the natural logarithms of the monthly returns are normally distributed)

Note that for quarterly screens, the (12^0.5) above would be replaced by (4^0.5 = 2.0). For semi-annually, it would be (2^0.5 = 1.4142).
<Unquote

SD is calculated using the “n - 1” method.

6. Sharpe Ratio

The Sharp Ratio compares the performance of a fund to a specified benchmark, first proposed in 1966 by William F. Sharpe, 1990 Nobel Laureate, Economics.

The Sharpe Ratio benchmark can be the return on a corner bank savings account, a stock, the SP500, etc.; however, the benchmark most often selected is a “riskless security” like T-bills. The MI standard benchmark for calculating Sharpe Ratio is the 1 year January T-bill rate according to the combination of Rayvt's 5331, polarfool's 6006, Rayvt's 6037, and Polarfool's 6039. 1-Year Treasury Constant Maturity Rate Averages of Business Days are available at http://www.stls.frb.org/fred/data/irates/gs1 for January [February, March, etc.].

6.1. Quoting William F. Sharpe of Stanford University (http://www.stanford.edu/~wfsharpe/) who explains his Sharpe Ratio at http://www.stanford.edu/~wfsharpe/art/sr/sr.htm :

Quote>
It is a simple matter to compute an ex post [historical] Sharpe Ratio using a spreadsheet program. The returns on a fund are listed in one column and those of the desired benchmark in the next column. The differences are computed in a third column. Standard functions are then utilized to compute the components of the ratio. For example, if the differential returns were in cells C1 through C60, a formula would provide the Sharpe Ratio using Microsoft's Excel spreadsheet program:

AVERAGE(C1:C60)/STDEV(C1:C60)

The historic Sharpe Ratio is closely related to the t-statistic for measuring the statistical significance of the mean differential return. The t-statistic will equal the Sharpe Ratio times the square root of T (the number of returns used for the calculation). If historic Sharpe Ratios for a set of funds are computed using the same number of observations, the Sharpe Ratios will thus be proportional to the t-statistics of the means.
<Unquote

In accordance with RatioFool 76580, strictly accurate differential return is di = (100 + ri)/(100 + bi) – 100, where ri = annual return for year i, and bi = annual return of benchmark for year i.
SD is calculated using the “n - 1” method.

For typical screens, expect Sharpe Ratios between 0.40 and 1.60.
Higher Sharpe Ratios are better. For comparison: the SP500 Sharpe Ratio for 1986 to 1998 is 0.94; and for 1986 to 1999 it is 1.00.

6.2. Quoting TMFElan who gave this convenient version of the Sharpe Ratio in his MICon 2000 handout (available at FoolishyFree's website http://tmf.e-possibilities.com/ ) :

Quote>
Given an investment with annual returns Ri, and corresponding risk-free returns RFi, we calculate the annual differential returns –

Di = Ri – RFi
The Sharpe Ratio is then –
Average(Di) / Standard Deviation(Di)
<Unquote

In accordance with RatioFool 76580, strictly accurate differential return is Di = (100 + Ri)/(100 + RFi) – 100, where Ri = annual return for year i, and RFi = annual return of benchmark for year i.
SD is calculated using the “n - 1” method.

For typical screens, expect Sharpe Ratios between 0.40 and 1.60.
Higher Sharpe Ratios are better. For comparison: the SP500 Sharpe Ratio for 1986 to 1998 is 0.94; and for 1986 to 1999 it is 1.00.

6.3. Sharpe Ratio - difficult to calculate?

Given the above, what could be simpler (in hindsight, of course)? While the Sharpe Ratio was first mentioned on the MI Board by Rayvt in 160, 5/23/97, subsequent spreadsheet posts indicated no consensus regarding _exactly_ how to calculate the Sharpe Ratio among even the most prominent posters. This despite numerous strict and correct clarifications by the very same posters until approximately January of 1999. The turning point came possibly due to the shear weight of rigorously calculated and posted Sharpe Ratios plus JJackel's creation of a Sharpe Ratio add in for Excel at about that time. (This is total guessing on my part for not finding the critical thread, if any, that obtained consensus.) JJackel Excel add in is available at http://www.geocities.com/WallStreet/District/2148/index.html .

O'Shaughnessy may be partly to blame for the prolonged confusion. In his What Works On Wall Street (second edition, 1997 acknowledgements), he describes an approximately correct method for calculating the Sharpe Ratio on page 31. Although O'Shaughnessy's method does lead to small errors, the magnitude of the errors is insignificant except to strict guardians of MI rigor (like TMFElan and certain others on the MI board) and this is not the main issue here. The main issue: O'Shaughnessy tabulated impossibly huge Sharpe Ratios in his book, clearly having multiplied the correct or approximately correct Sharpe Ratio figures by 100. For about 18 months, some on the MI board appeared to follow O'Shaughnessy's example (probably so MI backtest results could be directly compared to his), while others followed Sharpe's clear instructions to the letter. Either way applied consistently yields identical conclusions when comparing screen performance, but only one way is exactly as Sharpe instructed.

7. General forms

General forms of CAGR, GSD, GSD + x sigma, and Sharpe Ratio were developed by RatioFool in 77309 with additional comment to material above:

Quote>
Messages 73096 and 76573 contain formulae for calculating annualized values of geometric mean (CAGR), geometric standard deviation (GSD) and Sharpe Ratio (SR) based on periodic returns.

Restated, let:

m = number of months in each period
n = number of periods
ri = % return for period i
li = ln(1 + ri/100)
Ml = mean or average of li, for i = 1 to n
Sl = standard deviation of li, for i = 1 to n
bi = % benchmark or risk-free return for period i
di = ri – bi
Md = mean or average of di, for i = 1 to n
Sd = standard deviation of di, for i = 1 to n

Then the annualized values are:

%CAGR = [exp(Ml*12/m) - 1]*100
%GSD = {exp[Sl*sqrt(12/m)] - 1}*100
SR = Md*sqrt(12/m)/Sd

It follows from the above that

%(CAGR +/- x sigma) = {exp[Ml*12/m +/- x*Sl*sqrt(12/m)] - 1}*100

where +/- means either plus or minus, and x = 1, 2, or 3.

In each of the above, the period is not necessarily the holding period of a screen. It is the period for which the returns were calculated, e.g., one might use monthly returns for screens with holding periods longer than a month. As mentioned in message 76668, monthly returns may be sufficient to capture most of the volatility of screens with holding periods longer than a month.

CASM, the Compounded Average of Starting Months, does reflect reality for multiple portfolios with staggered starts, but there is no corresponding measure of volatility. I prefer to use the above formulae for annualized values of %CAGR, %GSD, etc., based on periodic returns for multiple starting months.

For example, quarterly returns for a screen with a quarterly holding period may be exported from Jamie Gritton's backtester. All of the available data can be assembled using three starting months, January, February and March, through 1999. Deleting the final zero returns exported for February and March, the above formulae can then be used with m = 3 and n = 3*n1 - 2, where n1 is the number of January returns.
<Unquote

In accordance with RatioFool 76580, strictly accurate differential return (as used for Sharpe Ratio calculation) is di = (100 + ri)/(100 + bi) – 100, where ri = annual return for year i, and bi = annual return of benchmark for year i.
SD is calculated using the “n - 1” method.

***************

Thanks in particular to TMFElan, WilliamLipp, sykeMOL, and RatioFool for encouragement and helping me understand this stuff enough to copy it out in the first place; and to Joncz and Oitsubob for their excellent Archive Tool at http://www.qis.net/~manymice/foolweb/archtool/archmain.html . Without the Archive Tool, assembling this paper would have been difficult indeed. The latest version MF search engine also helped excellently for this task.

-Dave Heinrich