Код : github repo
Бичлэг: Youtube
Энэхүү илтгэлээр зах зээлийн эрсдэлийн хэмжих VaR аргачлалын төрлүүдийг харьцуулан харна. Үүнд энгийн VaR, EWMA VaR болон ARMA-GARCH VaR хязгаарлалтууд хамаарна. Онолын агуулгыг бус зөвхөн практик хэрэглээг харуулахыг зорьсон тул бусад сонсогчид маань wikipedia аас дэлгэрүүлж унших боломжтой.
Data and packages
Quantmod багцын тусламжтай yahoo-finance - аас DELL компанийн хувьцааны хаалтын ханшийн мэдээллийг импортолж, Rugarch багцын тусламжтай VaR хязгаарлалтуудыг үнэлсэн болно.
library(quantmod) # import data from API
library(dygraphs) # time series plotting
library(tseries) # time series analysis
library(tidyverse) # data wrangling
library(forecast) # best package of forecasting
library(rugarch) # ARMA-GARCH modelling
# import DELL data from yahoo-finance
getSymbols(Symbols = "DELL",from='2016-08-17',to='2020-03-19',auto.assign = T)
## [1] "DELL"
Return
Арифметик өгөөжийг тооцож auto.arima()
функцээр эрэмбийг тодорхойлов. Энэхүү функц нь AIC,SIC мэдээллийн шинжүүрийн тусламжтай оновчтой загварын сонгодог. ?auto.arima()
гэж тайлбарын авах боломжтой.
r = log(DELL$DELL.Close)
r = diff(DELL$DELL.Close)/lag(DELL$DELL.Close)
r = na.omit(r)
names(r)="Return" # change column name
head(r) # show first 6 values
## Return
## 2016-08-18 -0.005813976
## 2016-08-19 0.017543800
## 2016-08-22 0.003448339
## 2016-08-23 0.030927780
## 2016-08-24 0.013333377
## 2016-08-25 -0.004166672
##
## Box-Pierce test
##
## data: r
## X-squared = 1.2316, df = 1, p-value = 0.2671
## Series: r
## ARIMA(1,1,0)
##
## Coefficients:
## ar1
## -0.5041
## s.e. 0.0288
##
## sigma^2 estimated as 0.0006509: log likelihood=2025.03
## AIC=-4046.05 AICc=-4046.04 BIC=-4036.45
##
## Training set error measures:
## ME RMSE MAE MPE MAPE MASE ACF1
## Training set -9.611467e-05 0.02548447 0.01607176 NaN Inf 0.8613313 -0.1751226
##
## Ljung-Box test
##
## data: Residuals from ARIMA(1,1,0)
## Q* = 140.87, df = 9, p-value < 2.2e-16
##
## Model df: 1. Total lags used: 10
ARMA-GARCH VaR
rugarch багцын ugarchspec болон ugarchfit функцүүдийн тусламжтай ARMA-GARCH загвар үнэлэв. Энэ багцтай холбоотой мэдээллийг CRAN аас авна уу.
# define spec
spec = ugarchspec(variance.model = list(model = 'sGARCH',
garchOrder = c(1,1)),
mean.model = list(armaOrder=c(1,0),arfima=T,
include.mean = F),
distribution="norm")
# Estimate model
fit = ugarchfit(spec = spec, data = r)
mu = fitted(fit)
sigma = sigma(fit)
GARCH_VaR = mu + qnorm(.05)*sigma # VaR garch
#plot(fit) # 12 plots. 1-12 change plots and 0-exit
test = VaRTest(.05,r,GARCH_VaR) # backward testing
names(test)
## [1] "expected.exceed" "actual.exceed" "uc.H0" "uc.LRstat"
## [5] "uc.critical" "uc.LRp" "uc.Decision" "cc.H0"
## [9] "cc.LRstat" "cc.critical" "cc.LRp" "cc.Decision"
## [1] 0.03107658
Simple and EWMA VaR
EWMA VaR хязгаарлалт нь ARMA-GARCH VaR загварын тухайн тохиолдол билээ. Тухайлбал EWMA загварын дундажын үнэлгээ нь \(\phi_0 = 0,\phi_1=\lambda,p=1,\theta_1=(1-\lambda), q=1\) байх \(ARMA(1,1)\) процесс бол, вариацын үнэлгээ нь \(\omega=0,\beta_1=\lambda,k=1,\alpha_1=(1-\lambda),l=1\) байх \(GARCH(1,1)\) процесс байна.
VaRStatic <- sd(r) * qnorm(0.05)
spec2 = ugarchspec(variance.model=list(model="iGARCH",
garchOrder=c(1,1)),
mean.model=list(armaOrder=c(1,0),
include.mean=F),
distribution.model="norm",
fixed.pars=list(omega=0))
ewma_fit = ugarchfit(spec = spec2, data = r)
coef(ewma_fit)
## ar1 omega alpha1 beta1
## 0.065597767 0.000000000 0.009062311 0.990937689
Putting it all together
DELL компанийн хувьцааны ханшийн өгөөж болон бусад VaR хязгаарлалтыг нэг хавтгайд дүрслэв.
## Return VaRStatic GARCH_VaR EWMA_VaR
## 2016-08-18 -0.005813976 -0.03511932 -0.03501781 -0.03509563
## 2016-08-19 0.017543800 -0.03511932 -0.03271075 -0.03532949
## 2016-08-22 0.003448339 -0.03511932 -0.03149029 -0.03375160
## 2016-08-23 0.030927780 -0.03511932 -0.02963434 -0.03451958
## 2016-08-24 0.013333377 -0.03511932 -0.03265176 -0.03289168
## 2016-08-25 -0.004166672 -0.03511932 -0.03065667 -0.03393229