La Teoría de Valores Extremos (EVT de sus siglas en inglés) es la rama de la estadística que fija su análisis en los eventos asociados a las colas de la distribución (Valores mayores y menores de la variable en concreto).

Normalmente, en estadística, cuando hacemos algún análisis nos solemos fijar en las parte central de los datos, descartando aquellos que son menos probables. Incluso muchas veces los datos más extremos se eliminan para que no interfieran en el resultado. Pero esta práctica no siempre es buena, porque en su según que momentos estos datos pueden darnos información muy útil, incluso determinante.

Particularmente es en esos datos extremos donde la Teoría de Valores Extremos trabaja. Si nos centramos en finanzas, por ejemplo en las series de precios ,como pueden ser los de las bolsa,forex,etc…,esta teoría se puede usar para estudiar estos valores, y tener una mejor idea de la volatilidad y el riesgo.

En este video explico una de las formas para aplicar la teoría, que es mediante la Distribución de Pareto Generalizada. Más abajo tienes el código R usado

CODIGO R DEL VIDEO

 

#Video Teoría Valores Extremos _ Pareto Generalizado

#install.packages(«quantmod»)
library(quantmod)
#install.packages(«tseries»)
library(tseries)
#install.packages(«fImport»)
library(fImport)

getSymbols(«CADCHF=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«AUDNZD=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«AUDUSD=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«EURCHF=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«EURGBP=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«EURJPY=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«EURNZD=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«EURUSD=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«GBPCHF=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«NZDCAD=X»,src=»yahoo»,from = «2012-01-01»)
getSymbols(«GBPUSD=X»,src=»yahoo»,from = «2012-01-01»)


#precios de cierre

CADCHF= `CADCHF=X`[,4]
AUDNZD= `AUDNZD=X`[,4]
AUDUSD= `AUDUSD=X`[,4]
EURCHF= `EURCHF=X`[,4]
EURGBP= `EURGBP=X`[,4]
EURJPY= `EURJPY=X`[,4]
EURNZD= `EURNZD=X`[,4]
EURUSD= `EURUSD=X`[,4]
GBPCHF= `GBPCHF=X`[,4]
NZDCAD= `NZDCAD=X`[,4]
GBPUSD= `GBPUSD=X`[,4]

plot(EURGBP,type=»l») # serie precios en diario

# sacar retornos

r_eurgbp <-na.omit(returns(EURGBP))*100

plot(r_eurgbp,type=»l»)

hist(r_eurgbp)

#2 umbral

quantile(r_eurgbp,c(0.05,0.95))

plot(r_eurgbp,type=»l»)

abline(0.8273344,0,col=»red»)
abline(-0.7636476,0,col=»red»)


## calculariamos los excedentes

val_pos = r_eurgbp [r_eurgbp > 0.8273344]
val_pos

plot(val_pos,type=»l»)
hist(val_pos)

excedente_pos= val_pos – 0.8273344
excedente_pos

hist(excedente_pos)


####### formula en r


#???install.packages(«evir»)

library(«evir»)

 

pareto= r_eurgbp # Para Cola Positiva

#r_eurgbp_neg = r_eurgbp*-1 # Para Cola Negativa

 

fit<- gpd(pareto,threshold=0.8273344, nextremes=NA) # umbral y cantidad
fit

plot(fit$data,type=»l») # datos que sobrepasan el umbral(cola)
hist(fit$data) #histograma cola

#?gpd.q

#plot(fit)

tp<-tailplot(fit)
tp

#??tailplot

# sacamos los 3 parámetros – localización, escala, forma

loc<-tp$location
scal<-tp$scale
shape<-tp$shape


#Función cuartil y estimate

#?gpd.q

#Percentil 99 al 99% de confianza

Estimate<- gpd.q(tp, pp= 0.99, ci.p=0.99)
Estimate

 

Por Victor A.Rico

Diplomado en Ciencias Empresariales y Operador del Mercado Español de Futuros y Opciones

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *