AQAI QuantAI research lab for systematic strategies

Automated analysis

This analysis was drafted by our research engine and has not been checked by a human editor. It may contain errors. It separates the paper’s own results from our tests, and any figures called ours come from our own backtest.

Our automated analysisOur backtest

S&P 500 variance bottoms after a half-point positive surprise

Frederiksen and Vilandt's threshold GARCH rejects the GJR zero minimum across five indices, while leaving implementation choices unresolved.

2026-10-30 · 7 min read · Volatility Targeting · US equity index ETFs

Reviewing: Smooth Threshold GARCH: Quasi Maximum Likelihood Estimation and Empirical Evidence · Jonas Fiedler Frederiksen and Frederik Vilandt · Read it on arxiv

Our backtest of this idea

Our automated quick test, not the paper's

ETF-Specific AR(1)-STGARCH Volatility Targeting with Nested Model Comparisons

Backtest period 2020-01-01 to 2024-07-01 · hypothetical, net of modelled costs

Why these figures are not the paper's (2)

Run on a different market than the paper

Use SPY, QQQ and DIA as tradeable US index exposures rather than holding stock indices. The conditional-variance mechanism depends on daily return paths and remains applicable to ETF returns, but ETF-specific effects and the narrower US universe mean this would not replicate the five-index empirical results.

The paper's own figures describe its universe and do not carry over to ours.

Our own audit found this run does not follow the paper faithfully (3)

  • The paper also estimates three restrictions on the mean: delta = 0, rho unrestricted; delta unrestricted, rho = 0; and delta = rho = 0.: Only the unrestricted intercept-plus-AR(1) mean variant is used for trading and its variance-model benchmarks. (invalidates: Replication of the paper's cross-mean-restriction empirical comparisons)
  • Paper Monte Carlo optimization bounds are simulation bounds, not a reported universal empirical calibration.: Adopt those numerical bounds as prespecified computational bounds for the ETF study. (invalidates: Unqualified transfer of the paper's empirical index estimates and rejection frequencies to this bounded rolling ETF experiment)
  • The paper's empirical application uses major stock indices and a full empirical sample rather than an executable ETF portfolio.: Use the task's three ETFs, trailing estimation, monthly refits, next-open volatility-targeted sleeves and prespecified costs. (invalidates: Direct replication of Tables 2–4 index estimates and significance results; direct replication of Table 1 Monte Carlo frequencies; any claim that ETF timing performance is a paper result)

These are our findings about our own implementation, not criticisms of the paper. Read the figures below as a description of what we ran.

Jan 2020Total 40.2%Jul 2024
Sharpe
0.91
Total Return
40.2%
Max Drawdown
-14.4%
CAGR
7.8%
Volatility
9.9%
Beta vs SPY
0.39
Trades
3,408

For the S&P 500, next-day variance reaches its minimum after a return roughly half a percentage point above its conditional mean. At a zero residual, the variance contribution is about 0.036 squared percentage points. At the minimum, it is zero.

Frederiksen and Vilandt's Smooth Threshold GARCH (STGARCH) allows that minimum of the news impact curve to shift away from zero. The alteration to the familiar model is small. Yesterday's shock enters variance through its squared distance from an estimated threshold γ. Above γ the slope is α1; below it the slope is α2, alongside the usual ω and βσ². With γ = 0, the specification becomes GJR. With α1 = α2, it becomes Engle's A-GARCH. Both models are nested restrictions that can be tested with standard t-tests.

The paper devotes more weight to theory. Its Gaussian quasi maximum likelihood estimator (QMLE) is consistent at the usual √n rate for all five variance parameters, including the threshold. For interior parameters, it is asymptotically normal. The result survives the jump in the second derivative in γ wherever γ equals a past return, when α1 ≠ α2. At α1 = 0, moves above the threshold add nothing and the true parameter lies on the boundary. The α1 t-statistic then converges to max{ξ,0}; the one-sided critical value remains 1.64.

Stationarity requires the same condition as GJR, with no dependence on γ. The authors write, "The introduction of the threshold parameter thus costs nothing in terms of the stationarity region." For the empirical work they fit an AR(1) mean and STGARCH variance to daily percent log returns. The sample covers five indices from 10 April 2007 to 14 August 2026 (S&P 500 n = 4865). They also fit three restricted mean variants.

Where is the S&P 500 minimum?

For the unrestricted S&P 500, the estimates are δ = 0.0287, ρ = −0.0573, ω = 0.0032, α1 = 0.0829, α2 = 0.1440, γ = 0.5028 (s.e. 0.1278, τ = 3.93), β = 0.8408. The threshold refers to the residual ε, measured in percentage points above the AR(1) prediction. After yesterday's +1% return, today's predicted mean is 0.0287 − 0.0573 ≈ −0.03. A 1% return today therefore produces a residual of about 1.03.

The location and the curvatures do different jobs. γ fixes the bottom of the curve; α1 and α2 govern how quickly variance rises on each side. A zero residual is 0.5028 below the threshold, on the steeper branch. Its contribution to next-day variance is 0.1440 × 0.5028², or about 0.036 squared percentage points. GJR assigns no contribution to a zero shock.

Across indices and mean specifications, γ̂ ranges from 0.32 to 0.62 and the τ statistics range from 2.57 to 4.47. The Swiss MI with δ = 0 supplies the weakest result: τ = 2.57 and p = 0.010. The authors describe the finding as "Markets are thus calmest when returns are about half a percent larger than their conditional mean."

A shifted minimum carries the S&P 500 result

GJR is rejected throughout. A-GARCH fares differently across markets. The equal-slopes restriction is rejected for the FTSE 100 (κ 4.59 to 4.63), EURO STOXX 50 (3.20 to 3.32) and Nikkei 225 (2.21 to 2.36). It survives for the S&P 500 (1.13 to 1.53) and Swiss MI (0.72 to 0.99).

In the unrestricted S&P 500 model, the point estimate of α2 − α1 is 0.061, with κ = 1.13. The US index's in-sample support for STGARCH thus comes from moving the minimum. The equal-slopes test cannot reject at κ 1.13 to 1.53. For the FTSE 100 and EURO STOXX 50, the fitted shape differs: α̂1 is at most 0.018, leaving the right branch nearly flat and the left branch steep.

These tests concern fitted parameters. The authors use the rejections to conclude that STGARCH improves upon GJR and A-GARCH. We did not find a comparison of likelihoods or information criteria against GJR or A-GARCH, or an out-of-sample forecast evaluation.

A significant γ leaves that question open.

Choices the implementer still has to make

The variance backcast uses an exponentially weighted average of the first 75 squared observations, with decay 0.94, held fixed in θ. For simulations, the authors use L-BFGS-B and the analytical score. They do not identify the optimisation algorithm used in the application. Inference relies on a sandwich covariance; the application's Hessian comes from numerical differentiation of the analytical score. The simulation bounds are stated explicitly: ω in [0.001, 20], α1 in [0, 2], α2 in [0.001, 2], γ in [−5, 5], β in [0.001, 0.999].

Three decisions remain with the implementer, and a proof is absent. We did not find starting values or a differentiation step size. The application repeats only that α1 has a zero lower bound, "as in Section 5". We therefore chose to carry over the remaining simulation bounds. The authors also explicitly omit the proof of consistency for the sandwich estimator, describing it as "standard, but lengthy".

They flag the larger theoretical gap themselves. Their results cover the zero-mean model, whereas the headline specification uses an AR(1) mean. They conjecture that the results extend to it and describe that extension as "far from trivial." The reported zero-mean rows fall within the theory and hold up empirically. For the S&P 500 with δ = ρ = 0, γ̂ = 0.51 and τ = 4.06; the α1 statistic is 1.69.

The S&P 500's t of 1.67 meets a conservative boundary test

For the S&P 500, t lies between 1.67 and 1.76, rejecting α1 = 0 against the critical value of 1.64. The Nikkei 225 also rejects, at 3.19 to 3.25. Simulations show slow convergence of the boundary test. When α1 is truly zero and n = 5000, rejection occurs 3.0% of the time with normal innovations and 1.7% with scaled t5. Even at n = 200000, the rates reach only 4.6% and 2.7%. At n = 5000, the estimate lands exactly on zero in 57.4% of t5 replications, compared with the limiting 50%.

This under-rejection protects the S&P result from size inflation. A marginal rejection remains a rejection. The concern falls on the three non-rejections, whose t statistics are at most 1.07. A flat right branch is plausible for the FTSE 100 and EURO STOXX 50, with α̂1 at most 0.018. The Swiss α̂1 ranges from 0.050 to 0.061, comparable to the Nikkei estimate but noisy. A test that under-rejects at α1 = 0 will miss small positive α1 as well, so those non-rejections cannot establish a flat branch.

The GJR test behaves more reassuringly at the boundary. In the boundary simulations, η, the correlation between the γ and α1 estimators, is near 0.17 and 0.12. The GJR test's asymptotic sizes are 4.8% and 4.9%. At n = 5000, simulated rejection rates are 4.8% (normal) and 6.3% (t5). Fat tails cause more trouble for the interior α1 test: skewness is −0.69 and rejection reaches 8.2% at n = 5000. That rate declines to 6.2% at n = 20000 and 5.3% at 50000.

Our SPY, QQQ and DIA adaptation

We could not trade the paper's indices. Instead, we adapted the model to SPY, QQQ and DIA, using three equal sleeves with independent financing.

At every month-end, each sleeve refits AR(1)-STGARCH through bounded L-BFGS-B QMLE on a trailing five-year window. We use the paper's backcast and the simulation bounds given above. Exposure is min(1, 10% / forecast annualised volatility), with execution at the next open. We charge commissions of $0.004 a share, with a $1 minimum and a cap of 1% of trade value.

Our run returned 40.20% in total over 2020-01-01 to 2024-07-01. Sharpe was 0.91, Sortino was 1.21, and annualised volatility was 9.85%. The worst drawdown reached -14.42%, giving a Calmar of 0.54. Realised volatility of 9.85% falls just below the 10% target, consistent with a cap that often binds.

These returns come from US-only ETFs and say nothing about the paper's five-index estimates. The paper reports no trading performance of any kind, leaving no author-reported figure against which to compare ours. Our figures represent one automated pass and should be read only as an ETF sizing experiment. We also built GJR and A-GARCH sleeves with identical caps and targets. The reported figures belong solely to the STGARCH book, and we do not report the GJR sleeve here.

Two choices we made probably account for much of what the returns show. Five years contains roughly 1260 sessions, about a quarter of the paper's 4865. Scaling the S&P standard error of 0.1278 by √(4865/1260) yields about 0.25 on γ. An estimate near 0.5 would consequently be only about two standard errors from zero. Monthly refits will move the threshold around.

The 100% cap also binds whenever forecast volatility falls below 10%. When all three forecasts are under 10%, the models take identical positions. Any sizing differences must therefore arise on high-volatility days. One pass across four and a half years is a single draw, telling us more about our window length than about the threshold.

The S&P 500's in-sample evidence rests on the 0.5028 displacement of the minimum. To make that displacement worth trading, we would want an out-of-sample forecast-loss comparison with GJR on the same index. The paper does not perform that comparison. Our sizing run cannot substitute for it.

Our backtest stops at 2024-07-01, and everything after that date is deliberately left untouched so the same strategy can be checked out of sample later.

How our backtest worked

The steps the code we ran actually executed, from its strategy card. Ours, not the paper's — it is one automated implementation of the idea, not the authors' own.

Initialize three equal-capital, independent ETF/cash sleeves.
For each ETF and each variance model independently:
  Require complete trailing five-calendar-year price coverage and valid return lags.
  Until eligible and successfully fitted, hold cash.
  Compute x[t] = 100 * log(adjusted_close[t] / adjusted_close[t-1]).
  At the initial eligible close and each month-end close:
    Estimate preliminary intercept-plus-AR(1) OLS residuals.
    Fix h[0] using the first 75 residuals, weighted by 0.94^j.
    Jointly fit mean and variance parameters with bounded L-BFGS-B QMLE.
    Accept only successful, finite fits with positive finite filtered variances.
    On acceptance, reconstruct the window filter and replace its terminal state.
    On failure, retain the previous valid parameters and recursion state.
  After each observed close:
    epsilon[t] = x[t] - delta - rho*x[t-1]
    a = alpha_1 if epsilon[t] >= gamma else alpha_2
    h_next = omega + a*(epsilon[t]-gamma)^2 + beta*h[t]
    If valid: w = min(1, 0.10 / (sqrt(252*h_next)/100))
    Otherwise: target cash; never repair variance with an arbitrary floor.
  At the next observed adjusted open:
    Mark existing holdings before rebalancing.
    Execute the frozen target with nonnegative shares and sleeve cash.
    Skip fills without an observed open; actual holdings remain exposed.
Aggregate actual sleeve NAVs at adjusted closes, without capital transfers.
Mark the final observed close without hypothetical liquidation.

Fit GJR-GARCH with gamma = 0 and A-GARCH with alpha_1 = alpha_2; neither diagnostic significance nor comparative performance selects the trading model. Buy-and-hold purchases equal initial sleeves at the common history-eligible inception and does not rebalance. The specification solves self-financing quantities using its proportional cost input; reported metrics additionally reflect the platform’s recorded post-backtest commission recalculation.