VolaTTM / README.md
AurelPx's picture
Link source repository and research article
d469ad3 verified
|
Raw
History Blame Contribute Delete
8.2 kB
---
license: apache-2.0
library_name: granite-tsfm
pipeline_tag: time-series-forecasting
base_model: ibm-granite/granite-timeseries-ttm-r2
tags:
- time-series
- forecasting
- volatility
- quantitative-finance
- tinytimemixer
- granite-tsfm
- foundation-models
- arxiv:2401.03955
- arxiv:2602.19732
- arxiv:2607.05291
model-index:
- name: VolaTTM
results:
- task:
type: time-series-forecasting
name: Realized volatility forecasting
dataset:
name: VOLARE realized-variance archives
type: external
metrics:
- type: rmse
name: Macro RMSE at 1 session
value: 0.085053
- type: qlike
name: Macro QLIKE at 1 session
value: 0.214835
- type: rmse
name: Macro RMSE at 5 sessions
value: 0.099955
- type: qlike
name: Macro QLIKE at 5 sessions
value: 0.310544
- type: rmse
name: Macro RMSE at 22 sessions
value: 0.102618
- type: qlike
name: Macro QLIKE at 22 sessions
value: 0.346820
---
# VolaTTM
![VolaTTM](volattm-hero.png)
VolaTTM is a compact time series foundation model adapted for cross-asset
realized-volatility forecasting. It is a single fine-tuned IBM Granite Tiny Time
Mixer R2.1 model. It is not an ensemble and does not use a mixture-of-experts
architecture.
Resources: [source and audit](https://github.com/Aurelien7877/volattm) and
[public research article](https://huggingface.co/spaces/AurelPx/volattm-article).
## Model description
| Property | Value |
|---|---|
| Base model | [`ibm-granite/granite-timeseries-ttm-r2`](https://huggingface.co/ibm-granite/granite-timeseries-ttm-r2) |
| Base branch selected during training | `512-48-ft-l1-r2.1` |
| Parameters | approximately 805,000 |
| Input context | 512 observed trading sessions |
| Output used | first 22 forecast steps |
| Reported horizons | 1, 5, and 22 sessions |
| Target channel | log 5-minute realized variance |
| Input channels | 12 |
| Evaluation period | 2025-01-01 to 2026-06-30 |
The model enables TTM's forecast-channel-mixing decoder and predicts the target
channel from the twelve-channel end-of-day context.
## Data
Fine-tuning used official realized-variance archives from
[VOLARE](https://volare.unime.it/), downloaded on 2026-07-13. The files contain
158,887 daily observations for 40 equities, 5 foreign-exchange rates, and 5
futures through 2026-06-30. The prediction target is `rv5`, realized variance
computed from 5-minute returns.
The VOLARE data are not included in this model repository. Raw archives,
processed tables, row-level predictions, and data caches are intentionally
excluded. Users must obtain the archives from VOLARE and follow the provider's
usage terms. The data construction is described by
[Cipollini et al.](https://arxiv.org/abs/2602.19732).
The twelve input channels, in order, are:
```text
log_rv5
log_rv5_ss
log_rk
log_bv5
jump_share
downside_share
log_rq5
intraday_return
overnight_return
log_range
log_volume
log_trades
```
All channels are observable after the forecast-origin session closes. This is
an end-of-day model and should not be interpreted as an intraday nowcaster.
## Training
Eligible training targets end before 2024-01-01. Calendar year 2024 is used for
early stopping and seed selection. The final checkpoint is seed 17 at epoch 3.
The 2025 to June 2026 period is used only for evaluation of the released run.
The objective is a weighted combination of Smooth L1 loss and QLIKE in
log-variance space over the 22-step path. Training uses AdamW, OneCycle
scheduling, gradient clipping, mixed precision, asset-balanced sampling, and
three random seeds. The TTM configuration retains internal standard scaling.
## Evaluation results
HAR-RV and Log-HAR are direct horizon models re-estimated at every forecast
origin on a rolling 1,000-session window. Scores are macro averages across 50
assets. MAE and RMSE are measured on annualized volatility. QLIKE is measured on
variance. Lower values are better.
| Horizon | Model | MAE | RMSE | QLIKE |
|---:|---|---:|---:|---:|
| 1 | HAR-RV | 0.05164 | 0.08592 | 0.22188 |
| 1 | Log-HAR | **0.04958** | 0.08610 | 0.23887 |
| 1 | **VolaTTM** | 0.05192 | **0.08505** | **0.21483** |
| 5 | HAR-RV | 0.06134 | 0.10099 | 0.33504 |
| 5 | Log-HAR | **0.05832** | 0.10030 | 0.36285 |
| 5 | **VolaTTM** | 0.06173 | **0.09996** | **0.31054** |
| 22 | HAR-RV | 0.06686 | 0.10678 | 0.39199 |
| 22 | Log-HAR | **0.06433** | 0.10644 | 0.43810 |
| 22 | **VolaTTM** | 0.06466 | **0.10262** | **0.34682** |
VolaTTM improves macro RMSE and QLIKE at all three horizons. It does not improve
MAE relative to Log-HAR. Against Log-HAR, VolaTTM has lower QLIKE on 50 of 50
assets at one session, 49 of 50 at five sessions, and 47 of 50 at 22 sessions.
## Loading the checkpoint
Install the same major model implementation used for training:
```bash
pip install "granite-tsfm==0.3.6" "torch>=2.10,<2.11"
```
```python
import torch
from tsfm_public.models.tinytimemixer import TinyTimeMixerForPrediction
model = TinyTimeMixerForPrediction.from_pretrained("AurelPx/VolaTTM")
model.eval()
# Shape: batch, 512 sessions, 12 channels in the documented order.
past_values = torch.as_tensor(features, dtype=torch.float32)
freq_token = torch.full((past_values.shape[0],), 8, dtype=torch.long)
with torch.inference_mode():
log_variance_path = model(
past_values=past_values,
freq_token=freq_token,
return_loss=False,
).prediction_outputs[..., 0]
annualized_volatility = torch.sqrt(252.0 * torch.exp(log_variance_path))
forecasts = annualized_volatility[:, [0, 4, 21]]
```
`features` must be reconstructed with the transformations documented in the
[source repository](https://github.com/Aurelien7877/volattm). A different channel
order or target scale is not compatible with this checkpoint.
## Intended use
The model is intended for research on end-of-day volatility forecasting,
time-series foundation-model adaptation, and econometric benchmarking. It is
not designed for order execution, automated risk limits, or investment advice.
## Limitations
- The test period is isolated from checkpoint selection, but it is not a fully
project-blind holdout. Earlier proxy-based experiments had identified 2026 as
a difficult regime before this model was trained.
- The fixed VOLARE universe can contain selection and survivorship effects.
- Trading calendars differ across asset classes.
- Diebold-Mariano p-values are not corrected for multiple testing.
- Forecast accuracy has not been translated into a transaction-cost-aware
strategy or economic utility result.
- Future data may differ materially from the evaluation period.
The full protocol and leakage assessment are documented in the
[audit](https://github.com/Aurelien7877/volattm/blob/main/AUDIT.md).
## Base-model and data attribution
VolaTTM is an independent research fine-tune and is not an IBM product. The
base TTM checkpoint is released by IBM under Apache 2.0. The IBM model card lists
the base pretraining sources and does not list VOLARE.
Please cite the original model and data work when using this checkpoint:
```bibtex
@inproceedings{ekambaram2024tinytimemixers,
title = {Tiny Time Mixers: Fast Pre-trained Models for Enhanced Zero/Few-Shot Forecasting of Multivariate Time Series},
author = {Ekambaram, Vijay and Jati, Arindam and Dayama, Pankaj and Mukherjee, Sumanta and Nguyen, Nam H. and Gifford, Wesley M. and Reddy, Chandra and Kalagnanam, Jayant},
booktitle = {Advances in Neural Information Processing Systems},
year = {2024}
}
@article{cipollini2026volare,
title = {VOLatility Archive for Realized Estimates},
author = {Cipollini, Fabrizio and Cruciani, Giulia and Gallo, Giampiero M. and Insana, Alessandra and Otranto, Edoardo and Spagnolo, Fabio},
journal = {arXiv preprint arXiv:2602.19732},
year = {2026}
}
```
## License
The fine-tuned weights and project code are released under Apache 2.0. VOLARE
data are not redistributed and remain subject to the source provider's terms.