Five Strategies, Five Lessons: A Look Back at What We’ve Built So Far
Part 16 is an overview of the strategies I've tested so far and the findings
This is part 16 of my series — Building & Scaling Algorithmic Trading Strategies
What started as a simple long/short trading strategy has very quickly turned into a surprisingly deep research project in just a few weeks. Over the past couple of weeks, I’ve built and tested five different models:
Dual momentum (my core long/short engine)
Volatility term-structure sleeve
FX momentum/carry sleeve
ETF mean reversion sleeve
Cross-asset defensive trend overlay
Each was meant to solve a different problem. Some worked extremely well, some failed loudly, and some surprised me in ways I didn’t expect.
This post is a quick overview of what I’ve learned so far — and what it means for the next evolution of the system.
1. Dual Momentum (the core workhorse)
This is the original engine: trend-following + velocity + acceleration, built on the equity index (QQQ/Nasdaq) with carefully managed leverage.
Results (rebased to $100k):
Sharpe: ~1.00
ROI: ~349%
Max DD: ~–25%
Takeaways
This is the most balanced sleeve I have — strong return, manageable risk, clean path.
It handles regime shifts better than anything else I’ve tested.
It stays as the core allocator going forward.
Future improvements
Add cross-asset regime context to sizing.
Continue Bayesian blending with other sleeves.
Keep it simple — this engine already works.
2. Volatility Sleeve (VIX term structure)
This one is the wildcard: trading the VIX term structure to exploit vol spikes and term-structure flips.
Results (rebased to $100k):
ROI: ~1033%
Sharpe: ~0.67
Max DD: ~–28%
Takeaways
The returns are enormous, but the path is wild.
Sharpe is lower because vol spikes are path-dependent — great when they come, painful in chop.
With zero risk caps, this sleeve will eventually blow up on a tail event.
Future improvements
Add strict risk budgets (max weight, vol targeting, regime filters).
Gate exposure on VIX regime transitions.
Treat this as an orthogonal alpha sleeve, not a core engine.
3. FX Momentum/Carry Sleeve
I really wanted this to work as a low-correlation alpha sleeve using EUR/USD, GBP/USD, USD/JPY, and EUR/JPY. It didn’t.
Results (rebased to $100k):
Sharpe: ~–0.34
ROI: ~–12%
Max DD: ~–20%
Takeaways
The signals were too weak (daily momentum + carry is noisy).
Turnover and costs eat whatever edge might exist.
Even after multiple filters, stricter thresholds, regime gates, and pair reductions, Sharpe stayed negative.
Future improvements
Park it for now.
If I revisit FX:
try pure carry with big regime filters,
or intraday mean reversion with proper stop systems,
or build FX spreads instead of outright pairs.
For now, retired.
4. ETF Mean Reversion Sleeve
This was meant to capture the chop — short-horizon mean reversion on SPY/QQQ/IWM/TLT/GLD.
Results (rebased to $100k):
Sharpe: ~–0.27
ROI: ~–12%
Max DD: ~–18%
Across multiple experiments:
z-score triggers
Bollinger bands
tighter thresholds
regime gates
turnover caps
smaller universes
higher and lower risk budgets
…Sharpe hovered between 0 and negative.
Takeaways
Daily ETF mean reversion (this version) does not produce tradable edge.
Chop is a brutal regime to trade without intraday data or microstructure filters.
Path dependency + costs + sideways noise = dead strategy.
Future improvements
Don’t force it.
If revisited: try intraday mean-reversion or pair-reversion on spreads.
For now: retired.
5. Cross-Asset Defensive Overlay (Trend + VIX Gate)
This one was a pleasant surprise.
A simple 10/80 trend rule across SPY, IWM, TLT, and GLD — vol targeting, caps, and a VIX gate — actually produced something useful.
Best static config:
Sharpe: ~0.84–0.88
ROI: ~48–50%
Max DD: ~–10%
Fast = 10, slow = 80, target_vol 8%, max_weight 25%, gross_cap 0.6
I also built a Bayesian selector to pick configs based on VIX regime, with simple features (VIX z, returns, volatility, trend slopes, drawdown). Results were slightly lower Sharpe (~0.66) but still positive and robust.
Takeaways
This is a viable defensive sleeve with low max drawdown.
It’s orthogonal to the dual momentum engine.
It plays well as a risk-dampening layer in certain regimes.
Future improvements
Improve regime detection.
Possibly blend the full-period best config with the selector’s regime-based picks.
Keep it small but meaningful in the allocator.
Big Picture: What’s Working vs. Not Working
Here’s the summary that matters:
Working (Keep, Improve, Expand)
1. Dual Momentum (core engine)
Best balance of return and risk.
2. Cross-Asset Defensive Overlay
Good Sharpe, low drawdown, complements the core.
3. Vol Sleeve (with guardrails!)
Huge upside, but must be tightly capped and regime-gated.
Not Working (Retire or Rebuild)
4. FX Momentum/Carry
5. ETF Mean Reversion
Both have:
negative Sharpe
negative ROI
meaningful drawdowns
no clear path to a simple fix
These go to the archive until I have a better structural idea.
Lessons Learned So Far
1. Trend + risk caps = robust.
Every robust sleeve so far is trend-based with some form of volatility targeting or regime gating.
2. Volatility alpha works (but only with strict constraints).
The raw vol sleeve has insane returns but nasty left tails. It must be treated like nitroglycerin.
3. Don’t force weak signals.
MR and FX look sensible on paper, but the implementations didn’t survive actual testing.
4. Regime awareness matters.
The Bayesian selector experiment reinforces that simple regime cues (VIX, realized vol, drawdown) add value.
5. The system is quietly becoming multi-dimensional.
We now have:
a core engine
an orthogonal vol sleeve
a defensive overlay
a regime selector
This is no longer a “bot.” It’s becoming a miniature allocator.
Where This Is All Going Next
A few natural next steps:
Add better risk caps to the vol sleeve: Vol-targeting and per-sleeve max drawdown budgets.
Combine dual + trend + constrained vol sleeves: Test blended portfolios and evaluate combined Sharpe/MaxDD.
Build synthetic data + real OOS validation to avoid overfitting and confirmation bias.
Expand trend/risk overlays modestly — e.g., include GLD/IEF, or test a cross-asset trend basket with broader diversification.
Archive MR/FX until a new spec emerges — i.e., don’t brute-force bad ideas.
Closing
This project started out as “just build a trading bot” to test new strategies. Now it’s turning into a modular, multi-sleeve allocator with:
trend as the core engine,
volatility as a convex wildcard,
a defensive trend overlay,
and a Bayesian selector to adapt between configs.
And that’s before even adding synthetic data or proper cross-asset modeling.
The main lesson so far has been the temptation to keep bad ideas — because it is so much work to try and test new ideas, and you feel a sense of disappointment when things don’t work out. So you hope one last tweak and maybe it’ll get there.
Nope. As Dr. McCoy would say, “It’s dead, Jim. You take the data and I’ll keep the wallet.”
The information presented in Math & Markets is not investment or financial advice and should not be construed as such.


