pointers on using VaR.gpd with return series?
Sylvain BARTHELEMY wrote:
I think that there is a problem with the VaR.gpd function, as it works on
USD/EUR and not on EUR/USD values
library(PerformanceAnalytics)
eurusd <- get.hist.quote("EUR/USD", provider="oanda", start = "2006-01-01")
usdeur <- get.hist.quote("USD/EUR", provider="oanda", start = "2006-01-01")
library(VaR)
v1 <- VaR.gpd(as.vector(eurusd))
v2 <- VaR.gpd(as.vector(usdeur))
output:
v1 <- VaR.gpd(as.vector(eurusd))
Error in optim(init, gpd.liklhd, hessian = TRUE, method = "Nelder-Mead") :
non-finite finite-difference value [2]
In addition: There were 50 or more warnings (use warnings() to see the
first 50)
Ouch the default parameters there are two possible fixes setting the cut-off threshold using p.tr helps. (a) doing the following call on your data comes back with some results.. > v1 <- VaR.gpd(as.vector(eurusd),p.tr=0.95) (b) The other alternate is to rewrite VaR.gpd and set hessian=FALSE where it makes the call to maximize the log-likelihood. optim(init, gpd.liklhd, *hessian = TRUE*, method = "Nelder-Mead") : Neither of these are "the solution" as this is more an Art than a science. Method (a) relates to the question of how to pick the threshold. Very few and you have biased fit and too many you are no longer fitting the tail. In this context I would point you towards the evir library and the excellent book by Alex Mcneill on this but doing the following should give you some hints.. >require(evir) >shape(danish) Hope this helps, Best Krishna