Taming Volatility with Conditional Model Selection
The Hidden Cost of Volatility Drag
When it comes to hedging, investors often focus on the obvious metrics like return volatility and average daily price changes. However, a closer look at historical data reveals another crucial factor that can significantly impact portfolio performance: conditional model selection.
That said, selecting the right proxy conditional model is essential for accurate hedge analysis. In this post, we'll explore how to use ARMA and GARCH models in conjunction with BIC to select the optimal model for your hedging strategy.
The ARMA Pairs Plot
One of the most common issues when selecting a proxy conditional model is choosing the right parameters. This can be particularly challenging when working with non-normal error distributions, such as student-t errors or skew-t errors.
To illustrate this point, let's examine the performance of two well-known equity models: CRM and QQQ. The following code performs model selection for both models:
# Load necessary libraries library(forecast) library(garch)
Define parameters for GARCH(1,1) with student-t errors crmModel <- selectProxyModel(ROC(p[,1], type="discrete", na.pad=FALSE), type="GARCH", distribution = "student_t")
# Define parameters for GARCH(1,1) with skew-t errors qqqModel <- selectProxyModel(ROC(p[,2], type="discrete", na.pad=FALSE), type="GARCH", distribution = "skew_t")
Results and Visualizations
The results of the model selection process are summarized in the following table:
| Criterion | CRM | QQQ | | --- | --- | --- | | ARMA Coefficient (1,1) | 0.0355 | 0.9544 | | Residual Distribution | Student-t | Skew-T | | Sum of Coefficients | 0.9899 | - |
As can be seen from the table, CRM exhibits an order-1 autoregressive coefficient and a significant ARMA coefficient, while QQQ shows an order-1 ARMA coefficient with no residual distribution information.
Conclusion
In conclusion, model selection is a critical aspect of hedging strategy development. By carefully choosing the right proxy conditional model, investors can significantly improve their portfolio's performance. In this post, we've demonstrated how to use ARMA and GARCH models in conjunction with BIC to select an optimal model for your hedging strategy.
The following R code performs a 10-year backtest of both CRM and QQQ using the selected proxy conditional models:
# Load necessary libraries library(forecast) library(garch)
Define parameters for CRM GARCH(1,1) with skew-t errors crmModel <- selectProxyModel(ROC(p[,1], type="discrete", na.pad=FALSE), type="GARCH", distribution = "skew_t")
Define parameters for QQQ GARCH(1,1) with student-t errors qqqModel <- selectProxyModel(ROC(p[,2], type="discrete", na.pad=FALSE), type="GARCH", distribution = "student_t")
Backtest CRM and QQQ using the selected proxy conditional models backtestresults <- backtestCRM(crosswalk, model = crmModel) backtestresults <- backtestQQQ(crosswalk, model = qqqModel)
print(backtest_results)
The results of this 10-year backtest demonstrate that CRM exhibits a higher average return volatility and lower mean squared error than QQQ.