Multivariate Volatility Forecasting for Risk-Indifference Pricing


We explore multiple methods for forecasting multivariate volatility which is then used to determine risk indifference price for perp positions. While DCC-GARCH performs well in short-term forecast, GO-GARCH with reduced number of principal factors outperforms other models in predicting long term as it is more robust against noise. We then use the forecasted volatility to determine risk indifference price which captures the risk arising from long-short imbalance across multiple markets.

For detailed description of forecast models as well as some derivations, please refer to the full write-up here.


In our previous write-up Bandit Funding Rates, we explored a new mechanism design for setting funding rates on perp exchanges. However, we observed that funding rates would spike up unexpectedly during some simulation runs, which would not be ideal for traders. This in part can be due to the fact that the bandit framework tried to manage the default risk for the exchange solely by switching funding rates and did not consider charging spread (or equivalently, charging mark price different from the index).

In order to determine a fair price for each contract, we explore risk indifference pricing where the risk is defined as the possible loss the exchange is exposed to when traders are net profitable. We use entropic value-at-risk (EVaR) to quantify such risk given the state of the exchange (long and short open interests). Since net trader PnL is a function of the prices of the underlying assets, calculating entropic value-at-risk requires some estimate of the distribution of future returns on these assets. Below we explore multiple models for forecasting multivariate volatility and discuss how the forecasted covariance matrices can be used for indifference pricing.

Multivariate Volatility Forecasting Models

We aim to forecast the volatility of n \geq 50 crypto assets. Approaches such as stochastic volatility models or copulas seem too complex for such high dimensions. Alternatively, neural network based methods could be too “black box” for a decentralized protocol to use. Instead, we chose to focus on multivariate GARCH (mGARCH) models and make the following simplifying assumptions: the log returns of all price processes follow a multivariate normal distribution and have zero mean.

We compare two popular classes of mGARCH models as well as another class based on hierarchical clustering that we conjecture is a reasonable parametric design for modelling a large number of diverse crypto assets. Our benchmark model will be the univariate GARCH(1,1) model fit independently to each asset, hence assuming zero correlation between assets.

  • Factor-ARCH models assume that there exist unobservable factors that are conditionally heteroskedastic and generate the log returns for a set of assets. In particular, we use Generalized Orthogonal GARCH (GO-GARCH), which considers diagonalization of covariance matrix where the diagonal matrix represents covariance of the factors.

  • Conditional correlation models estimate conditional variance and correlation separately. We use Dynamic Conditional Correlation-GARCH (DCC-GARCH), which models time-varying conditional correlation.

  • Hierarchical-GARCH (H-GARCH) is a class of mGARCH models that begins by forming hierarchical clusters of assets based on given set of time-series data. The full covariance matrix is then reconstructed by estimating separately the covariance within each cluster using GO-GARCH and between clusters using DCC-GARCH. H-GARCH could provide a good parametric method for modeling crypto classes that may differ liquidity and observation frequency. This method requires additional step to ensure the forecasted matrix is positive semi-definite (valid covariance matrix).


We fitted all models using Binance US 5-minute frequency times series data over 3 days (864 observations) of the top 50 crypto assets in market capitalization. To robustly test for forecast accuracy, we chose 3 periods of price paths that correspond to prior, during, and post USDC depeg situation in early March 2023.

We compare the performance of each model using Model Confidence Set (MCS) method, which determines a Superior Set of Models (SSM) that predict the covariance equally well under a specified loss function. The loss function we use is a continuous ranked probability score called the sample energy score (ES). We perform MCS on ES loss for each model with 100 rolling outputs of 5-minute and 1-hour ahead covariance forecasts.

All GARCH models (and DCC) are of order (1,1). We implement two models for GO-GARCH, one with 50 factors and the other with m < 50 principal factors, where m with determined using Marchenko-Pastur (MP) law in Random Matrix Theory, denoted GO-GARCH-MP. For H-GARCH, we use MP by default to limit the number of factors within each cluster.

Our implementation in R is available here.


Univariate GARCH and DCC-GARCH performed best in the 5-min ahead forecast while GO-GARCH-MP performed the worst. However, GO-GARCH-MP and H-GARCH consistently outperformed all other models for the 1-hour ahead forecast. This suggests that using MP could effectively denoise the input data and indicates that Univariate GARCH and DCC-GARCH could be overfitting.

We also observed that DCC-GARCH takes significantly longer time to run, while GO-GARCH-MP is the fastest, due to the respective number of parameters needed. In practice, since we expect to forecast on the order of hours-ahead and we want to optimize for speed, GO-GARCH-MP seems to be the best fit as of now.

Model Mean ES (Period 1) Mean ES (Period 2) Mean ES (Period 3)
Univariate GARCH 0.008475 0.02025 0.014898
DCC-GARCH 0.008476 0.020077 0.01476
GO-GARCH 0.008609 0.020209 0.015005
GO-GARCH-MP 0.00987 0.025829 0.019445
H-GARCH 0.010548 0.027316 0.021135

Table 1: 5 min ahead forecast

Model Mean ES (Period 1) Mean ES (Period 2) Mean ES (Period 3)
Univariate GARCH 0.016005 0.03277 0.028248
DCC-GARCH 0.015811 0.032043 0.027385
GO-GARCH 0.016873 0.034644 0.029975
GO-GARCH-MP 0.00987 0.025829 0.019445
H-GARCH 0.010548 0.027316 0.021135

Table 2: 1 hour ahead forecast

Note that bold numbers indicate the inclusion of the model in the Superior Set of Models.

Extension to Risk Indifference Pricing

As mentioned in Motivation, our goal is to derive a risk indifferent price under multi-asset trading. With a few additional assumptions on the underlying process, we obtain the following closed-form solution for pricing any combination of assets:

\pi(q, q′) = EVaR_{1−\alpha}(X_{t+1}(\mathbf{q}′) − C′) − EVaR_{1-\alpha}(X_{t+1}(\mathbf{q}) − C)

where a trade changes net trader positions from \mathbf{q} to \mathbf{q'}, X_{t+1}(\mathbf{q}) represents the portfolio value of \mathbf{q}, and C is any capital including trader collateral and additional liquidity available. Here, we use forecasted covariance matrix \mathbf{V}_{t+1} by transforming it into the covariance matrix of asset prices \mathbf{V}_{t+1}^p and defining entropic value-at-risk as:

EVaR_{1-\alpha}(X_{t+1}(\mathbf{q}) - C) = \mathbf{q}\mathbf{\mu}^p_{t+1} + \sqrt{-2(\mathbf{q}\mathbf{V}^p_{t+1}\mathbf{q}^T)\ln\alpha } - C

Figure 1 is an example of mark price for ETH-PERP (calculated as index + (calculated premium / order size)) when BTC-PERP market has net 2 long OI. We can see that under Univariate GARCH, the correlation between ETH price and BTC price are completely ignored (long and short premium are priced symmetrically), where as the other models consider the positive correlation. This is reflected in higher premia for long positions and rebate for short positions up to 50 - 75 ETH. Interestingly, pricing under GO-GARCH and H-GARCH seem to converge faster to lower price for long positions, whereas pricing under DCC-GARCH seem to converge slower to higher price. Figure 2 was produced by randomly generating OI for each of the 50 markets with higher probability of being short-heavy.

Fig 1. ETH-PERP price when BTC-PERP market is long heavy

Fig 2. ETH-PERP price when most markets are short heavy

Future Work

Future directions include choosing other methods of hierarchical clustering, a closer analysis of MP law in practice, and applying Kalman Filters to denoise the sample covariance matrix.


  • What other methods of hierarchical clustering should we try and how should we choose the number of clusters?
  • What other multivariate volatility forecast models should we explore?

is there a link for this?

also more ideas/questions:

  • particularly with on-chain programs, any approximate functions / heuristics that capture the general shape and scales here?
  • also interested in formalized methods for the univariate models to preemptively prevent excess imbalances based on price action and trading activity (thinking “intensity” of buying/selling)

Yes, we’ve updated the link. It’s here: GitHub - VestProtocol/multi-vol: Multivariate volatility forecasting in R.

Could you elaborate on what you mean by “general shape and scale” here? With regards to EVaR calculations, there is an normal approximation that is also laid out in page 9 of `the original paper

As for the next version that we are working based on this research piece, we will be using multivariate models to calculate expected future imbalances and the following risks. As per using trading activity to predict future imbalances, we haven’t conducted a formal research, but would love to talk more on further research possibilities. Avellaneda-Stoikov model seem to be a good place to start.