← All projects

Personal time-series and machine-learning project · 2026

Bitcoin Volatility Forecasting: GARCH, XGBoost, LSTM & GRU

A validation-led study comparing econometric, machine-learning, neural-network and hybrid models for daily Bitcoin variance forecasting from 2015 to 2026.

PythonARMA-GARCHXGBoostLSTMGRURolling validationForecast evaluation
BTC-USD / 2015-2026VALIDATION SELECTED
GARCH-LSTM validation QLIKE1.9425Lowest pre-test loss
Test QLIKE1.7304
Test RMSE13.58
Daily returns4,239
Robustness5 seeds · 3 folds
GARCH · 82%
LSTM · 18%
p = .0026 Hybrid vs standalone GARCHSmall neural gain, strong econometric core

Central question

Do machine-learning and hybrid models improve Bitcoin volatility forecasts beyond GARCH and simple benchmarks - and do any gains survive seed, rolling-window and untouched-test checks?

01

Project overview

This project builds a leakage-aware Bitcoin volatility forecasting pipeline using 4,239 daily BTC-USD returns from 2 January 2015 to 10 August 2026. The primary target is next-day squared return, with Parkinson variance used as a secondary robustness proxy.

The study compares historical variance, a 30-day rolling estimator, EWMA, sGARCH, XGBoost, LSTM, GRU and two GARCH-neural combinations. Model choice is made on the chronological validation period; the final test period is reserved for one unbiased performance assessment.

4,239daily returns

2 January 2015 - 10 August 2026

1.9425validation QLIKE

Selected GARCH-LSTM combination

1.7304test QLIKE

Untouched 637-day test period

82 : 18blend weights

GARCH : LSTM, chosen on validation data

Evidence summary

A strong GARCH core with a small neural correction

The report separates model selection from final testing, then checks neural stability across random seeds and rolling windows before interpreting the 30-day risk path.

01 · Data and volatility signature

Bitcoin returns were stationary, heavy-tailed and strongly clustered

The price level trended over time, while transformed returns provided the stationary series needed for volatility modelling.
Three aligned charts showing daily Bitcoin returns, absolute returns and squared returns from 2015 to 2026, with clear volatility clustering and a large March 2020 shock.
Chronological train, validation and test design
SampleStartEndObservations
Training2 Jan 201515 Feb 20232,967
Validation16 Feb 202311 Nov 2024635
Test12 Nov 202410 Aug 2026637

What it showsThe analysis used 4,239 daily returns from January 2015 to August 2026. Returns had −0.74 skewness, 12.16 excess kurtosis and a −46.47% minimum on 12 March 2020. Absolute and squared returns formed visible high- and low-volatility regimes.

Why it mattersStrong squared-return autocorrelation and an ARCH-LM p-value below .001 establish time-varying conditional variance. A constant-variance model would miss the persistence visible after large shocks.

LimitationSquared return is an unbiased yet extremely noisy volatility proxy. One exceptional observation can dominate its scale, so QLIKE and a secondary Parkinson proxy are used alongside ordinary error measures.

02 · Econometric foundation

sGARCH captured the variance dynamics, with important boundary warnings

The mean and variance equations were selected separately, using training fit for ARMA and validation QLIKE for GARCH.
Leading GARCH candidates on the validation period
CandidateQLIKERMSEMAECorrelation
sGARCH(1,1) · skewed t1.9532613.9448.456.144
sGARCH(1,1) · Student t1.9532913.9438.449.144
APARCH(1,1) · Student t1.9624814.0178.443.127
GJR-GARCH(1,1) · Student t1.9637014.0258.459.128
sGARCH(1,1) · normal1.9764714.1109.366.152
Residual diagnostic panel for the selected skewed-t sGARCH model, including standardised residuals, residual autocorrelation, squared-residual autocorrelation and a Q-Q plot.

What it showsARMA(0,1) removed the remaining linear return dependence. The skewed-t sGARCH(1,1) achieved validation QLIKE 1.95326, only 0.00003 below the symmetric Student-t version. Its alpha and beta estimates summed to approximately one.

Why it mattersSquared standardised residuals showed no remaining autocorrelation and the post-fit ARCH-LM p-value was .997. The variance equation therefore captured the main volatility clustering pattern.

LimitationStandardised residuals retained some serial correlation and the Q-Q plot still showed extreme tails. The skew parameter was insignificant, while near-unit persistence makes long-run variance and half-life estimates unstable.

03 · Neural stability

Early stopping controlled a visible training-validation gap

LSTM and GRU results were repeated across five seeds and three rolling validation windows rather than relying on one favourable run.
Side-by-side LSTM and GRU learning curves with falling training loss, flatter validation loss and best epochs marked at 26 and 25.
Repeated-seed and rolling-window QLIKE stability
Model5-seed validation5-seed testRolling meanRolling CV
Selected GARCH--1.95313.6%
GRU4.0503.3004.37224.4%
LSTM4.1233.3134.76623.9%
XGBoost--4.6679.6%

What it showsTraining Huber loss continued falling after validation loss had flattened. Across five seeds, mean test QLIKE was 3.300 for GRU and 3.313 for LSTM. Across three rolling windows, mean QLIKE rose to 4.372 and 4.766 respectively, versus 1.953 for GARCH.

Why it mattersThe seed runs show that the neural ranking was not driven by one random initialisation. The rolling windows reveal that the standalone networks were less stable across market regimes than the econometric model.

LimitationThe apparent training-versus-test RMSE gap is influenced by a much more volatile early training era. Cross-period loss levels should not be interpreted as a conventional random-split overfitting ratio.

04 · Validation-led selection

The neural model helped most when it remained a small part of the forecast

Combination weights were chosen only on validation QLIKE, preserving the test period for final assessment.
All-model validation comparison
ModelQLIKERMSEMAECorrelation
GARCH-LSTM · 82/181.9425213.7837.806.149
GARCH-GRU · 85/151.9459213.8067.926.149
Selected sGARCH1.9532613.9448.456.144
EWMA2.0026913.8407.600.125
30-day rolling variance2.0980013.9457.486.100
XGBoost4.4923714.6425.945.172
GRU4.6383714.5016.022.132
LSTM4.9519914.5205.923.129

What it showsAn 82% GARCH / 18% LSTM blend achieved the lowest validation QLIKE at 1.94252. The 85% GARCH / 15% GRU blend followed at 1.94592, while standalone GARCH scored 1.95326.

Why it mattersThe selected blend improved validation QLIKE by roughly 0.55% relative to GARCH. The small neural weight shows that the added value was a correction to the econometric forecast, not evidence that the network could replace it.

LimitationXGBoost, LSTM and GRU reported lower MAE while producing QLIKE above 4.49. Metric choice changes the apparent winner; QLIKE was prioritised for the positive, highly noisy variance target.

05 · Untouched test period

The selected hybrid retained its advantage without becoming a post-hoc winner

The 637-day test period was scored once after the GARCH-LSTM blend had been selected on validation data.
Observed squared Bitcoin returns and seven-day mean forecasts from the GARCH-LSTM and GARCH-GRU combinations, selected GARCH, EWMA and a 30-day rolling estimator over the test period.
Final squared-return test comparison
ModelQLIKERMSEMAECorrelation
GARCH-GRU · post-test numeric low1.7297413.5656.562.206
GARCH-LSTM · preselected1.7304313.5846.478.195
Selected sGARCH1.7612813.8057.098.191
EWMA1.7616313.6866.124.152
30-day rolling variance1.8382413.8756.050.102
XGBoost3.4396713.9864.753.362
GRU3.5144313.7454.734.341
LSTM3.8942414.0534.783.146

What it showsGARCH-LSTM achieved test QLIKE 1.73043, RMSE 13.584 and MAE 6.478. GARCH-GRU was numerically lower at 1.72974, while its Diebold-Mariano comparison with the selected model had p = .870.

Why it mattersThe selected hybrid significantly reduced QLIKE loss relative to standalone GARCH (p = .0026). The same ordering held against Parkinson variance, where GARCH-LSTM scored 0.5402 versus 0.5629 for GARCH.

LimitationThe improvement over EWMA was not significant (p = .195). Forecast curves captured changing regimes yet still smoothed over isolated squared-return spikes, a common limitation when the target is extremely noisy.

06 · Calibration and forecast comparison

Statistical tests support a qualified, not absolute, winner

Calibration regressions and Diebold-Mariano tests distinguish numerical rankings from meaningful forecast differences.
Mincer-Zarnowitz calibration checks
ModelInterceptSlopeJoint p-value5% decision
GARCH-LSTM1.095.665.178Do not reject
GARCH-GRU.918.677.092Do not reject
EWMA2.153.559.201Do not reject
Selected sGARCH1.279.549< .001Reject
Diebold-Mariano QLIKE tests against selected GARCH-LSTM
ComparatorDM statisticp-valueInterpretation
GARCH-GRU−0.164.870No significant difference
EWMA1.297.195No significant difference
Selected sGARCH3.027.0026Higher loss
LSTM3.333< .001Higher loss
XGBoost5.579< .001Higher loss
Historical variance9.589< .001Higher loss

What it showsThe Mincer-Zarnowitz joint test did not reject intercept zero and slope one for GARCH-LSTM (p = .178), GARCH-GRU (p = .092) or EWMA (p = .201). Standalone GARCH was rejected (p < .001).

Why it mattersQLIKE differences versus GARCH, standalone neural models and historical variance were statistically meaningful. The selected model was not distinguishable from GARCH-GRU or EWMA at 5%.

LimitationFailure to reject ideal calibration does not prove it. Squared-return measurement noise and a finite test period reduce the power of forecast-comparison tests.

07 · Thirty-day scenario

The refitted GARCH model projected rising conditional risk

The future chart is a variance-model scenario, not a Bitcoin price forecast or a trading recommendation.
Thirty-day sGARCH forecast of annualised Bitcoin volatility rising from about 32 percent to 54 percent between 11 August and 9 September 2026.
Selected points from the 30-day sGARCH scenario
Forecast dateVarianceDaily volatilityAnnualised volatility
11 Aug 20262.8701.69%32.37%
25 Aug 20265.3562.31%44.21%
9 Sep 20268.0192.83%54.10%

What it showsAnnualised conditional volatility rises from 32.4% on 11 August to 44.2% on 25 August and 54.1% on 9 September 2026. Daily conditional volatility rises from 1.69% to 2.83%.

Why it mattersThe path communicates the level and direction of model-implied uncertainty after the final observation. It is useful for risk scenarios, position limits and sensitivity analysis.

LimitationAlpha plus beta is approximately one, so shocks decay extremely slowly and the long-run variance is not stable. The rising curve is highly specification-sensitive and should not be treated as an investment signal.

02

Why a volatility model was required

Bitcoin prices were nonstationary, while daily returns were stationary under both ADF and KPSS evidence. Returns were heavy-tailed and negatively skewed: excess kurtosis was 12.16, the largest daily loss was −46.47%, and the Jarque-Bera test strongly rejected normality.

Raw returns showed limited serial dependence, while absolute and squared returns were strongly autocorrelated. The ARCH-LM test was also highly significant. Together, these results identify volatility clustering and justify modelling conditional variance rather than treating risk as constant through time.

  • Training: 2,967 observations ending 15 February 2023.
  • Validation: 635 observations from 16 February 2023 to 11 November 2024.
  • Test: 637 observations from 12 November 2024 to 10 August 2026.
  • All predictors were lagged or rolling features available before the forecast target.
03

Econometric foundation

ARMA(0,1) was selected for the conditional mean using the training-sample BIC. Its residual Ljung-Box p-values at lags 7, 14 and 30 were above 0.12, indicating that the short mean equation removed the remaining linear serial dependence adequately.

Among ARCH, sGARCH, GJR-GARCH, EGARCH and APARCH candidates, sGARCH(1,1) with skewed Student-t innovations achieved the lowest validation QLIKE at 1.95326. The Student-t alternative was virtually tied, and the skew parameter was not statistically significant, so the distributional distinction should not be overstated.

The selected variance model removed the remaining ARCH pattern: squared standardised-residual Ljung-Box p-values exceeded 0.86 and the 30-lag ARCH-LM p-value was 0.997. Some serial dependence remained in standardised residuals, while the Q-Q plot still showed extreme tails.

04

Machine learning and robustness checks

XGBoost, LSTM and GRU used lagged returns, absolute and squared returns, rolling moments, range-based volatility estimators, volume and cyclical calendar features. Standalone machine-learning models achieved lower MAE than GARCH, yet their QLIKE values were much worse. This distinction matters: MAE rewards smaller point errors, while QLIKE is more appropriate for noisy variance targets and penalises severely underestimated risk.

Repeated runs across five random seeds produced mean test QLIKE values of 3.300 for GRU and 3.313 for LSTM. Three rolling validation windows were less favourable: mean QLIKE was 1.953 for GARCH, compared with 4.372 for GRU, 4.667 for XGBoost and 4.766 for LSTM. The neural learning curves also showed widening training-validation gaps, making early stopping essential.

05

Selected model and untouched-test result

Validation weight searches selected an 82% GARCH / 18% LSTM combination with QLIKE 1.94252, narrowly ahead of the 85% GARCH / 15% GRU combination at 1.94592 and standalone GARCH at 1.95326. The modest neural weight is the substantive finding: machine learning added a small correction to a strong econometric core rather than replacing it.

On the untouched test period, the preselected GARCH-LSTM model achieved QLIKE 1.73043, RMSE 13.5836 and MAE 6.4778. GARCH-GRU posted a slightly lower test QLIKE of 1.72974, yet it was not selected after seeing the test data and the difference was not statistically significant (Diebold-Mariano p = 0.870).

Relative to GARCH-LSTM, QLIKE loss was significantly higher for standalone GARCH (p = 0.0026), LSTM, GRU, XGBoost, the 30-day rolling estimator and historical variance. The difference from EWMA was not significant (p = 0.195). A Mincer-Zarnowitz joint test did not reject ideal calibration for GARCH-LSTM (p = 0.178), although that result should not be read as proof of perfect calibration.

06

Thirty-day risk outlook and limitations

After refitting the selected sGARCH specification to the full sample, the model projected annualised volatility rising from 32.4% on 11 August 2026 to 54.1% on 9 September 2026. This is a conditional risk path rather than a Bitcoin price forecast.

The fitted GARCH coefficients sum to approximately one, indicating near-unit volatility persistence. That feature explains the slow decay of shocks and makes the long-horizon path highly sensitive to specification and recent observations. The reported long-run variance and half-life are therefore not economically stable, so the 30-day curve should be treated as a scenario generated by the fitted model, not a trading signal.

People behind the project

Project contributors

Project lead and quantitative analyst

Toni Cata

Next project

Multiple Imputation

View report