Strategy Stress Testing à la Monaco

After a short, admittedly rather superfluous, historical digression, this post will introduce Monte Carlo Analysis. What is Monte Carlo Analysis? Why is such analysis useful if not prerequisite for a strategy trader? What does it supplement to customary backtest information? By exploring the darker corners of a strategy the objective of this post is revealing real risk.

Crunching numbers in a monastery

During the first half of the 1600s a French monk, Marin Mersenne, had many acquaintances in the scientific world. Mersenne studied (and taught) theology, philosophy, mathematics and music. He communicated extensively with other scholars like Descartes, Pascal, Huygens and Galilei.

In spite of being a theologian and philosopher primarily, Mersenne’s name is associated with prime numbers that compound to Mn = 2n – 1. Such numbers are called Mersenne primes. The first four Mersenne primes are 3, 7, 31 and 127 and significantly a Mersenne prime (219937−1) is elementary for the most commonly used version of the Mersenne Twister.

The Mersenne Twister is a fast generator of high-quality pseudorandom integers. Recently AmiBroker’s already extensive feature set was expanded with a Mersenne Twister based Monte Carlo simulator which is capable of rendering 30+ million trades per second (!). More specific, the Monte Carlo simulator runs series of trade sequences based on backtest output and uses the high-quality Mersenne Twister for randomizing the order of the trades.

And so we finally arrive down the stairs of the famous "Casino de Monte-Carlo" in mondain Monaco ;-)

Why stress test strategies with Monte Carlo Analysis?

Before we start familiarizing ourselves with Monte Carlo Analysis let’s first pick a sample strategy for illustration purposes: SeekingAlpha's contributor Varan's Simple GMR. Each month all available trading capital is re-allocated to the top performing ETF out of a basket with IJJ, EFA, IEV, EPP, QQQ, EEM and TLT. See Varan's post for details. For establishing points of reference and collecting the trade data required for a Monte Carlo Analysis, a backtest is run starting at year-end 2003 and ending August 2015 using high-quality monthly total return data as provided by Norgate Premium Data (Alpha-tester program).

The equity curve as well as the distribution of the yearly returns obtained from the backtest look reasonable, even considering the 2008 drawdown when compared to the market in general. Volatility is not too high. Actually, the ratios for Sharpe, Sortino and Calmar are quite nice. The complete chart suite is available in the Google drive folder connected to this post (zooming required!).

Portfolio performance over 2004 - 2015

EAA Piloting Quarterly Sector Rotation With C(r)ash Protection

This post will cover a detailed look into quarterly sector investing using the EAA-model previously introduced (see here). For the sector investor Fidelity is the place to be. Currently Fidelity offers 46 sector mutual funds. Lots of these funds have at least 21 years of historical prices available. Those are the ones collected in the universe under investigation in this post to allow for comparability with prior backtests.

Fidelity Sector Select Universe

The above stated data history requirement is met by 34 from the 46 available sector funds. With these 34 funds not only 10 economical sectors plus precious metals are covered, but it also ensures for a well diversified basket to select investments from.

In the above table funds are sorted on sectors. Furthermore the performance of each fund over 1995 - 2014 is shown and broken down into the average yearly return (R), the fund's volatility (V) and the worst draw down (D) during those 20 years.

Sampling Universes with EAA

In this post several universes will be sampled using the Elastic Asset Allocation model. The universes under review are:
- CXO Advisory's 8 assets simple momentum universe
- Stefan Solomons 12 assets tactical allocation universe
-'s most popular ETFs
- CXO's on steroids: a 300% leveraged universe

The backtests are performed using monthly Yahoo! Finance total return data with EAA in Equal Weigted Hedged mode with monthly reforms. So each month assets are (re-)alloced according to the below simplified formula:
wi zi = ( ( 1 ci ) ri ) eps , wi sim zi = ((1-ci) cdot ri ) ^ eps,  if ri > 0 else wi = zi = 0
ETFs are extended using mutual fund data to attain a backtest period of 20 years (1995 - 2014)*.

CXO Advisory's 8 assets simple momentum universe

The line-up for CXO's is DBC, EEM, EFA, GLD, IWM, IYR, SPY and TLT. Since the liquidity of CXO's original IWB is way lower than that of its bigger sibling SPY, the latter was used. IEF is deployed as c(r)ash protection fund (CPF), but is kept outside the regular allocation basket. The maximum number of assets for capital allocation is limited to 3+1.

CXO: equity curve with key performance indicators

A Primer on Elastic Asset Allocation According to Keller & Butler

In a brand new 2014 paper "A Century of Generalized Momentum; From Flexible Asset Allocations (FAA) to Elastic Asset Allocation (EAA)" Wouter Keller and Adam Butler reveal a new methodology for rotational tactical asset allocation. While FAA (see paper or post) was build on the concept of generalized momentum by assigning ranks to returns, volatilities and correlations, the EAA concept adds a new level of generalization by moving from ordinal ranking to cardinal "elasticities". Admittedly the full EAA methodology can appear rather daunting, but with some simplifications the concept becomes quite accessible in the end. So hang in there, you'll soon be all right ;-)

EAA main formula

EAA controls the optimal portfolio asset allocation through an ingenious exponential scoring function of estimates for return (ri), volatility (vi) and index correlation (ci) as well as applying a portfolio concentration exponent: the non-negative elasticities wR, wV, wC respectively wS.
wi zi = ( ri wR ( 1 ci ) wC vi wV ) wS wi sim zi = { left ( { ri^wR cdot { (1-ci)^wC } } over { vi^wV } right ) } ^ wS , if ri > 0 else wi = zi = 0, for i = 1 ... N
where for each asset i in an N-sized portfolio:
- wi is the normalized proportional optimal portfolio weight, where the summation of weights is equal to 100%
- zi is the generalized momentum score
- ri is the average return (total or excess*) calculated over the last 1, 3, 6 and 12 months
- vi is the volatility of total return measured over the last 12 months
- ci is the correlation of total returns with the equal weighted universe index measured over the last 12 months.

The four geometrical weights wR, wV, wC and wS are called "elasticities" due to their relative impact on the three terms (ri, vi, ci) of the EAA scoring function. Remember from math class:
- x 0.5 = x x^0.5 = sqrt{ x }  and
- ( x 0.5 y ) 2 = x ( 0.5 2 ) y 2 = x y 2 ( x^0.5 cdot y )^2 = x^( 0.5 cdot 2 ) cdot y^2 = x cdot y^2 .
So when applying exponential values ranging between 1 to 0 the scoring effect is mitigated, while values ranging from 1 to 2 amplify the effect of the said term on the score. Note that with wS = 0 the EAA function will return zi = 1 for each and every asset, independent of ri, vi or ci (provided ri > 0). Put differently, with wS = 0 the asset allocation is equal weighted (apart from the safety net offered by a cash proxy fund, see below).

Different from FAA the proportionality with zi allows the weights wi to be not equal. Next to its exponential scoring function, EAA utilizes an optimal top quantile (TopN) of the portfolio size (N) and a C(r)ash Protection routine (CP) by allocating a proportional fraction of portfolio capital to a cash proxy fund (CPF) for every asset with non-positive return. In accordance with the concept of tactical asset allocation the portfolio is rebalanced at the end of each month.

During a stock market crash, like in 2008, the C(r)ash Protection kicks in. Note the unequal weights too (last column).

About time, leverage and a few grains of salt (Synthetic Prices Part II)

Just in time to be vintage 2014 I finally managed to write a long overdue blog post. Nevertheless thanks to a loyal crowd of readers this year has seen two, actually three, landmarks in the pageview stats. Once beyond the 100k milestone, the 200k mark was surpassed quite fast. A couple of weeks ago the near silent touch of a fabulous 250k followed: one quarter of a million pageviews! Wow! And right now at the cusp of 2015 the counter is steadily turning its way towards 300k. Thank you for all your interest, the rewarding exchange of ideas and your support during this remarkable year.

Regarding today's posting, it is a sequel to the Composing Synthetic Prices For Extended Historical ETF Data post back in May. Using "R", the language for statistical computing and graphics (get it here), thanks to Michael Kapler's excellent Systematic Investor Toolbox for R: SIT, it is possible to compose synthetic ETF's with extended historical data retrieved from suitable mutual funds on full auto while taking care of a seamless fit along the way. 

In this post, I will demonstrate how to perform the same task in AmiBroker with two extra benefits: the application of leverage and the option for inverse data treatment. Of course, an R-savvy coder could probably achieve the same in R, but not me.

The below example shows $TLT as synthetic symbol with data going back to 1986*. The $ETF is based on the price data for TLT (green section) available from Yahoo and extended with VUSTX data (red section) from the same source.

Engineering Returns With Multi Asset Universes

Before the engineering starts: Only four months ago, the pageview counter passed the 100,000 milestone. In all likelihood the 200,000 mark will be hit today. Thank you very much for your interest.

The series about Harvesting Momentum (see part I, part II and part III) largely covered pairwise strategies. Now it is time to investigate the performance of more diversified universes to generate returns.

A recent post on CSSA presented Momentum Score Matrices as a tool for predicting the profitability of a given asset universe. Assuming a random walk, the momentum profitability depends on the degree in dispersion of mean returns between the assets in a portfolio. David Varadi states: "A heterogeneous universe of assets such as one containing diverse asset classes will have different sources of returns- and hence greater dispersion- than a homogeneous universe such as sectors within a stock index."

Following a similar, but simplified approach to the cross-sectional dispersion of mean returns, the pairwise momentum score can be calculated as the population average of the squared difference between the momentum values of asset ABC against asset XYZ. Or in "R":

Dispersion (D) for $IEF - $TIP based on 3 month returns during 2001 - 2014. Average = 8

For an asset collection consisting of 14 assets, this approach results in the below matrix. The calculations can be performed using "R", Excel or AmiBroker. Examples of each are available on the Google Drive connected to this post. AmiBroker has the benefit of exporting the momentum matrix as html-file, which then can be imported into Excel for analysis (and prettifying).

Dispersion matix based on 3 month returns using synthetic $ETF's