Follow along with the video below to see how to install our site as a web app on your home screen.
Nota: This feature may not be available in some browsers.
Sto cercando di capire come sfruttare i modelli Garch per stimare il VaR. Il programma che ho scelto è R studio, essendo da molti consigliato per la sua intuitività. Nonostante ciò, sto riscontrando alcune difficoltà nel capire il funzionamento della funzione "ugarchroll" presente nel pacchetto rugarch, essendomi posto come obiettivo quello di riuscire ad ottenere gli stessi valori di unconditional e conditional coverage della tabella in allegato. In particolare, non capisco come "giocare" con le funzioni n.start, window.size e forecast.length per riuscire ad ottenere (relativamente ad es. all'S&P500 per un AR(1)Garch(1,1)) la probabilità del 72,25% (LR.uc p-value dalla notazione del test) così come da tabella. Ho un campione osservato di 3857 osservazioni e, come si vede, devo fare forecast su 2000 one-step ahead osservazioni al 95% di significatività. Qualcuno è in grado di spiegarmi l'utilizzo corretto della funzione?
require(rugarch)
data(sp500ret)
spec <- ugarchspec(mean.model = list(armaOrder = c(1, 0)))
mod <- ugarchroll(spec, data = sp500ret, n.ahead = 1,
n.start = 2000, refit.every = 100, refit.window = "recursive",
solver = "hybrid", fit.control = list(),
calculate.VaR = TRUE, VaR.alpha = c(0.01, 0.05),
keep.coef = TRUE)
report(mod, type="VaR", VaR.alpha = 0.01, conf.level = 0.95)
Secondo me è un problema di campione di dati.Cren, innanzitutto ti ringrazio molto per la risposta.
Ho seguito le tue istruzioni (allego lo script in R e il risultato del test applicato al mio solito AR(1)GARCH(1) su S&P500) ma le percentuali sia di Kupiec che di Christoffersen non coincidono. Credo, con ogni probabilità, di sbagliare al punto 4. Come posso modificare il codice?
VaR Backtest Report
===========================================
Model: sGARCH-norm
Backtest Length: 3666
Data:
==========================================
alpha: 5%
Expected Exceed: 183.3
Actual VaR Exceed: 198
Actual %: 5.4%
Unconditional Coverage (Kupiec)
Null-Hypothesis: Correct Exceedances
LR.uc Statistic: NaN
LR.uc Critical: 3.841
LR.uc p-value: NaN
Reject Null: NA
Conditional Coverage (Christoffersen)
Null-Hypothesis: Correct Exceedances and
Independence of Failures
LR.cc Statistic: NaN
LR.cc Critical: 5.991
LR.cc p-value: NaN
Reject Null: NA
Ok, allora se stanno usando quella procedura il codice dovrebbe essere così:Allora Cren, di nuovo grazie.
La risposta la trovi in allegato: è un rolling sample, a quanto pare. Detto questo, il campione di dati fa semplicemente riferimento alla serie storica dell'S&P500 dallo 09/07/1987 al 18/10/2002 (dove si considerano già esclusi i non-trading days). Hai qualche dritta su come procedere? L'obiettivo di replica che mi sono posto prevede la determinazione di percentuali quantomeno simili a quella della tabella.
roll.norm.SP500 <- ugarchroll(ARMA10sgarch11.norm.SP500, log_returnsSP500,
refit.window = "moving", calculate.VaR = TRUE, cluster = cluster,
n.ahead = 1, window.size = 2000, refit.every = 1, VaR.alpha = 0.05)
VaR Backtest Report
===========================================
Model: sGARCH-norm
Backtest Length: 500
Data:
==========================================
alpha: 5%
Expected Exceed: 25
Actual VaR Exceed: 33
Actual %: 6.6%
Unconditional Coverage (Kupiec)
Null-Hypothesis: Correct Exceedances
LR.uc Statistic: 2.459
LR.uc Critical: 3.841
LR.uc p-value: 0.117
Reject Null: NO
Conditional Coverage (Christoffersen)
Null-Hypothesis: Correct Exceedances and
Independence of Failures
LR.cc Statistic: 2.477
LR.cc Critical: 5.991
LR.cc p-value: 0.29
Reject Null: NO
Ad una rapida occhiata io l'ho inteso come il complemento a 1: l'ipotesi nulla non può essere rifiutata altrimenti si rischia di commettere un errore con il 11,7% di probabilità, quindi nella tabella che hai messo all'inizio c'è la validità statistica del modello.In ogni caso dal test che hai fatto sembrerebbe che nemmeno in questo caso l'LR.uc p-value di Kupiac coincida (o almeno si avvicini) alla percentuale in tabella. Che sia da intendersi come il complemento ad uno? Avremmo dunque 1-0,117=...