VolGuard Volatility Risk Manager
- Utilities
- Version: 1.0
- Activations: 20
Almost everything sold for MetaTrader predicts direction. I tested whether that is possible, on thirteen years of EURUSD and gold, with walk-forward validation and a control run on randomly shuffled labels.
Direction came out between 48 and 51 percent. On gold the same models scored 53.4 percent on the shuffled labels - higher than on the real data. That is what an over-fitted system looks like from the inside, and it is why a backtest curve is not evidence.
The size of tomorrow's move is a different question, and it answers. VolGuard is built on that answer and on nothing else.
WHAT IT DOES
Every day, when the daily bar closes, VolGuard forecasts how far the market will travel tomorrow and turns that forecast into one number: the factor your position size should be multiplied by.
A day predicted to move twice as far as usual gets half the size, so the money at risk stays where you put it instead of quietly doubling. A calm day gets a little more. Above a ceiling you choose, it says do not trade at all, because a token position in a violent session is still a position in a violent session.
The multiplier is clamped at both ends on purpose. Unclamped, a very calm forecast hands out five times leverage, and the day a calm forecast is wrong is exactly the day that matters.
THE PANEL
State, in one word: NORMAL, REDUCED, BLOCKED or WARMUP. Then the forecast range for tomorrow in the symbol's own price units, the typical range it is being measured against, the ratio between them, and the lot factor.
It is drawn large enough to read from across the room, and it scales.
HOW YOUR EA READS IT
The decision is published as a terminal global variable, so anything running on your platform can use it without being modified to know about VolGuard:
double VolGuardMultiplier(const string symbol)
{
const string name = "VolGuard_" + symbol + "_mult";
if(!GlobalVariableCheck(name))
return(1.0);
return(GlobalVariableGet(name));
}
lots = lots * VolGuardMultiplier(_Symbol);
if(lots <= 0.0) return;
If VolGuard is not running, the function returns 1.0 and your sizing is untouched. Zero means BLOCKED. VolGuard_<symbol>_state and VolGuard_<symbol>_ratio are published alongside it.
If you trade by hand, read the lot factor off the panel and multiply.
WHAT WAS MEASURED
Out-of-sample from September 2022 to August 2026, on data never used to build anything. The model is refitted every 21 days and every day is scored by a model that has not seen it, which is what the product actually does rather than what a backtest can be made to say.
Gold, 1031 days: rank correlation between forecast and outcome +0.599. The obvious benchmark - use today's range as tomorrow's forecast - scores +0.450. R squared on the log range +0.411.
EURUSD, 1039 days: +0.511, against +0.403 for the same benchmark.
The number that matters in practice: on gold, the third of days the model called violent went on to move 2.07 times as far as the third it called quiet. On EURUSD, 1.75 times.
Every figure above is a relative range, that is range divided by price. Gold went from 1700 to 4300 across that window, so absolute ranges rise on price level alone; in absolute units the same test reports 4.35 times and it is inflated. The honest number is the one printed here.
WHAT IS INSIDE
A ridge regression. Twelve features, thirteen coefficients, solved in closed form.
Gradient boosting and neural networks were both tried and both lost, on both symbols - gold scored +0.683 for the linear model against +0.639 and +0.653 for the other two. Volatility in log space is very nearly linear, and the complicated models spend their capacity fitting noise.
So there is no ONNX file, no binary resource, no downloaded weights, nothing to fail to load and nothing that can go stale on a shelf.
IT LEARNS YOUR SYMBOL AND YOUR BROKER
There are no coefficients shipped inside this product. On start-up VolGuard fits the model on the daily history of the chart it is attached to, from your broker's own feed, and refits every 21 days as it runs.
That period is not decoration. A model fitted once and left alone scored +0.325 where the same model refitted as it walked forward scored +0.683. Volatility regimes move, and a frozen model stops working without ever announcing it.
WHAT IT WILL NOT DO
It will not tell you where the market is going, because that was measured and it cannot be done. There is no grid, no martingale, no averaging down, no promise of a return.
It does not open positions. By default it does not close them either - blocking sets the multiplier to zero and tells you, and closing open trades when blocked is a setting you switch on deliberately, because no tool should close someone else's positions without being asked.
It needs at least 300 daily bars on the symbol, and 1500 or more is better.
SETTINGS
Daily bars used to fit, ridge regularisation, refit interval. Smallest and largest lot multiplier, the ratio at which trading is blocked, and whether blocking is enabled at all. Whether blocked days close open positions, and whether that is restricted to one magic number. Panel position and scale.
The defaults are the configuration that was validated.
WORKS WITH
Any symbol with daily history, any timeframe chart, hedging and netting accounts, and any EA you can add one line to.
