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 !