Monthly Market Regime Report: A Template for Algo Traders
Monthly Market Regime Report: A Template for Algo Traders
Your strategy did not stop working. The market changed.
That is the explanation behind most equity curve blowups, and it is the one traders are slowest to accept. A trend-following system that printed money for six months suddenly gives it all back in three weeks. A mean reversion strategy that clipped consistent profits all through Q3 starts hemorrhaging the moment Q4 opens. The code is the same. The parameters are the same. The market is not.
This guide lays out a framework for a monthly market regime report — a structured analysis you can repeat every month to understand what the market is doing right now, which of your strategies should be running, and which should be sitting on the bench. We use this framework internally, and we are publishing it as a template so you can build your own.
What Is a Market Regime?
A market regime is the dominant behavioral pattern of an instrument over a given period. At the simplest level, every market is doing one of four things:
- Trending — price is moving directionally with persistence. Higher highs and higher lows, or the reverse. Pullbacks are shallow and short-lived.
- Ranging — price is oscillating between support and resistance. Breakouts fail. Mean reversion thrives.
- Volatile — large candles, wide ranges, unpredictable direction. Gaps, spikes, and whipsaws. Risk is elevated.
- Quiet — compressed ranges, low volume, narrow candles. Breakouts are building but have not fired yet. Spreads may widen during the quietest sessions.
Most instruments spend time in all four states throughout a year. The problem is that strategies are typically designed for one or two of them. A breakout system needs volatility expansion. A grid strategy needs a range. A trend follower needs, well, a trend. Running the wrong strategy in the wrong regime is not bad luck — it is a classification failure.
The purpose of a monthly regime report is to make that classification explicit rather than leaving it to gut feel.
How We Classify Regimes
No single indicator captures regime accurately. We combine several, each measuring a different dimension:
ADX (Average Directional Index) — the workhorse of trend strength measurement. ADX above 25 signals a meaningful trend. Above 40 is a strong trend. Below 20 means the market is directionless. We calculate ADX on the daily timeframe using a 14-period lookback.
ATR (Average True Range) — measures volatility in absolute terms. We track the 14-period daily ATR and compare it to its own 50-day moving average. When ATR is above its average, volatility is expanding. Below average means compression. The ratio (current ATR / 50-day average ATR) gives us a volatility multiplier we can track over time.
Bollinger Band Width — the distance between the upper and lower bands, normalized by the middle band. Narrow bandwidth means compression (a squeeze). Expanding bandwidth confirms a volatility breakout. We use 20-period, 2-standard-deviation bands on the daily chart.
VIX (for equity indices) — the implied volatility index for S&P 500 options. VIX below 15 is calm. Between 15 and 25 is normal. Above 25 is elevated fear. Above 35 is crisis territory. For DAX, the VSTOXX index serves the same purpose.
Combining Into a Regime Score — we assign each instrument a simple regime label based on a decision matrix:
| ADX | ATR vs Average | Regime Label |
|---|---|---|
| > 25 | > 1.0x | Trending + Volatile |
| > 25 | < 1.0x | Trending + Quiet |
| < 20 | > 1.0x | Ranging + Volatile |
| < 20 | < 1.0x | Ranging + Quiet |
| 20-25 | Any | Transitional |
This is deliberately simple. You do not need a machine learning model to classify regimes. You need a consistent framework you will actually use every month.
The Monthly Report Framework
Here is the template we follow. Each section takes 15-20 minutes if you have the data ready.
Forex Majors
For each of EURUSD, GBPUSD, and USDJPY, record:
- Regime classification using the matrix above
- Average daily range (in pips) for the month, compared to the prior 3-month average
- Trending vs ranging ratio — count the number of days ADX was above 25 versus below 20. Express as a ratio. A month with 15 trending days and 7 ranging days is strongly directional.
- Notable events — central bank decisions, NFP, CPI prints that caused regime shifts mid-month
Indices
For DAX, DOW, NAS100, and S&P 500, record:
- Regime classification
- Average daily range (in points)
- VIX / VSTOXX average for the month and the high/low extremes
- Trend persistence — how many consecutive days moved in the same direction (longest streak)
- Gap frequency — count of opening gaps larger than 0.3% of the previous close. High gap frequency indicates overnight risk and favors strategies that close before the session end.
What Worked
Based on the regime data, identify which strategy archetypes performed well:
- Trend following thrives when ADX is above 25 and ATR is expanding
- Mean reversion thrives when ADX is below 20 and ATR is below average
- Breakout strategies work when Bollinger Band Width is at monthly lows (squeeze) followed by expansion
- Scalping / high-frequency strategies perform best in volatile but directionless markets
What Did Not Work
Equally important — name the strategies that struggled and explain why. If trend-following systems got chopped up, say so. If mean reversion got steamrolled by a persistent trend, document it. This section is where the real learning happens.
Example: January 2026 Analysis
Here is what a completed monthly report looks like. This is a fictional but realistic example to demonstrate the format.
Forex Majors — January 2026
EURUSD — Ranging + Quiet. ADX averaged 17.3 for the month. ATR (daily) was 62 pips versus a 3-month average of 78 pips. The pair spent most of January chopping between 1.0380 and 1.0480. Mean reversion strategies performed well. Trend followers were stopped out repeatedly on false breaks of this 100-pip range.
GBPUSD — Transitional, shifting to Trending in the final week. ADX started the month at 19 and climbed to 28 by January 27th after the Bank of England signaled a more hawkish stance than expected. ATR expanded from 71 pips to 104 pips in the last five sessions. Strategies that could detect the regime shift mid-month captured a clean 200+ pip sell-off.
USDJPY — Trending + Volatile. ADX averaged 31.2. ATR was 118 pips versus a 3-month average of 95 pips. The yen weakened consistently as the BOJ maintained its accommodative posture while US 10-year yields climbed above 4.6%. Trend followers had an excellent month. Mean reversion systems were punished — every “overextended” move just kept going.
Indices — January 2026
DAX — Strong trending behavior in the first two weeks (ADX peaked at 34) before settling into a tight range as earnings season created conflicting signals. ATR dropped 40% from week 2 to week 4. Traders who recognized the regime shift and switched from trend to mean reversion mid-month outperformed those running a single approach.
NAS100 — Volatile + Trending. NVDA earnings anticipation and AI sector rotation created persistent upside momentum. ADX hit 38. Daily ranges averaged 285 points versus a 3-month average of 210 points. Breakout strategies had their best month in quarters. Gap frequency was elevated at 14 gaps above 0.3%, making overnight holding risky for strategies without gap protection.
DOW — Ranging + Quiet. The most boring of the indices. ADX never broke above 22 all month. Daily range averaged 245 points versus a historical 310. Rotation between sectors kept the index flat while individual stocks moved. Index-level trend following was a grind. Scalpers did fine.
S&P 500 — Transitional. VIX averaged 16.8, spiking to 22.4 on January 15 around CPI before settling back. Not enough directional conviction for trend systems, not enough range compression for clean mean reversion. A difficult month for single-regime strategies.
What Worked in January
- Trend following on USDJPY and NAS100 — strong, persistent directional moves with above-average ATR
- Mean reversion on EURUSD and DOW — tight ranges with reliable support/resistance
- Breakout strategies on NAS100 — Bollinger squeeze in late December resolved into a clean expansion
What Did Not Work
- Trend following on EURUSD — ADX below 20 all month, no directional edge to capture
- Mean reversion on USDJPY — persistent trend made every “reversion” entry a losing trade
- Any single-strategy approach on DAX — required mid-month adaptation as the regime shifted from trending to ranging
Building Your Own Regime Dashboard
You do not need a Bloomberg terminal. A simple MQL5 script running on your VPS can calculate everything above automatically.
Here is the core logic for a regime classifier in MQL5:
// Regime classification - runs daily on timer
void ClassifyRegime(string symbol)
{
double adx[];
double atr[];
double atr_ma[];
// ADX 14-period on Daily
int adx_handle = iADX(symbol, PERIOD_D1, 14);
CopyBuffer(adx_handle, 0, 0, 1, adx);
// ATR 14-period on Daily
int atr_handle = iATR(symbol, PERIOD_D1, 14);
CopyBuffer(atr_handle, 0, 0, 50, atr);
// 50-day average of ATR
double atr_avg = 0;
for(int i = 0; i < 50; i++) atr_avg += atr[i];
atr_avg /= 50.0;
double atr_ratio = atr[0] / atr_avg;
string regime = "";
if(adx[0] > 25 && atr_ratio > 1.0) regime = "TRENDING_VOLATILE";
else if(adx[0] > 25 && atr_ratio <= 1.0) regime = "TRENDING_QUIET";
else if(adx[0] < 20 && atr_ratio > 1.0) regime = "RANGING_VOLATILE";
else if(adx[0] < 20 && atr_ratio <= 1.0) regime = "RANGING_QUIET";
else regime = "TRANSITIONAL";
// Log or send alert
Print(symbol, " Regime: ", regime,
" | ADX: ", DoubleToString(adx[0], 1),
" | ATR Ratio: ", DoubleToString(atr_ratio, 2));
}
Set this to run once per day at your preferred time (we use the daily bar close). Log the output to a file, and you have a rolling regime history for every instrument you trade.
For alerts, add a simple state-change detector — if today’s regime differs from yesterday’s, push a notification to your phone or send an email. Regime changes are where the real action is.
Practical Takeaways for Algo Traders
Knowing the regime is only useful if you act on it. Here is how:
Adjust parameters dynamically. If ATR has expanded 30% above its average, your fixed-pip stop loss is now too tight. Scale stops and take-profits with ATR. A 50-pip stop in a 60-pip-ATR environment is reasonable. The same 50-pip stop in a 120-pip-ATR environment is a coin flip.
Modulate position size. Higher ATR means higher risk per trade at the same stop distance. If you normally risk 1% per trade with a 50-pip stop, and ATR doubles to 100 pips, either widen your stop (and halve position size to maintain 1% risk) or accept a tighter stop with worse R:R. Never increase position size when volatility increases. Do the opposite.
Turn strategies on and off. This is the most underused lever in algo trading. If your trend follower has a negative expectancy in ranging markets (and it will — check your backtest by regime), turn it off when ADX drops below 20. Run your mean reversion system instead. This is not curve-fitting — it is matching your tool to the job.
Watch for transitions. The most profitable moments are regime changes. A Bollinger squeeze breaking out, ADX crossing above 25 from below, VIX spiking from calm to elevated. If you can detect these shifts early, you can be positioned before the crowd recognizes the new environment.
Why This Matters for VPS Users
A regime dashboard is only useful if it runs continuously. Checking indicators manually on weekends is already stale data by Monday’s open.
On a trading VPS, your regime classifier runs 24/5. It catches the ADX crossover at 3 AM when you are asleep. It detects the ATR expansion during the Asian session that tells you the London open is going to be different today. It sends you an alert before you have even looked at a chart.
Regime-adaptive strategies — systems that adjust their own parameters or toggle sub-strategies based on current market conditions — are the next evolution of algo trading. They are also more demanding computationally. Running multiple indicator calculations across multiple instruments on multiple timeframes, logging results, checking state changes, and firing alerts takes resources. A home PC that goes to sleep, restarts for updates, or loses internet for an hour is not the platform for always-on market analysis.
This is exactly what a dedicated trading VPS is built for. Your regime detection runs alongside your execution, on the same low-latency connection to your broker, with 99.9% uptime. When the regime shifts at 4 AM and your system needs to adjust, the VPS is already on it.
Next Steps
This is the framework. Starting next month, we will publish an actual monthly regime report covering the major forex pairs and indices, using real data and real observations. Bookmark this page and check back at the start of each month.
In the meantime, deploy the MQL5 regime classifier on your VPS and start logging. Even one month of regime data will change how you think about your strategy’s performance — and give you a concrete reason to adjust rather than abandon a system during its inevitable rough patches.
The market is always telling you what it is doing. The only question is whether you are listening.