He's predicting log-price levels, not returns (log-price differences). It is the returns that are random, not the prices. The price series themselves are highly autocorrelated so you could get similarly good-looking results with the naïve forecast function LogPrice(t+1) = LogPrice(t).
The real test would be to use the models to try to predict returns (by differencing the forecast log-prices). But the results would be disappointing, just as they would be if you had used, say, an ARIMA model to predict the prices. The returns, which are actually what you are interested in, as just unforecastable "residuals" as far as such price models are concerned.