| --- |
| 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 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. |
|
|