Skip to main content

GARCH Volatility

Conditional volatility forecasting (GARCH / EGARCH / GJR-GARCH) for returns series


Overview

  • Model ID: garch-volatility
  • Framework: arch
  • Best for: Forecasting the conditional variance/volatility of a financial returns series
  • GPU required: No (CPU-only)
  • Specialist: forecasting

GARCH-family models forecast volatility (not direction). One parameterized model covers GARCH, EGARCH, GJR-GARCH (leverage/asymmetry), ARCH and FIGARCH, with Normal/Student-t/skew-t/GED innovations. Use it to drive vol-normalized targets, risk-based position sizing, and dynamic stop-loss / take-profit levels.


When to Use

Perfect for:

  • Volatility forecasting / risk modeling on a returns series
  • Vol-targeting and volatility-normalized signals
  • Capturing volatility clustering and (with GJR/EGARCH) the leverage effect

Not ideal for:

  • Forecasting the level/direction of a price (use a point forecaster)
  • Multivariate / cross-asset volatility (single series per model)

Quick Start

from colabhive import ColabHive
client = ColabHive(api_key="...", account_id="...")

dataset = client.datasets.upload(name="eurusd-returns", file="./returns.csv")

job = client.training.create(
model="garch-volatility",
dataset_id=dataset.id,
hyperparameters={
"target_column": "ret", # returns column
"vol_model": "GJR", # leverage effect
"dist": "t", # fat tails
"horizon": 10,
},
)
job.wait()

Dataset Format

A returns column (one row per period). A date column is optional (auto-detected for ordering):

ds,ret
2022-01-01,-0.0034
2022-01-02,0.0012
...

If you only have prices, set returns_from_prices: true and point target_column at the price column.

Requirements: ≥ 50 observations.


Hyperparameters

ParameterDefaultDescription
vol_model"GARCH"GARCH / EGARCH / GJR / ARCH / FIGARCH
mean_model"Constant"Constant / Zero / AR
dist"normal"normal / t / skewt / ged
p1ARCH (lagged variance) order
o0Asymmetry order (GJR/EGARCH)
q1GARCH (lagged conditional variance) order
horizon10Forecast horizon (steps)
returns_from_pricesfalseCompute returns from a price column
target_column""Returns/price column (empty = auto-detect)
date_column""Timestamp column (empty = auto-detect)

Inference

result = client.endpoints.infer(endpoint_id=ep, input_data={"horizon": 5})

Returns the volatility forecast (in original return units, de-scaled), plus a payload with conditional variance:

{
"model_type": "garch",
"horizon": 5,
"forecasts": [0.01546, 0.01547, 0.01548, 0.01550, 0.01551],
"payload": {
"volatility": [0.01546, "..."],
"variance": [0.000239, "..."],
"vol_model": "GJR", "scale": 100.0
}
}