Mean-reversion strategy explained in Ernest Chan's course offered on Quantra

In said course, we explored a mean-reversion trading strategy using the ETF’s GLD and GDX. We computed the hedge ratio and computed the spread of the hedge portfolio.

Entries and Exits were computed based on Bollinger bands. Given the mean reversion attempt of the spread, we naturally have two regimes: One for positive deviations and one for negative deviations (one could include a “neutral zone” as well).

What came out from the course, however, is that the strategy buys into a rising spread (ie when we expect the spread to mean revert) and sells into a negative spread. In other words, it behaves like a trend following model rather than a mean reversion model. Now of course one could try to “optimise” the look back period for the bollinger bands (which introduces another candidate for overfitting), but I find that behaviour counter-intuitive.

Should we not sell only if we are in a positive deviation regime and only buy in case of a negative regime.

Now, given the short lookback period (5 days) that was recommended, the strategy trades inconveniently often. Of course, neglecting transaction costs and assuming the future to be like the past our model was calibrated against, this results in great trading performance, however including realistic transaction costs (tangent: how to do that effectively and realistically?) our idealised performance is absolutely devastated and we would be better off sitting at home doing nothing, or at least not to try to trade.

What steps would you suggest to make this in-principle profitable strategy profitable in practice as well.

SpreadGLD-GDX_11zon

SpreadGLD-GDX-trading_11zon

  1. What brokers that covers the UK/US market, can you recommend ETF’s?

  2. @Support: Is there an option to increase the file size of uploaded pictures? 1kB is unrealistically small; I compressed the screenshots so I can attach anything at all, but they are effectively useless given their compressed file size.

Gentleman: It has been a pleasure taking the course and I absolutely devoured it, but I am left frustrated and discouraged.

Hi Benjamin,

Thank you for posting your query. Since it includes multiple aspects and detailed logs, we’re currently reviewing it and will get back to you with an update shortly.

Thank you for your patience.

Hi Benjamin,

Thank you for sharing such detailed feedback. We genuinely appreciate the effort you’ve put into revisiting the unit, testing variations, and thinking critically about whether the strategy would work in practice. We’re also glad to hear you enjoyed the course overall, even though we understand why the practical frictions (especially costs and frequency) can feel discouraging.

Below is a consolidated response to each of your points:

1) Mean reversion vs “trend-following” confusion (GLD–GDX spread logic)

In the notebook, the spread is defined as:

spread=GLD−β⋅GDX

and the Bollinger-band logic is mean-reverting:

  • Long spread when spread falls below the lower band (negative deviation → expected to rise back)
  • Short spread when spread rises above the upper band (positive deviation → expected to fall back)
  • Exit near the moving average (mid-band)

So conceptually, you’re correct: you long negative deviations and short positive deviations, and the strategy in the notebook follows that framework. The confusion often happens when one interprets “long/short” as a directional bet on one ETF rather than the hedged spread position.

2) High trade frequency (5-day lookback) and transaction costs

You’re absolutely right: short lookback windows can trigger frequent entries/exits, which can look great without costs but deteriorate sharply once realistic transaction costs and slippage are added.

How to incorporate costs effectively (practical guidance)

  • To make it realistic, you typically include:
  • Brokerage + fees (if applicable)
  • Bid-ask spread
  • Slippage/market impact (usually modeled as a bps-per-trade penalty)
  • A practical starting approximation is:
  • 5–10 bps per side for liquid ETFs (varies by broker/liquidity)
  • plus a cost (can be approximated as half- Brokerage + fees per trade)

Even with conservative assumptions, a high-frequency mean-reversion strategy can struggle unless you add friction-aware rules.

Steps to make the strategy more viable in practice

Here are the most common improvements used in live implementation:

A) Reduce trade frequency

  • Increase Bollinger lookback (e.g., 20–60 days)
  • Use wider bands (e.g., 2.5σ instead of 2σ)
  • Add a neutral zone (don’t trade unless spread is far enough from mean)

B) Improve signal quality (avoid noise trades)

  • Trade only when the spread deviation is extreme: e.g., Z-score > 2.5 for entry, < 0.5 for exit
  • Add a minimum holding period
  • Add a cooldown period after exit to avoid immediate re-entry

C) Add regime filters

  • Mean reversion breaks down in trending/structural regimes. You can filter with:
  • Volatility regime filter (avoid during high vol)
  • Trend filter (avoid trading mean reversion when both legs are in strong trends)

D) Re-estimate hedge ratio dynamically

Instead of a fixed β use rolling regression

E) Use better execution assumptions

In practice:

  • avoid trading at illiquid times
  • limit orders where appropriate

The key takeaway: the course strategy is intentionally simplified to teach the framework. A deployable version typically needs frequency control + realistic cost modeling + filters.

3) Brokers covering UK/US markets for ETF trading

We can’t recommend brokers as financial advice, but we can share common options learners often use for UK/US market access (based on availability and regulatory coverage). Some popular choices include:

  • Interactive Brokers (IBKR)
  • Saxo Markets
  • Charles Schwab International (availability varies)
  • TD Direct Investing / IG (availability and product access vary)

We suggest choosing based on:

  • product coverage (US-listed ETFs)
  • commission structure + FX conversion fees
  • API availability (if automation is your goal)
  • local regulatory requirements

4) Community image upload file size limit

Thank you for flagging this. We agree that 1 KB is far too small for useful screenshots. We’re currently looking into improving this on the platform.

Meanwhile, a good workaround is to upload the images to Google Drive and share the link here (with viewing permissions enabled) so we can view them properly without compression.

Hope this helps !