Está en la página 1de 385

SEGUNDA EDICIÓN

WILEY
Modelización del riesgo financiero y
optimización de carteras con R
Modelización del riesgo financiero y
optimización de carteras con R
Segunda edición

Bernhard Pfaff
Esta edición se publicó por primera vez en 2016
© 2016, John Wiley & Sons, Ltd
Primera edición publicada en 2013
Domicilio social
John Wiley & Sons Ltd, The Atrium, Southern Gate, Chichester, West Sussex, PO19 8SQ, Reino Unido
Para conocer los detalles de nuestras oficinas editoriales en todo el mundo, para los servicios de atención al
cliente y para obtener información sobre cómo solicitar permiso para reutilizar el material protegido por
derechos de autor en este libro, consulte nuestro sitio web en www.wiley.com.
El derecho del autor a ser identificado como autor de esta obra se ha hecho valer de acuerdo con la Ley de
Derechos de Autor, Diseños y Patentes de 1988.
Todos los derechos reservados. Ninguna parte de esta publicación puede ser reproducida, almacenada en un
sistema de recuperación, o transmitida, en cualquier forma o por cualquier medio, ya sea electrónico,
mecánico, de fotocopia, de grabación o de otro tipo, salvo lo permitido por la Ley de Derechos de Autor,
Diseños y Patentes del Reino Unido de 1988, sin el permiso previo del editor.
Wiley también publica sus libros en diversos formatos electrónicos. Algunos contenidos que aparecen en
formato impreso pueden no estar disponibles en los libros electrónicos.
Las denominaciones utilizadas por las empresas para distinguir sus productos suelen reclamarse como marcas
comerciales. Todos los nombres de marcas y productos utilizados en este libro son nombres comerciales,
marcas de servicio, marcas comerciales o marcas registradas de sus respectivos propietarios. El editor no está
asociado con ningún producto o proveedor mencionado en este libro.
Límite de responsabilidad/reclamación de garantía: Aunque el editor y el autor han hecho todo lo posible para
preparar este libro, no hacen ninguna declaración ni dan ninguna garantía con respecto a la exactitud o
integridad del contenido de este libro y renuncian específicamente a cualquier garantía implícita de
comerciabilidad o idoneidad para un fin determinado. Se vende en el entendimiento de que el editor no se
dedica a prestar servicios profesionales y ni el editor ni el autor serán responsables de los daños que se deriven
del mismo. En caso de requerir asesoramiento profesional u otro tipo de asistencia experta, se deben solicitar
los servicios de un profesional competente.
Datos de catalogación en publicación de la Biblioteca del Congreso solicitados
ISBN : 9781119119661
El registro del catálogo de este libro está disponible en la British Library.

Imagen de portada: Logotipo de R © 2016 The R Foundation. Licencia Creative Commons Attribution-
ShareAlike 4.0 International (CC-BY-SA 4.0).
En 10/12pt, TimesLTStd por SPi Global, Chennai, India.

1 2016
Contenido

Prefacio a la segunda edición xi


Prefacio xiii
Abreviaturas xv
Acerca del sitio web complementario xix

PARTE I MOTIVACIÓN 1
1 Introducción 3
Referencia 5

2 Un breve curso de R 6
2.1 Origen y desarrollo 6
2.2 Obtener ayuda 7
2.3 Trabajar con R 10
2.4 Clases, métodos y funciones 12
2.5 El paquete adjunto FRAPO 22
Referencias 28

3 Datos del mercado financiero 29


3.1 Hechos estilizados de los rendimientos de los mercados financieros 29
3.1.1 Hechos estilizados para series univariantes 29
3.1.2 Hechos estilizados para series multivariantes 32
3.2 Implicaciones para los modelos de riesgo 35
Referencias 36

4 Medición de riesgos 37
4.1 Introducción 37
4.2 Sinopsis de las medidas de riesgo 37
4.3 Conceptos de riesgo de cartera 42
Referencias 44

5 Teoría moderna de la cartera 46


5.1 Introducción 46
vi CONTENID
O
5.2 Carteras de Markowitz 47
5.3 Carteras empíricas de media-varianza 50
Referencias 52

PARTE II MODELIZACIÓN DEL RIESGO 55


6 Distribuciones adecuadas para los rendimientos 57
6.1 Preliminares 57
6.2 La distribución hiperbólica generalizada 57
6.3 La distribución lambda generalizada 60
6.4 Sinopsis de paquetes R para GHD 66
6.4.1 El paquete fBasics 66
6.4.2 El paquete GeneralizedHyperbolic 67
6.4.3 El paquete ghyp 69
6.4.4 El paquete QRM 70
6.4.5 El paquete SkewHyperbolic 70
6.4.6 El paquete VarianceGamma 71
6.5 Sinopsis de los paquetes R para GLD 71
6.5.1 El paquete Davies 71
6.5.2 El paquete fBasics 72
6.5.3 El paquete gld 73
6.5.4 El paquete lmomco 73
6.6 Aplicaciones de la GHD a la modelización del riesgo 74
6.6.1 Adaptación de los rendimientos de las acciones a la GHD 74
6.6.2 Evaluación del riesgo con el GHD 77
6.6.3 Hechos estilizados revisados 80
6.7 Aplicaciones del GLD a la modelización de riesgos y al análisis de datos82
6.7.1 VaR para una sola acción 82
6.7.2 Forma de triángulo para los componentes del FTSE 100 84
Referencias 86

7 Teoría del valor extremo 89


7.1 Preliminares 89
7.2 Métodos y modelos de valores extremos 90
7.2.1 El enfoque de los máximos en bloque 90
7.2.2 Los modelos de r-ésimo orden 91
7.2.3 El enfoque de los picos sobre el umbral 92
7.3 Sinopsis de los paquetes de R 94
7.3.1 El paquete evd 94
7.3.2 El paquete evdbayes 95
7.3.3 El paquete evir 96
7.3.4 Los paquetes extRemes e in2extRemes 98
CONTENID vii
O
7.3.5 El paquete fExtremes 99
7.3.6 El paquete ismev 101
7.3.7 El paquete QRM 101
7.3.8 Los paquetes Renext y RenextGUI 102
7.4 Aplicaciones empíricas de la EVT 103
7.4.1 Esquema de la sección 103
7.4.2 Modelo de máximos en bloque para Siemens 103
7.4.3 maxima r-block para BMW 107
7.4.4 Método POT para Boeing 110
Referencias 115

8 Modelización de la volatilidad 116


8.1 Preliminares 116
8.2 La clase de modelos ARCH 116
8.3 Sinopsis de los paquetes de R 120
8.3.1 El paquete bayesGARCH 120
8.3.2 El paquete ccgarch 121
8.3.3 El paquete fGarch 122
8.3.4 El paquete GEVStableGarch 122
8.3.5 El paquete gogarch 123
8.3.6 El paquete lgarch 123
8.3.7 Los paquetes rugarch y rmgarch 125
8.3.8 El paquete tseries 127
8.4 Aplicación empírica de los modelos de volatilidad 128
Referencias 130

9 Modelización de la dependencia 133


9.1 Resumen 133
9.2 Correlación, dependencia y distribuciones 133
9.3 Copulae 136
9.3.1 Motivación 136
9.3.2 Correlación y dependencia revisadas 137
9.3.3 Clasificación de las cópulas 139
9.4 Sinopsis de los paquetes de R 142
9.4.1 El paquete BLCOP 142
9.4.2 La cópula del paquete 144
9.4.3 El paquete fCopulae 146
9.4.4 El paquete gumbel 147
9.4.5 El paquete QRM 148
9.5 Aplicaciones empíricas de las cópulas 148
9.5.1 Modelo GARCH - cópula 148
9.5.2 Enfoques de cópulas mixtas 155
Referencias 157

PARTE III ENFOQUES DE OPTIMIZACIÓN DE CARTERAS 161


viii Optimización
10 CONTENIDrobusta de la cartera 163
O
10.1 Resumen 163
10.2 Estadísticas robustas 164
10.2.1 Motivación 164
10.2.2 Estimadores robustos seleccionados 165
10.3 Optimización robusta 168
10.3.1 Motivación 168
10.3.2 Conjuntos de incertidumbre y formulación de problemas 168
10.4 Sinopsis de los paquetes de R 174
10.4.1 El paquete covRobust 174
10.4.2 El paquete fPortfolio 174
10.4.3 El paquete MASS 175
10.4.4 El paquete robustbase 176
10.4.5 El paquete robusto 176
10.4.6 El paquete rrcov 178
10.4.7 Paquetes para resolver los SOCP 179
10.5 Aplicaciones empíricas 180
10.5.1 Simulación de carteras: estadística robusta frente a la clásica 180
10.5.2 Prueba de espalda de la cartera: estadística robusta frente a la clásica 186
10.5.3 Prueba de resistencia de la cartera: optimización robusta 190
Referencias 195

11 La diversificación reconsiderada 198


11.1 Introducción 198
11.2 Cartera más diversificada 199
11.3 Carteras con restricciones de contribución al riesgo 201
11.4 Carteras óptimas dependientes de la cola 204
11.5 Sinopsis de los paquetes de R 207
11.5.1 El paquete cccp 207
11.5.2 Los paquetes DEoptim, DEoptimR y RcppDE 207
11.5.3 El paquete FRAPO 210
11.5.4 El paquete PortfolioAnalytics 211
11.6 Aplicaciones empíricas 212
11.6.1 Comparación de enfoques 212
11.6.2 Cartera óptima dependiente de la cola contra el índice de referencia 216
11.6.3 Limitación de las contribuciones al déficit previsto 221
Referencias 226

12 Carteras óptimas de riesgo 228


12.1 Resumen 228
12.2 Carteras de valores media-VaR 229
12.3 Carteras óptimas de CVaR 234
12.4 Carteras óptimas de retirada de fondos 238

12.5 Sinopsis de los paquetes de R 241


12.5.1 El paquete fPortfolio 241
12.5.2 El paquete FRAPO CONTENID ix
243
12.5.3 Paquetes para la programación lineal O 245
12.5.4 El paquete PerformanceAnalytics 249
12.6 Aplicaciones empíricas 251
12.6.1 Carteras de mínimo VCR frente a carteras de mínima varianza 251
12.6.2 Carteras limitadas por el uso de fondos 254
12.6.3 Comparación de back-test para la cartera de acciones 260
12.6.4 Parcelas de superficie de riesgo 265
Referencias 272

13 Asignación táctica de activos 274


13.1 Resumen 274
13.2 Estudio de modelos de series temporales seleccionados 275
13.2.1 Modelos de series temporales univariantes 275
13.2.2 Modelos de series temporales multivariantes 281
13.3 El enfoque de Black - Litterman 289
13.4 Opinión de la cópula y agrupación de la entropía 292
13.4.1 Introducción 292
13.4.2 El modelo COP 292
13.4.3 El modelo del PE 293
13.5 Sinopsis de los paquetes de R 295
13.5.1 El paquete BLCOP 295
13.5.2 El paquete dse 297
13.5.3 El paquete fArma 300
13.5.4 La previsión de paquetes 301
13.5.5 El paquete MSBVAR 302
13.5.6 El paquete PortfolioAnalytics 304
13.5.7 Los paquetes urca y vars 304
13.6 Aplicaciones empíricas 307
13.6.1 Negro - Optimización de la cartera de Litterman 307
13.6.2 Agrupación de opiniones sobre cópulas 313
13.6.3 Agrupación de la entropía 318
13.6.4 Estrategias de protección 324
Referencias 334

14 Utilidad probabilística 339


14.1 Resumen 339
14.2 El concepto de utilidad probabilística 340
14.3 Cadena de Markov Monte Carlo 342
14.3.1 Introducción 342
14.3.2 Enfoques de Monte Carlo 343
14.3.3 Cadenas de Markov 347
14.3.4 Metrópolis - Algoritmo de Hastings 349

14.4 Sinopsis de los paquetes de R 354


14.4.1 Paquetes para la realización de MCMC 354
x CONTENID
14.4.2 Paquetes de análisis de MCMC 358
14.5O Aplicación empírica 362
14.5.1 Función de utilidad ejemplar 362
14.5.2 Utilidad probabilística frente a utilidad esperada maximizada 366
14.5.3 Simulación de asignación de activos 369
Referencias 375

Apéndice A Resumen del paquete 378


A.1 Paquetes por orden alfabético 378
A.2 Paquetes ordenados por temas 382
Referencias 386

Apéndice BT Datos de las series temporales 391


B.1 Fecha/hora de las clases 391
B.2 La clase ts del paquete base stats 395
B.3 Series temporales espaciadas irregularmente 395
B.4 El paquete timeSeries 397
B.5 El paquete zoológico 399
B.6 Los paquetes tframe y xts 401
Referencias 404

Apéndice C Pruebas retrospectivas e informes sobre estrategias de cartera 406


C.1 Paquetes de R para el back-testing 406
C.2 R facilidades para la presentación de informes 407
C.3 Interfaz con las bases de datos 407
Referencias 408

Apéndice D Aspectos técnicos 411


Referencia 411

Índice 413
Prefacio de la segunda edición

Han pasado aproximadamente tres años desde la primera edición, durante los
cuales se han podido observar episodios de mayor riesgo en el mercado financiero.
Los ejemplos son, por ejemplo, el abandono del techo monetario del franco suizo
con respecto al euro, el descenso de las cotizaciones bursátiles chinas y la crisis de
la deuda griega; y todos ellos ocurrieron justo durante los tres primeros trimestres
de 2015. Por lo tanto, la necesidad de una base de conocimientos de técnicas
estadísticas y enfoques de optimización de carteras para abordar adecuadamente el
riesgo de los mercados financieros no ha disminuido.
Esta edición revisada y ampliada se debe también a la necesidad de actualizar ciertos
listados de código de R para mantener el ritmo de las últimas versiones de los
paquetes. Además, se han añadido temas como el concepto de clases de referencia
en R (véase la sección 2.4), los gráficos de superficie de riesgo (véase la sección
12.6.4) y el concepto de optimización probabilística de la utilidad (véase el capítulo
14), aunque la mayor parte del libro y sus capítulos permanecen sin cambios. Es
decir, en cada capítulo se introducen formalmente ciertos métodos y/o técnicas de
optimización, seguidos de una sinopsis de los paquetes R pertinentes y, por último,
las técnicas se dilucidan mediante una serie de ejemplos.
Por supuesto, el paquete FRAPO que acompaña al libro también ha sido
renovado≥(versión 0.4.0). No sólo se han actualizado los ejemplos de código de R,
sino que las rutinas para el reparto de optimización de carteras con una función
objetivo cuadrática utilizan ahora el
del paquete cccp. El paquete está disponible en CRAN. Además, la URL del sitio web
que acompaña al libro se mantiene sin cambios y se puede acceder a ella desde
www.pfaffikus.de.

Bernhard Pfaff
Kronberg im
Taunus
Prefacio

El proyecto de este libro comenzó a mediados de 2010. En aquel momento, los


mercados financieros estaban en apuros y distaban mucho de funcionar con fluidez.
El impacto de la crisis inmobiliaria de Estados Unidos todavía se podía sentir y la
crisis de la deuda soberana de algunos países europeos empezaba a emerger. Los
principales bancos centrales aplicaron medidas para evitar un colapso del mercado
interbancario mediante la provisión de liquidez. Teniendo en cuenta las enormes
pérdidas financieras contables y reales sufridas por los inversores, también fue un
momento en el que los fondos cuantitativos estaban en peligro y los inversores
cuestionaron la idoneidad de los métodos cuantitativos para proteger su patrimonio
de las graves pérdidas que habían sufrido en el pasado. Dos años después no ha
cambiado mucho, aunque el debate sobre si las técnicas cuantitativas en sí son
limitadas ha cesado. Por lo tanto, la modelización de los riesgos financieros y la
asignación adecuada de la riqueza siguen siendo tan importantes como siempre, y
estos temas han ganado en importancia, impulsados por las experiencias desde la
crisis financiera
comenzó en la última parte de la década anterior.
El contenido del libro está dirigido a estos dos temas, familiarizando al lector
con los modelos de riesgo de mercado y las técnicas de optimización de carteras
que se han propuesto en la literatura. Estos métodos propuestos más recientemente
se dilucidan mediante ejemplos de código escritos en el lenguaje R, un entorno de
software de libre acceso para la computación estadística.
Este libro no podría haber sido escrito sin la provisión pública de una pieza de
software tan magnífica como R, y los numerosos autores de paquetes que han
enriquecido enormemente este entorno de software. Por lo tanto, deseo expresar mi
sincero reconocimiento y agradecimiento a los miembros del equipo del núcleo de
R y a todos los colaboradores y mantenedores de los paquetes citados y utilizados
en este libro. Del mismo modo, me gustaría pedir disculpas a aquellos autores
cuyos paquetes no he mencionado. Esto sólo puede atribuirse a mi ignorancia de su
existencia. En segundo lugar, me gustaría agradecer a John Wiley & Sons Ltd la
oportunidad de escribir sobre este tema, en particular a Ilaria Meliconi, que inició
el proyecto de este libro, y a Heather Kay y Richard Davies por su cuidadosa labor
editorial. Un agradecimiento especial merece Richard Leigh por su meticulosa y
atenta corrección de textos. Ni que decir tiene que cualquier error u omisión es de
mi entera responsabilidad. Por último, tengo una deuda de profunda gratitud
xiv PREFACI
O
a mi amada esposa, Antonia, que mientras soportaba la carga de muchas horas de
soledad durante la escritura de este libro siguió siendo una fuente constante de
apoyo.
Este libro incluye un sitio web adjunto. Visite www.wiley.com/
go/financial_risk.

Bernhard Pfaff
Kronberg im
Taunus
Abreviaturas

ACF Función de autocorrelación


ADF Dickey-Fuller aumentado
Criterio de información de AICAkaike
AMPLA Lenguaje de modelado para la programación matemática
ANSIAInstituto Nacional de Normalización de
Estados Unidos
APARCH Poder asimétrico ARCH
APIA Interfaz de programación de aplicaciones
ARCH Autorregresivo condicional heterocedástico
AvDDAsignatura media
BFGS Algoritmo Broyden-Fletcher-Goldfarb-Shanno
BL Black-Litterman
BPPunto de ruptura
CDaR Disposición condicional en riesgo
Interfaz de línea de comandos CLIC
CLTeorema central del límite
CMLLínea de mercado del capital
COM Modelo de objetos de los componentes
COPCopula de opinión
CPPI Seguro de cartera de proporción constante
CRAN Amplia red de archivos de R
CVaValor condicional en riesgo
SGBD Sistema de gestión de bases de datos
DE Evolución diferencial
DGP Proceso de generación de datos
DR Ratio de diversificación
EDA Análisis exploratorio de datos
EGARCH GARCH exponencial
EP Agrupación de la entropía
ERS Elliott-Rothenberg-Stock
ES Déficit previsto
EVT Teoría del valor extremo
FIML Máxima verosimilitud con información completa
GARCHGeneralized autoregressive conditional heteroskedastic
GEVGeneralized extreme values
xvi ABREVIATURAS

GHD Distribución hiperbólica generalizada


GIG Gaussiana inversa generalizada
GLD Distribución lambda generalizada
GLPK Kit de programación lineal de GNU
GMPL Lenguaje de modelado GNU MathProg
GMVVarianza mínima global
GOGARCHGeneralized orthogonal
GARCHGeneralized Pareto distribution
Licencia pública GPLGNU
Interfaz gráfica de usuario
HYP Hiperbólico
IDE Entorno de desarrollo integrado
iid distribuido de forma independiente e idéntica
JDBC Conectividad con bases de datos Java
Programa LPLinear
MaxDD Reducción máxima de consumo
MCD Determinante mínimo de covarianza
MCMCMarkov chain Monte Carlo
MDAMáximo dominio de atracción
mES Déficit esperado modificado
MILPrograma lineal entero mixto
ML Máxima verosimilitud
MPS Sistema de programación matemática
MRCContribuciones marginales de riesgo
Vida residual media (MRL)
MSRMáximo ratio de Sharpe
mVaR Valor en riesgo modificado
MVE Elipsoide de volumen mínimo
NIG Gaussiana inversa normal
NN Vecino más cercano
OBPI Seguro de cartera basado en opciones
Conectividad de la base de datos ODBCOpen
OGK Gnanadesikan-Kettenring ortogonalizado
OLMínimos cuadrados ordinarios
OO Orientado a objetos
PACF Función de autocorrelación parcial
POTPeaks por encima del umbral
PWM Momentos ponderados por la probabilidad
QMLEEstimación de máxima
verosimilitud RDBMSSistema de gestión de bases de datos
relacionales REREficiencia relativa
RPC Llamada a procedimiento remoto
SDE Estimador de Stahel-Donoho
SIG Grupo de interés especial
SMEM Modelo de ecuaciones múltiples estructurales
SPI Índice de rendimiento suizo
ABREVIATURAS xvii

SVAR Modelo estructural vectorial


autorregresivo
SVEC Modelo estructural de corrección de errores vectoriales
TAA Asignación táctica de activos
TDC Coeficiente de dependencia de la cola
VAR Modelo vectorial autorregresivo
VaR Valor en riesgo
VECM Modelo de corrección de errores vectoriales
XML Lenguaje de marcado extensible
A menos que se indique lo contrario, se utiliza la siguiente notación, símbolos y variables.

Notación
Minúsculas en negrita: y, 𝛂 Vectores
Mayúsculas: Y, Σ Matrices
Letras griegas: 𝛼, 𝛽, 𝛾 Escalas
Letras griegas con ̂ o ∼ o ̄ Valores de la muestra (estimaciones o estimadores)

Símbolos y variables
|⋅ Valor absoluto de una expresión
|
∼ Distribuido según
⊗ Producto Kronecker de dos
matrices argmax Valor máximo de un
argumento argmin Valor mínimo de un
argumento
⊥ Complemento de una matriz
C, c Cópula
COR Correlación(es) de una expresión
COV Covarianza de una expresión
𝔻 Retirada de fondos
𝑑𝑒𝑡 Determinante de una matriz
E Operador de expectativas
I Conjunto de información
I(d) Integrado de orden d
L Operador de lag
𝔏 Función de (Log-)verosimilitud
𝜇 Valor esperado
N Distribución normal
𝛚 Vector de peso
P Especificación del problema de la cartera
P Expresión de la probabilidad
Σ Matriz de varianza-covarianza
𝜎 Desviación estándar
2
𝜎 Variación
U Conjunto de incertidumbres
VAR Varianza de una expresión
Acerca de la página web
complementaria

No olvide visitar el sitio web complementario de este libro:

www.pfaffikus.de

Allí encontrará valioso material diseñado para mejorar su aprendizaje, incluyendo:

• Todos los ejemplos de código R


• El paquete FRAPO R.
Escanee este código QR para visitar el sitio web complementario.
Parte I
MOTIVACIÓN
1

Introducción

El periodo transcurrido desde finales de la década de 1990 ha estado marcado por


las crisis financieras: la crisis asiática de 1997, la crisis de la deuda rusa de 1998, el
estallido de la burbuja de las puntocom en 2000, las crisis que siguieron al ataque
al World Trade Center en 2001 y a la invasión de Irak en 2003, la crisis de las
hipotecas de alto riesgo de 2007 y la crisis de la deuda soberana europea desde
2009 son las más destacadas. Todas estas crisis tuvieron un tremendo impacto en
los mercados financieros, en particular un repunte de la volatilidad observada y una
destrucción masiva de la riqueza financiera. Durante la mayoría de estos episodios,
la estabilidad del sistema financiero estuvo en peligro y los principales bancos
centrales se vieron más o menos obligados a tomar contramedidas, al igual que los
gobiernos de los países correspondientes. Por supuesto, esto no quiere decir que la
época anterior a finales de la década de 1990 fuera tranquila; en este contexto
podemos mencionar la crisis de la Unidad Monetaria Europea de 1992-1993 y el
crack de Wall Street de 1987, conocido como el lunes negro. Sin embargo, es justo
decir que la frecuencia de las crisis ha aumentado durante los últimos 15 años.
Debido a este aumento de la frecuencia de las crisis, la modelización y la
medición del riesgo de los mercados financieros han cobrado una enorme
importancia y el enfoque de la asignación de carteras ha pasado de la cara 𝜇 de la
moneda (𝜇, 𝜎) a la cara 𝜎. Por lo tanto, ha sido necesario idear y emplear métodos y
técnicas que sean más capaces de hacer frente a las fluctuaciones extremas
observadas empíricamente en los mercados financieros. La suposición hasta ahora
fundamental de que los rendimientos de los mercados financieros se distribuyen de
forma independiente e idéntica a la normal ya no es sacrosanta, ya que ha sido
cuestionada por modelos y conceptos estadísticos que tienen en cuenta la aparición
de eventos extremos de forma más adecuada que la suposición del modelo
gaussiano. Como se mostrará en los siguientes capítulos, los métodos y enfoques
más recientes de la asignación de la riqueza no son revolucionarios, sino que
pueden considerarse un desarrollo evolutivo: una recombinación y aplicación de
conceptos estadísticos ya existentes para resolver problemas relacionados con las
finanzas. Sesenta años después de la publicación de Markowitz "Modern

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd.
Sitio web complementario: www.pfaffikus.de
4 INTRODUCCIÓN

Teoría de la cartera", el paradigma clave (𝜇, 𝜎) debe seguir considerándose como el


ancla para la optimización de la cartera. Sin embargo, lo que han cambiado los
enfoques defendidos más recientemente es cómo se evalúa el riesgo de un activo y
cómo se mide la diversificación de la cartera, es decir, las dependencias entre los
instrumentos financieros, y la definición del objetivo de la cartera en sí.
El propósito de este libro es familiarizar al lector con algunos de estos enfoques
recientemente propuestos. Dada la extensión del libro, esta sinopsis debe ser
selectiva, pero los temas elegidos pretenden cubrir un amplio espectro. Para
favorecer la comprensión de estos avances por parte del lector, todos los conceptos
introducidos se dilucidan mediante ejemplos prácticos. Para ello se utiliza el
lenguaje R, un entorno informático estadístico gratuito (véase R Core Team 2016).
Por lo tanto, casi independientemente de las instalaciones informáticas del lector en
términos de hardware y sistema operativo, todos los ejemplos de código pueden ser
replicados en el escritorio del lector y se le anima no sólo a hacerlo, sino también a
adaptar los ejemplos de código a sus propias necesidades. Este libro está dirigido al
lector con inclinación cuantitativa y con formación en finanzas, estadística y
matemáticas a nivel de licenciatura/grado superior. El texto también puede
utilizarse como fuente de acompañamiento en una clase de laboratorio de
informática, en la que la modelización de los riesgos financieros y/o la
optimización de la cartera sean de interés.
El libro se divide en tres partes. Los capítulos de esta primera parte tienen como
objetivo principal ofrecer una visión general de los temas tratados en los capítulos
posteriores y servir de motivación para aplicar técnicas más allá de las habituales en
la evaluación de los riesgos de los mercados financieros y/o la optimización de
carteras. El capítulo 2 ofrece un breve curso sobre el lenguaje R y presenta el
paquete FRAPO que acompaña al libro. Para el lector que no esté familiarizado
con R, este capítulo no puede reemplazar un curso más dedicado al estudio del
lenguaje en sí, sino que más bien pretende proporcionar una visión general de R y
cómo obtener ayuda. Dado que en los ejemplos del libro se presentarán y utilizarán
bastantes paquetes de R, se incluye una sección sobre las clases y métodos
existentes que facilitará al lector la comprensión de estos dos marcos. En el
capítulo 3 se presentan hechos estilizados de los datos univariantes y multivariantes
de los mercados financieros. La exposición de estas características empíricas sirve
de motivación para los métodos y modelos presentados en la Parte II. Las
definiciones utilizadas en la medición de los riesgos de los mercados financieros a
nivel de activo único y de cartera son el tema del capítulo 4. En el último capítulo
de la Parte I (Capítulo 5), se describe el marco de trabajo de la cartera de
Markowitz y se presentan los artefactos empíricos de las carteras optimizadas
correspondientes. Estos últimos sirven de motivación para las técnicas alternativas
de optimización de carteras que se presentan en la Parte III.
En la Parte II se presentan alternativas a la hipótesis de la distribución normal
para modelar y medir los riesgos de los mercados financieros. Esta parte comienza
con una exposición de las distribuciones hiperbólica generalizada y lambda
generalizada para modelar los rendimientos de los instrumentos financieros. En el
capítulo 7, se introduce la teoría del valor extremo como medio para modelar y
captar las pérdidas financieras graves. Aquí se describen los enfoques de bloque-
máximo y picos-sobre-umbral y se aplican a las pérdidas bursátiles. Los capítulos 6
y 7 tienen en común la modelización incondicional de las pérdidas financieras. La
modelización condicional y la medición de los riesgos del mercado financiero se
presentan en forma de modelos GARCH -definidos en sentido amplio- en
INTRODUCCIÓN 5

Capítulo 8. La parte II concluye con un capítulo sobre cópulas como medio para
modelar las dependencias entre activos.
La Parte III comienza introduciendo las técnicas de optimización robusta de
carteras como remedio a la sensibilidad a los valores atípicos que encuentra la
optimización simple de Markowitz. En el capítulo 10 se muestra cómo pueden
utilizarse estimadores robustos para el primer y segundo momento, así como
métodos de optimización de carteras que facilitan directamente la inclusión de la
incertidumbre de los parámetros. En el capítulo 11 se vuelve a considerar el
concepto de diversificación de la cartera. En este capítulo se describen los
conceptos de cartera más diversificada, de riesgo igual contribuido y de cartera
mínima dependiente de la cola. En el capítulo 12, la atención se desplaza a las
medidas de riesgo relacionadas con el riesgo a la baja, como el valor en riesgo
condicional y la reducción de una cartera. El capítulo 13 está dedicado a la
asignación táctica de activos (TAA). Además del enfoque original de Black-
Litterman, se describe el concepto de agrupación de opiniones de la cópula y la
construcción de una estrategia de protección del patrimonio. Esta última es una
síntesis entre los temas presentados en la Parte II y la optimización de la cartera
relacionada con la TAA.
En el Apéndice A se enumeran todos los paquetes de R citados y utilizados por
nombre y tema. Debido a los medios alternativos para manejar datos longitudinales
en R, se dedica un capítulo aparte (Apéndice B) a la presentación de las clases y
métodos disponibles. En el Apéndice C se muestra cómo se puede invocar y
emplear R de forma habitual para producir pruebas retrospectivas, utilizarlo para
generar o actualizar informes, y/o integrarlo en una infraestructura informática
existente para la evaluación de riesgos/recuperación de carteras. Dado que todos
estos temas son muy específicos de la aplicación, sólo se ofrecen indicaciones
sobre las funciones de R. Una sección sobre los aspectos técnicos concluye el libro.
Los capítulos de las partes II y III siguen una estructura común. En primer lugar,
los métodos y/o modelos se presentan únicamente desde un punto de vista teórico. La
siguiente sección se reserva para la presentación de los paquetes de R, y la última
sección de cada capítulo contiene aplicaciones de los conceptos y métodos
presentados anteriormente. Los ejemplos de código R que se ofrecen están escritos
a un nivel de lenguaje intermedio y pretenden ser digeribles y fáciles de seguir. Sin
duda, cada ejemplo de código podría mejorarse en cuanto a la creación de perfiles
y la realización de ciertos cálculos, pero se corre el riesgo de que el diseño del
código sea demasiado críptico. Se deja al lector como ejercicio para adaptar y/o
mejorar los ejemplos a sus propias necesidades y preferencias.
En definitiva, el objetivo de este libro es permitir al lector ir más allá de las
herramientas y técnicas habituales y proporcionarle una orientación sobre cuándo
elegir entre ellas. Cada modelo cuantitativo tiene ciertamente sus puntos fuertes y
sus inconvenientes, y sigue siendo una cuestión subjetiva si los primeros superan a
los segundos a la hora de emplear el modelo en la gestión de los riesgos de los
mercados financieros y/o en la asignación de la riqueza disponible. Dicho esto, es
mejor disponer de un conjunto más amplio de herramientas que verse obligado a
confiar en un conjunto más restringido de métodos.

Referencia
R Core Team 2016 R: A Language and Environment for Statistical Computing R Foundation
for Statistical Computing Viena, Austria.
2

Un breve curso de R

2.1 Origen y desarrollo


R es principalmente un entorno de programación para realizar cálculos estadísticos
y producir gráficos de alto nivel (véase R Core Team 2016). Estas dos áreas de
aplicación deberían interpretarse ampliamente y, de hecho, muchas tareas que
normalmente no se incluirían directamente en estos temas pueden realizarse con el
lenguaje R. El sitio web del proyecto R es http://www.r-project.org. El código
fuente del software se publica como software libre bajo los términos de la Licencia
Pública General de GNU (GPL; véase http://www.gnu.org/licenses/gpl.html).
El lenguaje R es un dialecto del lenguaje S, que fue desarrollado por John
Chambers y sus colegas en los Laboratorios Bell a mediados de los años 70.1 En
aquella época, el software se implementaba como bibliotecas FORTRAN. En 1988
se produjo un gran avance del lenguaje S, tras el cual se reescribió el sistema en C
y se añadieron funciones para realizar análisis estadísticos. Se trataba de la versión
3 del lenguaje S, denominada S3 (véase Becker et al. 1988; Chambers y Hastie
1992). En esta etapa del desarrollo de S, comienza la historia de R (véase
Gentleman e Ihaka 1997). En agosto de 1993 Ross Ihaka y Robert Gentleman,
ambos afiliados a la Universidad de Auckland, Nueva Zelanda, publicaron una
copia binaria de R en Statlib, anunciándola en la lista de correo s-news. Este
primer binario de R se basaba en un intérprete de Scheme con una sintaxis similar
a la de S (véase Ihaka y Gentleman 1996). El nombre de R se remonta a las
iniciales de los nombres de pila de Ihaka y Gentleman, y es por coincidencia una
abreviatura de una letra para el lenguaje de la misma manera que S. El anuncio

1 Se puede acceder a un relato detallado de la historia de la lengua S en http://ect.bell-labs

.com/sl/S/.

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd.
Sitio web complementario: www.pfaffikus.de
UN BREVE CURSO DE 7
R
de Ihaka y Gentleman no pasó desapercibido y el mérito es de Martin Mächler, de
ETH Zürich, que abogó insistentemente por la publicación de R bajo la GPL de
GNU. Esto ocurrió en junio de 1995. El interés por el lenguaje creció de boca en
boca y, como primer medio de comunicación y coordinación, se creó una lista de
correo en marzo de 1996, que fue sustituida un año más tarde por los servicios de
correo electrónico que todavía existen hoy. El creciente interés por el proyecto
llevó a la necesidad de crear un potente canal de distribución para el software. De
ello se encargó Kurt Hornik, por aquel entonces afiliado a la Universidad Técnica
de Viena. El repositorio principal del software (conocido como "Comprehensive R
Archive Network") sigue estando en Viena, aunque ahora en la
Wirtschaftsuniversität y con servidores espejo repartidos por todo el mundo. Con el
fin de seguir el ritmo de los cambios solicitados por los usuarios y la corrección de
errores de manera oportuna, a mediados de 1997 se creó un grupo central de
desarrolladores de R. Este marco e infraestructura establecidos son probablemente
la razón por la que R ha progresado tanto desde entonces. Los usuarios pueden
contribuir con paquetes para resolver problemas o tareas específicas y, por lo tanto,
los avances en los métodos y/o cálculos estadísticos pueden difundirse
rápidamente. Fox (2009) ofrece un análisis detallado y una sinopsis de la
organización social y el desarrollo de R. El siguiente hito en la historia del lenguaje
se produjo en 1998, cuando John Chambers introdujo un marco de clases y
métodos más formal para el lenguaje S (versión 4), que luego se adoptó en R
(véase Chambers 1998, 2008). Esta evolución explica la coexistencia de estructuras
tipo S3 y S4 en el lenguaje R, y el usuario se encontrará con ambas en la
sección
2.4. Los avances más recientes son la inclusión de soporte para el alto rendimiento
Desde estos humildes comienzos, R se ha convertido en la lingua franca de la
computación estadística.

2.2 Cómo obtener


ayuda
Está fuera del alcance de este libro proporcionar al lector una introducción al
lenguaje R en sí mismo. Aquellos que son completamente nuevos en R son
remitidos al manual An Introduction to R, disponible en el sitio web del proyecto
bajo "Manuals". El propósito de esta sección es más bien proporcionar al lector
algunas indicaciones para obtener ayuda y recuperar la información pertinente para
resolver un problema concreto.
Como ya se ha indicado en el párrafo anterior, el primer recurso para obtener
ayuda es leer los manuales de R. Estos manuales cubren diferentes aspectos de R y
el mencionado anteriormente proporciona una útil introducción a R. Están
disponibles los siguientes manuales de R, cuyos títulos se explican por sí mismos:
• Introducción a R

• Definición del lenguaje R


• Escribir extensiones de R
8 UN BREVE CURSO DE
R• Importación/exportación de datos en R

• R Instalación y administración
UN BREVE CURSO DE 9
R
• R Internos
• El índice de referencia R
Se puede acceder a estos manuales desde el sitio web del proyecto o invocarlos
desde una sesión de R escribiendo

> help.start()

Esta función cargará un archivo de índice HTML en el navegador web del


usuario y los enlaces locales a estos manuales aparecerán en la parte superior.
Tenga en cuenta que se incluye un enlace a las "Preguntas más frecuentes", así
como un "FAQ de Windows" si R se ha instalado bajo Microsoft Windows.
Por cierto, además de estos manuales de R, se puede acceder a muchos tutoriales
complementarios y material relacionado en http://www.r-
project.org/other- docs.html y se puede consultar una lista anotada de
más de 100 libros sobre R en http://www.r-project.org/doc/bib/R-books.html. El
lector también puede dirigirse a The R Journal (antes R News), que es una
publicación bianual de artículos aportados por los usuarios que cubren los últimos
avances en R.
Volvamos al tema de invocar la ayuda dentro de R. Como se muestra arriba, la
función help.start() invocada desde el prompt de R es una de las facilidades
de ayuda incorporadas que ofrece R. Otros medios para acceder a la ayuda son:

> ## invocando la página de manual de help() misma


> ayuda()
> ## ayuda sobre cómo buscar en el sistema de ayuda
> help("help.search")
> ## ayuda en la búsqueda por coincidencia parcial
> help("apropos")
> ## Visualización de los archivos de demostración disponibles
> demo()
> demo(scoping)
> ## Visualización de las viñetas de los paquetes disponibles
> ?viñeta
> viñeta()
> vignette("parallel")

El primer comando invocará la página de ayuda de help(); en ella se describe


su uso y se dan indicaciones sobre otros servicios de ayuda. Entre estas otras
facilidades están help.search(), apropos(), y demo(). Si esta última se
ejecuta sin argumentos, se muestran los archivos de demostración disponibles y
demo(scoping) ejecuta el código de R para familiarizar al usuario con el
concepto de alcance léxico en R, por ejemplo. Se proporciona una ayuda más
avanzada en las viñetas asociadas a los paquetes. El propósito de estos documentos
es mostrar al usuario cómo se pueden emplear las funciones y facilidades de un
paquete. Estos documentos pueden abrirse en un lector de PDF o en un navegador
web. En la última línea de código, se abre la viñeta contenida en el paquete par-
alelo y se ofrece al usuario una descripción detallada de cómo se pueden realizar
cálculos paralelos con R.
10 UN BREVE CURSO DE
R
Una limitación de estas facilidades de ayuda es que con estas funciones sólo se
realizan búsquedas locales, por lo que los resultados devueltos dependen de la
propia instalación de R y de los paquetes contributivos instalados. Para realizar una
búsqueda en línea está disponible la función RSite- Search(), que incluye
búsquedas en las listas de correo de R (las listas de correo se tratarán como otro
medio de obtener ayuda en su momento).

> ## Instalaciones de búsqueda en línea


> RSiteSearch
> RSiteSearch("Cartera")
> ## El paquete CRAN sos
> ## 1. Instalación
> install.package("sos")
> ## 2. Cargando
> biblioteca(sos)
> ## 3. Obtener una visión general del contenido
> help(paquete = sos)
> ## 4. Abrir la viñeta del paquete
> viñeta("sos")
> ## 5. Obtener ayuda en findFn
> ?findFn
> ## 6. Buscando en Internet por "Portafolio"
> findFn("Cartera")

Una herramienta muy potente para realizar búsquedas en línea es el paquete sos
(véase Graves et al. 2013). Si el lector no ha instalado ya este paquete contributivo,
se le recomienda que lo haga. La función principal es findFn(), que realiza
búsquedas en línea. En el ejemplo anterior, todas las entradas relevantes con respecto
a la palabra clave "Portfolio" se devuelven en una ventana del navegador y la
columna de la derecha contiene una descripción de las entradas con un enlace web
directo.
Como se ha mostrado anteriormente, findFn() puede utilizarse para
responder a preguntas del tipo "¿Puede conseguirse esto con R?" o "¿Se ha
implementado ya esto en R?" En este sentido, dado que en el momento de escribir
este artículo hay más de 6300 paquetes disponibles en CRAN (por no hablar de R-
Forge), el concepto de "Task View" es beneficioso.2 Los paquetes de CRAN que
encajan en una determinada categoría, digamos "Finanzas", se agrupan y cada uno
es descrito brevemente por el mantenedor o mantenedores de la vista de tareas en
cuestión. De este modo, se ha reducido en gran medida la carga de buscar en el
archivo un determinado paquete con el que se puede resolver un problema o tarea.
Las vistas de tareas no sólo proporcionan una buena visión general de lo que está
disponible, sino que con el paquete ctv de CRAN (véase Zeileis 2005) el usuario
puede elegir instalar el conjunto completo de paquetes en una vista de tareas junto
con sus dependencias o sólo los que se consideran paquetes básicos. Se puede
encontrar una lista de las vistas de tareas en http://cran.r-project.org/web/views.

> install.packages("ctv")
> biblioteca(ctv)
> install.views("Finanzas")

2 Para poner las cosas en perspectiva: cuando se imprimió la primera edición de este libro, el recuento de
UN BREVE CURSO DE 11
paquetes de CRAN era de sólo 3700. R
12 UN BREVE CURSO DE
R
Como ya se ha mencionado, existen listas de correo en las que los usuarios
pueden enviar su problema o pregunta a una amplia audiencia. En
http://www.r-project.org/mail.html se ofrece un resumen de las
disponibles. Probablemente, las más interesantes son R-help y R-SIG-
Finance. La primera es una lista con mucho tráfico dedicada a preguntas
generales sobre R, y la segunda se centra en problemas relacionados con las
finanzas. En cualquiera de los casos, antes de enviar un mensaje a estas listas, el
usuario debe seguir las directrices de envío, que se pueden encontrar en
http://www.r-project.org/posting- guide.html.
Esta sección concluye con una visión general de las conferencias sobre R que
han tenido lugar en el pasado y que muy probablemente volverán a celebrarse en el
futuro.
• ¡useR! Se trata de una conferencia internacional de usuarios de R y consiste
en conferencias magistrales y presentaciones aportadas por los usuarios que
se agrupan por temas. Las sesiones relacionadas con las finanzas suelen estar
entre estos temas. La conferencia comenzó en 2004 con un programa bianual
en Viena, pero ahora se celebra cada año en un lugar diferente. Para más
información, consulte el anuncio en http://www.r-project.org.
• Taller de verano de R/Rmetrics Esta conferencia anual comenzó en 2007 y
está dedicada exclusivamente a temas relacionados con las finanzas.
Recientemente, la conferencia se ha organizado como un taller con sesiones
tutoriales por la mañana y presentaciones de usuarios por la tarde.
Anteriormente se celebraba en Meielisalp, en el lago de Thune (Suiza), pero
ahora suele tener lugar durante la tercera semana de junio en diferentes
lugares. Puede encontrar más información en https://www
.rmetrics.org.
• R in Finance Al igual que el R/Rmetrics Workshop, esta conferencia
también se dedica exclusivamente a temas relacionados con las finanzas. Es
un evento de dos días que se celebra anualmente durante la primavera en
Chicago, en la Universidad de Illinois. Se imparten tutoriales opcionales
antes de la conferencia y la conferencia principal consiste en discursos de
apertura y presentaciones aportadas por los usuarios (véase
http://www.rinfinance.com para más información).

2.3 Trabajar con R


Por defecto, R cuenta con una interfaz de línea de comandos (CLI). A primera
vista, esto podría percibirse como una limitación y como un diseño de software
anticuado. Esta percepción podría intensificarse para los usuarios novatos de R. Sin
embargo, la CLI es una herramienta muy poderosa que da al usuario un control
directo sobre los cálculos. El dilema es que probablemente sólo los usuarios
experimentados de R con un buen dominio del lenguaje podrían compartir esta
opinión sobre el trabajo con R, pero ¿cómo convertirse en un usuario competente de
R en primer lugar? Para resolver este rompecabezas y facilitar el camino del nuevo
usuario en este camino de aprendizaje, existen varias interfaces gráficas de usuario
(GUI) y/o entornos de desarrollo integrados (IDE). Por cierto, es posible hacer este
UN BREVE CURSO DE 13
R
conjunto bastante rico de GUIs e IDEs llamativos disponibles porque R se
proporciona con un CLI en primer lugar, y todos ellos son factorizados alrededor
de él.
14 UN BREVE CURSO DE
R
En esta sección se presentan algunas de las GUIs e IDEs independientes de la
plataforma, reconociendo el hecho de que R se entrega con una GUI sólo en el
sistema operativo Microsoft Windows. La lista de abajo está en orden alfabético y
no aboga por el uso de un marco GUI/IDE sobre otro, por buenas razones. Decidir
qué sistema utilizar es una cuestión de preferencia y gusto personal. Por lo tanto, se
invita al lector a inspeccionar cada una de las GUIs e IDEs presentadas y luego
elegir la que más le guste.

1. Eclipse Eclipse es un IDE basado en Java y fue diseñado por primera vez
como un IDE para este lenguaje. Puede encontrar más información sobre
Eclipse en el sitio web del proyecto: http://www.eclipse.org. Desde
entonces se han puesto a disposición muchos módulos/plugins para otros
lenguajes. El plugin para R se llama StatET y se distribuye a través de
http://www.walware.de/goto/statet. Las instrucciones para instalar y
configurar este módulo en Eclipse pueden encontrarse en este sitio web.
También se puede encontrar más orientación en línea en otros lugares.

2. Emacs/ESS GNU Emacs es un editor de texto extensible y personalizable,


cuyo núcleo es un intérprete del lenguaje Emacs Lisp. El sitio web del
proyecto es http://www.gnu.org/software/emacs. De este editor derivan las
distribuciones XEmacs (http://www.xemacs.org), donde la "X" indica el
sistema X Windows de las plataformas Unix/Linux, y Aquamacs
(http://aquamacs.org) sólo para Mac OS X. Al igual que Eclipse, la conexión
entre este editor y R se establece mediante un módulo, ESS, que significa
"Emacs Speaks Statistics". El sitio web del proyecto es http:// ess.r-
project.org, donde puede descargarse este módulo de Lisp y hay
instrucciones de instalación. Uno de los puntos fuertes de ESS es que
también es compatible con otros paquetes estadísticos como S-PLUS, SAS,
Stata, OpenBUGS y JAGS. En la sección "Getting help" de la página web
citada anteriormente se encuentra una lista de correo dedicada a ESS. Los
usuarios que trabajen en Microsoft Windows pueden estar interesados en la
versión preempaquetada de Emacs/ESS que ha puesto a disposición Vin-
cent Goulet: http://vgoulet.act.ulaval.ca/en/emacs.

3. JGR A diferencia de Eclipse y Emacs/ESS, JGR es una interfaz gráfica de


usuario más que un IDE para R. Al igual que Eclipse, se basa en Java, y
"JGR" significa "Java Gui for R". El sitio web del proyecto es
http://rforge.net/JGR, donde se pueden encontrar instrucciones de instalación
para las plataformas Microsoft Windows, Mac OS X y Linux.

4. RStudio La última adición a las GUIs/IDEs independientes de la plataforma


es RStudio. El software está alojado en http://www.rstudio.com y
se distribuye bajo la licencia AGPLv3. Una característica de este IDE es que
puede instalarse como aplicación de escritorio o ejecutarse en un servidor,
donde los usuarios pueden acceder a RStudio a través de un navegador web.

5. Vim Por último, pero no menos importante, existe un plugin de R para el


editor Vim. El propio editor Vim está disponible desde hace más de 20 años.
UN BREVE CURSO DE 15
El software es R
16 UN BREVE CURSO DE
R
alojado en http://www.vim.org y está basado en el editor vi de Unix. El programa R
se encuentra en la sección "Scripts".

Puede encontrar más información sobre las interfaces gráficas de usuario y los IDE de R
en http://www
.sciviews.org, donde se ofrece una sinopsis de las GUI e IDE disponibles,
algunas de las cuales dependen de la plataforma. Se trata de un listado bastante
extenso, y también se incluyen soluciones de software que podrían no aparecer
como GUI, como un servicio web. Además, el lector puede suscribirse a la lista de
correo de un grupo de interés especial, RSIG-GUI, siguiendo las instrucciones en
https://stat.ethz.ch/ mailman/listinfo/r-sig-gui.

2.4 Clases, métodos y funciones


En esta sección, se ofrece una introducción concisa a los tres tipos de definiciones
de clases y métodos en R. El primer mecanismo de clases y métodos se denomina
S3, el segundo S4 y el tercero clase de referencia (RC). Dado que los mecanismos
de clase de referencia y S4 se incluyeron en R en una etapa posterior de su ciclo
de desarrollo (disponibles desde las versiones 1.4.0 y 2.12.0, respectivamente), las
clases y métodos S3 también se denominan a veces clases y métodos de estilo
antiguo. En Becker et al. (1988) y Chambers y Hastie (1992), para S3, y en
Chambers (1998, 2008), para S4, se ofrece una descripción detallada y elaborada
de estos esquemas de clases y métodos. Aparte de estas fuentes, las páginas de los
manuales de las clases y métodos de S3 y S4 pueden consultarse en ?Clases y
?Métodos, respectivamente. Las clases de referencia se documentan en su página
de ayuda asociada ?ReferenceClasses. La evolución y distinción entre estas
tres encarnaciones de la programación orientada a objetos (OO) se describe en
Chambers (2014, 2016). La necesidad de familiarizarse con estos conceptos de
clase y método viene motivada por el hecho de que hoy en día los paquetes de R
aportados utilizan uno u otro concepto y en algunos paquetes se establece un
vínculo entre las definiciones de clase y método de uno u otro tipo. Hay que tener
en cuenta que también hay paquetes de R en los que no se ha empleado en absoluto
el concepto de programación orientada a objetos en el sentido de nuevas
definiciones de clases y/o métodos, y dichos paquetes pueden considerarse
únicamente como colecciones de funciones.
Antes de describir cada uno de los tres conceptos, el lector recordará que todo en
R es un objeto, que una clase es la definición de un objeto y que un método es una
función mediante la cual se realiza un cálculo/manipulación predefinido sobre el
objeto. Además, existen funciones genéricas para los objetos S3 y S4 que tienen
como único objetivo determinar la clase del objeto y asociarle el método adecuado.
Si no se puede asociar ningún método específico a un objeto, se llamará a un
método por defecto como recurso. Las funciones genéricas para los objetos S3 y
S4 pueden considerarse, por tanto, como un paraguas bajo el que se reúnen todos
los métodos disponibles específicos de la clase. La diferencia entre las
clases/métodos de S3 y S4 radica en cómo se asocia una determinada clase a un
objeto y cómo se le envía un método.
Dado que R es un dialecto del lenguaje S, los objetos, clases y métodos S3 han
UN BREVE CURSO DE 17
R La asignación
estado disponibles desde los inicios de R, hace casi 20 años.
18 UN BREVE CURSO DE
R
de un nombre de clase y el envío de métodos en este esquema son bastante
informales y, por tanto, muy sencillos de implementar. No son necesarios
requisitos formales sobre la estructura de un objeto de clase S3, sólo se trata de
añadir un atributo de clase a un objeto. La rapidez con la que se puede añadir un
atributo de este tipo a un objeto y/o modificarlo se muestra en el siguiente ejemplo
en línea:

> x <- 1:5


>x
[1]12345
> clase(x)
[1] "entero"
> xchar <- x
> class(xchar) <- "character"
> clase(xchar)
[1] "carácter"
> xchar
[1] "1" "2" "3" "4" "5"

Cabe destacar en este ejemplo las diferentes formas cuando se imprimen x y


xchar. En el primer caso el objeto se imprime como un vector numérico, y en el
segundo como un vector de caracteres indicado por comillas. Esta observación nos
lleva directamente a cómo se realiza el envío de métodos dentro del marco S3.
Aquí se sigue una convención de nomenclatura simple: los métodos foo() para
los objetos de la clase bar se llaman foo.bar(). Cuando dicha función no está
definida, el mecanismo de envío de métodos de S3 busca una función
foo.default(). Los métodos disponibles para calcular la media de un objeto
pueden tomarse como ejemplo:

> media
function (x, ...)
UseMethod("media")
<bytecode 0x34956f0>
<entorno: namespace:base>
> métodos("media")
[1] mean.Date media.por defecto
[3] mean.difftime media.POSIXct
[5] mean.POSIXlt media.simple_sparse_array*
[7] mean.simple_triplet_matrix*
ver "?métodos" para acceder a la ayuda y al código fuente

Aquí, mean() es una función genérica y los métodos definidos para mean.bar()
son devueltos por la función methods(). Como se puede ver en la salida, aparte de la
media por defecto, se han definido métodos para calcular la media de bastantes
otras clases de objetos. A estas alturas, debería ser evidente que las clases y los
métodos de S3 pueden describirse mejor como una convención de nombres, pero
no llegan a lo que uno supone bajo la rúbrica de un enfoque maduro de
programación orientada a objetos. Por lo tanto, en Chambers (2014) S3 debe ser
visto como un esquema de programación funcional basado en objetos en lugar de
uno orientado a objetos. Uno de los principales escollos de las clases y métodos de
S3 es que no existe ningún proceso de validación para evaluar si un objeto que se
UN BREVE CURSO DE 19
afirma que es de una determinada clase realmente R
20 UN BREVE CURSO DE
R
pertenece a ella o no. Siguiendo con nuestro ejemplo anterior, esto se demuestra al
intentar calcular las medias de x y xchar:

> media(x)
[1] 3
> media(xchar)
[1] NA

Dado que x es de tipo entero, se invoca el método por defecto para calcular
la media. Como no existe un método mean.character(), también se llama al
método por defecto para xchar. Sin embargo, este método por defecto comprueba
si el argumento es numérico o lógico, y como esta prueba falla para xchar, se
devuelve un valor NA y la advertencia asociada es bastante indicativa de por qué
se ha devuelto tal valor. Sólo a modo de ejemplo, se podría definir un método mean()
para los objetos de la clase character en el sentido de que se devuelva la media
de caracteres en las cadenas, como se muestra a continuación:

> mean.character <- function(x, ...){


+ans <- media(nchar(x, ...))
+ ans
+}
> media(xchar)
[1] 1

Sin embargo, su simplicidad y su aplicabilidad bastante potente son puntos a favor de la


Sistema S3.
Las clases S4 ofrecen una definición rigurosa de un objeto, ya que exigen que
cualquier objeto válido se ajuste a la estructura de la clase especificada.
Recordemos que en el caso de las clases S3 no se requiere ninguna comprobación
formal del contenido correcto de un objeto perteneciente a una determinada clase.
Sin embargo, la introducción de un mecanismo de clases más formal tiene un coste:
la complejidad. Ahora ya no basta con asignar a un determinado objeto un atributo
de clase y definir métodos siguiendo la convención de nombres foo.bar(),
sino que el manejo de las clases y métodos S4 se realiza mediante un conjunto de
funciones contenidas en el paquete methods, que se incluye en la instalación base
de R. Las más comunes son:

• setClass() para definir una nueva clase S4;

• new() para crear un objeto de una determinada clase;

• setGeneric() para definir una función como genérica;

• setMethods() para definir un método para una determinada clase;

• as() y setAs() para coaccionar un objeto de una clase a otra clase;

• setValidity() y validObject() para validar la idoneidad de un


objeto perteneciente a una determinada clase;
UN BREVE CURSO DE 21
R
• showClass(), getClass(), showMethods(), findMethods(), y
getMethods() para mostrar la definición/disponibilidad de las clases y
métodos S4;

• slot(), getSlots(), @ para extraer elementos de un objeto.


Los siguientes ejemplos en línea muestran (i) cómo se puede definir una clase
para los pesos de la cartera, (ii) cómo se pueden validar estos objetos, y (iii) cómo
se pueden crear métodos para objetos de este tipo. Sin duda, se puede diseñar una
definición más elaborada, pero el objetivo de estos ejemplos de código es dar al
lector una impresión de cómo se manejan las clases y los métodos de S4.
En primer lugar, se crea una clase PortWgt:

> setClass("PortWgt",
+representación (Pesos = "numérico",
+Nombre = "personaje",
+Fecha = "carácter",
+Leveraged = "lógico",
+LongOnly = "lógico"))
> showClass("PortWgt")
Clase "PortWgt" [en ".GlobalEnv"]
Ranuras:
Nombre: Pesos NombreFecha Apalancada LongOnly
Clase: numérico carácter lógico lógico

La clase de peso de la cartera se define en términos de un vector numérico


Pesos que contendrá los pesos de la cartera, una cadena de caracteres Nombre
para nombrar la cartera asociada a este vector de pesos, así como una referencia de
fecha, Fecha. Además de estos espacios, se caracteriza el tipo de cartera: si es del
tipo long-only y/o si se permite el apalancamiento o no. Para ello se incluyen los
dos slots lógicos Leveraged y LongOnly, respectivamente.
En esta etapa, los objetos de la clase PortWgt podrían en principio ser creados
utilizando new():

> P1 <- new("PortWgt", Pesos = rep(0.2, 5),


+Nombre = "Equal Weighted",
+Fecha = "2001-03-31",
+LongOnly = TRUE,
+Leveraged = FALSE)

Sin embargo, normalmente se proporciona una función constructora para crear


estos objetos. Dentro del cuerpo de la función ya se pueden tener en cuenta algunas
medidas para salvaguardar la idoneidad de la entrada proporcionada por el usuario,
pero esto también se puede implementar por medio de una función de validación
específica.

> PortWgt <- function(Pesos, Nombre, Fecha = NULL,


+LongOnly = TRUE, Leveraged = FALSE){
+Pesos <- as.numeric(Pesos)
22 UN BREVE CURSO DE
R
+Nombre <- as.character(Nombre)
+if (is.null(Date)) Fecha <- as.character(Sys.Date())
+ans <- new("PortWgt", Pesos = Pesos, Nombre = Nombre,
+Fecha = Fecha, LongOnly = LongOnly,
+Aprovechado = Apalancado)
+ ans
+}
> P2 <- PortWgt(Pesos = rep(0.2, 5),
+Nombre = "Equal Weighted")

Uno de los puntos fuertes de S4 es su mecanismo de validación. En el ejemplo


anterior, por ejemplo, se podría haber creado un objeto de la clase PortWgt para
una cartera sólo a largo plazo en la que algunas de las ponderaciones podrían haber
sido negativas, o una cartera que no debería estar apalancada pero cuya suma de
pesos absoluta podría ser superior a la unidad. Para comprobar si los argumentos
suministrados en la función constructora no violan la especificación de la clase
desde el punto de vista del contenido, se especifica la siguiente función de
validación, principalmente para dilucidar este concepto:

> validPortWgt <- function(object){


+ if(objeto@LongOnly){
+if (any(object@Weights < 0)){
+return ("\NPonderías negativas para el long-only.")
+ }
+ }
+ if(!object@Leveraged){
+ if(sum(abs(object@Weights)) > 1){
+return ("\NSuma absoluta de pesos mayor que uno.")
+ }
+ }
+ TRUE
+}
> setValidity("PortWgt",
validPortWgt) Clase "PortWgt" [en
".GlobalEnv"]
Ranuras:

Nombre: Pesos NombreFecha Apalancada LongOnly


Clase: numérico carácter lógico lógico

Esta función devuelve TRUE si la información suministrada es válida y


conforme a la especificación de la clase, o un mensaje informativo en caso
contrario:

> PortWgt(Pesos = rep(-0.2, 5),


+Nombre = "Equal Weighted", LongOnly = TRUE)

Error en validObject(.Object) : clase inválida


Pesos negativos para long-only.

En la declaración en línea anterior se intentó la creación errónea de un objeto


PortWgt para una cartera de sólo largo plazo, pero con pesos negativos. Se
UN BREVE CURSO DE 23
devuelve un mensaje de error R
24 UN BREVE CURSO DE
R
y se avisa al usuario de que al menos una ponderación es negativa y, por tanto,
entra en conflicto con la característica de sólo largo. Del mismo modo, en el
siguiente ejemplo, la suma de pesos es mayor que 1 para una cartera no apalancada
y, por lo tanto, el objeto no se crea, sino que se devuelve un mensaje de error
informativo como el definido en validPortWgt():

> PortWgt(Pesos = rep(0.3, 5),


+Nombre = "Equal Weighted", Apalancado = FALSE)

Error en validObject(.Object) : clase inválida Suma


absoluta de pesos mayor que uno.

Hasta ahora, se ha definido una clase S4 para los pesos de la cartera,


PortWgt, y se ha creado una función con- structiva PortWgt() junto con una
función para validar los argumentos suministrados por el usuario. El resto de esta
sección muestra cómo se pueden definir los métodos S4. En primer lugar, se crea un
método show() para mostrar de forma agradable los pesos de la cartera mediante
setMethod():

> setMethod("show", signature = "PortWgt",


+ function(object){
+ if(is.null(names(object@Weights))){
+N <- length(object@Weights)
+names (object@Weights) <- paste("Asset", 1:N)
+ }
+ cat(paste("Cartera:", objeto@Nombre))
+ cat("\n")
+ cat(paste("Sólo-largo:", object@LongOnly))
+ cat("\n")
+ cat(paste("Apalancado:", objeto@Apalancado))
+ cat("\n")
+ cat("Pesos:\n")
+ print(objeto@Pesos)
+ cat("\n")
+ })
[1] "show"

Si el vector de pesos suministrado se ha pasado a la creación del objeto sin


nombres, se crea primero un vector de caracteres genérico. En el resto del cuerpo del
método show() hay llamadas a la función cat() mediante la cual se mostrará el
contenido del objeto PortWgt. El resultado tendrá entonces el siguiente aspecto:

> P2
Cartera: Equal Weighted
Long-Only: TRUE
Apalancada: FALSO
Pesos:
Activo 1 Activo 2 Activo 3 Activo 4 Activo 5
0.2 0.2 0.2 0.2 0.2
UN BREVE CURSO DE 25
R
Podría tener sentido definir un método summary() para producir estadísticas
descriptivas del vector de pesos, lo cual se logra mediante:

> setMethod("summary", "PortWgt", function(object, ...){


+ summary(objeto@Pesos, ...)
+ })
[1] "resumen"
> resumen(P2)
Min. 1er Qu. MedianaMedia 3er Qu. Max.
0.2 0.2 0.2 0.2 0.2 0.2

En esta definición de método se aplica directamente el método summary() ya


existente para los objetos de la clase numeric al slot Pesos. Del mismo modo,
se puede definir un método length(), que devuelve el recuento de activos
como la longitud de este vector:

> setMethod("length", "PortWgt", function(x)


+ length(x@Pesos)
+ )
[1] "longitud"
> longitud(P2)
[1] 5

El lector podría preguntarse por qué, en el primer caso, la definición de la


función es en términos de función(objeto, ) y en el segundo
función(x) solamente.
La razón radica en las diferentes especificaciones de la función "genérica". Esta
especificación se muestra invocando getMethod("foo") para el método foo.
Inicialmente, un esqueleto de una definición de método para una clase particular
bar se crea por method.skeleton("foo", "bar").
El siguiente ejemplo en línea muestra la creación de una función genérica
pesos() y un método asociado para los objetos de la clase PortWgt. Primero
se define la función genérica sin método por defecto y a continuación se define el
método para los objetos PortWgt:

> setGeneric("pesos", function(objeto)


+ standardGeneric("pesos")
+ )
[1] "pesos"
> setMethod("pesos", "PortWgt", function(objeto)
+ objeto@Pesos
+ )
[1] "pesos"
> pesos(P2)
[1] 0.2 0.2 0.2 0.2 0.2

Sería conveniente que este método pudiera utilizarse también para asignar
nuevos valores a los pesos de las ranuras. Para ello, se procede igualmente
definiendo:

> setGeneric("pesos<-", function(x, ...... valor)


+ standardGeneric("pesos<-")
+ )
26 UN BREVE CURSO DE
R
[1] "pesos<-"
> setReplaceMethod("pesos", "PortWgt",
+función (x, ..., valor){
+x@Pesos <- valor
+ x
+ })
[1] "pesos<-"
> pesos(P2) <- rep(0.25, 4)
> P2
Cartera: Equal Weighted
Long-Only: TRUE
Apalancada: FALSO
Pesos:
Activo 1 Activo 2 Activo 3 Activo 4
0.25 0.25 0.25 0.25

Esta vez, debido a que se utiliza weights() como método de sustitución, la función
setReplaceMethod() ha sido invocado en su definición.
Un último ejemplo muestra cómo se puede crear un método coerce() utilizando el
método
setAs() del paquete de métodos:

> setAs(from = "PortWgt", to = "data.frame", function(from){


+nombres <- nombres(de@Pesos)
+ if(is.null(anames)){
+N <- longitud(de)
+nombres <- pegar("Activo", 1:N)
+ }
+ans <- data.frame(from@Fecha, t(pesos(from)))
+colnames (ans) <- c("Fecha", anames)
+ ans
+ })
> as(P2, "data.frame")
Fecha Activo 1 Activo 2 Activo 3 Activo 4
1 2015-10-09 0.25 0.25 0.25 0.25

En esta llamada se coacciona un objeto de la clase PortWgt en un objeto


data.frame combinando el sello de fecha y el vector de pesos de la cartera. En
esta definición se han utilizado los métodos length() y weights() definidos
anteriormente. Obsérvese cómo se invoca este método de coacción: la clase de
destino se incluye como una cadena de caracteres en la llamada a as(). Este
esquema es diferente a los métodos de coacción de estilo S3, como
as.data.frame(). Por supuesto, este método de estilo antiguo también puede
definirse para objetos de la clase PortWgt, pero esto se deja como ejercicio para
el lector.
El concepto de clase de referencia es muy diferente de los paradigmas S3 y S4.
Estos últimos se describen mejor como sabores de una implementación de
programación funcional orientada a objetos, mientras que una clase de referencia es
una instancia de un estilo de programación orientado a objetos encapsulado. En
otras palabras, para las clases S3 y S4, los métodos pertenecen a las funciones,
pero son miembros para los objetos de la clase de referencia. Además, los objetos
RC son mutables, por lo que no se aplica el comportamiento ordinario de R de
UN BREVE CURSO DE 27
"copiar al modificar", es decir, se aplica una copia deRla referencia local cuando un
cálculo puede alterar una referencia no local. Por lo tanto, RC se comporta más
como un objeto orientado a
28 UN BREVE CURSO DE
R
paradigmas de programación como los que se encuentran en lenguajes como
Python, Java y/o C++. Este comportamiento se consigue incrustando objetos RC en
un slot de entorno de una clase S4.
En las siguientes declaraciones en línea, la clase PortWgt se rediseña como clase
de referencia PortWgtRC:

> PortWgtRC <- setRefClass("PortWgtRC",


+campos = lista(
+Pesos = "numérico",
+Nombre = "personaje",
+Fecha = "carácter",
+Leveraged = "lógico",
+LongOnly = "lógico"))

La llamada a setRefClass() es similar a la función setClass()


introducida anteriormente para definir las clases S4. En un objeto RC un "campo"
es similar a un "slot" en las clases S4. Las nuevas instancias de objetos de
PortWgtRC se crean invocando el método $new() en las instancias RC:

> P3 <- PortWgtRC$new()


> P3
Objeto de clase de referencia de la clase
"PortWgtRC" Campo "Pesos":
numeric(0)
Campo
"Nombre":
character(0)
Campo "Fecha":
carácter(0)
Campo "Apalancado":
lógico(0)
Campo "LongOnly":
lógico(0)

Como no se ha definido ningún método $initialize(), todos los campos se


rellenan previamente con sus valores por defecto ("vacíos"). La asignación de los
valores de los campos puede realizarse en la llamada al método $new() o en
declaraciones de la forma foo$nombredecampo:

> P3$Pesos <- rep(0.2, 5)


> P3$Name <- "Equal Weighted"
> P3$Date <- "2001-03-31"
> P3$LongOnly <- TRUE
> P3$Leveraged <- FALSE

La mutabilidad de los objetos RC se ilustra intentando "copiar" un objeto y


cambiando el contenido de uno de sus campos:

> P4RC <- P3


> P4RC$LongOnly <- FALSE
> P3$LongOnly
[1] FALSO
UN BREVE CURSO DE 29
R
Este comportamiento probablemente no es esperado por un usuario incauto y en
contraste con el
Implementación de la clase S4:

> P4S4 <- P1


> P4S4@LongOnly <- FALSE
> P1@LongOnly
[1] TRUE

Todas las clases de referencia heredan de la clase envRefClass que


proporciona algunos métodos útiles, como $copy(). Por lo tanto, si uno quiere
copiar un objeto de clase de referencia, debe seguir la siguiente ruta:

> P3$LongOnly <- TRUE


> PortWgtRC$methods()
[1] "callSuper" "copiar" "exportar"
[4] "campo" "getClass" "getRefClass"
[7] "importar" "initFields" ".objectPackage"
[10] ".objectParent" "show" "trace"
[13] "untrace" "usingMethods"
> P4RC <- P3$copy()
> P4RC$LongOnly <- FALSE
> P3$LongOnly
[1] TRUE

Los métodos de una clase de referencia pueden definirse dentro de la llamada a


setRef- Class() como una lista de métodos con nombre o a través del
creador heredado $methods(), como en el siguiente ejemplo en el que se
redefine el método $show():

> PortWgtRC$methods(show = function(){


+ if(is.null(names(Weights))){
+N <- longitud(Pesos)
+names (Weights) <<- paste("Asset", 1:N)
+ }
+ cat(paste("Cartera:", Nombre))
+ cat("\n")
+ cat(paste("Sólo-largo:", Sólo-largo))
+ cat("\n")
+ cat(paste("Apalancado:", Apalancado))
+ cat("\n")
+ cat("Pesos:\n")
+ print(Pesos)
+ cat("\n")
+ })
> P4 <- PortWgtRC$new(Pesos = rep(0,2, 5),
+Nombre = "Equal Weighted",
+Fecha = "2001-03-31",
+LongOnly = TRUE,
+Leveraged = FALSE)
> P4
Cartera: Equal Weighted
Long-Only: TRUE
Apalancada: FALSO
30 UN BREVE CURSO DE
R
Pesos:
Activo 1 Activo 2 Activo 3 Activo 4 Activo 5
0.2 0.2 0.2 0.2 0.2

Dos puntos contenidos en la definición del método anterior son dignos de


mención. En primer lugar, a diferencia del estilo funcional OO de los métodos S4,
se puede acceder a los miembros de un objeto de la clase de referencia
directamente en el cuerpo de la función de la definición del método, por ejemplo,
Pesos en lugar de objetoPesos. En segundo lugar, los miembros sólo pueden
ser alterados utilizando el operador de asignación no local <<-.
Esta ha sido una introducción muy concisa a los estilos OO disponibles en R. Los
usuarios novatos de R probablemente se sentirán irritados por estos tres esquemas
complementarios de clases/métodos, pero podrían volver a la literatura y a las
referencias del manual proporcionadas para una discusión en profundidad. A
medida que un usuario novato de R progresa en la curva de aprendizaje,
probablemente apreciará la posibilidad de elegir entre tres encarnaciones distintas
de clases/métodos: un estilo OO funcional informal (S3), una implementación más
elaborada (S4) y una encapsulada (RC). Cada una de estas instalaciones tiene sus
puntos fuertes y débiles. Por ejemplo, el esquema de clases/métodos S4 puede
utilizarse para la formulación de problemas de porfía y para encontrar una solución
óptima; los objetos de clase de referencia pueden ser útiles para realizar pruebas
retrospectivas de estrategias de cartera y, por tanto, explotar la mutabilidad de los
pesos de la cartera a lo largo del tiempo; y, por último, pero no por ello menos
importante, el esquema S3 puede explotarse de forma fructífera para la creación
rápida de prototipos de código R y/o el ajuste de modelos/distribuciones
estadísticas.

2.5 El paquete adjunto FRAPO


El paquete que acompaña a este libro, FRAPO, está disponible en CRAN.
También puede descargarse del sitio web del autor en www.pfaffikus.de. Dentro
del paquete, se emplean clases y métodos S4. El propósito de este paquete es
proporcionar:

• los ejemplos de este libro;

• los conjuntos de datos que se utilizan en los listados de código R;

• clases, métodos y funciones para las técnicas y enfoques de optimización de


carteras que no han sido cubiertos en otros paquetes R contribuidos;

• funciones de utilidad, como el cálculo de los rendimientos, los indicadores


basados en la tendencia/momento y las estadísticas descriptivas de la cartera.

El listado 2.1 muestra en primer lugar cómo se puede instalar rápidamente el


paquete, donde se presupone que el usuario tiene acceso a Internet. Los paquetes
adicionales se instalan automáticamente según sea necesario. A continuación, el
paquete se carga en el espacio de trabajo. Al ejecutar la línea 6, se devuelve a la
UN BREVE CURSO DE 31
consola un resumen del paquete en términos de los temas R de ayuda cubiertos. La
parte de la descripción del paquete va seguida de un índice de los temas de ayuda.
La primera entrada es "BookEx": "Funciones de utilidad para manejar ejemplos de
libros". La página de ayuda de esta entrada se abre ejecutando el comando de la
línea 8, donde
32 UN BREVE CURSO DE
R
Código R 2.1 El paquete FRAPO.
## I n s t a l a c i ó n d e l p a r t i c i p o d e acompañamiento del libro 1

i n s t a l l . pa qu e t e s ("FRAPO" ) 2

## Carga del paquete 3

b i b l i o t e c a ( FRAPO) 4

## Visión general de las ay udas 5

h e l p ( paquete = FRAPO) 6

## A y uda para los e j e m pl o s 7

? BookEx 8

## Mostrar los ejemplos de código R 9

listEx ( ) 10

## D e v u e l v e el contenido de este ejemplo 11

showEx ( " C3R1 " ) 12

## E j e c u t a n d o este sistema 13

runEx ( " C3R1 " , echo = TRUE) 14

se utiliza el atajo ? para la función help(). Las funciones implementadas para


manejar los ejemplos de código R cubiertos en este libro se enumeran en la sección
de uso. Es decir, listEx() devolverá un vector de caracteres con los nombres de
los ejemplos de código R, la función showEx() mostrará un ejemplo de código R
en la salida estándar ( es decir, la consola), o puede ejecutarse directamente
llamando a runEx(), puede crearse una copia de un ejemplo en el directorio de
trabajo mediante la función saveEx(), y puede editarse llamando a editEx().
Esta última función es muy útil si el lector desea "jugar" con el código o
modificarlo de alguna manera (se le anima a hacerlo). Para reiterar, primero se crea
una copia del ejemplo de código R que se entrega con el paquete en el directorio de
trabajo, y la edición de este archivo y el guardado de los cambios no afectarán al
código R original tal y como aparece en este libro, a menos que R se inicie en el
subdirectorio del paquete "BookEx", lo que no se recomienda por la razón anterior.
En las restantes líneas de código se aclara el manejo de los ejemplos de código R.
Dada la escasez de series temporales financieras disponibles públicamente, se
incluyen en el paquete algunos conjuntos de datos, que se enumeran a
continuación. Algunos de estos conjuntos de datos pueden considerarse datos de
referencia.

• EESCBFX: Tipos de cambio de referencia del SEBC

• EuroStoxx50: EURO STOXX 50

• FTSE100: FTSE 100

• INDTRACK1: Índice Hang Seng y sus componentes

• INDTRACK2: Índice DAX 100 y componentes

• INDTRACK3: Índice FTSE 100 y sus componentes

• INDTRACK4: Índice Standard & Poor's 100 y componentes


UN BREVE CURSO DE 33
R
• INDTRACK5: Índice Nikkei 225 y sus componentes
• INDTRACK6: Índice Standard & Poor's 500 y componentes
• MIBTEL: Milano Indice Borsa Telematica
• MultiAsset: Datos del índice multiactivo
• NASDAQ: NASDAQ
• SP500: Standard & Poor's 500
• StockIndex: Datos del índice bursátil
• StockIndexAdj y StockIndexAdjD: Datos de índices bursátiles, a
final de mes y diarios.
Los conjuntos de datos EuroStoxx50, FTSE100, MIBTEL, NASDAQ y SP500
se utilizan en Cesarone et al. (2011) y pueden recuperarse en http://host
.uniroma3.it/docenti/cesarone/DataSets.htm. Estos conjuntos de
datos comprenden observaciones semanales de los componentes del índice que
comienzan el 3 de marzo de 2003 y terminan el 24 de marzo de 2008. Los autores
ajustaron los datos de precios para los dividendos y eliminaron las acciones si se
encontraban dos o más valores perdidos consecutivos. En el resto de los casos, las
entradas NA se sustituyeron por valores interpolados.
La serie de objetos de datos INDTRACK* forma parte de la biblioteca OR (véase
http://people.brunel.ac.uk/∼mastjjb/jeb/info.html) y se
utiliza en Beasley et al. (2003) y Canakgoz y Beasley (2008). Al igual que los
conjuntos de datos descritos anteriormente, estos objetos contienen observaciones
semanales del índice y sus componentes. Se han descartado los valores que faltan
durante el periodo de la muestra. Los datos se descargaron de DATASTREAM y se
hicieron anónimos. La primera columna se refiere a los datos del índice en sí. La
licencia de los datos para estas series temporales se incluye en el paquete como
archivo BeasleyLicence y también puede encontrarse en
http://people.brunel.ac.uk/∼mastjjb/jeb/orlib/legal.html.
El conjunto de datos sobre divisas del SEBC consiste en los tipos de cambio diarios al
contado de las principales divisas
frente al euro. La muestra comienza el 1 de abril de 1999 y termina el 4 de abril de
2012, lo que da un total de 3427 observaciones. Las monedas son AUD, CAD,
CHF, GBP, HKD, JPY y USD.
La fuente de los restantes conjuntos de datos MultiAsset, StockIndex,
Stock IndexAdj y StockIndexAdjD es Yahoo! Finance (véase
http://finance
.yahoo.com). Se proporcionan los precios diarios/de fin de mes no ajustados de
los principales mercados de acciones y/o bonos, así como del oro. La muestra de
MultiAsset comienza en noviembre de 2004 y termina en noviembre de 2011. El
periodo de muestra de los conjuntos de datos que cubren los principales mercados de
valores es mayor, ya que comienza en julio de 1991 y termina en junio de 2011. Con
respecto a la optimización de la cartera, que se trata a fondo en el capítulo
5 y la Parte III de este libro, los siguientes enfoques están disponibles (en orden
alfabético):
34 UN BREVE CURSO DE
R
• PAveDD(): Optimización de la cartera con restricción de retirada media;
• PCDaR(): Optimización de la cartera con restricción condicional de retirada
de fondos por riesgo;
• PERC(): carteras aportadas con igual riesgo;
• PGMV(): cartera de varianza mínima global;
• PMD(): cartera más diversificada;
• PMTD(): cartera mínima dependiente de la cola;
• PMaxDD(): optimización de la cartera con restricción de retirada máxima;
• PMinCDaR(): optimización de la cartera para la reducción mínima
condicional del riesgo.
Estas son funciones constructoras para objetos de la clase S4 PortSol
definida en FRAPO. Con el fin de fomentar la comprensión por parte del lector de
las clases y métodos de S4 tal y como se introdujo en la sección 2.4, el manejo de
estos objetos se dilucida en las siguientes declaraciones en línea de código R.
Como ejemplo, se determina la solución de una cartera global de mínima varianza
(GMV) para los principales índices bursátiles contenidos en el conjunto de datos
StockIndexAdj:

> datos(StockIndexAdj)
> R <- returnseries(StockIndexAdj, method = "discrete",
+trim = TRUE)
> P <- PGMV(R, optctrl = ctrl(trace = FALSE))

Una vez cargado el conjunto de datos en el espacio de trabajo, se calculan los


rendimientos discretos de las series de precios y se asignan al objeto R. El resultado
de la llamada a PGMV se almacena entonces en el objeto P. La estructura de un
objeto desconocido puede investigarse con la función str(), pero aquí
consultaremos la clase de P:

> clase(P)
[1] "PortSol"
attr(, "paquete")
[1] "FRAPO"

La estructura de esta clase puede entonces ser devuelta:

> showClass("PortSol")
Clase "PortSol" [paquete "FRAPO"]

Ranuras:
Nombre: pesos op tipo
Clase de llamada: numericlist
carácter llamada
UN BREVE CURSO DE 35
R
Subclases conocidas: "PortCdd", "PortAdd", "PortMdd"

En la salida se indica que esta clase está definida en el paquete FRAPO y


contiene las ranuras pesos, opt, tipo y llamada. En la segunda línea de la
sección de ranuras, se enumeran las clases de estas entidades. Así, la clase de los
pesos de la cartera es numérica, el resultado de la optimización es un objeto
lista, el tipo del puerto se describe como carácter, y la llamada a la función
por la que se ha creado el objeto es de clase llamada. La última línea de la salida
indica qué otras clases heredan de PortSol. La página de manual de la clase
PortSol se muestra mediante help("PortSol-class"). Los métodos
definidos para los objetos PortSol se muestran llamando a showMethods()
con el nombre de la clase se pasa como argumento clases.

> showMethods(classes = "PortSol", inherited =


FALSE) Función "completa":
<no es una función genérica S4>

Función "coredata":
<no es una función genérica S4>

Función "coredata<-":
<no es una función genérica S4>

Función ".DollarNames":
<no es una función genérica S4>

Función "formales<-":
<no es una función genérica S4>

Función "funciones":
<no es una función genérica S4>

Función "prompt":
<no es una función genérica S4>

Función "escala":
<no es una función genérica S4>
Función: show (paquete métodos)
object="PortSol"

Función: Solución (paquete FRAPO)


object="PortSol"

Función: actualizar (paquete stats)


object="PortSol"

Función: Pesos (paquete FRAPO)


object="PortSol"

Esto dice que existe un método show(), que se ejecuta automáticamente


cuando se devuelve el objeto. La función genérica para este método está disponible
en el paquete methods. El método Solution() para recuperar el resultado del
op- timizador está definido en el propio paquete FRAPO, al igual que el método
Weights() para extraer el vector de pesos óptimo.
36 UN BREVE CURSO DE
R
>P
Pesos óptimos para la cartera de tipo:
Varianza mínima global
SP500N225 FTSE100CAC40
GDAX HSI 36,6719 13,9499
49,3782 0,0000 0,0000 0,0000
> Pesos(P)
SP500 N225 FTSE100 CAC40
3,667185e+01 1,394991e+01 4,937824e+01 -5,526138e-07
GDAX HSI
-6,809098e-07 -7,415764e-07

También se dispone de un método update(). Este método es muy útil y ahorra


tiempo si se desea actualizar un objeto existente modificando los valores pasados a
los argumentos de la función generadora. Por ejemplo, el back-testing de la cartera,
en el que el fondo se reequilibra regularmente, puede llevarse a cabo utilizando el
método update() e incrementando la muestra de datos subyacente.
Para ver el código fuente real de la definición de un método, en lugar de
introducir el nombre del método se puede utilizar selectMethod():

> showMethods("Pesos", inherited = FALSE)


Función: Pesos (paquete FRAPO)
object="PortSol"
> selectMethod(f = "Pesos", signature = "PortSol")
Definición del método:

función (objeto)
{
ans <- slot(objeto, "pesos")
return(ans)
}
<entorno: namespace:FRAPO>
Firmas:
objeto
objetivo "PortSol"
definido "PortSol"

Como se puede ver en el cuerpo de la función, los medios alternativos para recuperar
la ranura
los pesos son:

> Pesos(P)
SP500 N225 FTSE100 CAC40
3,667185e+01 1,394991e+01 4,937824e+01 -5.526138e-07
GDAX HSI
-6,809098e-07 -7,415764e-07
> slot(P, "pesos")
SP500 N225 FTSE100 CAC40
3,667185e+01 1,394991e+01 4.937824e+01 -5.526138e-07
GDAX HSI
-6,809098e-07 -7,415764e-07
> P@pesos
SP500 N225 FTSE100 CAC40
UN BREVE CURSO DE 37
R
3,667185e+01 1,394991e+01 4,937824e+01 -5,526138e-07
GDAX HSI
-6,809098e-07 -7,415764e-07

Con estas últimas indicaciones y ejemplos, se espera que el lector tenga alguna
visión del trabajo con el esquema formal de clases y métodos en R.

Referencias
Beasley J., Meade N., y Chang T. 2003 An evolutionary heuristic for the index tracking
problem. European Journal of Operational Research 148, 621-643.
Becker R., Chambers J. y Wilks A. 1988 The New S Language. Chapman & Hall, Londres.
Canakgoz N. and Beasley J. 2008 Mixed-integer programming approaches for index
tracking and enhanced indexation. European Journal of Operational Research 196, 384-
399.
Cesarone F., Scozzari A., y Tardella F. 2011 Portfolio selection problems in practice: a
comparison between linear and quadratic optimization models. Quantitative Finance Papers
1105.3594, arXiv.org.
Chambers J. 1998 Programming with Data. Springer-Verlag, Nueva York.
Chambers J. 2008 Software for Data Analysis: Programming with R. Springer-Verlag, New
York.
Chambers J. 2014 Object-oriented programming, functional programming in R. Statistical Sci-
ence 29(2), 167-180.
Chambers J. 2016 Extending R. CRC Press, Taylor & Francis Group, Boca Ratón.
Chambers J. y Hastie T. 1992 Statistical Models in S. Chapman & Hall, Londres.
Fox J. 2009 Aspectos de la organización social y la trayectoria del proyecto R. The R Journal
1(2), 5-13.
Gentleman R. e Ihaka R. 1997 The R language En Proceedings of the 28th Symposium on
the Interface (ed. Billard L. y Fisher N.) The Interface Foundation of North America.
Graves S., Dorai-Raj S., y Francois R. 2013 sos: Search contributed R packages, sort by
package. Paquete R versión 1.3-8.
Ihaka R. y Gentleman R. 1996 R: A language for data analysis and graphics. Journal of Computational
and Graphical Statistics 5, 299-314.
R Core Team 2016 R: A Language and Environment for Statistical Computing R Foundation
for Statistical Computing Viena, Austria.
Zeileis A. 2005 CRAN task views. R News 5(1), 39-40.
38 UN BREVE CURSO DE
R

Datos del mercado financiero

3.1 Hechos estilizados de los rendimientos de los mercados


financieros
3.1.1 Hechos estilizados para series univariantes
Antes de abordar el tema de la modelización de los riesgos de los mercados
financieros, merece la pena considerar y revisar las características típicas de los
datos de los mercados financieros. Éstas se resumen en la literatura como "hechos
estilizados" (véase Campbell et al. 1997; McNeil et al. 2005). Estas propiedades
observadas tienen importantes implicaciones para evaluar si el modelo de riesgo
elegido es apropiado o no. Dicho de otro modo, un modelo de riesgo que no capte
adecuadamente las características de las series temporales de los datos del mercado
financiero tampoco será útil para derivar medidas de riesgo. Para los datos
observados de los mercados financieros, se pueden establecer los siguientes hechos
estilizados:

• Los datos de series temporales de rendimientos, en particular las series de


rendimientos diarios, no suelen ser independientes e idénticamente
distribuidos (iid). Este hecho no se ve afectado por los bajos valores absolutos
del coeficiente de autocorrelación de primer orden.
• La volatilidad de los procesos de retorno no es constante con respecto al tiempo.

• Los rendimientos absolutos o al cuadrado están muy autocorrelacionados.

• La distribución de los rendimientos de los mercados financieros es


leptocúrtica. La ocurrencia de eventos extremos es más probable en
comparación con la distribución normal.

• Los rendimientos extremos se observan de forma muy cercana en el tiempo


(agrupación de la volatilidad).
• La distribución empírica de los rendimientos está sesgada a la izquierda; es
más probable que se produzcan rendimientos negativos que positivos.
Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd.
Sitio web complementario: www.pfaffikus.de
30 DATOS DEL MERCADO
FINANCIERO
Código R 3.1 Hechos estilizados sobre los rendimientos de Siemens.
biblioteca ( f B a s i c s ) 1

biblioteca ( e v i r ) 2

d a t o s ( s i emens ) 3

S i e D a t e s < - as . c h a r a c t e r ( f orma t ( as . POSIXct ( a t r ( s iemens , 4


" veces " ) ) , "%Y-%m-%d " ) ) 5

S i e Re t < - t i m e S e r i e s ( s i emens ∗ 100 , c h a r v e c = S i e D a t e s ) 6

colnames ( S i e R e t ) < - " S i e R e t" 7


## He c hos e s t i l i z a d o s I 8

p a r ( mfrow = c ( 2 , 2 ) ) 9

s e r i e s P l o t ( Sie Ret , t i t l e = FALSE , main = " R e t u r n o s d e l o s d e s a r r o l l o s 10


Siemens " , c o l = " b l u e " ) 11

b o x P l o t ( Sie Ret , t i t l e = FALSE , main = " Box p l o t of R e t u r n s " , 12

c o l = " b l u e " , cex = 0 . 5 , pch = 19 ) 13

a c f ( Sie Ret , main = "ACF of R e t u r n s " , l a g . max = 20 , y lab = " " , 14

x l a b = " " , col = " b l u e " , c i . col = " r e d " ) 15

pa c f ( Sie Ret , main = "PACF de R e t o r n o s " , l a g . max = 20 , 16

y la b = " " , xl ab = " " , c o l = " b lue " , c i . c o l = " r e d " ) 17

## He c hos e s t i l i z a d o s I I 18

SieRetAbs < - abs ( S i e Re t ) 19

S i e Re t 1 00 < - t a i l ( s o r t ( abs ( s e r i e s ( S i e R e t ) ) ) , 100) [ 1 ] 20

idx < - que ( s e r i e s ( SieRetAbs ) > SieRet100 , a r r . i n d = TRUE) 21

SieRetAbs100 < - t i m e S e r i e s ( r e p ( 0 , l e n g t h ( S i e R e t ) ) , 22
c h a r v e c = t ime ( S i e R e t ) ) 23

SieRetAbs100 [ idx , 1 ] < - SieRetAbs [ i d x ] 24


acf ( Sie Ret Abs , main = "ACF of A b s o l u t e R e t u r n s " , l ag . max = 20 , 25

y la b = " " , xl ab = " " , c o l = " b lue " , c i . c o l = " r e d " ) 26

pa c f ( Sie Ret Abs , main = "PACF de A b s o l u t e R e t u r n s " , 27

l a g . max = 20 , y lab = " " , x lab = " " , c o l = " a z ul " , 28

ci . c o l = " r e d " ) 29

qqnormPl ot ( SieRet , main = "QQ- P l o t of R e t u r n s " , t i t l e = FALSE , 30

c o l = " b l u e " , cex = 0 . 5 , pch = 19 ) 31

p l o t ( Sie Ret Abs 100 , t y p e = " h " , main = " C l u s t e r í a d e v a l o r a c i ó n " ,32
y la b = " " , xl ab = " " , c o l = " b lue " ) 33

A modo de ejemplo, comprobaremos ahora si estos hechos estilizados son


aplicables a los rendimientos de las acciones de Siemens. El conjunto de datos de
rendimientos diarios está contenido en el paquete evir (véase Pfaff y McNeil
2012). Esta serie comienza el 2 de enero de 1973 y termina el 23 de julio de 1996,
y comprende 6146 observaciones.
En el listado 3.1 se cargan primero los paquetes necesarios fBasics (véase Würtz
et al. 2014) y evir. Las funciones contenidas en el primer paquete se utilizarán para
producir algunos de los gráficos. A continuación, se carga el conjunto de datos
siemens y se convierte en un objeto de la clase timeSeries con la función
del mismo nombre. A continuación, se produce el gráfico de series temporales de
los rendimientos porcentuales, un gráfico de caja de los mismos y la
autocorrelación y autocorrelación parcial, que se muestran en la Figura 3.1. Como
puede deducirse del gráfico de la serie temporal, existe una agrupación de la
volatilidad. Esto es más pronunciado
DATOS DEL MERCADO 31
FINANCIERO
Rendimiento diario de Gráfico de caja de
Siemens los rendimientos
5
0 5
0

- -
10 10
1975-01-01 1990-01-01

ACF de devoluciones PACF de


devoluciones
0.
8 0.
0. 02
4
0.
0 -
0 5 10 15 20 0.
04 5 10 15 20

Figura 3.1 Datos estilizados de Siemens, primera parte.

en la segunda mitad del período de la muestra. Además, según la mera econometría


del ojo, los rendimientos están sesgados hacia la izquierda y las colas pesadas son
evidentes, como puede verse en el gráfico de caja (panel superior derecho). La
mayor pérdida se produjo el 16 de octubre de 1989, con
-12.01%. La rentabilidad más alta, del 7,67%, se produjo el 17 de enero de 1991.
La asimetría es de -0,52 y el exceso de curtosis de 7,74, lo que indica claramente
unas colas pesadas. La función de autocorrelación (ACF) y la función de
autocorrelación parcial (PACF) apuntan a una ligera
autocorrelación de primer orden. Por cierto, la serie muestra cierta variación
sistemática en la frecuencia semanal; aunque significativa, es mucho menos
pronunciada que la autocorrelación diaria.
En la figura 3.2 se investiga además si los hechos estilizados sobre los
rendimientos del mercado financiero se mantienen en el caso de Siemens. En los
paneles superiores de esta figura se representan las autocorrelaciones y las
autocorrelaciones parciales de los rendimientos absolutos. Claramente, estas son
significativamente diferentes de cero y se reducen lentamente. En el panel inferior
izquierdo se presenta un gráfico cuantil-cuantil (QQ) comparado con la
distribución normal. El sesgo negativo y las colas pesadas se reflejan en los valores
cuantitativos de este gráfico. Por último, en el listado 3.1 se han recuperado los 100
mayores rendimientos absolutos del objeto SieRet. Estos valores se muestran en
el panel inferior derecho. Este gráfico de la serie temporal reivindica con mayor
claridad lo que ya se podía deducir del panel superior izquierdo de la Figura 3.1: en
primer lugar, la existencia de una agrupación de volatilidad; y en segundo lugar,
que los rendimientos se vuelven más volátiles en la segunda mitad del periodo de la
muestra.
Aunque estos hechos estilizados sólo se han ejemplificado con los rendimientos
32 DATOS DEL MERCADO
FINANCIERO

de las acciones de Siemens, no sólo son válidos para básicamente todos los
rendimientos de las acciones, sino que también son aplicables a otras clases de
activos, como los bonos, las divisas y los futuros de materias primas.
DATOS DEL MERCADO 33
FINANCIERO
ACF de rendimientos absolutosPACF de rendimientos absolutos

0.
8 0.
10
0.
4
0.
0. 00
0
0 5 10 15 20 5 10 15 20

QQ-Plot of Returns Int Agrupación de la volatilidad


Da er
tos val
8 12
0 5 os
or
de
de co
na nfi
do an 4
za
s - :
po 10 95 0
r %.
-4 -2 0 2 4 1975-01-01 1990-01-01
Si
eR Cuantiles normales
et
Figura 3.2 Datos estilizados de Siemens, segunda parte.

3.1.2 Hechos estilizados para series multivariantes


En la subsección anterior se han presentado los hechos estilizados de los
rendimientos univariantes de los mercados financieros. Desde el punto de vista de
la cartera, las características de las series de rendimientos multivariantes son de
interés. Aquí nos centraremos en estos hechos estilizados:

• El valor absoluto de las correlaciones cruzadas entre las series de


rendimientos es menos pronunciado y las correlaciones contemporáneas son
en general las más fuertes.

• En cambio, los rendimientos absolutos o al cuadrado sí muestran altas


correlaciones cruzadas. Esta conclusión empírica es similar a la del caso
univariante.

• Las correlaciones contemporáneas no son constantes en el tiempo.

• Las observaciones extremas en una serie de rendimientos suelen ir


acompañadas de extremos en la otra serie de rendimientos.

Estos hechos estilizados se dilucidan en el listado 3.2. Aquí se emplean datos


diarios del mercado de valores europeo para Francia, Alemania y el Reino Unido.
Este conjunto de datos se carga primero en R y se convierte de un objeto con
atributo de clase mts a un objeto zoo. El paquete zoo (véase Zeileis y Grothendieck
2005) es una alternativa al paquete timeSeries que se utilizó en el listado anterior.
A continuación, se elabora un gráfico de series temporales de los datos del índice.
El movimiento conjunto entre estos tres mercados de renta variable europeos es
bastante evidente en la figura 3.3. El movimiento conjunto con respecto a la
volatilidad entre las tres series de rendimientos continuos (que no se muestran aquí)
34 DATOS DEL MERCADO
FINANCIERO

es similar.
DATOS DEL MERCADO 35
FINANCIERO
Código R 3.2 Hechos estilizados sobre el mercado europeo de acciones.
b i b l i o t e c a ( zoo ) 1

d a t a ( E uSt ockMa rke t s ) 2

## S e r i e s d e t i e m p o d e l o s n i v e l e s 3

E u S t oc k L e ve l < - as . zoo ( E uSt oc kMa rke t s ) [ , c ( "DAX" , "CAC" , 4


"FTSE" ) ] 5

p l o t ( Eu Stock Level , x l a b = " " , main = " " ) 6

## E l r e n d i m i e n t o d e l a t e c n o l o g í a 7

EuStockRet < - d i f f ( l o g ( E u St o c kL e ve l ) ) ∗ 100 8


p l o t ( Eu Stock Ret , x l a b = " " , main = " " ) 9

## Cross c o r r e l a c i o n e s 10

l a y o u t ( m a t r i x ( 1: 6 , nrow = 3 , n c o l = 2 , byrow = TRUE) ) 11

c c f ( EuStockRet [ , 1 ] , EuStockRet [ , 2 ] , y l a b = " " , x l a b = " " , 12

l a g . max = 20 , main = " R e t u r n s DAX vs CAC" ) 13

c c f ( abs ( E uSt oc kRe t ) [ , 1 ] , abs ( E uStoc kRe t ) [ , 2 ] , y l a b = " " , 14

xlab = " " , l a g . max = 20 , main = " A b s ol u t e r e t u r n s DAX vs 15

CAC" ) 16

c c f ( EuStockRet [ , 1 ] , EuStockRet [ , 3 ] , y l a b = " " , x l a b = " " , 17

l a g . max = 20 , main = " R e t u r n s DAX vs FTSE" ) 18

c c f ( abs ( E uSt oc kRe t ) [ , 1 ] , abs ( E uStoc kRe t ) [ , 3 ] , y l a b = " " , 19

xlab = " " , l a g . max = 20 , main = " A b s ol u t e r e t u r n s DAX vs 20

FTSE" ) 21

c c f ( EuStockRet [ , 2 ] , EuStockRet [ , 3 ] , y l a b = " " , x l a b = " " , 22

l a g . max = 20 , main = " R e t u r n s CAC vs FTSE" ) 23

c c f ( abs ( E uSt oc kRe t ) [ , 2 ] , abs ( E uStoc kRe t ) [ , 3 ] , y l a b = " " , 24

xlab = " " , l a g . max = 20 , main = " A b s ol u t e r e t u r n s CAC vs 25

FTSE" ) 26

## C o r r e l a c i ó n d e l a s c o r r e l a c i o n e s 27

rollc < - function ( x ) { 28

dim < - nc ol ( x ) 29

r c o r < - c o r ( x ) [ lower . t r i ( d iag ( dim ) , d iag = FALSE) ] 30


retorno ( r c o r ) 31
} 32

r c o r < - r o l l a p l i c a ( EuStockRet , width = 250 , r o l l c , 33


a l i g n = " r i g h t " , by . column = FALSE) 34

colnames ( r c o r ) < - c ( "DAX & CAC" , "DAX & FTSE" , "CAC & FTSE" ) 35
p l o t ( r c o r , main = " " , x l a b = " " ) 36

Este artefacto se refleja cuando se observan las correlaciones cruzadas de las re-
vueltas absolutas en la Figura 3.4 (gráficos mostrados a la derecha). Como ya se ha
señalado, los rendimientos apenas tienen correlación cruzada entre los mercados y
se reducen con bastante rapidez (gráficos de la izquierda). Sin embargo, las
correlaciones cruzadas son evidentes para su contraparte absoluta. Este artefacto es
más pronunciado en el caso de la bolsa alemana frente a la británica.
Por último, en la figura 3.5 se muestran las correlaciones basadas en una ventana
móvil de 250 observaciones. Para calcular estas correlaciones móviles, se ha
utilizado un
36 DATOS DEL MERCADO
FINANCIERO
60
00

DAX
4000
20
00

50
C 00
15
A 00
C 25
00
35
00
FT
S
E 30
00

1992 1993 1994 1995 1996 1997 1998

Figura 3.3 Datos del mercado bursátil europeo.

Rentabilidad DAX vs CACA Rentabilidad absoluta DAX vs CAC


0. 0.
6 4
0. 0.
0 0
-0.05 0.00 0.05 -0.05 0.00 0.05

Rendimiento del DAX frente al FTSEAl rendimiento absoluto del DAX frente al FTSE
0. 0.
5 3
0. 0.
0 0
-0.05 0.00 0.05 -0.05 0.00 0.05

Rendimientos CAC vs FTSEArendimientos absolutos CAC vs FTSE


0. 0.
5 3
0. 0.
0 0
-0.05 0.00 0.05 -0.05 0.00 0.05

Figura 3.4 Correlaciones cruzadas entre los rendimientos de las bolsas europeas.
DATOS DEL MERCADO 37
FINANCIERO

CAC
&
FTSE
DAX
&
FTSE
DAX
&
CAC
0.4
0.
6
0.
8
0.
4
0.
6
0.
8 1993 1994 1995 1996 1997 1998
0.
4
Figura
0.
3.5 Correlaciones móviles de los mercados bursátiles europeos.
6
0.
se define
8 primero la función rollc(). Dentro de esta función se calcula la matriz
de correlación y, debido a su simetría, se extrae la parte triangular superior de la
misma. El cálculo de las correlaciones de balanceo se realiza entonces con la
función rollapply() contenida en zoo. Los gráficos de estas correlaciones son
bastante similares para todos los pares retratados, al igual que sus rangos. Para el
DAX/CAC la correlación oscila entre 0,505 y 0,838, para el DAX/FTSE los valores
están entre 0,42 y 0,749, y por último para el CAC/FTSE la correlación está en el
intervalo de 0,451 a 0,76.

3.2 Implicaciones para los modelos de riesgo


Los hechos estilizados para los rendimientos financieros univariantes y
multivariantes se han dado en la sección anterior. Con respecto a los modelos de
riesgo y a las medidas de riesgo derivadas de ellos, se pueden deducir hasta ahora
los siguientes requisitos normativos:
• Los modelos de riesgo que asumen procesos iid para las pérdidas no son
adecuados durante todos los episodios del mercado.
• Los modelos de riesgo basados en la distribución normal se quedan cortos a
la hora de predecir la frecuencia de los eventos extremos (pérdidas).
• Los modelos de riesgo deben ser capaces de abarcar y abordar los diferentes
regímenes de volatilidad. Esto significa que las medidas de riesgo derivadas
deben adaptarse a entornos cambiantes de baja y alta volatilidad.
• En el contexto de la cartera, el modelo empleado debe ser lo suficientemente
flexible como para permitir las dependencias cambiantes entre los activos; en
particular, debe tenerse en cuenta el movimiento conjunto de las pérdidas.
38 DATOS DEL MERCADO
FINANCIERO
La segunda parte de este libro se centrará en estas cuestiones. Se presentarán
métodos y técnicas estadísticas que abordan total o parcialmente estos hechos
estilizados.

Referencias
Campbell J., Lo A. y MacKinlay A. 1997 The Econometrics of Financial Markets 2nd print-
ing with corrections edn. Princeton University Press, Princeton, NJ.
McNeil A., Frey R. y Embrechts P. 2005 Quantitative Risk Management: Concepts, Tech-
niques and Tools. Princeton University Press, Princeton, NJ.
Pfaff B. y McNeil A. 2012 evir: Extreme Values in R. Paquete R versión 1.7-3.
Würtz D., Setz T. y Chalabi Y. 2014 fBasics: Rmetrics - Mercados y estadísticas básicas.
Paquete R versión 3011.87.
Zeileis A. y Grothendieck G. 2005 zoo: Infraestructura S3 para series temporales regulares e irregulares.
Journal of Statistical Software 14(6), 1-27.
4

Medir los riesgos

4.1 Introducción
Hacia el final de la primera década de este siglo, el foco de atención de los
inversores se desplazó, entre otras cosas debido a la crisis financiera, hacia la
necesidad de medir adecuadamente los riesgos. Pero también conviene ser capaz de
captar correctamente las pérdidas potenciales durante los episodios de mercado
más tranquilos. Si un inversor fuera demasiado conservador con respecto al riesgo
durante esas fases, pondría en peligro posibles oportunidades de inversión.
Además, hay razones normativas y argumentos económicos que exigen una
evaluación adecuada del riesgo. En cuanto a los primeros, cabe mencionar los
requisitos más estrictos impuestos por los Acuerdos de Basilea, y en cuanto a los
segundos, la presunción normativa de una asignación eficiente de recursos entre los
activos de riesgo. Si el riesgo de un instrumento financiero no se capta
correctamente, su precio sería en general engañoso y, por tanto, provocaría una
asignación ineficiente de los fondos. Por último, una evaluación adecuada de los
riesgos del mercado por parte de sus participantes contribuye a garantizar el buen
funcionamiento del sistema financiero. Por ejemplo, si los participantes en el mercado
tienen que revisar sus estimaciones de riesgo a gran escala, como ocurrió durante la
crisis de las hipotecas de alto riesgo, y por tanto quieren o tienen que reequilibrar
sus fondos, una reacción similar a la de una estampida secará rápidamente la
liquidez del mercado y agravará las posibles pérdidas, debido a la falta de
contrapartidas.

4.2 Sinopsis de las medidas de riesgo


Las medidas de riesgo introducidas en esta sección se basan en un modelo de
probabilidad de las pérdidas potenciales a las que se enfrentaría un inversor. La
riqueza del inversor W(t) se considera una variable aleatoria, y se supone que su
realización en el momento t es

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
40 DATOS DEL MERCADO
FINANCIERO

2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd.
Sitio web complementario: www.pfaffikus.de
38 MEDIR LOS
RIESGOS
conocido. El valor de la riqueza en ese momento concreto depende del vector de
factores de riesgo zt , que ejercen una influencia sobre la posición patrimonial del
inversor:

Wt = f (t, zt). (4.1)

Los precios de los instrumentos financieros, los tipos de cambio y/o los tipos de
interés pueden modelizarse como factores de riesgo, por ejemplo. Se supone que
éstos son conocidos en el momento t. En cambio, el valor futuro de la riqueza
después de un lapso de tiempo es desconocido. Puede ser la posición de la riqueza
dentro de 1 o 10 días. La pérdida que se produce al cabo de un tiempo es de-
anotado por Lt,t+Δ, y esto no es más que la diferencia en las posiciones de riqueza
en t + Δ y t. Es convencional que las pérdidas se expresen como números positivos:

Lt,t+Δ ∶= -(Wt+Δ - Wt ). (4.2)

Sustituyendo (4.1) en (4.2), es inmediatamente evidente que las pérdidas están


determinadas por los cambios en los factores de riesgo:

Lt+Δ = -( f (t + Δ, zt + xt+Δ) - f (t, zt)), (4.3)

donde xt = zt - zt-Δ.
Dado que la riqueza W(t) es una variable aleatoria, la función de pérdida, como la
diferencia
entre dos posiciones de riqueza en el tiempo, es también una variable aleatoria.
Como tal, tiene una distribución de probabilidad, que en adelante se denominará
distribución de pérdidas. Esta distribución puede hacerse depender de la
información disponible en el momento t. En este caso, se obtendría una distribución
condicional. Si, por el contrario, la distribución es independiente del tiempo, la
distribución es incondicional con respecto al tiempo.
Como primer paso, sólo se considera la modelización del riesgo de mercado para
un único instrumento financiero. Por lo tanto, el precio del activo es el factor de
riesgo y la pérdida depende del periodo de tiempo y de la variación del precio
dentro de este periodo. A continuación, limitaremos el análisis a la distribución
incondicional de las pérdidas y a las medidas de riesgo que pueden deducirse de
ella.
En la práctica, la medida de riesgo más habitual es el valor en riesgo (VaR). Este
concepto fue introducido por JP Morgan en la primera versión de su publicación
RiskMetrics y luego fue tratado a fondo en la literatura académica (véase Risk-
Metrics Group 1994).1 Las exposiciones de los libros de texto se incluyen, por
ejemplo, en Jorion (2001) y McNeil et al. (2005). Para un determinado nivel de
confianza 𝛼 ∈ (0, 1), el VaR se define como el menor número l tal que la
probabilidad de una pérdida L no es mayor que (1 - 𝛼) para pérdidas mayores que l.
Este valor corresponde a un cuantil de la distribución de pérdidas y puede
expresarse formalmente como

VaR𝛼 = inf {l ∈ ℝ ∶ P(L > l) ≤ 1 - 𝛼} = inf {l ∈ ℝ ∶ F (l)


L ≥ 𝛼}, (4.4)
MEDIR LOS 39
1
RIESGOS
Por cierto, como se subraya en Alexander y Baptista (2002), este tipo de medida de riesgo fue
defendida ya en 1963 por Baumol y se denominó criterio de ganancia esperada-límite de confianza
(véase Baumol 1963).
40 MEDIR LOS
RIESGOS
donde FL es la función de distribución de las pérdidas. En aras de la exhaustividad,
mean
se introduce también el concepto𝛼 de VaR medio, VaR ,. Esta medida de riesgo
se define como la diferencia entre el VaR𝛼 y la rentabilidad esperada 𝜇. Si el
periodo de tiempo elegido es de 1 día, esta medida también se denomina ganancias
diarias en riesgo.
Una de las críticas contra el uso del VaR como medida de riesgo es que no es
concluyente sobre la magnitud de la pérdida si ésta es mayor que la que implica el
nivel de confianza elegido. Dicho de otro modo, si hay 95 días soleados y 5
lluviosos, uno no suele estar interesado en la menor cantidad de lluvia que cabe
esperar en estos cinco días lluviosos, sino que le gustaría tener una estimación de la
precipitación media en estos casos. La medida de riesgo de déficit esperado (ES),
introducida por Artzner et al. (1997) y Artzner (1999), aborda directamente esta
cuestión. Esta medida proporciona una visión retrospectiva sobre el tamaño de la
pérdida esperada si se ha violado el VaR para un nivel de confianza determinado. Se
define como
para un error de tipo 1 1
I 𝛼 como ES = ( )du, (4.5)
𝛼
1-𝛼 𝛼 ∫ qu FL

donde qu(FL) es la función cuantil de la distribución de pérdidas FL. Por lo tanto, el


ES puede expresarse en términos del VaR como
1 1
ES = VaRu(L)du, (4.6)
1 - 𝛼 ∫𝛼
𝛼

y puede interpretarse como el VaR medio en el intervalo (1 - 𝛼, 1). Para


comprender mejor estos conceptos, en la figura 4.1 se muestran las medidas de
riesgo VaR y ES y la pérdida esperada.
Hasta ahora, no se ha hecho ninguna suposición explícita sobre el tipo de
distribución de pérdidas. El VaR y el ES pueden calcularse basándose en la
distribución empírica para una muestra determinada. En esta aproximación a una
simulación histórica se ordenan las pérdidas con respecto a su tamaño. Como
ejemplo, tomemos una muestra de 1000 observaciones de pérdidas. Entonces, el
VaR con un nivel de confianza del 99% correspondería a la décima pérdida más
grande y el ES puede determinarse como la media o la mediana de las 10 pérdidas
más grandes. A diferencia de la determinación de las medidas de riesgo sólo a
partir de los datos históricos, también se podría suponer que las pérdidas siguen
alguna distribución. Si se supone que las pérdidas se distribuyen normalmente,
estas medidas de riesgo pueden calcularse de forma cerrada como

VaR𝛼 = 𝜎Φ−1 (𝛼) - 𝜇, (4.7)


𝜙(Φ-1(𝛼))
ES𝛼 = - 𝜇, (4.8)
𝜎 1-𝛼

donde 𝜙 denota la función de densidad de la distribución normal estándar.


Aunque hasta ahora hemos asumido que las pérdidas son iid, vale la pena
subrayar que si se elige una suposición infundada con respecto a la distribución
elegida de la que se derivan las medidas de riesgo, puede producirse un grave error
de modelización. De los hechos estilizados del capítulo anterior se desprende que
no se puede suponer normalmente una distribución de los rendimientos. La
MEDIR LOS 41
RIESGOS

distribución empírica de los rendimientos posee más masa de probabilidad en las


colas en comparación con la distribución gaussiana. La implicación es entonces
que las medidas de riesgo que se derivan del supuesto normal generalmente
42 MEDIR LOS
RIESGOS

0.
25

0. E(L) VaR ES
20

Densid
ad
0.
0.1 (1-α)
5
10

0.
05

0. (α)
00
-4 -2 0 2 4
Pérdidas

Figura 4.1 Densidad de pérdidas con VaR y ES.

subestimar el riesgo de una posición en un solo instrumento financiero. El error de


modelización se reduce al suponer, por ejemplo, una distribución t de Student con
menos de 30 grados de libertad, debido a una mayor masa de probabilidad en las
colas en comparación con la distribución normal. No obstante, puede producirse un
error de modelización. Además, hay que destacar que estas dos distribuciones son
simétricas. Por lo tanto, esta característica implicaría un error de modelización en
los casos de pérdidas sesgadas, es decir, las pérdidas se distribuyen de forma
asimétrica. En principio, este error puede rectificarse empleando estimadores de
momentos parciales para la dispersión de las pérdidas.
Los hechos estilizados de las distribuciones de rentabilidad/pérdida sesgadas y
de cola gruesa también pueden reflejarse directamente en el cálculo del VaR.
Zangari (1996) propuso el VaR modificado (mVaR), que tiene en cuenta
explícitamente los momentos superiores. En este caso, la función cuantílica
verdadera pero desconocida se aproxima mediante una extensión de Cornish-Fisher
de segundo orden basada en la función cuantílica de la distribución normal (véase
Cornish y Fisher 1937; Jaschke 2001). Por lo tanto, el mVaR también se denomina
VaR de Cornish-Fisher y se define como
(q2 - 1)S (q3 - 3q )K (2q3 - 5q )S2
mVaR = VaR +𝛼 +𝛼 𝛼 - 𝛼 𝛼 , (4.9)
𝛼 𝛼 6 24 36
donde S denota la asimetría, K el exceso de curtosis, y q𝛼 el cuantil de una variable
aleatoria normal estándar con nivel 𝛼. En el caso de una variable aleatoria
normalmente distribuida, mVaR𝛼 = VaR𝛼 porque la asimetría y el exceso de
curtosis son cero. El VaR de Cornish-Fisher produce una estimación de riesgo más
conservadora si la rentabilidad
MEDIR LOS 43
RIESGOS
5 stVaR
nVaR
mVaR

Nivele
s de
VaR
3

0.90 0.92 0.94 0.96 0.98 1.00


Probabilidad de pérdidas

Figura 4.2 VaR gaussiano, mVaR y VaR de una distribución t de Student sesgada.

está sesgada a la izquierda (las pérdidas están sesgadas a la derecha) y/o el exceso
de curtosis es mayor que cero. Hay que tener en cuenta que el mVaR produce
estimaciones de riesgo menos conservadoras que el VaR gaussiano si no se
cumplen estas condiciones.
En la Figura 4.2 se muestra una comparación entre el mVaR y el VaR gaussiano
para niveles de confianza en el intervalo [90%, 100%). Aquí las pérdidas se han
calculado a partir de una distribución t de Student sesgada con 10 grados de
libertad y un parámetro de asimetría de 𝜉 = 1,5. El parámetro de asimetría 𝜉 > 0 se
define como la raíz cuadrada de la relación para las probabilidades por encima y
por debajo de la media. Si 𝜉 < 1 se produce una distribución sesgada a la izquierda,
si 𝜉 = 1 la distribución es simétrica, y si 𝜉 > 1 se produce una distribución sesgada a
la derecha (véase Lambert y Laurent 2001). Se puede concluir de esta figura que,
para la constelación de parámetros elegida, el VaR real está bastante bien
capturado por el mVaR, y que si se utilizara el VaR gaussiano en su lugar, el riesgo
estaría notablemente subestimado.
En Boudt et al. (2008) se derivó un ES modificado (mES) a partir del VaR de
Cornish-Fisher, para lo cual se utilizó una expansión de Edgeworth de segundo
orden. Su cálculo se limita únicamente a la cola izquierda de la distribución. Sin
embargo, el mES así derivado puede ser menor que el mVaR para 𝛼 → 0. Este
artefacto se debe a la naturaleza de la expansión de Edgeworth. Los autores
sugieren en estos casos elegir la estimación de riesgo más conservadora de las dos
como solución pragmática.
En la Parte II se tratarán enfoques más directos y alternativas prometedoras en
cuanto a la modelización de los riesgos de mercado, respetando los hechos
estilizados de los rendimientos de los mercados financieros.
44 MEDIR LOS
RIESGOS
4.3 Conceptos de riesgo de cartera
No hace falta decir que las medidas de riesgo introducidas en la sección anterior
pueden calcularse también para los datos de rentabilidad de la cartera. Pero en el
contexto de una cartera, un inversor suele estar interesado en las contribuciones al
riesgo de las posiciones individuales o de un grupo de ellas. Además, puede estar
interesado en saber cómo se ve afectado el riesgo de la cartera si el peso de una
posición se incrementa en una unidad, es decir, la contribución marginal al riesgo.
El concepto de VaR por componentes o ES por componentes responde a la primera
cuestión. Esta noción de descomponer el riesgo global en posiciones individuales
de una cartera también puede aplicarse al mVaR y al mES (véase Boudt et al.
2008).
Supondremos ahora que una cartera está formada por N instrumentos financieros con un peso
vector 𝜔. La rentabilidad de la cartera es igual a rp = 𝜔′ 𝜇 y la varianza de la cartera
se compone de m2 = 𝜔 ′ Σ𝜔, donde 𝜇 denota el vector de rentabilidad de los
instrumentos y Σ es la matriz de varianza-covarianza de los activos de la cartera.
Bajo el supuesto de
normalidad, las medidas de riesgo VaR y ES pueden calcularse como
VaR𝛼 = -𝜔′ 𝜇 - √m2Φ-1(𝛼), (4.10)
= -𝜔′ 𝜇 + √m 1 𝜙[Φ-1(𝛼)], (4.11)
ES𝛼 2
𝛼
donde 𝜙(⋅) es la densidad y Φ-1(⋅) la función cuantil de la distribución normal
estándar.
Estas dos medidas de riesgo dependen sólo del primer y segundo momento
central y son linealmente homogéneas en 𝜔. Para las medidas de riesgo de este tipo
(es decir, f (𝜔)), se puede lograr un desglose por componentes considerando las
derivadas parciales
N

f (𝜔) = 𝜔i𝛿i f (𝜔), (4.12)
i=1

donde 𝛿i f (𝜔) = 𝛿f (𝜔)∕𝛿𝜔i es la derivada parcial para el peso de la cartera del i-ésimo
activo e i = 1, ... , N.
Por tanto, la contribución al riesgo de la i-ésima posición de la cartera viene dada por Ci f
(𝜔) =
𝜔i𝛿i f (𝜔). Esto también puede expresarse en términos relativos (es decir, como un
porcentaje), utilizando %Ci f (𝜔) = Ci f (𝜔)∕f (𝜔)× 100. Por lo tanto, las
contribuciones al riesgo de cada uno de los componentes de la cartera pueden
calcularse como
𝛿 VaR(𝛼) = -𝜇 - 𝛿im2 Φ-1 (𝛼), (4.13)
i i
2√m
21
𝛿 ES(𝛼) = -𝜇 + 𝛿im2 𝜙[Φ-1(𝛼)], (4.14)
i i
2√m 𝛼
2

donde 𝛿im2 = 2(Σ𝜔)i . Cabe señalar que, en el caso de la distribución normal, las
derivadas parciales con respecto a los pesos de la cartera pueden calcularse con
bastante facilidad y que no es así si se asumen distribuciones alternativas y/o
MEDIR LOS 45
RIESGOS
medidas de riesgo más complejas. En estos casos, las contribuciones al riesgo
pueden obtenerse de forma heurística mediante un análisis de Monte Carlo, por
ejemplo.
Como se ha indicado anteriormente, los momentos tercero y cuarto son
necesarios para calcular las medidas de riesgo modificadas mVaR y mES. En el caso
de las variables aleatorias multivariantes, estos momentos están definidos por la
matriz (N × N2 )

M3 = E[(r - 𝜇)(r - 𝜇)′ ⊗ (r - 𝜇)] (4.15)

para la asimetría y por la matriz N × N 3

M4 = E[(r - 𝜇)(r - 𝜇)′ ⊗ (r - 𝜇)′ ⊗ (r - 𝜇)′] (4.16)

para la curtosis. Aquí, el operador ⊗ denota el producto de Kronecker entre dos ma-
trices. Se deduce que el tercer momento de una cartera viene dado por m3 = 𝜔′ M3
(𝜔⊗ 𝜔) y el cuarto momento puede calcularse como m4 = 𝜔′ M4 (𝜔⊗ 𝜔⊗ 𝜔),
donde los momentos teóricos se expresan mediante sus respectivas estimaciones.
Las derivadas parciales para estos momentos son 𝛿im3 = 3(M3(𝜔⊗ 𝜔))i y 𝛿im4 =
4(M4(𝜔⊗ 𝜔⊗ 𝜔))i . Fi-
nalmente, la asimetría de una cartera puede determinarse como sp = m3∕M3∕2 y el exceso
curtosis evaluando la expresión k = m ∕M2 - 2
p 4 2 3. Boudt et al. (2008) proporcionan
una
La derivación detallada de estos resultados, así como las derivadas parciales para
determinar las contribuciones al riesgo. Éstas pueden enunciarse de forma similar a
como se hizo para la medida de riesgo no modificada (véanse los apartados (4.13) y
(4.14) anteriores).
Una vez introducidas las medidas de riesgo de mercado más comunes, a saber, el
VaR, el ES y sus modificaciones, abordaremos a continuación la cuestión de su
idoneidad en el contexto de la cartera. Artzner et al. (1996) y Artzner (1999);
Artzner et al. (1997) definieron cuatro axiomas y derivaron de ellos la definición de
una medida de riesgo coherente. Los axiomas se denominan:
• monotonicidad
• invarianza de traslación
• homogeneidad positiva
• subaditividad.
A continuación se explicarán brevemente estos cuatro axiomas. Sea 𝜌 una medida de
riesgo
𝜌(L) y de riesgo de una cartera, donde la pérdida L es una variable aleatoria.
el valor

El axioma de monotonicidad requiere, para dos pérdidas dadas L1 y L2 con L1 ≤


L2 , que esta relación también se refleja cuando se calculan las medidas de riesgo

para cada pérdida. Por lo tanto, una medida de riesgo debe cumplir la condición
𝜌(L) 1 𝜌(L 2) para ser
considerado como una medida monótona de riesgo.
El axioma de invariancia de traslación garantiza que la medida de riesgo se
define en las mismas unidades que las pérdidas y se escribe formalmente como 𝜌(L
46 MEDIR LOS
RIESGOS

+ l) = 𝜌(L) + l con l ∈ ℝ.
Una medida de riesgo satisface el axioma de homogeneidad positiva si 𝜌(𝜆L) = 𝜆𝜌(L)
con
𝜆 > 0. Este requisito garantiza el escalado de las medidas de riesgo con respecto al
tamaño de una posición. Este axioma se violaría si el tamaño de una posición de la
cartera
MEDIR LOS 47
RIESGOS
influye directamente en su nivel de riesgo. Como ejemplo, supongamos que el
precio de una acción es de 100 unidades monetarias y la medida de riesgo asociada
es del 3% para un periodo de tenencia de 1 día. Entonces el riesgo debería ser
escalable con respecto al tamaño de la posición. Si uno posee una acción, el riesgo
sería de 3 unidades monetarias, y si uno posee 10 acciones, el riesgo
correspondiente sería diez veces mayor, es decir, 30 unidades monetarias. Este
axioma no debe confundirse con el riesgo de liquidez. Cuando uno necesita vender
ciertos activos, el precio de ejercicio puede ser, por supuesto, una función del
tamaño de la operación.
Finalmente, se dice que una medida de riesgo es subaditiva si 𝜌(L + L ) ≤ 𝜌(L ) + 𝜌(L ).
1 2 1 2
Intuitivamente, este axioma establece que el riesgo de la cartera será menor o igual
que la suma de las medidas de riesgo individuales de los activos contenidos en la
cartera. Dicho de otro modo, debido a los efectos de diversificación, la tenencia de
una cartera es menos arriesgada.
Se dice que una medida de riesgo 𝜌 es coherente si satisface los cuatro axiomas.
Dado que el VaR es un cuantil, se cumplen los tres primeros axiomas, pero no el
axioma de la subaditividad. Por lo tanto, el VaR no es una medida de riesgo
coherente en el contexto de la cartera. Esto implica que el VaR de una cartera
puede ser mayor que la suma de los riesgos individuales. Además, si el VaR se
emplea para la optimización de la cartera, normalmente se obtiene una cartera más
concentrada. Para una exposición de esto, se remite al lector a Frey y McNeil
(2002) y McNeil et al. (2005, capítulo 6). Cabe señalar que la desviación estándar
tampoco es una medida coherente del riesgo porque se viola el axioma de la
monotonicidad. Por otra parte, la desviación semiestándar sí es coherente, ya que
cuando se calcula este momento parcial sólo se utilizan los valores superiores al
valor medio. Por último, el ES derivado de una función de densidad continua es
una medida de riesgo coherente (véase Acerbi y Tasche 2002).

Referencias
Acerbi C. y Tasche D. 2002 On the coherence of expected shortfall. Journal of Banking and
Finance 26(7), 1487-1503.
Alexander G. y Baptista A. 2002 Economic implications of using a mean-VaR model for
portfolio selection: Una comparación con el análisis de la media-varianza. Journal of
Economic Dy- namics & Control 26, 1159-1193.
Artzner P. 1999 Medidas coherentes de riesgo. Mathematical Finance 9, 203-228.
Artzner P., Delbaen F., Eber J., y Heath D. 1996 A Characterization of Measures of Risk.
Technical Report 1186, School of Operations Research and Industrial Engineering,
College of Engineering, Cornell University, Ithaca, NY.
Artzner P., Delbaen F., Eber J. y Heath D. 1997 Thinking coherently. Risk 10(11), 68-71.
Baumol W. 1963 An expected gain-confidence limit criterion for portfolio selection.
Manage-
ment Science 10, 174-182.
Boudt K., Peterson B., y Croux C. 2008 Estimación y descomposición del riesgo a la baja
para carteras con rendimientos no normales. The Journal of Risk 11(2), 79-103.
Cornish E. y Fisher R. 1937 Momentos y cumulantes en la especificación de distribuciones.
Revue de l'Institut International de Statistique 5(4), 307-320.
48 MEDIR LOS
Frey R.RIESGOS
y McNeil A. 2002 VaR y expected shortfall en carteras de riesgos de crédito
dependientes: Conceptual and practical insights. Journal of Banking and Finance 26,
1317-1334.
MEDIR LOS 49
RIESGOS
Jaschke S. 2001 The Cornish-Fisher-expansion in the context of delta-gamma-normal
approximations. Informe técnico 54, Sonderforschungsbereich 373: Quantification and
Simulation of Economic Processes, Humboldt-Universität, Wirtschaftswissenschaftliche
Fakultät, Berlín.
Jorion P. 2001 Value at Risk: The New Benchmark for Measuring Financial Risk 2nd edn.
McGraw-Hill, Nueva York.
Lambert P. y Laurent S. 2001 Modelling financial time series using GARCH-type models
and a skewed Student density Université de Liège.
McNeil A., Frey R. y Embrechts P. 2005 Quantitative Risk Management: Concepts, Tech-
niques and Tools. Princeton University Press, Princeton, NJ.
RiskMetrics Group 1994 Documento técnico de RiskMetrics. Informe técnico, J.P. Morgan,
Nueva York.
Zangari P. 1996 A VaR methodology for portfolios that include options. RiskMetrics Monitor
Primer trimestre, 4-12. JP Morgan-Reuters.
5

Teoría moderna de la cartera

5.1 Introducción
Han pasado más de 60 años desde que se publicó el innovador artículo de Harry
Markowitz "Portfolio selection" (véase Markowitz 1952). Dado que los enfoques
más recomendados para la optimización de carteras siguen basándose en este
enfoque, en este capítulo se revisará el trabajo de Markowitz sobre la teoría
moderna de carteras. En la siguiente sección se analiza el enfoque en sí mismo y, a
continuación, se destacan los problemas que se plantean en la práctica. En esta
última sección se establece el camino para los temas tratados en la Parte III del
libro, en la que se tratarán las técnicas de optimización de carteras diseñadas para
hacer frente a los problemas de la teoría moderna de carteras y/o hechas a medida
para las demandas de determinados inversores.
Dada la turbulencia de los mercados financieros durante la primera década de
este siglo, tanto los académicos como los profesionales han vuelto a centrar su
atención en el enfoque de Markowitz para seleccionar los activos de una cartera, en
particular las carteras de varianza mínima. Por lo tanto, la observación final del
artículo de Rubinstein con motivo del quincuagésimo aniversario del documento
seminal de Markowitz sigue siendo cierta:

Hacia el final de su reinado, en el año 14 d.C., el emperador romano


Augusto podía presumir de haber encontrado en Roma una ciudad de
ladrillo y haberla dejado como una ciudad de mármol. Markowitz
puede presumir de haber encontrado el campo de las finanzas inundado
de la im- precisión del inglés y haberlo dejado con la precisión
científica y la perspicacia que sólo permiten las matemáticas.
(Rubinstein 2002)

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd.
MEDIR LOS 51
RIESGOS

Sitio web complementario: www.pfaffikus.de


TEORÍA MODERNA DE LA 47
CARTERA
5.2 Carteras de Markowitz
En esta sección se presentará el enfoque de selección de carteras propuesto por
Markowitz y la notación utilizada en los capítulos de la Parte III. Dado el alcance
de este libro, se omite una derivación más detallada de los resultados y se remite al
lector a trabajos como Ingersoll (1987), Huang y Litzenberger (1988), Markowitz
(1991), Elton et al. (2007) y Scherer (2010).
La idea innovadora de Markowitz fue que los perfiles de riesgo/rendimiento de los
activos individuales no deben considerarse por separado, sino en el contexto de su
cartera. En este sentido, se considera que las carteras son eficientes si tienen un
riesgo mínimo para un nivel de rentabilidad determinado o si tienen la máxima
rentabilidad para un nivel de riesgo determinado. Aunque ambas visiones de las
carteras eficientes son equivalentes, el tipo de optimización de la cartera difiere en
estos dos casos. La primera es una optimización cuadrática con restricciones
lineales, mientras que en la segunda la función objetivo es lineal y las restricciones
son cuadráticas.
A continuación se supone que hay N activos y que son infinitamente divisibles.
Los rendimientos de estos activos se distribuyen conjuntamente de forma normal.
La rentabilidad de la cartera r̄ se define por el producto escalar de los vectores de
peso y rentabilidad (N × 1) 𝜔 y
𝜇. El riesgo de la cartera se mide por la varianza de la carteraW 𝜎2 = 𝜔 ′ Σ𝜔, donde Σ de-
es la matriz de varianza-covarianza positiva semidefinida de los rendimientos de
los activos. Para el caso de las carteras de varianza mínima para un rendimiento de
cartera dado, r̄, el problema de optimización se puede plantear como:

P = arg min 𝜎W2 = 𝜔′ Σ𝜔,


𝜔
′𝜔 𝜇 = r̄,
𝜔 i = 1,
′ (5.1)

donde i es el (N × 1) vector de unos.


En el mismo año en que Markowitz publicó su artículo seminal, Roy (1952)
derivó la función para determinar carteras eficientes, aunque el artículo de Merton
(1972) se cita con más frecuencia en la literatura. Según esta función, el vector de
pesos para una cartera de varianza mínima y un rendimiento objetivo dado viene
dado por
∗𝜔 = r̄ 𝜔∗ + 𝜔∗ , (5.2)
0 1

con
1
∗𝜔 =
(cΣ-1𝜇 - bΣ-1i),
0
d
∗𝜔 = -
1
(bΣ-1𝜇 - aΣ-1i).
1 d
La desviación típica de la cartera viene dada por
√1
𝜎= (cr̄ 2 - 2br̄ + a), (5.3)
d
48 TEORÍA MODERNA DE LA
CARTERA
con a = 𝜇 ′ Σ-1𝜇, b = 𝜇 ′ Σ-1i, c = i′ Σ-1i, y d = ac - b2 . La ecuación (5.2) es el resultado
de una optimización de Lagrange con las restricciones para un rendimiento
objetivo dado y pesos que suman uno. Una exposición detallada se encuentra en
Merton (1972). De esta ecuación se puede concluir que las ponderaciones de la
cartera son una función lineal de los rendimientos esperados. Además, puede
demostrarse que cada cartera eficiente puede generarse como una combinación
lineal de otras dos carteras eficientes. En particular, el perfil de riesgo/rendimiento
de una cartera eficiente puede expresarse en términos de una combinación lineal
entre la cartera de varianza mínima global (GMV) y cualquier otra cartera
eficiente. La covarianza entre estas dos carteras es igual a la varianza de la cartera
de varianza mínima. Aunque no sea evidente a primera vista, hay que destacar que
la única restricción con respecto a las ponderaciones de la cartera es que su suma
sea igual a uno. Por lo tanto, no se puede descartar per se la existencia de pesos
negativos (posiciones cortas) ni de pesos superiores a uno (posiciones
apalancadas). La ecuación (5.3) describe una hipérbola √ para las carteras eficientes
cartera
de varianza
es el vértice
media.deLalahipérbola
hipérbola estácon pesos
delimitada
dados por 𝜔∗ asíntotas=r̄ Σ-1i∕
por las = b∕ci′ ±Σ-1i (véase
d∕c𝜎.
El locus del VGM
GMV
Figura 5.1).
A diferencia de las carteras de media-varianza, el vector de pesos de la cartera de
mini-varianza global no depende de los rendimientos esperados de los activos. La
rama superior de la hipérbola es el lugar geométrico de todas las carteras eficientes de
varianza media. Las contribuciones marginales al riesgo de los activos contenidos
en este tipo de carteras son todas iguales y las ponderaciones corresponden a las
contribuciones porcentuales al riesgo. Por lo tanto, estas ponderaciones son pareto-
eficientes. Intuitivamente esto tiene sentido, porque en el caso de que las
contribuciones marginales al riesgo sean diferentes, sería factible una reducción
global del riesgo y esto violaría la característica de varianza mínima para

0.6
GMV
MSR
0.5
CML
Frontera
0.4 eficiente
Asíntotas
Utilidad
μ 0.3

0.2

0.1

0.0
0 2 4 6 8
σ

Figura 5.1 Carteras globales de mínima varianza y máxima relación de Sharpe.


TEORÍA MODERNA DE LA 49
CARTERA
este tipo de carteras. Los puntos de riesgo/rendimiento que están encerrados por la
hipérbola se denominan carteras factibles, aunque éstas son subóptimas. En otras
palabras, existen carteras que tienen una mayor rentabilidad para un nivel de riesgo
determinado o que son menos arriesgadas para una determinada rentabilidad de la
cartera. En ambos casos, el inversor obtendría una mayor utilidad.
Hasta ahora, se ha supuesto que las tenencias de la cartera de un inversor están
totalmente en activos de riesgo. Ahora nos apartaremos del modelo de Markowitz
en sentido estricto y permitiremos la tenencia de un activo sin riesgo con una
rentabilidad de rf . La cuestión que se plantea ahora
es el nivel óptimo de participación de este activo en una cartera. Este
depende de la aversión al riesgo del inversor. Un inversor con aversión al riesgo
trata de maximizar su riqueza al final del periodo (su utilidad esperada), por lo que
la decisión sobre la forma de la cartera debe tomarse al principio del periodo:1

max E[U(Wt+1)], (5.4)

donde E denota el operador de expectativa. La función de utilidad se puede


aproximar mediante una expansión en serie de Taylor y se supone además que esta
función es doblemente diferenciable. Tras una expansión neutra U(Wt+1) =
U(Wt+1 + E[Wt+1] - E[Wt+1]), la función de utilidad a maximizar puede
escribirse como

U′ (E[Wt+1])
E[U(Wt+ )] =U(E[W t+1 ]) + t+1 - E[Wt+1]]
1 E[W
¡1
!
U′′ (E[Wt+1]) - E[W ]]2
+
E[W t+1 t+1
∞ ¡2!
(i)
∑ U (E[Wt+1])
+ t+1
- E[W t+1
]]i. (5.5)
E[W ¡i
i=3 !

Cabe señalar que hasta ahora no se han hecho suposiciones sobre cómo se
distribuye la riqueza. Por lo tanto, (5.5) se define para una amplia clase de
funciones de distribución. Además, la utilidad es una función de los momentos
superiores de la distribución de la riqueza. Si se supone que la riqueza se distribuye
normalmente, la expresión anterior se simplifica a

U′ (E[Wt+1])
E[U(Wt+ )] =U(E[W t+1 ]) + t+1 - E[Wt+1]]
1 E[W
¡1
!
U′′ (E[Wt+1]) - E[W ]]2 (5.6)
+
E[W .
t+1 t+1
¡2!
Por lo tanto, la utilidad del inversor sólo depende de los dos primeros momentos.
Cabe destacar que, incluso en el caso de la no normalidad, el enfoque de
2
50 TEORÍA MODERNA DE LA
CARTERA

optimización anterior puede utilizarse para funciones de utilidad cuadráticas de la


forma U(W) = W -𝜆 W2 . Aquí la pa-
rameter 𝜆 es una medida de la aversión al riesgo de un inversor.

1 La siguiente exposición se basa en Huang y Litzenberger (1988).


TEORÍA MODERNA DE LA 51
CARTERA
Si se asume una utilidad cuadrática, el vector de pesos viene dado por 𝜔U =
(1∕𝜆)Σ-1𝜇. Cuanto mayor sea la aversión al riesgo, menor será la suma de las
ponderaciones. La rentabilidad total esperada R de los activos de riesgo y del activo
sin riesgo viene dada por

E[R] = (1 - 𝛾)rf + 𝛾r̄


= rf + 𝛾(r̄ - rf ), (5.7)
donde 𝛾 = i′ 𝜔 es la proporción de activos de riesgo respecto a la riqueza total. La
desviación estándar de esta cartera es 𝜎(R) = 𝛾𝜎W . A partir de esto, se puede
derivar la línea del mercado de capitales (LMC) -una relación lineal en el plano (𝜇,
𝜎)- como
r̄ - rf
E[R] = rf + 𝜎(R). (5.8)
𝜎W
La cartera óptima se sitúa en el punto de tangencia de esta línea y la rama
superior de la frontera eficiente. Esto se da cuando la pendiente es mayor y, por
tanto, el ratio de Sharpe es máximo. Por lo tanto, la cartera que se caracteriza en
este punto de tangencia también se denomina cartera de máxima relación de Sharpe
(MSR). En el caso de la cartera MSR, el inversor sólo tiene activos de riesgo. Las
contribuciones marginales de los activos seleccionados al ratio de Sharpe son todas
iguales. El grado de inversión de un inversor viene determinado por el punto de
tangencia de su función de utilidad y la LMC. Este punto se encuentra al suroeste de
la cartera MSR, y cuanto mayor sea la aversión al riesgo, más cerca estará de la
ordenada.

5.3 Carteras empíricas de media-varianza


Los conceptos teóricos de la cartera expuestos en el apartado anterior no son, por
desgracia, directamente aplicables en la práctica. Hasta ahora se han empleado los
momentos de la población en el análisis, pero estas entidades son desconocidas. En
las aplicaciones empíricas, estos parámetros desconocidos deben sustituirse por
estimaciones. El lugar del conjunto para las carteras factibles está por debajo de la
frontera eficiente. A primera vista, la media muestral y el estimador insesgado de la
matriz de varianza-covarianza de los rendimientos parecen ser candidatos
apropiados para sustituir los momentos poblacionales. Sin embargo, en la práctica,
los posibles errores de estimación ejercen un impacto directo en las ponderaciones
de la cartera, de modo que, por ejemplo, las propiedades deseadas de una cartera
eficiente y/o de varianza mínima ya no son válidas, en general. En última instancia,
los errores de estimación se reflejan en un mayor riesgo de la cartera en
comparación con el caso de los momentos poblacionales. Esto es así
independientemente de si las estimaciones se han generado a partir de datos
históricos o se emplean previsiones ex ante para estos parámetros. En el caso de las
optimizaciones de carteras que se basan en estimaciones de los rendimientos
esperados y de la matriz de varianza-covarianza, éstas deberían tener un mayor
efecto en comparación con los enfoques de optimización que sólo se basan en
estimaciones de la dispersión de los rendimientos, ceteris paribus (véase Chopra y
Ziemba 1993; Merton 1980). Por lo tanto, las optimizaciones de carteras de
52 TEORÍA MODERNA DE LA
CARTERA

varianza media deberían sufrir más el error de estimación que las de varianza
mínima. En simulaciones y estudios empíricos se encontró que las ponderaciones del
primer tipo de optimizaciones de cartera se caracterizan
TEORÍA MODERNA DE LA 53
CARTERA
por amplios espacios y un comportamiento errático a lo largo del tiempo (véase, por
ejemplo, DeMiguel et al. 2007; Frahm 2008; Jagannathan y Ma 2003; Kempf y
Memmel 2006; Ledoit y Wolf 2003). Desde un punto de vista normativo, ambas
características son indeseables. El efecto de las ponderaciones que se comportan de
forma "aleatoria" mejora en las carteras de varianza mínima y, por lo tanto, se
prefiere este diseño de cartera con respecto al impacto potencial de los errores de
estimación. La sensibilidad de las soluciones óptimas para las carteras de varianza
media con respecto a los rendimientos esperados utilizados no es en sí un defecto
del enfoque propuesto por Markowitz, sino más bien un artefacto de la
optimización cuadrática para derivar las ponderaciones de la cartera.
Los errores de las estimaciones de los rendimientos esperados y de la matriz de
varianza-covarianza podrían cuantificarse heurísticamente de antemano mediante
simulaciones de Monte Carlo. Este remuestreo de carteras fue propuesto por
Michaud (1998), y en Scherer (2002) y Scherer (2010, capítulo 4) se ofrece una
descripción detallada con una crítica.
En un primer paso, se obtienen las estimaciones 𝜇̂0 y Σ̂ 0 para los momentos teóricos 𝜇 y Σ
para unos determinados
Se calcula el tamaño de la muestra T y se com- prende m puntos de la frontera eficiente
empírica.
putado. A continuación, se generan K muestras aleatorias de dimensión (T × N) y a
partir de ellas se determinan los momentos muestrales, dando en total K pares (𝜇̂i,
Σ̂ i), i = 1, ... , K. Cada uno de estos pares se utiliza entonces para calcular m puntos
en las respectivas fronteras eficientes.
El locus de estas fronteras eficientes simuladas está por debajo de la frontera
eficiente para 𝜇̂0 y Σ̂ 0. Para evaluar el impacto del error de estimación con
respecto a la media, se repite el procedimiento anterior, pero ahora se utilizan los
pares aleatorios (𝜇̂i, Σ̂ 0), i = 1, ... , K. Es decir, el error de estimación se limita a los
rendimientos esperados. Asimismo, el impacto
del error de estimación de la dispersión de la rentabilidad puede evaluarse
generando pares de rangos (𝜇̂0 , Σ̂ i), i = 1, ... , K. Para concluir la exposición del
remuestreo de carteras, cabe señalar que las carteras eficientes aleatorias pueden
recuperarse promediando las ponderaciones sobre m y K. Este enfoque no debe
considerarse como una panacea para hacer frente a los errores de estimación. La
principal crítica contra este enfoque es la propagación de errores. Los valores
iniciales (𝜇̂0 , Σ̂ 0) a partir de los cuales se generan las muestras aleatorias son
estimaciones y, por lo tanto, están contaminados por errores de estimación. Por lo
tanto, los errores iniciales se replican y reflejan aplicando el análisis de Montecarlo.
Además, para el caso de optimizaciones de carteras con restricciones, el
procedimiento anterior puede producir resultados poco intuitivos (véase Scherer
2010, capítulo 4).
Además, recordemos que, según el capítulo 3, los rendimientos de los activos no
suelen tener una distribución normal multivariante. Esto implica que, además de
los errores de estimación, a menudo existe un error de modelo. Un proceso de
retorno no estacionario se modelaría según una distribución para procesos
estacionarios. Por lo tanto, existe un compromiso entre utilizar un supuesto de
distribución para procesos estacionarios, por un lado, cometiendo así un error de
modelo, y utilizar un período de muestra más largo por el cual es más probable que
se viole el supuesto de estacionariedad pero el error de estimación disminuye.
En principio, las consecuencias mencionadas de los errores de estimación
54 TEORÍA MODERNA DE LA
podrían ameliorarse de antemano imponiendo restricciones a las ponderaciones. El
CARTERA
siguiente ejemplo aclara el efecto de imponer restricciones a las ponderaciones de
la cartera. Consideremos dos oportunidades de inversión independientes A y B con
una rentabilidad esperada del 3% y una volatilidad del 10%. Un agente que
maximiza la rentabilidad sería indiferente a todas las combinaciones lineales entre
estos dos activos. Sin embargo, un error de estimación tan alto como una base
TEORÍA MODERNA DE LA 55
CARTERA
punto daría lugar a un resultado muy diferente. Supongamos que las estimaciones
de los rendimientos esperados son 𝜇̂A = 3,01 y 𝜇̂B = 2,99, respectivamente. Esto
implicaría una posición larga infinitamente alta en el activo A que se financia con
una posición corta de igual tamaño.
Las cosas son bastante diferentes si se incluyen en la optimización restricciones de
sólo largo plazo y/o de límite. Se ha comprobado que este tipo de restricciones
producen un rendimiento favorable fuera de la muestra (véase, por ejemplo, Frost y
Savarino 1988) o se asocian a un menor riesgo de la cartera (véase, por ejemplo,
Gupta y Eichhorn 1998; Jagannathan y Ma 2003). Ambas conclusiones empíricas
pueden atribuirse a un menor error de estimación implícito si se imponen
restricciones a las ponderaciones. Cabe mencionar que los lugares de las carteras
en el plano (𝜇, 𝜎) son inferiores a las carteras eficientes en mayor medida a medida
que las restricciones son más vinculantes. Sin embargo, en general, un inversor
desea conseguir una asignación de cartera que se acerque lo más posible a la
frontera eficiente. Pero la aplicación de las restricciones de sólo largo plazo no es
deseable por otras razones. Por ejemplo, la aplicación de la mayoría de las
estrategias de tipo hedge-fund requiere que se permita el posicionamiento corto. En
resumen, la imposición de restricciones no es una panacea para todo tipo de
estrategias y optimizaciones de cartera. La Parte III de este libro abordará estas
cuestiones con más detalle y también ofrecerá ejemplos de cómo estos avances más
recientes en la construcción de carteras pueden explorarse con R.

Referencias
Chopra V. y Ziemba W. 1993 The effect of errors in means, variances, and covariances on
optimal portfolio choice. Journal of Portfolio Management 19, 6-11.
DeMiguel V., Garlappi L. y Uppal R. 2007 Diversificación óptima frente a ingenua: ¿Cómo
de ineficaz es la estrategia de cartera 1/n? Review of Financial Studies 22(5), 1915-1953.
Elton E., Gruber M., Brown S. y Goetzmann W. 2007 Modern Portfolio Theory and Invest-
ment Analysis 7th edn. John Wiley & Sons, Nueva York, NY.
Frahm G. 2008 Inferencia estadística lineal para carteras de varianza mínima global y local.
Statistical Papers 51(4), 789-812.
Frost P. y Savarino J. 1988 Para un mejor rendimiento: Limitar las ponderaciones de la
cartera. Journal of Portfolio Management 15(1), 29-34.
Gupta F. y Eichhorn D. 1998 Mean-variance optimization for practitioners of asset
allocation In Handbook of Portfolio Management (ed. Fabozzi F.) John Wiley & Sons
Chichester, England chapter 4, pp. 57-74.
Huang C. y Litzenberger R. 1988 Foundations for Financial Economics. Elsevier Science
Publishing, Amsterdam.
Ingersoll J. 1987 Theory of Financial Decision Making. Rowman & Littlefield, Savage, MD.
Jagannathan R. y Ma T. 2003 Risk reduction in large portfolios: Por qué la imposición de
con-
ayuda a los estractores. Journal of Finance 58, 1651-1683.
Kempf A. y Memmel C. 2006 Estimación de la cartera global de varianza mínima. Schmalen-
bach Business Review 58, 332-348.
Ledoit O. y Wolf M. 2003 Improved estimation of the covariance matrix of stock returns
with an application to portfolio selection. Journal of Empirical Finance 10, 603-621.
56 TEORÍA MODERNA DE LA
CARTERA
Markowitz H. 1952 Portfolio selection. The Journal of Finance 7(1), 77-91.
Markowitz H. 1991 Portfolio Selection: Efficient Diversification of Investments 2nd edn. Basil
Blackwell, Cambridge, MA.
Merton R. 1972 An analytical derivation of the efficient portfolio frontier. Journal of Financial
and Quantitative Analysis 7, 1851-1872.
Merton R. 1980 On estimating the expected return on the market: Una investigación exploratoria.
Journal of Financial Economics 8, 323-361.
Michaud R. 1998 Efficient Asset Management: A Practical Guide to Stock Portfolio
Optimiza- tion and Asset Allocation. Oxford University Press, Nueva York.
Roy A. 1952 Safety first and the holding of assets. Econometrica 20, 431-449.
Rubinstein M. 2002 La "selección de carteras" de Markowitz: Una retrospectiva de cincuenta
años. The Journal of Finance 57(3), 1041-1045.
Scherer B. 2002 Muestreo de carteras: Revisión y crítica. Financial Analysts Journal 58(6), 98-
109.
Scherer B. 2010 Portfolio Construction and Risk Budgeting 4th edn. Risk Books, Londres.
TEORÍA MODERNA DE LA 57
CARTERA
Parte II
MODELIZACIÓN DEL
RIESGO
6

Distribuciones adecuadas
para los rendimientos

6.1 Preliminares
En el capítulo 4 se demostró que las medidas de riesgo como el VaR y el ES son
valores cuantílicos situados en la cola izquierda de una distribución. Por lo tanto,
dados los hechos estilizados de las series de rentabilidad empíricas, bastaría con
capturar adecuadamente las probabilidades de la cola. Este es el tema de la teoría
del valor extremo, que se tratará en el próximo capítulo. Sin embargo, a menudo
surge la necesidad de modelar no sólo el comportamiento de la cola de las
pérdidas, sino toda la distribución de la rentabilidad. Esta necesidad surge cuando,
por ejemplo, hay que muestrear los rendimientos para aplicaciones del tipo Monte
Carlo. Por lo tanto, el tema de este capítulo es la presentación de clases de
distribución que permiten modelar los rendimientos en su totalidad, reconociendo
así los hechos estilizados. Dicha distribución debe ser capaz de reflejar no sólo el
comportamiento de las colas pesadas, sino también las asimetrías. En particular, las
clases de la distribución hiperbólica generalizada (GHD) y sus casos especiales, a
saber, las distribuciones hiperbólica (HYP) y gaussiana inversa normal (NIG), así
como la distribución lambda generalizada (GLD) se presentarán en las secciones
6.2 y 6.3. En las secciones 6.4 y 6.5 se presenta una sinopsis de los paquetes de R
disponibles, y el capítulo termina con aplicaciones de la GHD, HYP, NIG y GLD a
los datos de los mercados financieros.

6.2 La distribución hiperbólica generalizada


La GHD fue introducida en la literatura por Barndorff-Nielsen (1977). La
aplicación de esta distribución a los incrementos de los procesos de precios de los
mercados financieros

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd.
Sitio web complementario: www.pfaffikus.de
58 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
fue probablemente propuesto por primera vez por Eberlein y Keller (1995). A
continuación, se produjeron otras contribuciones en las que se aplicó esta clase de
distribución a los datos de los mercados financieros. Los trabajos de Prause (1997),
Barndorff-Nielsen (1997), Barndorff-Nielsen (1998), Eberlein y Prause (1998), y
Prause (1999) allanaron el camino para que esta clase de distribución fuera más
conocida en la comunidad financiera. La distribución hiperbólica generalizada debe
su nombre al hecho de que el logaritmo de la función de densidad tiene forma
hiperbólica, mientras que los valores logarítmicos de la distribución normal son
parabólicos.
La densidad de la GHD viene dada por
1
gh x; 𝜆, 𝛼, 𝛽, 𝛿, 𝜇)= a(𝜆, 𝛼, 𝛽, 𝛿)(𝛿2 + (x - 𝜇)2)(𝜆− )∕2
( 2
× K𝜆- 1 (𝛼√𝛿2 + (x - 𝜇)2) exp (𝛽(x - 𝜇)), (6.1)
donde a(𝜆, 𝛼, 𝛽, 𝛿) se define como 2

(𝛼2 -
a(𝜆, 𝛼, 𝛽, 𝛿) = (6.2)
𝛽 2 )𝜆
∕2
√2𝜋𝛼𝜆-1∕2𝛿𝜆K
𝜆(𝛿√𝛼2 -
𝛽2)

y K𝜈 denota una función de Bessel de tercer orden modificada con valor de índice 𝜈.
La densidad se define para x ∈ ℝ y abarca cinco parámetros: 𝜆, 𝛼, 𝛽, 𝛿, 𝜇. Los
valores permitidos
El espacio de parámetros se define como 𝜆, 𝜇 ∈ ℝ, 𝛿 > 0, 𝛿 > 0,| y 0 ≤ 𝛽 < 𝛼. El parámetro
| mientras que 𝜇 y 𝛿
𝜆 puede interpretarse como un parámetro de definición de clase,
son parámetros de localización y escala.
En la literatura también se pueden encontrar tres reparametrizaciones de la GHD:

𝜁 = 𝛿 𝛼 2 - 𝛽2, 𝜌 = 𝛽∕𝛼,
𝜉 = (1 + 𝜁 )-1∕2, 𝜒= 𝜉∕𝜌,
𝛼̄ = 𝛼𝛿, 𝛽̄ = 𝛽𝛿. (6.3)

Estas reparametrizaciones tienen en común la falta de parámetros de localización y


escala. Dicho de otro modo, estas parametrizaciones no cambian para las
transformaciones afines de la variable aleatoria x. La figura 6.1 muestra las
densidades para diferentes constelaciones de parámetros. Como se desprende de
este gráfico, es posible capturar no sólo las colas semifuertes (es decir, con una
curtosis superior a 3), sino también las distribuciones sesgadas. Desde un punto de
vista intuitivo, debería ser razonable esperar que las siguientes distribuciones
continuas puedan derivarse de la GHD: la hiperbólica, la hiperboloide, la gaussiana
inversa normal, la gaussiana inversa recíproca normal, la normal, la gamma de
varianza, la t de Student, la Cauchy, la gaussiana inversa generalizada (GIG) y la
Laplace sesgada.
El HYP es un caso especial del GHD. Si el parámetro 𝜆 = 1, resulta la siguiente
densidad:
√𝛼2 √
hip(x; - 𝛽2 exp (- 2 + (x -
)2 + (x -
)=
𝛽
DISTRIBUCIONES ADECUADAS PARA LOS 59
RENDIMIENTOS

)), (6.4)

𝛼, 𝛽, 𝛿, 𝜇 𝛼 𝜇 𝛽 𝜇
2𝛿𝛼 K ( √ 𝛼 2 - 2
𝛿
1
𝛿
donde x, 𝜇 ∈ ℝ,0 ≤ 𝛿, y |𝛽| < 𝛼.
60 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
Densidad de la GHD con λ = 1, = 0, =0
0.
6 = 2, =1
Densid = 4, =2
ad = 4, =4
0.3
0.
0
-4 -2 0 2 4
Valores de la variable aleatoria

Densidad de la GHD con λ = 1, = 2, = 1, =0


0.
6 -1
Densid 0
ad 1
0.3
0.
0
-4 -2 0 2 4
Valores de la variable aleatoria

Figura 6.1 Función de densidad de la clase GHD.

Como se ha mencionado anteriormente, 𝜆 puede interpretarse como un


parámetro de selección de clase. De forma análoga a la reparametrización de la
GHD, los parámetros de la HYP pueden expresarse en estas especificaciones. Aquí,
la reparametrización en la forma de (𝜉, 𝜒)
es de especial interés, ya que el rango definido viene dado por 0 ≤| 𝜒 < 𝜉 < 1. Esto
|
describe un triángulo, el llamado triángulo de forma. Asintóticamente, los
parámetros reflejan el tercer y cuarto momento de la distribución (asimetría y
curtosis). La HYP puede considerarse como una clase general de distribuciones que
engloba las siguientes distribuciones en el límite: para 𝜉 → 0 resulta una
distribución normal; para
𝜉 → 1 se obtienen distribuciones simétricas y asimétricas de Laplace; para 𝜒 → ±𝜉
la HYP converge a una distribución gaussiana inversa generalizada; y para | 𝜒 →1
resulta una distribución exponencial. Por lo tanto, el triángulo de forma | puede
utilizarse como un medio gráfico para evaluar si un proceso de retorno puede ser
aproximado por una de estas distribuciones.
La distribución NIG puede derivarse de la GHD si el parámetro de selección de
clases se establece en 𝜆 = -1∕2. La densidad de la NIG viene dada por
(√
+
1
𝛼𝛿 √𝛼 K (𝛼 𝛿 2 + (x - 𝜇)2)
nig(x; 𝛼, 𝛽, 𝛿, 𝜇) = exp (𝛿 2 - x -𝛽) ) 𝜇 √𝛿2 , (6.5)
𝜋 𝛽2 + (x - 𝜇)2

donde el espacio de parámetros se define como x, 𝜇 ∈ ℝ, 0 ≤ 𝛿, y |0 ≤ 𝛽 ≤ 𝛼. Para in-


|
Esta distribución fue empleada por Barndorff-Nielsen (1998) para modelar las
series temporales del mercado financiero.
DISTRIBUCIONES ADECUADAS PARA LOS 61
RENDIMIENTOS
Los parámetros desconocidos pueden estimarse mediante el principio de máxima
verosimilitud (ML) para una muestra determinada. Sin embargo, no se pueden
derivar estimadores de forma cerrada y, por tanto, hay que minimizar
numéricamente la log-verosimilitud negativa.

6.3 La distribución lambda generalizada


La GLD es una extensión de la familia de distribuciones lambda propuesta por
Tukey (véase Tukey 1962). Esta última familia está definida por la función cuantil
Q(u) con u ∈ [0, 1], es decir, la inversa de la función de distribución:
{
u𝜆-(1-u)𝜆
𝜆 ≠ 0,
Q(u) = 𝜆 (6.6)
reg u
istr
𝜆 = 0.
1-u
o
El parámetro 𝜆 se denomina parámetro de forma y Q(u) es simétrico. Hay que tener
en cuenta que esta función cuantil no tiene una forma cerrada simple para cualquier
valor del parámetro 𝜆, excepto para 𝜆 = 0, y por lo tanto los valores de la función de
densidad y distribución tienen que ser calculados numéricamente. Por cierto, la
función de densidad puede expresarse paramétricamente para todos los valores de 𝜆
en términos de la función cuantil, como en la ecuación anterior, y el recíproco de la
función de densidad cuantil, es decir, la primera derivada de (6.6). La distribución
lambda de Tukey se denomina familia de distribuciones, porque muchas otras
distribuciones estadísticas pueden ser aproximadas por ella. Por ejemplo, si 𝜆 = -1
entonces Q(u) se comporta aproximadamente como una distribución Cauchy, y si 𝜆
= 1 resulta una distribución uniforme [-1, 1]. De hecho, se puede discernir una
distribución aproximada para una serie de datos dada trazando el coeficiente de
correlación del gráfico de probabilidad.
Al dividir el parámetro 𝜆 en (6.6) en distintos parámetros, se obtiene el GLD.
Aquí, se han propuesto diferentes parametrizaciones en la literatura. Una extensión
de cuatro parámetros de la función cuantil se debe a Ramberg y Schmeiser (1974):
u𝜆 3 - (1 - u)𝜆4
Q(u)RS = 𝜆1 . (6.7)
+ 𝜆2
La distribución lambda de Tukey se recupera a partir de esta especificación cuando 𝜆1 = 0 y
𝜆2 = 𝜆3 = 𝜆4 = 𝜆. Los cuatro parámetros representan la localización (𝜆1), la escala
(𝜆2) y las características de forma (𝜆3 y 𝜆4 ) de una distribución. Se da una
distribución simétrica para 𝜆3 = 𝜆4 . Las características de esta especificación han
sido ampliamente investigadas por Ramberg y Schmeiser (1974), Ramberg et al.
(1979), King y
MacGillivray (1999), y Karian y Dudewicz (2000), entre otros. Resulta que no
todas las combinaciones de parámetros producen una función de
densidad/distribución válida. La función de densidad de probabilidad de la GLD en
el punto x = Q(u) viene dada por
𝜆2
f (x) = f (Q(u)) = . (6.8)
𝜆3u𝜆3-1 + 𝜆4(1 - u)𝜆4-1
Las combinaciones de parámetros válidas para 𝛌 deben dar lugar a lo siguiente,
de manera que (6.8) se califique como una función de densidad:
62 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS

f (x) ≥ 0 (6.9)
DISTRIBUCIONES ADECUADAS PARA LOS 63
RENDIMIENTOS
y
f (x)dx = 1. (6.10)

Originalmente, Ramberg y Schmeiser (1974) sólo identificaron cuatro regiones
de constelaciones de parámetros válidas para 𝜆3 y 𝜆 4. En Karian et al. (1996) este
esquema se modificó con regiones adicionales que están etiquetadas como "5" y
"6" en la Figura 6.2. Las distribuciones correspondientes a estas regiones
comparten los mismos límites que las regiones adyacentes. Las constelaciones de
parámetros para las cuatro/seis regiones y los límites de apoyo implícitos del GLD se
reproducen en la Tabla 6.1.
3

5
2

Región 1: Región 3:
1 3 < -1, λ4 > 1 0, λ4 0

0
6
-1 Región 4: Región 2:
0, λ4 0 3 > 1, λ4 < -1
-2

-3
-3 -2 -1 0 1 2 3

Figura 6.2 GLD: combinaciones de parámetros válidos de 𝜆3 y 𝜆4 en zonas no


sombreadas.

Tabla 6.1 Gama de combinaciones válidas de parámetros GLD.

Región 𝜆1 𝜆2 𝜆3 𝜆4 Mínimo Máximo


1y5 todo <0 < -1 >1 -∞ 𝜆1 + (1∕𝜆2)
2y6 todo <0 >1 < -1 𝜆1 - (1∕𝜆2) ∞
todo >0 >0 >0 𝜆1 - (1∕𝜆2) 𝜆1 + (1∕𝜆2)
3 todo >0 =0 >0 𝜆1 𝜆1 + (1∕𝜆2)
todo >0 >0 =0 𝜆1 - (1∕𝜆2) 𝜆1
todo <0 <0 <0 -∞ ∞
4 todo <0 =0 <0 𝜆1 ∞
todo <0 <0 =0 -∞ 𝜆1
64 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
En la tabla 6.1 se pueden hacer dos observaciones. En primer lugar, el apoyo de
la distribución GLD puede cambiar de forma bastante abrupta para constelaciones
de parámetros ligeramente diferentes. En segundo lugar, las constelaciones de
parámetros que caen en el tercer cuadrante implican distribuciones sesgadas y de
cola pesada. Estas características forman parte de los hechos estilizados de las
series de rentabilidad financiera que se han expuesto anteriormente. Recordando
que las medidas de riesgo de mercado VaR y ES son valores cuantílicos, el GLD
parece ser un candidato ideal para calcular estas medidas. Esto se demostrará más
adelante.
Para evitar el problema de que el GLD se limita a ciertas con- stelaciones de
parámetros para 𝜆3 y 𝜆4 , Freimer et al. (1988) propusieron una especificación
diferente:
)𝜆4
u𝜆3 -1
- (1-u
Q(u)FMKL = +𝜆3 𝜆4 . (6.11)
𝜆1 𝜆2

Esta especificación produce funciones de densidad válidas en todo el plano (𝜆3 , 𝜆4 ).


La distribución dada por esta especificación tendrá un momento de orden k finito si
min(𝜆3 , 𝜆4 ) >
-1∕k.
Recientemente, Chalabi et al. (2010, 2011) propusieron una reespecificación de
la GLD. Este enfoque propuesto es una combinación del uso de estimadores
robustos para la localización, la escala, la asimetría y la curtosis, y la expresión de
los exponentes de cola 𝜆3 y 𝜆4 mediante parámetros de inclinación y asimetría más
intuitivos 𝜉 y 𝜒. La nueva parametrización tiene la siguiente forma:

𝜇̂ =u0,5, (6.12)
𝜎̂ = u0,75 - u0,25, (6.13)
𝜆3 - 𝜆4
𝜒 = √1 , (6.14)
+ (𝜆3 - 𝜆4)2
1 𝜆3 + . (6.15)
𝜉= -
𝜆4
2 2 × √1 + (𝜆3 + 𝜆4)2

Aquí, los límites para 𝜒 y 𝜉 son -1 < 𝜒 < 1 y 0 ≤ 𝜉 < 1, respectivamente. La función
cuantificadora de la GLD puede entonces escribirse como
Ŝ(u 𝜒,𝜉)
|| - Ŝ(0,5 𝜒,𝜉|)|
Q(u |𝜇̂, 𝜎̂ , 𝜒, 𝜉) = 𝜇̂ + 𝜎̂ . (6.16)
Ŝ(0,75 𝜒, 𝜉) - Ŝ(0,25 𝜒, 𝜉)
La función Ŝ(u 𝜒, 𝜉) está definida para los siguientes casos:
|

⎧log(u) - log(1 - u) 𝜒 = 0, 𝜉 = 0,5,


(1-u)2𝛼-1
⎪log(u) - 𝜒 = 2𝜉 - 1,
2𝛼
Ŝ(u
| 𝜒, 𝜉) u2𝛼 -1 (6.17)
⎨⎪ 2𝛼 - log(1 - u) 𝜒 = 1 - 2𝜉,

DISTRIBUCIONES ADECUADAS PARA LOS 65
RENDIMIENTOS

u𝛼+𝛽 -1 (1-u)𝛼-𝛽 -1
- en caso contrario,
⎩ 𝛼+𝛽 𝛼-𝛽
66 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
1.
0

0. Soporte infinito
8

0.
6
Soporte infinito Soporte infinito
inferior superior
0.
4

0. Soporte finito
2

0.
0
-1.0 -0.5 0.0 0.5 1.0

Figura 6.3 Gráfico de la forma del GLD.


donde
1 0 ,5 - 𝜉
𝛼= √ , (6.18)
2 𝜉(1 - 𝜉)
1 𝜒
𝛽= √ . (6.19)
2 1-𝜒2

En esta parametrización el GLD tiene soporte infinito si la condición ( 𝜒| + 1)∕2 ≤


𝜉 se cumple. Al igual que el triángulo de forma del HYP, ahora se puede| construir un
triángulo que comienza en 𝜒 = 0 y tiene como vértices (𝜉 = 1, 𝜒 = -1) y (𝜉 = 1, 𝜒 = 1).
Todas las combinaciones de parámetros de 𝜒 y 𝜉 darían así una distribución con
soporte infinito. El gráfico de la forma de GLD se muestra en la Figura 6.3.
Como ya se ha insinuado, el cálculo del VaR y del ES puede realizarse
fácilmente cuando se ha ajustado una serie de rendimientos a la LGD. En este caso,
las fórmulas se expresan en términos de rendimientos y no de pérdidas, que se
expresan como números positivos. El VaR para una determinada probabilidad de
error viene dado por

VaR𝛼 = Q(u |𝛌)


𝜆3- (1 - 𝛼)𝜆4
+𝛼
= 𝜆1 , (6.20)
𝜆2
y la fórmula para calcular el ES para una determinada probabilidad de error puede expresarse
como VaR 𝛼

ES𝛼 = xf (x| 𝛌)dx = Q(u|𝛌)du


∫-∞ ∫-∞
1 1 [ ]
= 𝜆1 + 𝜆 𝛼 3+1 + (1 - 𝛼)𝜆4+1 - 1 . (6.21)
𝜆2(𝜆3 + 𝜆2(𝜆4 +
1) 1)
DISTRIBUCIONES ADECUADAS PARA LOS 67
RENDIMIENTOS
Varios métodos de estimación para encontrar los valores óptimos del vector de parámetros
𝛌
se han propuesto en la literatura. Entre ellas se encuentran
• el enfoque de coincidencia de momentos
• el enfoque basado en el percentil
• el enfoque basado en el histograma
• el enfoque de la bondad de ajuste
• máxima verosimilitud y máximo espaciamiento del producto.
El método de igualación de momentos fue sugerido en los trabajos seminales de
Ramberg y Schmeiser (1974) y Ramberg et al. (1979). Los cuatro primeros
momentos se ajustan a los parámetros de la distribución 𝜆1 , - - - , 𝜆4 . Para 𝜆1 = 0, el
momento k de la GLD es
definido como
k (

i
0
= k
𝔼(Xk ) = 𝜆2−k (-1)i𝛽(𝛼, 𝛾), (6.22)
)
i
donde 𝛽(𝛼, 𝛾) denota la función beta evaluada en 𝛼 = 𝜆 3 (k - i) + 1 y 𝛾 = 𝜆 4 i
+ 1. Resulta un sistema no lineal de cuatro ecuaciones en cuatro incógnitas, que
hay que resolver. Por cierto, esto puede llevarse a cabo de forma secuencial,
determinando primero las estimaciones para 𝜆3 y 𝜆4 y resolviendo después los dos
parámetros restantes (véase Ramberg y Schmeiser 1974, Sección 3). Este enfoque
sólo es válido en las regiones de parámetros para las que existen estos momentos
(región 4), y la condición min(𝜆3, 𝜆4) < -1∕4 debe
se cumplan. Por otra parte, dado que las estimaciones de la asimetría y la curtosis de un dato
son muy sensibles a los valores atípicos, el vector de parámetros resultante 𝛌
también se ve afectado. Para lograr resultados de estimación robustos con respecto a
la sensibilidad a los valores atípicos, Chalabi et al. (2010) sugirieron sustituir los
estimadores de momentos por sus homólogos robustos. Los momentos robustos
para la ubicación, la escala, la asimetría y la curtosis se definen como (véase, por
ejemplo, Kim y White 2004):

𝜇r = 𝜋1∕2, (6.23)
𝜎r = 𝜋3∕4 - 𝜋1∕4, (6.24)
+ 𝜋1∕4 - 2𝜋1∕2
sr= 𝜋3∕4 , (6.25)
𝜋3∕4 - 𝜋1∕4
𝜋7∕8 - 𝜋5∕8 + 𝜋3∕8 - 𝜋1∕8
kr = . (6.26)
𝜋6∕8 - 𝜋 2∕8
Estos estadísticos pueden estimarse insertando los cuantiles empíricos pq. Se
muestra en Chalabi et al. (2010) que los momentos de asimetría y curtosis más
robustos sólo dependen de 𝜆3 y 𝜆4. Por lo tanto, resulta un sistema no lineal de dos
ecuaciones en dos incógnitas, que tiene que ser resuelto. La estimación robusta de
los parámetros de la GLD tiene la ventaja adicional de derivar una distribución
68 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS

estandarizada caracterizada por una mediana nula, un rango intercuartil unitario y


los dos parámetros de forma 𝜆1 y 𝜆2 :
DISTRIBUCIONES ADECUADAS PARA LOS 69
Q(u 𝜆 , 𝜆 )RENDIMIENTOS
= Q(u 𝜆∗ , 𝜆∗ , 𝜆 , 𝜆 ),
|3 4 |1 2 34
∗𝜆 = S𝜆3 ,𝜆4 (3∕4) - S𝜆
2 3 (1∕4),
,𝜆 4
∗𝜆 = -S𝜆 ,𝜆 (1∕2)∕𝜆 ,∗ (6.27)
1 34 2

donde S𝜆3,𝜆4 (u) es igual al numerador en (6.7).


Karian y Dudewicz (1999) propusieron un enfoque de estimación basado en el em
percentiles piricos de los datos. A partir de los estadísticos de orden 𝜋̂p de los datos
se definen los siguientes cuatro percentiles, donde u ∈ (0, 0,25):
p̂1 = 𝜋̂0,5, (6.28)
p̂2 = 𝜋̂1-u - 𝜋̂u, (6.29)
,5 - 𝜋̂u
̂ p3= 𝜋̂0 , (6.30)
𝜋̂1-u -
𝜋̂0.5
p̂4
- 𝜋̂0,25
= 𝜋̂0,75 . (6.31)
p̂2
Para u = 0,1 estos percentiles se refieren a la mediana de la muestra (p ̂ 1 ), el
rango interdecil (p̂ 2 ), la relación de peso de la cola izquierda-derecha (p ̂ 3 ), y una
medida de los pesos relativos de la cola izquierda a la cola derecha (p̂ 4 ). Estos
cuantiles corresponden a los siguientes cuantiles de la GLD:
0,5𝜆3 - 0,5𝜆4
p1 = Q(0.5) = 𝜆 1 + , (6.32)
𝜆2
(1 - u)𝜆3 - u𝜆4 + (1 - u)𝜆4 - u𝜆3
p = Q(1 - u) - Q(u) = , (6.33)
2
𝜆2
Q(0,5) - Q(u) (1 - u)𝜆4 - u𝜆 3 + 0,5𝜆 3 - 0,5𝜆 4
p= = , (6.34)
3 Q(1 - u) - Q(0.5) (1 - u)𝜆3 - u𝜆4 + 0.5𝜆4 - 0.5𝜆3
Q(0,75) - Q(0,25) 0,75𝜆 3 - 0,25𝜆 4 + 0,75𝜆 4 - 0,25𝜆 3
p4= = . (6.35)
p (1 - u)𝜆3 - u𝜆4 + (1 - u)𝜆4 - u𝜆3
2
Hay que resolver este sistema no lineal de cuatro ecuaciones en cuatro incógnitas.
Simi- larmente al método de ajuste de momentos, se puede aplicar un enfoque
secuencial resolviendo primero sólo el subsistema formado por ̂p3= p3 y ̂p4= p4 para
𝜆3 y 𝜆4.
Su (2005, 2007) propuso derivar estimaciones de 𝛌 a partir de histogramas. En
Con este método, las probabilidades empíricas se dividen en un histograma y las
probabilidades resultantes del punto medio se ajustan a la verdadera densidad de la
GLD. Uno de los inconvenientes de este método es que las estimaciones resultantes
dependen del número de intervalos elegido.
El cuarto tipo de método de estimación se basa en los estadísticos de bondad de
ajuste, como los estadísticos de Kolmogorov-Smirnov, Cramér-von Mises o
Anderson-Darling. Estos estadísticos miden la discrepancia entre la GLD hipotética y
la distribución empírica, que se deriva de los estadísticos de orden de los datos en
cuestión. Las estimaciones de los parámetros pueden emplearse cuando estos
estadísticos se minimizan con respecto a los parámetros de la DLG. La
determinación de los valores de los parámetros puede lograrse
70 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
con el método de la nave estelar propuesto por Owen (1988) y adaptado al ajuste
del GLD por King y MacGillivray (1999). Consta de los cuatro pasos siguientes:
1. Calcula las variables pseudouniformes del conjunto de datos.
2. Especifique un rango válido de valores para 𝜆1 , ... , 𝜆4 y genere una
cuadrícula cuatridimensional de valores que obedezcan a estos límites.
3. Calcule las estadísticas de bondad de ajuste en comparación con la
distribución uniforme (0, 1).
4. Elija el punto de la cuadrícula (𝜆1, 𝜆2, 𝜆3, 𝜆4) que minimiza la estadística de
bondad de ajuste como la estimación de 𝛌.
Por último, los parámetros de la GLD también podrían estimarse por el principio
de ML y/o el método del espaciado máximo del producto. Este último método fue
propuesto por separado por Cheng y Amin (1983) y Ranneby (1984). Este método
también se basa en los estadísticos de orden {x(1), x(2), ... , x(N)} de la muestra {x1,
Las ...distancias
x2,
para , xN } deentre
tamaño N. adyacentes
puntos A continuación, el como D(x
se definen 𝛌) = F(x 𝛌) - F(x 𝛌)
(i)| (i)| (i-1)|

i = 2 ,... N, . El objetivo es la maximización de la suma de los espacios


logarítmicos.
de los parámetros. En comparación con el método ML, el método del espaciado
máximo del producto tiene la ventaja de no romperse cuando el soporte de la
distribución no está garantizado para una combinación de parámetros determinada.

6.4 Sinopsis de paquetes R para GHD


6.4.1 El paquete fBasics
El paquete fBasics forma parte del conjunto de paquetes Rmetrics (véase Würtz et
al. 2014). El objetivo principal de este paquete es proporcionar herramientas
básicas para el análisis estadístico de los datos de los mercados financieros. Dentro
del paquete se utilizan clases y métodos S4. El paquete se considera un paquete
básico en la vista de tareas "Finance" de CRAN y también aparece en la vista de
tareas "Distributions". El paquete tiene dependencias de otros paquetes contenidos
en la suite Rmetrics. Con respecto a la modelización, el ajuste y las inferencias
extraídas de la GHD, se han portado y/o incluido directamente algunas funciones
del paquete GeneralizedHyperbolic a este paquete. Este último paquete se
presentará en la siguiente subsección.
Con respecto al tema de este capítulo, en este paquete se abordan las siguientes
distribuciones: la hiperbólica generalizada, la t de Student hiperbólica generalizada,
la hiperbólica y la gaussiana normal inversa, así como las versiones estandarizadas
de las distribuciones GHD y NIG. Para cada una de estas distribuciones, existen
funciones para calcular el valor de la densidad, las probabilidades, los cuantiles y la
generación de números aleatorios. Se sigue la convención de nomenclatura de R
para la densidad (prefijo d), la distribución (prefijo p), la función de cuantiles
(prefijo q) y la generación de números aleatorios (prefijo r). Además, en el
paquete se incluyen rutinas para el ajuste y el cálculo de la moda y los momentos.
En particular, la media, la varianza, la asimetría y la curtosis se implementan para
todas las distribuciones. Se
DISTRIBUCIONES ADECUADAS PARA LOS 71
RENDIMIENTOS
Además, es posible devolver sus contrapartes robustas, es decir, la mediana, el rango
intercuartil y las medidas de asimetría o curtosis que se derivan de estos cuartiles.
La forma de la densidad para el GHD, HYP y NIG puede trazarse interactivamente
para varias combinaciones de parámetros a través de una interfaz tcl/Tk. Estas
funciones se denominan ghSlider(), hypSlider() y nigSlider(),
respectivamente, y están pensadas principalmente para fines ilustrativos.
Las funciones que se refieren a la GHD tienen gh en sus nombres, mientras que
las de la t de Student hiperbólica generalizada tienen ght, las de la HYP tienen
hyp y las de la NIG tienen nig. Por lo tanto, las rutinas para ajustar estas
distribuciones a los datos de rendimiento del mercado financiero se denominan
fooFit(), donde foo se sustituye por una de estas abreviaturas. Del mismo
modo, la función fooMode() devuelve la moda y las rutinas para los momentos
son fooMean(), fooVar(), fooSkew() y fooKurt() para la media, la
varianza, la asimetría y la curtosis, respectivamente. Análogamente, las funciones
fooMED(), fooIQR(), fooSKEW() y fooKURT() se refieren a las
contrapartes robustas, es decir, la mediana, el rango intercuartil y las definiciones
robustas de la asimetría y la curtosis.
Por defecto, los parámetros desconocidos de las distribuciones se estiman
aplicando el principio ML. En este caso, la log-verosimilitud negativa se minimiza
con la función nlminb(). Hay que tener en cuenta que el argumento de la elipsis
en la función fooFit() se pasa al trazado de la distribución ajustada, por lo que
el usuario no puede pasar argumentos directamente a la rutina de optimización.
Con respecto al ajuste de la NIG, además del principio de ML, los parámetros
pueden estimarse mediante los métodos generalizados de momentos, el
espaciamiento máximo del producto o el espaciamiento mínimo del producto de la
varianza. También es posible producir un triángulo de forma para los objetos
ajustados con la rutina nigShapeTriangle(). Todos los métodos fit()
devuelven un objeto de la clase formal fDISTFIT, para el que se define un
método show().

6.4.2 El paquete GeneralizedHyperbolic


Este paquete ofrece funciones no solo para la GHD, sino también para las
distribuciones derivadas HYP, GIG y skew Laplace (véase Scott 2015). El paquete
está escrito exclusivamente en R. En el código fuente del paquete se incluye un
archivo NAMESPACE que contiene las directivas de exportación para las funciones
y los métodos S3 pertinentes para las distribuciones mencionadas. Algunas de las
rutinas contenidas en este paquete han sido portadas a fBasics. Se han
implementado rutinas para ajustar a los datos las distribuciones hiperbólica,
gaussiana inversa normal y gaussiana inversa generalizada. Se proporcionan seis
conjuntos de datos de los campos de la geología, la ingeniería y las finanzas. El
paquete está contenido en la vista de tareas de CRAN "Distribuciones".
Las funciones que se relacionan con la hiperbólica generalizada tienen el
acrónimo ghyp en sus nombres. Se han implementado rutinas para la densidad, la
distribución, la función cuantil y la generación de números aleatorios, y se sigue la
convención de nomenclatura dpqr introducida en la sección 6.4.1. Además, la
primera derivada de la función de densidad se ha implementado como función
ddghyp(). Los gráficos de cuantiles-cuantiles y percentiles-percentiles para un
72 DISTRIBUCIONES ADECUADAS PARA LOS
conjunto de parámetros dado y una serie temporal observada se han implementado
RENDIMIENTOS
como funciones qqghyp() y ppghyp(),
DISTRIBUCIONES ADECUADAS PARA LOS 73
RENDIMIENTOS
respectivamente. Además, es posible devolver los rangos en la línea real donde la
masa de probabilidad es pequeña para un conjunto de parámetros dado
(ghypCalcRange()). Con la función ghypCheckPars() se puede
comprobar si ciertos parámetros están en el conjunto de valores permitidos.
Además, con la rutina ghypChangePars() el usuario puede calcular los
parámetros para las especificaciones alternativas del GHD. Los momentos y la
moda de la distribución GHD pueden calcularse con las funciones
ghyperbMean(), ghyperbVar(), ghyperbSkew(), ghyperbKurt() y
ghyperbMode() para la media, la varianza, la asimetría, la curtosis y la moda,
respectivamente. Los momentos de la GHD también pueden calcularse con la
función ghypMom().
El acrónimo elegido para la distribución hiperbólica en este paquete es hyperb.
La convención de nomenclatura dpqr se sigue como en el caso de la distribución
hiperbólica generalizada, y la primera derivada de la función de densidad se ha
implementado como función ddhyperb(). La matriz hessiana de dos lados para
un vector de datos y un conjunto de parámetros dados puede calcularse llamando a
hyperbHessian(). Los puntos en la línea real para los que la masa de
probabilidad para un conjunto dado de parámetros es insignificante pueden
determinarse mediante la rutina hyperbCal- cRange(). La conversión de una
parametrización HYP a otra se realiza invocando hyperbChangePars().
También se pone a disposición un grupo de funciones similar al caso del GHYP
para recuperar los momentos, ahora con el prefijo hyperb en lugar de ghyp. El
ajuste de la distribución HYP se consigue con la función hyperbFit(). Los
parámetros iniciales adecuados pueden determinarse con la función
hyperbFitStart(). El usuario tiene la opción de elegir entre seis algoritmos
de optimización numérica diferentes, a saber, Nelder-Mead, BFGS (Broyden-
Fletcher-Goldfarb-Shanno) y L-BFGS-B (todos implementados en optim(),
minimización no lineal (nlm()) u optimización restringida (con-
strOptim()). Los argumentos para controlar el comportamiento del optimizador
pueden especificarse en la llamada a hyperbFit(). Esta función devuelve un
objeto con los atributos de clase hyperbFit, distFit. Para los objetos de esta
clase se han definido los métodos print(), summary() y plot(). Además,
existen los métodos coef() y vcov() para recuperar los parámetros estimados
y su matriz de varianza-covarianza. El ajuste puede evaluarse en forma de gráfico
cuantil-cuantil (QQ) (qqhyperb()) o de probabilidad-probabilidad (PP)
(pphyperb()). Además, se implementa una prueba de bondad de ajuste de
Cramér-von Mises como función hyperbCvMTest(). Esta función devuelve un
objeto con el atributo de clase hyperbCvMTest para el que se ha definido un
método print(). Por último, se puede ajustar un modelo lineal con errores
hiperbólicos utilizando hyperblm().
Básicamente, se hace el mismo conjunto de funciones que se han definido para el HYP
disponible para la gaussiana inversa generalizada (acrónimo gig). Además, los
momentos y los momentos brutos para una especificación de parámetros
determinada se calculan con las funciones gigMom() y gigRawMom(),
respectivamente. Los momentos de sus casos especiales, a saber, las distribuciones
gamma y gamma inversa, pueden invocarse mediante gammaRawMom(). Del
mismo modo, el mismo conjunto de funciones que se han definido para la GHD
están disponibles para la GIG. Además, las rutinas de trazado QQ y PP se incluyen
74 DISTRIBUCIONES ADECUADAS PARA LOS
en el paquete para esta distribución.
RENDIMIENTOS
DISTRIBUCIONES ADECUADAS PARA LOS 75
RENDIMIENTOS
Además, están disponibles las funciones que se relacionan directamente con la
distribución skew Laplace (acrónimo skewlap): la densidad, la distribución, la
función cuantil y la generación de números aleatorios, así como métodos para
producir gráficos QQ y PP.

6.4.3 El paquete ghyp


A diferencia del paquete anterior, ghyp proporciona funciones para ajustar no solo
la HYP univariante, sino también las distribuciones GHD, NIG, VG, t de Student y
gaussiana para los casos univariantes y multivariantes (véase Luethi y Breymann
2013). El paquete utiliza clases y métodos S4 y se entrega con un archivo
NAMESPACE. Está contenido en las vistas de tareas "Distributions" y "Finance" de
CRAN. Además de los archivos de ayuda del paquete, hay una viñeta disponible.
Las funciones que se relacionan con la GHD o la GIG son las rutinas de
densidad, cuantil, proba- bilidad y variantes aleatorias. Se sigue la convención de
nomenclatura dpqr y los acrónimos elegidos son ghyp y gig para el GHD y el
GIG, respectivamente. Una característica de este paquete es la inclusión de rutinas
para calcular el déficit esperado para estas distribuciones. Las funciones se denominan
ESghyp() y ESgig(). Además, el paquete ofrece una función para la
optimización de la cartera (portfo- lio.optimize()). El usuario puede
elegir la medida de riesgo empleada, es decir, la desviación estándar, el VaR o el
ES, y si la cartera debe ser de riesgo mínimo, de tangencia o de rentabilidad
objetivo. Estas carteras se derivan de una GHD multivariante.
Para estimar los coeficientes desconocidos de la GHD y sus casos especiales, se
emplea el principio ML. Los nombres de las funciones se componen del prefijo
fit. seguido del acrónimo de la distribución deseada, seguido de uv o mv para
el ajuste de datos univariados o multivariados. Los objetos devueltos son de la
clase formal mle.ghyp. Para los objetos de esta clase, se definen los métodos
show() y summary(), así como métodos para extraer el criterio de información
de Akaike (AIC) y el valor de la log-verosimilitud. Además, se implementa una
rutina para la selección del modelo utilizando el AIC como función
stepAIC.ghyp(). Además, se ha implementado una función para discriminar
entre modelos en forma de una prueba de ratio de verosimilitud (véase la rutina
lik.ratio.test()). Los parámetros estimados pueden extraerse con el
método coef(). Los momentos de los objetos que heredan de la clase ghyp
pueden calcularse con la función mean() para la media, con la función vcov()
para la varianza en el caso univariante y la matriz de varianza-covarianza en el caso
multivariante, y con las funciones ghyp.skewness() y ghyp.kurtosis()
para la asimetría y la curtosis, respectivamente. En general, los momentos centrales
y no centrales pueden calcularse con la función ghyp.moment(). Por defecto, se
devuelven la asimetría y la curtosis.
Para trazar, se dispone de un gráfico QQ, una vista de histograma y un gráfico de
pares para la visualización gráfica de gráficos QQ multivariados, así como para
trazar la densidad o superponer la densidad en dispositivos de trazado existentes.
Las funciones se denominan qqghyp(), hist(), pairs(), plot() y
lines(), en ese orden.
76 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
El paquete incluye dos conjuntos de datos. El primero, índices, contiene los
rendimientos mensuales de cinco clases de activos entre agosto de 1999 y octubre
de 2008. El segundo conjunto de datos (smi.stocks) contiene datos de
rentabilidad diaria del mercado de renta variable suizo y de los rendimientos de las
acciones de determinadas empresas suizas desde el 5 de enero de 2000 hasta el 10
de enero de 2007.

6.4.4 El paquete QRM


La mayoría de los ejemplos contenidos en McNeil et al. (2005) pueden ser
replicados con las funciones contenidas en el paquete QRM (ver Pfaff y McNeil
2016). Estas fueron escritas originalmente en el lenguaje S-PLUS por A. McNeil y
distribuidas como paquete QRMlib. S. Ulman realizó un puerto inicial de R y
todavía está disponible en el archivo CRAN (véase McNeil y Ulman 2011). El
paquete QRM se basa en este puerto inicial de R. Tiene dependencias de los
paquetes de CRAN gsl, mvtnorm, numDeriv y timeSeries. Dentro de QRM se
hace un uso parcial de las clases y métodos de S3. Los cálculos más pesados se
interconectan desde las rutinas de C. Además, se dispone de 14 conjuntos de datos
financieros.
Con respecto a la GHD, en este paquete se incluyen funciones para ajustar los
datos a sus casos especiales, a saber, la NIG y la HYP. Se denominan fit.NH()
para datos univariantes y fit.mNH() para datos multivariantes. El argumento
case de estas funciones controla si se minimiza la log-verosimilitud negativa del
NIG o del HYP. Ambas rutinas devuelven un objeto de lista sin un atributo de
clase. Por lo tanto, no hay más métodos disponibles.
Además, el momento y el momento logarítmico del GIG pueden calcularse con
las funciones EGIG() y ElogGIG(), respectivamente. Las variantes aleatorias de
esta distribución pueden generarse con la función rGIG() que hace de interfaz
con una rutina escrita en C.

6.4.5 El paquete SkewHyperbolic


El paquete SkewHyperbolic está dedicado exclusivamente al modelado y ajuste de
la distribución t de Student hiperbólica sesgada (véase Scott y Grimson 2015). El
paquete está escrito puramente en R, y se utilizan clases y métodos S3. Se envía
con un archivo NAMESPACE, y algunas funciones de utilidad subyacentes se
importan del paquete: GeneralizedHyperbolic y DistributionUtils. Además de las
funciones que se ocupan principalmente de la distribución hiperbólica sesgada, se
incluyen en el paquete tres conjuntos de datos.
Con respecto a la distribución en sí, se incluyen rutinas para sus funciones de
densidad, distribución y cuantiles, así como para la generación de variantes
aleatorias. Se sigue la convención de nomenclatura dpqr, y el acrónimo elegido
para esta distribución es skewhyp. Además de estas funciones hay una rutina para
devolver la primera derivada de la función de densidad (ddskewhyp()). Al igual
que en el paquete Gener- alizedHyperbolic, existe una función para determinar
los rangos para los que la masa de probabilidad es pequeña
(skewhypCalcRange()). La coherencia de un conjunto de parámetros puede
comprobarse con la función skewhypCheckPars().
Las rutinas incluidas skewhypMean(), skewhypVar(), skewhypSkew()
DISTRIBUCIONES ADECUADAS PARA LOS 77
y skewhypKurt() se utilizan para calcular la media, la varianza, la asimetría y
RENDIMIENTOS
la
78 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
curtosis, respectivamente. La moda de la distribución para un conjunto de
parámetros dado puede calcularse con skewhypMode(). De forma similar al
paquete GeneralizedHyper- bolic, los momentos centrales y no centrales de
cualquier orden pueden calcularse con la rutina skewhypMom().
El ajuste de los datos a la distribución t hiperbólica sesgada de Student se realiza
mediante la función skewhypFit(). Los valores iniciales adecuados pueden
determinarse con la rutina skewhypFitStart(). Los parámetros se determinan
numéricamente aplicando el principio ML. La probabilidad logarítmica negativa se
minimiza empleando el optimizador de propósito general optim() o la
función nlm(). Para el primero, el usuario puede utilizar el algoritmo BFGS o
Nelder-Mead. La función skewhypFit() devuelve un objeto de clase informal
skewhypFit. Para los objetos de esta clase, están disponibles los métodos
print(), plot() y summary(). La bondad del ajuste puede inspeccionarse
gráficamente mediante un gráfico QQ y/o PP. Las funciones correspondientes se
denominan qqskewhyp() y ppskewhyp(), respectivamente. Además, se
proporciona una función para producir una línea de diagrama de cola
(skewhypTailPlotLine()) para un conjunto de datos y una especificación de
parámetros determinados.

6.4.6 El paquete VarianceGamma


El paquete VarianceGamma puede considerarse como un paquete gemelo del
paquete Ske- wHyperbolic comentado en la subsección anterior, pero se centra en
la distribución gamma de la varianza (véase Scott y Dong 2015). Al igual que su
gemelo, el paquete está contenido en la vista de tareas "Distributions" de CRAN.
Dentro del paquete se emplean clases y métodos S3 y el paquete se envía con un
archivo NAMESPACE en el que se incluyen directivas de importación para las
funciones de utilidad contenidas en los paquetes Gener- alizedHyperbolic y
DistributionUtils. Básicamente, todas las funcionalidades contenidas en el paquete
SkewHyperbolic se han reflejado en este paquete, y se sigue la convención de
nomenclatura dpqr. El acrónimo vg se utiliza para la distribución gamma de
varianza. Por lo tanto, la discusión de las funciones, los métodos y las clases de la
sección 6.4.5 se traslada también a estas instancias.

6.5 Sinopsis de los paquetes R para GLD


6.5.1 El paquete Davies
Aunque el enfoque del paquete Davies es una implementación de la función
cuantílica de Davies (véase Hankin y Lee 2006), también se incluyen rutinas de R
que abordan la distribución GLD. El paquete se encuentra en la lista de CRAN
"Distributions" Task View. El paquete se entrega con un archivo NAMESPACE, pero
no se emplean clases/métodos S3 ni S4. Por lo tanto, además de dos conjuntos de
datos, el paquete ofrece una colección de funciones para tratar estos dos tipos de
distribuciones, ni más ni menos.
Con respecto a la GLD, las funciones se basan en la especificación de Ramberg-
Schmeiser (RS). Se han implementado las funciones de densidad, distribución y
cuantil de la GLD, así como una función para generar variantes aleatorias, y la
DISTRIBUCIONES ADECUADAS PARA LOS 79
función dpqr RENDIMIENTOS
80 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
Se sigue una convención de nomenclatura para nombrar estas rutinas, ( por
ejemplo, dgld()). Además, la rutina dgld.p() es una implementación de la
función de densidad expresada en términos del cuantil.
El valor esperado del GLD para una parametrización dada puede recuperarse como
un valor exacto con la rutina expected.gld() o como una aproximación con
expected.gld.approx(). Dentro de ambas funciones, los valores se
determinan como la suma de una constante (𝜆1 ) y dos funciones de cuantiles de
Davies.

6.5.2 El paquete fBasics


En la sección "fBasics" se ha ofrecido una descripción general del paquete.
6.4.1. Por lo tanto, en la siguiente descripción nos centraremos en las rutinas de R
para manejar el GLD.
Las funciones de densidad, distribución y cuantil, así como una rutina para obtener
variantes aleatorias, se han implementado como rutinas de R, y se sigue la
convención de nomenclatura de dpqr (por ejemplo, dgld()). Estas funciones
son envoltorios de los cuerpos de las funciones con el mismo nombre contenidas en
el paquete gld de King et al. (2016); véase la sección 6.5.3 para una discusión de
este paquete. Sin embargo, estas funciones envolventes se limitan a la
especificación RS, y sólo los valores de los parámetros para 𝜆1, ... , 𝜆4
correspondientes a la región 4 del espacio de parámetros se pueden suministrar como
argumentos a estos
de lo contrario, se devuelve un error.
La función gldFit() se encarga de ajustar los datos a la GLD. Al igual que las
funciones anteriores, la GLD se expresa en la especificación RS y la optimización
se realiza para el espacio de parámetros pertinente a la región 4. Además del
argumento de los datos x y los valores iniciales de los parámetros
lambda1[234], la función tiene un argumento método mediante el cual se
puede establecer el método de estimación. Los procedimientos de estimación
disponibles son: la maximización de la logaritmo-verosimilitud ("mle"), el
método del espaciado máximo del producto ("mps"), la coincidencia robusta de
momentos ("rob"), la bondad del ajuste ("gof") y el binning del histograma
("hist"). Si se elige uno de los dos últimos métodos, el usuario puede establecer
el tipo de estadística de bondad de ajuste o el método de agrupación mediante el
tipo de argumento de la función. Este argumento se pasa como argumento de
elipsis a cualquiera de las funciones ocultas por el usuario .gldFit.gof() o
.gldFit.hist(), respectivamente. Para los métodos de estimación basados en
la bondad del ajuste, puede ser el estadístico Anderson-Darling ("ad"), Cramér-
von Mises ("cvm") o Kolmogorov-Smirnov ("ks"). Si se elige el enfoque del
histograma, el recuento de bins puede determinarse mediante el binning de
Freedman-Diaconis ("fd"), el binning del histograma de Scott ("scott") o el
binning de Sturges ("sturges"). La función devuelve un objeto S4
fDISTFIT. Las estimaciones, el valor del objetivo y el código de convergencia
del optimizador nlminb() se devuelven como una lista en el slot fit de
objetos de este tipo. Por defecto, se produce un gráfico de la densidad estimada,
que puede suprimirse estableciendo doplot = FALSE.
El modo de la GLD puede calcularse para valores dados de los parámetros 𝜆1, ... , 𝜆4
con la función gldMode(). Estimaciones robustas para la localización, la dispersión, la
DISTRIBUCIONES ADECUADAS PARA LOS 81
inclinación... RENDIMIENTOS
y la curtosis pueden calcularse para determinados valores de los parámetros con las funciones
gldMED(), gldIQR(), gldSKEW() y gldKURT(), respectivamente.
82 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
6.5.3 El paquete gld
El paquete gld es, hasta donde el autor sabe, el único que implementa las tres
especificaciones GLD: RS, FMKL y FM5 (véase King et al. 2016). Esta última es
una extensión de la versión FMKL en la que se incluye un quinto parámetro para
capturar explícitamente la asimetría de los datos. La especificación FM5 se deriva
de la modificación de la especificación RS de Gilchrist (2000).
El paquete está incluido en CRAN "Distributions" Task View. Se han utilizado
clases y métodos S3, y el paquete contiene un archivo NAMESPACE. Las funciones
de distribución de las especificaciones de GLD se interconectan a partir de rutinas
escritas en el lenguaje C.
Las funciones de densidad, densidad cuantílica, distribución y distribución
cuantílica se implementan como rutinas R dgl(), dqgl(), pgl() y qdgl(),
respectivamente. Las variantes aleatorias de la GLD pueden generarse con la
función rgl(). Con respecto a la estimación de los parámetros, el método starship
se ha implementado como función starship(). Aquí, los valores iniciales se
determinan según una búsqueda de cuadrícula adaptativa
(starship.adaptivegrid()) y luego se utilizan en la llamada a optim(). La
propia función objetivo se incluye en el paquete como función starship.obj(). La
función starship() devuelve un objeto de clase informal starship para el
que están disponibles los métodos plot(), print() y summary(). La
validez de los parámetros 𝜆 estimados se puede comprobar con la función
gl.check.lambda(). Como medio para evaluar la bondad del ajuste
gráficamente, la función qqgl() produce un gráfico QQ. Por último, la densidad
de la GLD puede representarse con la función plotgl().

6.5.4 El paquete lmomco


Los métodos de estimación basados en los L-momentos para varias distribuciones
se implementan en el paquete lmomco (véase Asquith 2016). Aquí nos
concentraremos en aquellas herramientas que abordan directamente la GLD. El
paquete se considera un paquete básico en la vista de tareas "Distributions" de
CRAN. Está escrito puramente en R y se envía con un archivo NAMESPACE con
directivas de exportación para todas las funciones de usuario relevantes. El paquete
es bastante grande, a juzgar por el tamaño de su manual, que tiene más de 500
páginas. Cabe mencionar que, además de los métodos de estimación basados en los
momentos L y sus extensiones, se dispone de estimadores de momentos
ponderados por la probabilidad (PWM). Para estimar los parámetros de la GLD,
primero hay que determinar los momentos L para los datos de la muestra
univariante. Esto puede lograrse con la función lmom.ub() para estimaciones
insesgadas de los momentos L, con la función TLmoms() para los momentos L
recortados, o con la función pwm.ub() para los PWM de muestra insesgados. Si
se elige esta última vía, estas estimaciones de PWM pueden convertirse en
estimaciones de L-momentos con la función pwm2lmom(). Habiendo estimado
los L - m o m e n t o s , el objeto resultante puede ser utilizado en la llamada a las
funciones pargld() y/o parTLgld() para estimar los parámetros del GLD
por L-momentos o L-momentos recortados, respectivamente. El paquete ofrece
rutinas para comprobar la validez de los parámetros estimados y/o los L-momentos
DISTRIBUCIONES ADECUADAS PARA LOS 83
RENDIMIENTOS (funciones are.par.valid(),
84 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
are.pargld.valid(), y are.lmom.valid()), así como medios de
conversión entre las estimaciones de los parámetros y los L-momentos asociados
para una distribución dada (funciones vec2par(), lmom2par(),
par2lmom(), y lmomgld()).
Las funciones de R que se relacionan directamente con la DLG son cdfgld()
para la función de distribución acumulativa, quagld() para la función de
cuantiles y pdfgld() para la función de densidad. Las variantes aleatorias para
una parametrización dada de la GLD pueden generarse con la función
rlmomco(). La corrección de una función de probabilidad o de densidad
determinada empíricamente puede evaluarse con las funciones check.fs() y
check.pdf(), respectivamente.

6.6 Aplicaciones de la GHD a la modelización de riesgos


6.6.1 Ajuste de los rendimientos de las acciones a la GHD
En esta subsección se ajustan los rendimientos diarios de las acciones de Hewlett
Packard (HWP) al GHD y sus casos especiales, el HYP y el NIG. El código R se
muestra en el Listado 6.1. La muestra va del 31 de diciembre de 1990 al 2 de enero
de 2001 y consta de 2.529 observaciones. El siguiente análisis se ha realizado con
las funciones contenidas en el paquete ghyp. En el listado, este paquete se carga
primero en el espacio de trabajo. El paquete fBasics contiene el conjunto de datos
DowJones30, que incluye el precio de las acciones de HWP. Esta serie se
convierte en un objeto timeSeries y a continuación se calculan los
rendimientos porcentuales continuos. Para comparar las distribuciones ajustadas, la
distribución empírica (EDF) se recupera primero de los datos con la función ef().
A continuación, los rendimientos se ajustan a las distribuciones GHD, HYP y NIG. En
cada caso, se permiten posibles asimetrías en los datos (es decir, asimetría distinta
de cero). En el siguiente fragmento de código se calculan las formas de las
densidades estimadas, junto con una distribución gaussiana que sirve de referencia.
A continuación, se elabora un gráfico de las densidades empíricas y ajustadas
(véase la figura 6.4).
La descripción bastante pobre de la distribución empírica de la rentabilidad para
el caso gaussiano es inmediatamente evidente en este gráfico. La distribución
normal no logra captar el exceso de curtosis de 4,811. Las cosas son diferentes para
la clase de distribuciones hiperbólicas generizadas. En estos casos, la función de
distribución empírica se sigue bastante bien. Los modelos HYP y NIG ajustados
casi coinciden, y en este gráfico no se pueden distinguir estas dos distribuciones.
La GHD ajustada parece reflejar ligeramente mejor los rendimientos. En particular,
los valores de la densidad se acercan más a sus homólogos empíricos en torno a la
mediana de la FED. Ceteris paribus, esto implica mayores masas de probabilidad
en las colas de la distribución en comparación con las distribuciones 𝜆-restringidas
HYP y NIG.
Como segunda forma de comparar gráficamente las distribuciones ajustadas, se
producen gráficos QQ en las siguientes líneas de código del Listado 6.1. Estos se
muestran en la Figura 6.5. Para mayor claridad, las marcas de la distribución
normal ajustada se han omitido en el gráfico. Se anima al lector a que adopte el
DISTRIBUCIONES ADECUADAS PARA LOS 85
gráfico en consecuencia. Lo que ya se ha deducido de la densidad se hace aún más
RENDIMIENTOS
evidente cuando se examina el gráfico QQ.
86 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
Código R 6.1 Adaptación de los retornos HPW al GHD.
l i b r a r i a ( ghyp ) 1

l i b r a r a ( timeSeries ) 2

biblioteca ( f B a s i c s ) 3

## C á l c u l o d e re t orno 4

d a t a ( DowJones30 ) 5

y <- t i m e S e r i e s ( DowJones30 [ , "HWP" ] , c h a r v e c = 6

as . c a r a c t e r ( DowJones30 [ , 1 ] ) 7

y r e t <- na . omit ( d i f f ( l o g ( y ) ) ∗ 100) 8


## A j u s t e 9

ef <- d e n s i d a d ( y r e t ) 10

g h d f i t < - f i t . ghypuv ( y r e t , sy mme t ric = FALSE , 11

c o n t r o l = l i s t ( maxit = 1000) ) 12

h y p f i t < - f i t . hypuv ( y r e t , sy mme t ri c = FALSE , 13

c o n t r o l = l i s t ( maxit = 1000) ) 14

n i g f i t < - f i t . NIGuv ( y r e t , si mé t ri c o = FALSE , 15

c o n t r o l = l i s t ( maxit = 1000) ) 16

## D e n s i d a d e s 17

ghddens <- dghyp ( e f $x , g h d f i t ) 18

hypdens <- dghyp ( e f $x , h y p f i t ) 19

n i g d e n s <- dghyp ( e f $x , n i g f i t ) 20

n o r d e n s <- dnorm ( e f $x , mean = mean ( y r e t ) , sd = 21

sd ( c ( y r e t [ , 1 ] ) ) ) 22

col . d e f <- c ( " b l a c k " , " r e d " , " b l u e " , " g r e e n " , " o r a n g e " ) 23

p l o t ( ef , x l a b = " " , y l a b = e x p r e s i ó n ( f ( x ) ) , ylim = c ( 0 , 0 , 2 5 ) ) 24

l i n e s ( e f $x , ghddens , c o l = " r e d " ) 25

l i n e s ( e f $x , hypdens , c o l = " b l u e " ) 26

l i n e s ( e f $x , ni gde ns , c o l = " g r e e n " ) 27

l i n e s ( e f $x , nordens , c o l = " o r a n g e " ) 28

l e y e n da ("t o p l e f t " , 29

l e g e n d = c ( " e m p i r i c a l " , "GHD" , "HYP" , "NIG" , "NORM" ) , 30

col = col . def , l t y = 1 ) 31

## QQ- P a r c e l a s 32

qqghyp ( g h d f i t , l i n e = TRUE, ghyp . c o l = " r e d " , 33

p l o t . l e ge nd = FALSE , g a u s i a n = FALSE , 34

main = " " , cex = 0 . 8 ) 35

qqghyp ( h y p f i t , add = TRUE, ghyp . pch = 2 , ghyp . c o l = " b l u e " , 36

g a u s i a n = FALSE , l i n e = FALSE , cex = 0 . 8 ) 37

qqghyp ( n i g f i t , add = TRUE, ghyp . pch = 3 , ghyp . c o l = " g r e e n " , 38

g a u s i a n = FALSE , l i n e = FALSE , cex = 0 . 8 ) 39

l e ge n d ( " t o p l e f t " , l e ge nd = c ( "GHD" , "HYP" , " NIG" ) , 40

col = col . d e f [ -c ( 1 , 5) ] , pch = 1:3) 41

## D i a g n ó s t i c o 42

AIC <- s tep AIC . ghyp ( y r e t , d i s t = c ( " ghyp " , " hyp " , " NIG" ) , 43

si mé t ri c o = FALSE , 44

c o n t r o l = l i s t ( maxit = 1000) ) 45

LRghdnig <- l i k . r a t i o . t e s t ( g h d f i t , n i g f i t ) 46

LRghdhyp < - l i k . r a t i o . t e s t ( g h d f i t , h y p f i t ) 47
DISTRIBUCIONES ADECUADAS PARA LOS 87
RENDIMIENTOS
density.default(x = yret)
0.
25 empírico
GHD
0. HYP NIG
20 NORM

0.
15
f(x)
0.10

0.
05

0.
00
-20 -10 0 10

Figura 6.4 Densidades ajustadas para los retornos HWP.

10 15 GHD
HYP
NIG

Cu 5
an
tile 0
s
de -
la 20
m -
ue 15
str -
a 10
-5

-15 -10 -5 0 5 10 15
Cuantiles teóricos

Figura 6.5 Gráfico QQ del GHD ajustado para los retornos de HWP.

Los rendimientos diarios pueden seguirse mejor con la GHD que con las
distribuciones HYP y NIG, especialmente en las colas. Además -esta conclusión era
menos clara en el gráfico de densidad-, los rendimientos pueden explicarse
ligeramente mejor con la NIG que con la distribución HYP.
En las tres últimas líneas del listado, se producen medidas de diagnóstico para los
tres modelos. En primer lugar, se utiliza la función stepAIC.ghyp() para
determinar con qué distribución se pueden explicar mejor los datos en términos de
AIC. Esta función devuelve un
88 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
Cuadro 6.2 Resultados de las distribuciones ajustadas a los rendimientos de HWP.

Distribución AIC LLH 𝜆 𝛼̄ 𝜇 𝜎 𝛾


GHD 11684.07 -5837.04 -2.270 0.051 0.093 2.584 -0.013
NIG 11691.90 -5841.95 -0.500 1.110 0.078 2.552 0.003
HYP 11704.41 -5848.21 1.000 0.903 0.069 2.528 0.011

con tres elementos: best.model, all.models y fit.table. Este último es el


más interesante porque no sólo proporciona información sobre los AIC y los
valores de la log-verosimilitud (LLH), sino que también devuelve las estimaciones de
los parámetros de distribución, si se ha ajustado una distribución simétrica o no, si
el optimizador logró la convergencia y el número de iteraciones necesarias. En la
tabla 6.2 se ofrece un ejemplo de estos resultados.
Las conclusiones extraídas de la inspección gráfica de los resultados se reflejan
en sus contrapartidas cuantitativas. Es evidente que el modelo basado en la GHD se
ve favorecido frente a las distribuciones NIG e HYP según el AIC. Sin embargo,
las diferencias entre el AIC y/o la log-verosimilitud de GHD y NIG son bastante
pequeñas. Una comparación cruzada con los valores del modelo HYP arrojaría una
preferencia por la NIG, si hubiera que elegir entre las distribuciones restringidas.
La razón de esto es principalmente que la estimación no restringida de 𝜆̂ está -2,27
más cerca de la restricción del parámetro para 𝜆 del NIG que del HYP. Se puede
comprobar si las diferencias en los valores de las log-verosimilitudes son
significativamente diferentes de cero mediante una prueba de razón de
verosimilitudes. Estas pruebas se llevan a cabo en las dos últimas líneas del listado
del código R. En primer lugar, se comprueba si el GHD puede ser sustituido por el
NIG. El valor del estadístico de prueba es 0,007 y el valor p es 0,002. Por lo tanto,
la hipótesis nula de que el poder explicativo de las dos distribuciones es igual debe
rechazarse con un nivel de confianza del 95%. El valor correspondiente del
estadístico de la prueba para comparar la GHD con la HYP es 0 y el valor p
implícito es 0. En este caso, la hipótesis nula debe rechazarse aún más claramente,
lo que es plausible dado el orden de los tres valores de log-verosimilitud.

6.6.2 Evaluación del riesgo con el GHD


En esta subsección se investiga el comportamiento de las medidas de riesgo VaR y
ES según cada uno de los modelos. En particular, las dos medidas de riesgo se
derivan de las distribuciones GHD, HYP y NIG ajustadas para los rendimientos
HWP de la subsección anterior. Estas medidas se calculan en un intervalo que va
del 95,0% al 99,9%. Las trayectorias resultantes del VaR y del ES se comparan con
sus equivalentes empíricos. Para el ES se utiliza la media de los valores del quintil
inferior.
El código correspondiente figura en el listado 6.2. En primer lugar, se crea la
secuencia de probabilidades para la que se deben calcular el VaR y el ES. Dado
que se trata de rendimientos en lugar de pérdidas, éstos se definen para la cola
izquierda de la distribución. En las siguientes líneas se calcula el VaR para estos
niveles utilizando la función cuantil para la GHD. Por convención, las pérdidas se
expresan como números positivos, y por lo tanto el
DISTRIBUCIONES ADECUADAS PARA LOS 89
RENDIMIENTOS
Código R 6.2 VaR y ES derivados de GHD, HYP y NIG.
## P r o b a b i l i d a d e s 1

p <- seq ( 0 , 0 0 1 , 0 . 0 5 , 0 , 00 1 ) 2

## VaR 3

ghd . VaR <- abs ( qghyp ( p , g h d f i t ) ) 4

hip . VaR <- abs ( qghyp ( p , h y p f i t ) ) 5

nig . VaR <- abs ( qghyp ( p , n i g f i t ) ) 6

nor . VaR <- abs ( qnorm ( p , mean = mean ( y r e t ) , 7

sd = sd ( c ( y r e t [ , 1 ] ) ) ) ) 8

emp . VaR <- abs ( c u a n t i l ( x = y r e t , p r o b s = p ) ) 9

# P l o t o d e l VaR 10

p l o t ( emp . VaR , t y p e = " l " , x l a b = " " , y l a b = " VaR" , 11

axes = FALSE , ylim = r a n g e ( c ( hyp . VaR , n i g . VaR , ghd . VaR , 12

ni . VaR , emp . VaR ) ) ) 13

caja ( ) 14

a x i s ( 1 , a t = seq ( a l o n g = p ) , l a b e l s = names ( emp . VaR ) , 15

t i c k = FALSE) 16

a x i s ( 2 , a t = p r e t a d o ( r a n g e ( emp . VaR , ghd . VaR , hyp . VaR , 17

n i g . VaR , ni . VaR ) ) ) 18

l i n e s ( seq ( al ong = p ) , ghd . VaR , c o l = " red " ) 19

l i n e s ( seq ( a l o n g = p ) , hyp . VaR , c o l = " a z ul " ) 20

l i n e s ( seq ( al ong = p ) , nig . VaR , c o l = " g reen " ) 21

l i n e s ( seq ( along = p ) , nor . VaR , c o l = " ora nge " ) 22

l e g e n d ( " topright " , 23

l e ge n d = c ( " E m p i r i c a l " , " GHD" , " HYP" , " NIG" , " Normal " ) , 24

col = col . def , l t y = 1 ) 25

## ES 26

ghd . ES <- abs ( ESghyp ( p , g h d f i t ) ) 27

hyp . ES <- abs ( ESghyp ( p , h y p f i t ) ) 28

nig . ES <- abs ( ESghyp ( p , n i g f i t ) ) 29

ni . ES <- abs ( media ( y r e t ) - sd ( c ( y r e t [ , 1 ] ) ) ∗ 30


dnorm ( qnorm ( 1 - p) ) / p ) 31

obs . p <- t e c h o ( p ∗ l o n g i t u d ( y r e t ) ) 32
emp . ES <- s a p p l y ( obs . p , f u n c i ó n ( x ) abs ( media ( s o r t ( c ( y r e t ) ) 33

[ 1 : x ]) ) ) 34

## P l o t o f ES 35

p l o t ( emp . ES , ty pe = " l " , x lab = " " , y lab = " ES" , axes = FALSE , 36

ylim = r a n g e ( c ( hyp . ES , n i g . ES , ghd . ES , nor . ES , emp . ES ) ) ) 37

caja ( ) 38

a x i s ( 1 , a t = 1 : l e n g t h ( p ) , l a b e l s = names ( emp . VaR ) , 39

t i c k = FALSE) 40

a x i s ( 2 , a t = p r e t a d o ( r a n g e ( emp . ES , ghd . ES , hyp . ES , n i g . ES , 41

ni . ES ) ) ) 42

l i n e s ( 1 : l o n g i t u d ( p ) , ghd . ES , c o l = " r e d " ) 43

l i n e s ( 1 : l o n g i t u d ( p ) , hyp . ES , c o l = " b l u e " ) 44

l i n e s ( 1 : l o n g i t u d ( p ) , n i g . ES , c o l = " g r e e n " ) 45

l i n e s ( 1 : l e n g t h ( p ) , nor . ES , c o l = " o r a n g e " ) 46

l e g e n d ( " topright " , 47

l e ge n d = c ( " E m p i r i c a l " , " GHD" , " HYP" , " NIG" , " Normal " ) , 48

col = col . def , l t y = 1 ) 49


90 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
14 GHD
HYP
empírico
12 NIG
Normal
10
Va
R
8

4
0.1% 0.7% 1.3% 1.9% 2.5% 3% 3 .5% 4% 4 .5% 5%

Figura 6.6 Progresión del VaR basada en los modelos GHD, HYP y NIG.

se utilizan los valores absolutos de los cuantiles devueltos por la función. El VaR
basado en la distribución normal puede calcularse proporcionando las estimaciones
necesarias para la ubicación y la escala. Los valores de VaR así determinados se
comparan con sus homólogos empíricos, que se determinan mediante la función
quantile().
La evolución de estas medidas de riesgo se representa en la figura 6.6. Los
cuantiles obtenidos a partir de la GHD y sus casos especiales se ajustan bastante
bien a los niveles de pérdida empíricos asociados. Sólo en la región de confianza
extrema del 99,0% o más, el riesgo está ligeramente subestimado por estos
modelos. El orden de la bondad de ajuste de las tres distribuciones también puede
concluirse a partir de este gráfico: la GHD ajustada sigue muy bien los datos en esa
región, mientras que el riesgo es subestimado por los modelos NIG e HYP. Se
pueden extraer dos conclusiones del VaR basado en la distribución normal. En
primer lugar, como era de esperar, la distribución normal no capta los eventos de
riesgo extremo (es decir, por encima del nivel del 97,5%). En segundo lugar, el
riesgo de mantener una posición en las acciones de HWP está sobreestimado para
la región de confianza entre el 95,0% y el 97,5%. Dicho de otro modo, para estos
niveles el VaR derivado de la distribución normal es sistemáticamente demasiado
conservador y, por lo tanto, un inversor podría verse perjudicado al no poder tomar
una posición mayor en esa acción.
A continuación, en el listado 6.2, se calcula el ES para los objetos del modelo
ajustado. Como se menciona en la sección 6.4.3, esta medida de riesgo puede
calcularse con la función ESghyp(). El déficit esperado para la distribución
normal se determina mediante (4.5) en la sección
4.2. Al igual que en el caso del VaR, la trayectoria del ES para niveles de confianza
alternativos se compara con su contrapartida empírica. En este caso, se emplea la
media de los valores menores que el cuantil. Las medidas de riesgo así
determinadas se muestran en la Figura 6.7. A diferencia del VaR, ahora las
medidas de riesgo derivadas de todos los modelos subestiman sistemáticamente la
pérdida esperada en el caso de un evento de este tipo. Sin embargo, esta
DISTRIBUCIONES ADECUADAS PARA LOS 91
subestimación es menos grave para los modelos basados en el GHD y para los
RENDIMIENTOS
niveles menos conservadores. El ES derivado de la distribución normal es el que
sale peor parado. En general, la razón por la que
92 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
GHD
16 HYP
empírico
NIG
14
Normal

12
ES
10

0.1% 0.7% 1.3% 1.9% 2.5% 3% 3 .5% 4% 4 .5% 5%

Figura 6.7 Trayectoria de ES basada en los modelos GHD, HYP y NIG.

el riesgo se subestima sistemáticamente, independientemente del modelo elegido,


es principalmente que todas las distribuciones subestiman la probabilidad de
pérdidas extremas y, por tanto, estos errores se acumulan cuando se calcula el ES.

6.6.3 Hechos estilizados revisados


En esta subsección se reconsideran los hechos estilizados de los rendimientos
financieros empleando el triángulo de forma de la distribución HYP. Normalmente,
la distribución empírica de los rendimientos de los mercados financieros se
caracteriza por un exceso de curtosis y una asimetría negativa. Estas características
son más pronunciadas en el caso de los rendimientos de mayor frecuencia (es decir,
intradiarios o diarios). Por lo tanto, surge la necesidad de utilizar
modelos/distribuciones que reconozcan estos hechos estilizados. También podría
interesarnos si estos modelos más complicados (en comparación con la distribución
normal) son realmente necesarios si el foco de atención se desplaza a los procesos
de rentabilidad de menor frecuencia (es decir, semanal, mensual o bimensual). Como
se discute en la sección 6.2, las distribuciones exponencial, de Laplace, hiperbólica
con sesgo a la izquierda o a la derecha, y normal están contenidas dentro de la
distribución HYP como casos límite. Si la HYP puede ser aproximada por una de
estas distribuciones puede ser inspeccionada gráficamente por el triángulo de
forma. Esta herramienta también puede emplearse para evaluar si los hechos
estilizados siguen siendo aplicables a los procesos de retorno de menor frecuencia.
Este tipo de análisis se lleva a cabo en el código R del listado 6.3.
La primera línea del listado define los días de devolución utilizados. Estos
corresponden a las devoluciones diarias, semanales, quincenales, mensuales y
bimensuales. La siguiente línea calcula las re- vueltas para estas frecuencias. Esto
se puede conseguir más fácilmente con la función lapply(). El objeto de
lista resultante se convierte en una matriz y se omiten los valores NA. El
paquete ghd no proporciona una función para parametrizar el HYP en el espacio
(𝜉, 𝜒). Por lo tanto, en las líneas siguientes se especifica la función xichi() para
este propósito. A continuación, los parámetros desconocidos de la distribución
DISTRIBUCIONES ADECUADAS PARA LOS 93
HYP se estiman mediante la función fit.hypuv() para cada una de las
RENDIMIENTOS
columnas en
94 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
Código R 6.3 Triángulo de forma para la distribución HYP.
rd <- c ( 1 , 5 , 10 , 20 , 40) 1

y r e t s <- na . omit ( m a t r i x ( u n l i s t ( l a p l a d a ( rd , 2

function ( x ) d i f f ( l o g ( y ) , l a g = x ) ) ) , 3

nc ol = 5 ) ) 4

## F u n c i ó n para x i / c h i c o e f i c i e n t e s 5

xichi < - function ( x ) { 6

param <- c oe f ( x , t ype = " a l p h a . d e l t a " ) 7

rho <- param [ [ " b e t a " ] ] / param [ [ " a l p h a " ] ] 8

z e t a <- param [ [ " d e l t a " ] ] ∗ s q r t ( param [ [ " a l p h a " ] ] ^ 2 - 9


param [ [ " b e t a " ] ] ^ 2 ) 10
xi <- 1 / s q r t ( 1 + z e t a ) 11

chi <- xi ∗ rho 12


r e s u l t a d o <- c ( chi , x i ) 13

nombres ( r e s u l t a ) <- c ( " c h i " , " x i " ) 14

retorno ( r e s u l t a d o ) 15

} 16

## HYP F i t t i n g 17

h y p f i t s <- a p l i c a d o ( y r e t s , 2 , f i t . hypuv , sy mme t ric = FALSE) 18

puntos < - m a t r i x ( u n l i s t ( lapply ( hypfits , x i c h i ) ) , 19

n c o l = 2 , byrow = TRUE) 20

## Shape t r i a n g l e 21

col . d e f <- c ( " b la c k " , " b lue " , " r e d " , " g r e e n " , " o r a n g e " ) 22

leg . d e f <- p a s t e ( rd , r e p ( " day r e t u r n " , 5 ) ) 23

p l o t ( p u n t o s , ylim = c ( - 0 . 2 , 1 . 2 ) , xlim = c ( - 1 . 2 , 1 . 2 ) , 24

c o l = c o l . def , pch = 16 , y l a b = e x p r e s i ó n ( x i ) , 25

x l a b = e xpresión ( c h i ) ) 26

l í n e a s ( x = c ( 0 , -1) , y = c ( 0 , 1 ) ) 27

líneas ( x = c ( 0 , 1 ) , y = c ( 0 , 1 ) ) 28

l í n e a s ( x = c ( -1, 1 ) , y = c ( 1 , 1 ) ) 29

l e g e n d ( " b o t t o m r i g h t " , l e g e n d = l e g . def , c o l = c o l . def , pch = 16 ) 30

t e x t ( x = 0 . 0 , y = 1 . 0 5 , l a b e l = " L a pl a c e " , s r t = 0 ) 31

t e x t (x = -1 . 0 , y = 1 .05 , l a b e l = " E x p o n e n c i a l " , s r t = 0 ) 32

t e x t ( x = 1 .0 , y = 1 .05 , l a b e l = " E x p o n e n c i a l " , s r t = 0 ) 33

t e x t (x = 0 . 0 , y = -0 . 1 , l a b e l = " Normal " , s r t = 0 ) 34

t e x t o (x = -0 . 6 , y = 0 . 5 , l a b e l = " H y p e r b o l i c , l e f t skewed " , 35

s r t = 302) 36

t e x t ( x = 0 . 6 , y = 0 . 5 , l a b e l = " H y p e r b o l i c , r i g h t skewed " , 37

s r t = 57) 38

yrets empleando la función apply(). El objeto de lista devuelto hypfits,


que contiene las distribuciones ajustadas, se somete entonces a lapply() para
extraer los pares (𝜉̂, 𝜒̂). Estos puntos se trazan en las últimas líneas del listado y el
triángulo de forma resultante se proporciona en la Figura 6.8.
De este triángulo de formas se desprende un patrón claro: cuanto más baja es la
frecuencia del retorno, más se aproxima al sur del triángulo, por lo que la
distribución HYP podría, en principio, ser aproximada por una distribución normal
para estas frecuencias más bajas
DISTRIBUCIONES ADECUADAS PARA LOS 95
RENDIMIENTOS
1.
2
Exponencial Laplace Exponencial
1.
0

0.
8

0.
6

0.
4

0.
2
1 día de
devolución
0.
5 días de
0
Normal devolución
- 10 días de
0. devolución
2 20 días de
-1.0 -0.5 0.0 0.5 1.0
devolución
40 días de
devolución
Figura 6.8 Triángulo de forma para las devoluciones de HWP.

retornos. En general, sin embargo, la nube de puntos permanece bastante cerca del
centro del triángulo, por lo que esta aproximación puede no funcionar bien.
Además, una comparación de los pares (𝜉̂, 𝜒̂) indica que los rendimientos
bimestrales muestran la mayor asimetría negativa en términos absolutos.
Sorprendentemente, incluso los rendimientos semanales están más sesgados a la
izquierda que sus homólogos diarios.

6.7 Aplicaciones del GLD a la modelización


de riesgos y al análisis de datos
6.7.1 VaR para una sola acción
En la primera aplicación del GLD se realiza un back-test para el VaR del 99% de
las pérdidas semanales de la acción QCOM contenida en el índice S&P 500. Los
datos se proporcionan en el paquete R FRAPO. La muestra abarca el período
comprendido entre 2003 y 2008 y comprende 265 observaciones. La prueba
retrospectiva se expresa en términos del VaR incondicional implícito en el GLD y
la distribución normal. El código R para realizar el back-test se muestra en el
listado 6.4.
En primer lugar, se cargan en memoria los paquetes necesarios. El ajuste de las
series de pérdidas al GLD se realiza con las funciones del paquete lmomco y,
como se ha dicho, el conjunto de datos está contenido en el paquete FRAPO. El
objeto data.frame
96 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
Código R 6.4 VaR de la acción QCOM: comparación de la distribución GLD y la
normal.
## Carga de paquetes 1

l i b r a r y ( lmomco ) 2

b i b l i o t e c a ( FRAPO) 3

## C a r g a d e datos 4

d a t a ( SP500 ) 5

Idx <- SP500 [ , "QCOM" ] 6

L <- -1 ∗ r e t u r n s e r i e s ( Idx , method = " d i s c r e t e " , t r i m = TRUE) 7


## Computing VaR ( Normal & GLD) 99%, moving window 8

ep <- 104: l e n g t h ( L) 9

sp < - 1 : l o n g i t u d ( ep ) 10

n i v e l <- 0,99 11

VaR <- m a t r i z (NA, n c o l = 2 , nrow = l e n g t h ( ep ) ) 12

pa ra ( i i n 1 : l e n g t h ( sp ) ) { 13

x <- L[ sp [ i ] : ep [ i ] ] 14

lmom <- lmom . ub ( x ) 15

f i t <- p a r g l d ( lmom) 16

VaRGld <- quagl d ( l e v e l , f i t ) 17

VaRNor <- qnorm ( l e v e l , media ( x ) , sd ( x ) ) 18

VaR [ i , ] <- c ( VaRGld , VaRNor ) 19

p r i n t ( p a s t e ( " R e s u l t o p a r a " , ep [ i ] , " : " , VaRGld , " y " , VaRNor ) ) 20

} 21

## Resumiendo r e s u l t a d o s 22

Res <- c b i n d ( L [ 1 0 5 : l e n g t h ( L ) ] , VaR[ -nrow ( VaR ) , ] ) 23

colnames ( Res ) <- c ( " Loss " , " VaRGld " , " VaRNor " ) 24

## P l o t o d e l o s r e s u l t a d o s d e c o n t r o l 25

p l o t ( Res [ , " Loss " ] , ty pe = " p " , x lab = " Time Index " , 26

y l a b = " L o s e s i n p e r c e n t " , pch = 19 , cex = 0 . 5 , 27

ylim = c ( -15 , max ( Res ) ) ) 28

a b l i n e ( h = 0 , c o l = " grey " ) 29

l i n e s ( Res [ , " VaRGld " ] , c o l = " bl ue " , lwd = 2 ) 30

l i n e s ( Res [ , " VaRNor " ] , c o l = " r e d " , lwd = 2 ) 31

l e g e n d ( " b o t t o m r i g h t " , l e g e n d = c ( " L o s s e s " , " VaR GLD" , 32

" VaR Normal " ) , 33

c o l = c ( " b l ac k " , " b lue " , " r e d " ) , 34

l t y = c (NA, 1 , 1 ) , pch = c ( 1 9 , NA, NA) , b t y = " n " ) 35

A continuación se carga el SP500 y se almacenan las pérdidas porcentuales


semanales de QCOM en el objeto L. Después se define la forma del back-test. Se ha
elegido un enfoque de ventana móvil con un tamaño de ventana de 104
observaciones, equivalente a un lapso de tiempo de dos años. Los objetos ep y sp
definen los puntos finales y de inicio relevantes, respectivamente. El nivel de
confianza del 99% se asigna al nivel del objeto. En la línea 12 se inicializa
un objeto matriz con una dimensión de fila igual al número de periodos de
backtesting y dos columnas en las que se escribirá el VaR de la distribución GLD y
la normal. Se podría argumentar que un bucle for no es similar a R, pero para
corregir un prejuicio común, siempre que se asigne la ranura de memoria adecuada
del objeto VaR antes de la
DISTRIBUCIONES ADECUADAS PARA LOS 97
RENDIMIENTOS

10

5

rdi
da 0
s
en
po -5
rc
en
taj -
e 10 Pérdidas
VaR GLD
- VaR Normal
15
0 50 100 150
Índice de tiempo

Figura 6.9 Back-test: VaR (99%) y pérdidas para las acciones de QCOM.

se ejecuta el bucle, no se penaliza con un peor tiempo de ejecución. Dentro del


bucle, se extrae la ventana de datos pertinente y se ajusta a la DLG, y se calculan las
medidas de VaR para las dos distribuciones y se almacenan en la fila ith de VaR. La
última línea del bucle informa al usuario sobre el progreso de la ejecución del bucle
imprimiendo el índice de tiempo y los valores de los VaR. Los resultados se agregan
en el objeto Res, que tiene las pérdidas como primera columna y las medidas de
VaR retrasadas una semana en las dos columnas siguientes. La trayectoria de las dos
medidas incondicionales de VaR se traza entonces junto con las pérdidas como
puntos en el siguiente bloque de sentencias de trazado.
El gráfico se muestra en la Figura 6.9. La trayectoria del VaR según el modelo
GLD es más volátil que para la distribución normal. Obsérvese la brusca caída del
VaR de GLD hacia el final del periodo de back-test, que va de la mano de una
menor volatilidad de las pérdidas, pero que también refleja la sensibilidad de las
estimaciones de momento con respecto a los valores atípicos. Durante este
episodio, las medidas de VaR según la distribución normal son demasiado
conservadoras. Ambos modelos violan las pérdidas reales sólo una vez y, por lo
tanto, el tamaño de la medida de riesgo en el nivel de confianza del 99% no se
viola, es decir, dadas las 160 observaciones de back-test se esperarían como
máximo dos violaciones.

6.7.2 Triángulo de forma para los componentes del FTSE 100


En el segundo ejemplo, las características de los valores del FTSE 100 se analizan
mediante un triángulo de forma para el GLD estandarizado como en (6.23)-(6.27).
Este tipo de triángulo de forma se propuso en Chalabi et al. (2010) y se aplicó a los
valores constitutivos del NASDAQ 100. El triángulo de forma se representa en el 𝛿
= 𝜆4 - 𝜆3 y 𝛽 = 𝜆3 + 𝜆4
plano. El código R se muestra en el Listado 6.5.
La estimación robusta de los parámetros de la GLD se incluye en el paquete
98 DISTRIBUCIONES ADECUADAS PARA LOS
fBasicsRENDIMIENTOS
y los datos de precios semanales de los componentes del FTSE 100 forman
parte del paquete FRAPO,
DISTRIBUCIONES ADECUADAS PARA LOS 99
RENDIMIENTOS
Código R 6.5 Acciones del FTSE 100: forma de triángulo del GLD normalizado.
b i b l i o t e c a ( FRAPO) 1

biblioteca ( f B a s i c s ) 2

## Loading o f data 3

d a t a ( INDTRACK3 ) 4

P <- INDTRACK3 [ , -1] 5

R <- r e t u r n s e r i e s ( P , method = " d i s c r e t " , t r i m = TRUE) 6

## F i t t i n g y c a l c u l a d o be t a y lambda 7

F i t <- a p l i c a d o ( R , 2 , g l d F i t , método = " rob " , d o p l o t = FALSE , 8

t r a c e = FALSE) 9

D e l t a B e t a P a r a m <- m a t r i z ( u n l i s t ( l a p l a d a ( Fit , f u n c i ó n ( x ) { 10

l <- x@ f i t$ e s t i m a t e [ c ( 3 , 4 ) ] 11

res <- c ( l [ 2 ] - l [ 1 ] , l [ 1 ] + l [ 2 ] ) 12

re s }) ) , n c o l = 2 , byrow = TRUE) 13

## Shape t r i a n g l e 14

p l o t ( Del t a Be t a Pa ra m , xlim = c ( -2 , 2 ) , ylim = c ( -2, 0 ) , 15

x l a b = e x p r e s i ó n ( d e l t a == lambda [4] - lambda [ 3 ] ) , 16

y l a b = e x p r e s i ó n ( b e t a == lambda [ 3 ] + lambda [ 4 ] ) , 17

pch = 19 , cex = 0 . 5 ) 18

se gme nt os ( x0 = -2, y0 = -2, x1 = 0 , y1 = 0 , 19

col = " gris " , lwd = 0 . 8 , l t y = 2 ) 20

se gme nt os ( x0 = 2 , y0 = -2, x1 = 0 , y1 = 0 , 21

col = " gris " , lwd = 0 . 8 , l t y = 2 ) 22

se gme nt os ( x0 = 0 , y0 = -2, x1 = 0 , y1 = 0 , c o l = " b l u e " , 23

lwd = 0 . 8 , l t y = 2 ) 24

se gme nt os ( x0 = - 0 .5 , y0 = - 0 .5 , x1 = 0 . 5 , y1 = - 0 .5 , 25

col = " r e d " , lwd = 0 . 8 , l t y = 2 ) 26

se gme nt os ( x0 = -1.0 , y0 = -1.0 , x1 = 1 . 0 , y1 = -1.0 , 27

col = " r e d " , lwd = 0 . 8 , l t y = 2 ) 28

Por lo tanto, estos dos paquetes se cargan primero en el espacio de trabajo. A


continuación, se carga el objeto de datos INDTRACK3 y su primera columna, que
representa el índice FTSE 100, se omite para el análisis posterior. Los rendimientos
porcentuales de los valores se asignan al objeto R, que a continuación se utiliza para
ajustar cada una de sus columnas al GLD con la función gldFit(). Esta tarea se
realiza rápidamente utilizando la función apply(). El objeto Fit es una lista
con los objetos devueltos de gldFit. En las líneas 10-13 se define una pequeña
función que devuelve los pares de parámetros (𝛿, 𝛽), que se trazan en el triángulo
de la forma. La salida se muestra en la Figura 6.10.
El eje x representa la diferencia entre los parámetros de forma de la cola derecha
y la izquierda, y el eje y su suma. En este triángulo se distinguen un total de seis
regiones. La línea discontinua gris claro distingue entre los valores que se
caracterizan por una distribución sesgada a la izquierda o a la derecha. Los puntos
sobre esta línea se refieren a una distribución simétrica. Como puede verse
fácilmente, la mayoría de los rendimientos de las acciones se caracterizan por estar
sesgados a la izquierda, lo que confirma un hecho estilizado de los rendimientos
financieros. Los puntos de la parte superior del triángulo representan distribuciones
de rendimientos con varianza y curtosis finitas, y los puntos de la región media,
entre el -0,5 y el -1,0
100 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
0.
0

-
0.
5

+
-1.0
-
1.
5

-
2.
0 -2 -1 0 1 2

Figura 6.10 Triángulo de formas para los rendimientos de las acciones del
FTSE 100.

Las líneas discontinuas grises oscuras se refieren a distribuciones de rentabilidad


con curtosis infinita pero varianza finita. Los pares (𝛿, 𝛽) por debajo de la línea -1
representan procesos de rentabilidad en los que estos momentos son infinitos, como
es el caso de uno de los valores del FTSE 100.

Referencias
Asquith W. 2016 lmomco-L-momentos, L-momentos censurados, L-momentos recortados, L-
comomentos y muchas distribuciones. Paquete R versión 2.2.2.
Barndorff-Nielsen O. 1977 Distribuciones exponenciales decrecientes para el logaritmo del
tamaño de las partículas Proceedings of the Royal Society London A, vol. 353, pp. 401-
419.
Barndorff-Nielsen O. 1997 Normal inverse Gaussian distributions and stochastic volatility
modelling. Scandinavian Journal of Statistics 24, 1-13.
Barndorff-Nielsen O. 1998 Procesos de tipo gaussiano inverso normal. Finanzas y Estocástica
2, 41-68.
Chalabi Y., Scott D., y Würtz D. 2010 The generalized lambda distribution as an alternative
to model financial returns. Documento de trabajo, Eigenössische Technische Hochschule
y Universidad de Auckland, Zürich y Auckland.
Chalabi Y., Scott D., y Würtz D. 2011 A more intuitive parameterization of the generalized
lambda distribution R/Rmetrics Meielisalp Workshop, Lake Thune, Switzerland.
Cheng R. y Amin N. 1983 Estimación de parámetros en distribuciones continuas
univariantes con un origen desplazado. Journal of the Royal Statistical Society, Series B
(Methodological) 45(3), 394-403.
Eberlein E. y Keller U. 1995 Hyperbolic distributions in finance. Bernoulli 1, 281-299.
Eberlein E. y Prause K. 1998 The generalized hyperbolic model: financial derivatives and
risk measures FDM Preprint 56, Universidad de Friburgo.
DISTRIBUCIONES ADECUADAS PARA LOS 101
RENDIMIENTOS
Freimer M., Mudholkar G., Kollia G., y Lin C. 1988 A study of the generalised Tukey lambda
family. Communications in Statistics - Theory and Methods 17, 3547-3567.
Gilchrist W. 2000 Statistical Modelling with Quantile Functions. Chapman & Hall, Londres.
Hankin R. y Lee A. 2006 A new family of non-negative distributions. Australia and New
Zealand Journal of Statistics 48, 67-78.
Karian Z. and Dudewicz E. 1999 Fitting the generalized lambda distribution to data: a
method based on percentiles. Communications in Statistics - Simulation and Computation
28(3), 793-819.
Karian Z. y Dudewicz E. 2000 Fitting Statistical Distributions: The Generalized Lambda
Distribution and Generalised Bootstrap Methods. Chapmann & Hall, Nueva York.
Karian Z., Dudewicz E., y McDonald P. 1996 The extended generalized lambda distribution
system for fitting distributions to data: history, completion of theory, tables, applications, the
'final word' on moment fits. Communications in Statistics - Simulation and Computation
25, 611-642.
Kim T. y White H. 2004 On more robust estimation of skewness and kurtosis. Finance
Research Letters 1(1), 56-73.
King R. y MacGillivray H. 1999 A starship estimation method for the generalised lambda
distributions. Australia and New Zealand Journal of Statistics 41(3), 353-374.
King R., Dean B. y Klinke S. 2016 gld: Estimación y uso de la distribución lambda
generalizada (Tukey). Paquete R versión 2.3.3.
Luethi D. y Breymann W. 2013 ghyp: Un paquete sobre la distribución hiperbólica
generalizada y sus casos especiales. Paquete R versión 1.5.6.
McNeil A. y Ulman S. 2011 QRMlib: Proporciona código en lenguaje R para examinar los
conceptos de la Gestión Cuantitativa del Riesgo. Paquete R versión 1.4.5.1.
McNeil A., Frey R. y Embrechts P. 2005 Quantitative Risk Management: Concepts, Tech-
niques and Tools. Princeton University Press, Princeton, NJ.
Owen D. 1988 La nave estelar. Communications in Statistics - Simulation and Computation
17, 315-323.
Pfaff B. y McNeil A. 2016 QRM: Proporciona un código en lenguaje R para examinar los
conceptos de la gestión cuantitativa del riesgo. Paquete R versión 0.4-13.
Prause K. 1997 Modelling finacial data using generalized hyperbolic distributions FDM
Preprint 48, University of Freiburg.
Prause K. 1999 How to use NIG laws to measure market risk FDM Preprint 65, University
of Freiburg.
Ramberg J. y Schmeiser B. 1974 An approximate method for generating asymmetric random
variables. Communications of the Association for Computing Machinery 17, 78-82.
Ramberg J., Pandu R., Dudewicz E. y Mykytka E. 1979 A probability distribution and its
uses in fitting data. Technometrics 21(2), 201-214.
Ranneby B. 1984 El método del espacio máximo: Un método de estimación relacionado con
el método de máxima verosimilitud. Scandinavian Journal of Statistics 11(2), 93-112.
Scott D. 2015 GeneralizedHyperbolic: La distribución hiperbólica generalizada. Paquete R
versión 0.8-1.
Scott D. y Dong C. Y. 2015 VarianceGamma: La distribución gamma de la varianza. Paquete
R versión 0.3-1.
102 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS
Scott D. y Grimson F. 2015 SkewHyperbolic: La distribución t hiperbólica sesgada de
Student. Paquete R versión 0.3-2.
Su S. 2005 A discretized approach to flexibly fit generalized lambda distributions to data.
Journal of Modern Applied Statistical Methods 4(2), 408-424.
Su S. 2007 Ajuste de distribuciones lambda generalizadas simples y mixtas a los datos mediante
métodos discretizados y de máxima verosimilitud: GLDEX in R. Journal of Statistical
Software 21(9), 1-17.
Tukey J. 1962 El futuro del análisis de datos. The Annals of Mathematical Statistics 33(1), 1-67.
Würtz D., Setz T. y Chalabi Y. 2014 fBasics: Rmetrics - Mercados y estadísticas básicas.
Paquete R versión 3011.87.
7

Teoría del valor extremo

7.1 Preliminares
La teoría del valor extremo (EVT) es una rama de la estadística. Su objeto es la
modelización de las grandes desviaciones de la mediana de una distribución. La
EVT no es en absoluto una disciplina joven: sus raíces se remontan a la década de
1920. Sin embargo, el interés por la EVT y su aplicación a la modelización de los
riesgos de los mercados financieros ha aumentado recientemente entre los
profesionales; la razón de esta evolución podría ser el creciente número de
episodios de agitación en los mercados financieros.
Este capítulo comienza con los fundamentos teóricos de la EVT. Se presentan
tres enfoques para modelar los valores extremos: el método de los máximos en
bloque, el método de los picos sobre el umbral y los procesos de Poisson. Esta
exposición no es en absoluto exhaustiva, y su propósito es únicamente ayudar al
lector a hacerse una mejor idea de cómo se implementan estos métodos en R. Para
un tratamiento más exhaustivo del tema se remite al lector a las monografías de
Coles (2001), Embrechts et al. (1997), Leadbetter et al. (1983), y McNeil et al.
(2005, Capítulo 7).
La sección 7.3 ofrece una sinopsis de los paquetes disponibles actualmente en R.
Aunque hay bastante coincidencia entre los diversos modelos de EVT y sus
implementaciones en R, una comparación de los distintos paquetes revela sutiles
diferencias, debilidades y puntos fuertes. Es de esperar que el usuario obtenga una
visión de lo que ya está implementado y cómo. Una vez hecho esto, podrá utilizar
los paquetes como desee. Todos los paquetes presentados están disponibles en
CRAN y pueden instalarse rápidamente ejecutando
install.packages("foo") para el paquete foo.
El capítulo concluye con algunas aplicaciones empíricas de la EVT, en las que
los distintos métodos se aplican a los datos del mercado financiero. La atención se
centra en cómo se comporta la EVT en contraste con el supuesto de pérdidas
distribuidas normalmente.

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd.
104 DISTRIBUCIONES ADECUADAS PARA LOS
RENDIMIENTOS

Sitio web complementario: www.pfaffikus.de


90 TEORÍA DEL VALOR
EXTREMO
7.2 Métodos y modelos de valores extremos
7.2.1 El enfoque de los máximos en bloque
La EVT se centra en la modelización e inferencia de los máximos. Supongamos
que se da una secuencia de variables aleatorias iid X1 ,..., Xn sobre un período de
tiempo de n períodos. Normalmente, el período de tiempo es un período de
calendario, como un mes, un trimestre o un semestre,
o año, y los datos observados dentro de este periodo son de frecuencia diaria. Con
respecto a la EVT, se plantea la cuestión de cuál es la distribución que sigue el
máximo de estas variables aleatorias o, dicho con más precisión, por la que se
aproxima mejor asintóticamente.

Mn = max{X1, ... , Xn} (7.1)


En principio, si se supone que se conoce la función de distribución de Xi, la
distribución de Mn podría derivarse como
P{Mn ≤ z} = P{X ≤ z, ... , X ≤ z}
1 n

= P{X1 ≤ z} × - - × P{X n ≤ z}
= {F(z)}n. (7.2)

En la práctica, este enfoque no es factible por varias razones. En primer lugar, la


función de distribución F es, en general, desconocida. Esto podría rectificarse
estimando una
densidad del kernel o suponiendo que las Xi se rigen por una determinada
distribución. Si se toma esta vía, el siguiente obstáculo es que los errores de
estimación se elevan a la potencia de n, lo que conduce a resultados bastante
divergentes. Una ruta alternativa sería buscar una familia
de distribuciones Fn que pueden utilizarse para aproximar cualquier tipo de F. Por
lo tanto, es necesario investigar las características y propiedades de Fn para n → ∞.
Sin embargo, este razonamiento asintótico implicaría que los valores de la función
de distribución para z menores que z+ se aproximan a cero, por lo que z+ denota el
punto superior derecho. Dicho de otro modo, la masa de la distribución no se
colapsaría sobre el punto z+. Este artefacto puede evitarse mediante una
n
transformación lineal M∗ de Mn:
Mn - bn
M∗ = , (7.3)
n
un

donde an > 0 y bn son secuencias de constantes. El propósito de estas constantes es


enderezar Mn, de manera que la masa de probabilidad colapse sobre un solo punto.
Bajo el supuesto de que las secuencias an y bn existen, se puede demostrar que la
expresión de probabilidad
{M
∗=
Mn - bn
P n ≤ z} → G(z) para n → ∞ (7.4)
un

converge a una distribución no degenerada G(z), que pertenece a una de las


siguientes familias de distribución Gumbel, Fréchet o Weibull. Las tres
distribuciones tienen un parámetro de loción y de escala. Las distribuciones de
TEORÍA DEL VALOR 91
EXTREMO

Fréchet y Weibull también tienen una forma


92 TEORÍA DEL VALOR
EXTREMO
parámetro. Las tres distribuciones pueden subsumirse en la distribución de valor
extremo generalizada (GEV),
{-1[ ( z - 𝜇 )]-1∕𝜉}
G(z) = exp 1+𝜉 . (7.5)
𝜎
La GEV es una distribución de tres parámetros donde 𝜇 es la localización, 𝜎 la
escala y 𝜉 el parámetro de forma. Para el límite 𝜉 → 0 se obtiene la distribución de
Gumbel, para 𝜉 > 0 la de Fréchet, y para 𝜉 < 0 la de Weibull. La Weibull tiene un
punto derecho finito, mientras que z+ es infinito para las otras dos distribuciones.
La densidad es exponencial en el caso de Gumbel y polinómica para la distribución
Fréchet. Por lo tanto, las características
y las propiedades del GEV pueden deducirse del valor del parámetro de forma.

7.2.2 Los modelos de r-ésimo orden


Un problema que surge cuando se aplica el método de los máximos en bloque a las
series financieras es la falta de un historial de datos suficientemente largo. En estos
casos, los parámetros de distribución desconocidos se estimarán con mayor
incertidumbre. Para sortear este problema se ha sugerido el modelo de r-ésimo
mayor orden. No sólo se utiliza la pérdida máxima en un bloque determinado como
punto de datos para ajustar el GEV, sino que también se emplean las r
observaciones de mayor pérdida. En la figura 7.1 se muestra la selección de datos
correspondiente a los máximos del bloque y a los r mayores órdenes.
En esta figura, se han generado 100 pérdidas al azar y se han subdividido en 10
bloques de igual tamaño. Las pérdidas máximas de cada bloque se indican con
cuadrados. Estos puntos de datos se utilizarán en el enfoque de máximos de bloque.
Además, las segundas pérdidas más grandes de cada uno de los 10 bloques están
marcadas con triángulos. Los conjuntos de estas pérdidas de primer y segundo
orden se utilizarían si se ajustara un modelo de segundo orden mayor. La varianza
de las estimaciones de los parámetros se reducirá sin duda en

Pérdid
as
2
1

-1
0 20 40 60 80 100

Figura 7.1 Máximos del bloque, r órdenes mayores y picos sobre el umbral.
TEORÍA DEL VALOR 93
EXTREMO
aumentando el tamaño de la muestra. Sin embargo, se corre el riesgo de tener una
muestra sesgada en el sentido de que las segundas pérdidas más elevadas
posiblemente no se califiquen como eventos extremos o se consideren como tales.
Por último, se ha trazado una línea horizontal discontinua en la figura en el valor de
la ordenada de 2,5. Este valor umbral nos lleva directamente al tema de la siguiente
subsección.

7.2.3 El enfoque de los picos sobre el umbral


En lo que respecta a la aplicación del método de máximos en bloque y del modelo
de r-ésimo mayor orden en el contexto de los datos del mercado financiero, se
plantean las siguientes cuestiones:

• Para un instrumento financiero determinado, a menudo no se dispone de un


historial de datos suficientemente largo. Esto dará lugar a amplias bandas de
confianza para los parámetros de distribución desconocidos. En
consecuencia, las medidas de riesgo derivadas deben utilizarse con gran
precaución.

• No todas las observaciones que deberían considerarse extremas se


aprovechan para estimar los parámetros de la distribución, aunque este
problema se mejora en el caso de los estadísticos de r-ésimo orden. Por lo
tanto, la información disponible sobre los eventos extremos no se tiene
plenamente en cuenta.

• Dados los hechos estilizados de las series de rentabilidad univariante, en


particular la clusterización de la volatilidad, los puntos de datos durante los
periodos tranquilos podrían seleccionarse como valores máximos del bloque,
lo cual no es así. Por lo tanto, se produciría un sesgo de estimación en estos
casos.
Debido a estos problemas, el método de los picos sobre el umbral (POT) está
más extendido cuando los riesgos financieros son de interés. Como sugiere el
nombre de este método, no se consideran observaciones extremas ni los puntos de
datos máximos del bloque ni los r valores más grandes dentro de un bloque, sino
todas las observaciones por encima de un determinado valor umbral. Esto se puede
resumir para un umbral determinado u mediante la siguiente expresión de
probabilidad:
1 - F(u + y)
P{X > u + y|X > u} = , y > 0. (7.6)
1 - F(u)
De esta ecuación se desprende que, cuando se conoce la función de distribución
F, la expresión puede resolverse para los excesos y > u. En la práctica, sin
embargo, la función de distribución F suele ser desconocida y, por lo tanto, al igual
que en el caso de la derivación del GEV, se necesita una distribución aproximada
para valores de umbral suficientemente grandes. Se puede demostrar que los
excesos (X - u) se distribuyen según la distribución de Pareto generalizada (GPD),
( +)
𝜉y -1∕
H(y) = 1 - 1
𝜎̃
94 TEORÍA DEL VALOR
EXTREMO

, (7.7)

para y ∶ y > 0 y 𝜎̃ = 𝜎 + 𝜉(u - 𝜇). Esto significa, que si la distribución de los


máximos del bloque para una muestra iid puede ser aproximada por el GEV,
entonces los excesos pueden
TEORÍA DEL VALOR 95
EXTREMO
se aproxima por la GPD para un valor umbral u suficientemente grande. Por
comparación de la GEV y la GPD, se puede concluir que el parámetro de forma 𝜉
es idéntico para ambos y, por tanto, independiente del número elegido de máximos
de bloque. Se puede deducir además que la distribución para 𝜉 < 0 posee un límite
superior de u - 𝜎̃∕𝜉 y es ilimitada hacia la derecha para los valores del parámetro que
satisfacen 𝜉 > 0. En el límite de
𝜉 → 0 la GPD converge a una distribución exponencial con parámetro 1∕ 𝜎 ̃ .
En la práctica, surge una dificultad cuando hay que seleccionar un umbral
adecuado. Si este valor se elige demasiado pequeño, se obtiene una muestra
sesgada. En este caso, se seleccionarían observaciones demasiado pequeñas, de
modo que se violaría la aproximación de la GPD. Por el contrario, si u se elige
demasiado grande, el tamaño de la muestra podría ser demasiado pequeño para
obtener estimaciones fiables de los parámetros de distribución desconocidos. Por lo
tanto, se requiere un compromiso entre una estimación sesgada y un gran error de
() =
estimación. Un valor de umbral adecuado puede determinarse gráficamente mediante
un gráfico de vida residual media (MRL). Este tipo
de la parcela se basa en el valor esperado de la GPD: E Y 1-𝜉 𝜎
. Para un rango
determinado de
umbrales u0 los valores esperados condicionales
X > u ) = 𝜎u0
E(X - u0| 0
1-𝜉
= 𝜎u
1-𝜉
+
= 𝜎u0
𝜉u (7.8)
1-𝜉

se representan en función de u. Esta ecuación es lineal con respecto al umbral u:


{( ) }
1∑
nu
u, (xi - u) ∶u< . (7.9)
n u i=1 xmax

Por lo tanto, un valor adecuado para u se da cuando esta línea empieza a ser lineal.
Debido al teorema del límite central (CLT), las bandas de confianza pueden
calcularse de acuerdo con la distribución normal, debido al hecho de que las
medias aritméticas se representan en un gráfico LRM.
La mayoría de las veces, los parámetros de la GPD se estiman aplicando el
principio ML, pero también se encuentran otros métodos, como los momentos
ponderados por la probabilidad, en aplicaciones empíricas. La ventaja del primer
método es la posibilidad de trazar el perfil de log-verosimilitud para el parámetro
de forma 𝜉 y calcular las bandas de confianza basadas en este perfil. A diferencia
de las bandas derivadas del supuesto de normalidad para el estimador, éstas son, en
general, asimétricas. Por lo tanto, la inferencia con respecto al signo del parámetro
de forma es más precisa.
Las medidas de riesgo VaR y ES pueden deducirse directamente de la GPD como
sigue:
96 TEORÍA DEL VALOR
EXTREMO

(( )-𝜉 )
𝜎̃ 1-𝛼
VaR𝛼 = q𝛼(F) = u + -1 , (7.10)
𝜉 ̄ F(u)
TEORÍA DEL VALOR 97
1 EXTREMO
1 VaR𝛼 - 𝜉u
ES𝛼 = qx(F)dx = + 𝜎̃ , (7.11)

1-𝛼 𝛼 1-𝜉 1-𝜉
donde F̄ (u) denota el número de no superaciones en relación con el tamaño de la
muestra. De forma análoga a las bandas de confianza para los parámetros de la
distribución, también se pueden derivar intervalos para estas medidas de riesgo.

7.3 Sinopsis de los paquetes de R


7.3.1 El paquete evd
Aunque los paquetes están listados en orden alfabético en esta sección, otra razón
para empezar con el paquete evd (ver Stephenson 2002) es que tiene la historia más
larga en CRAN. Fue publicado por primera vez en febrero de 2002. El nombre del
paquete es un acrónimo de "Extreme Value Distributions". Está contenido en las
vistas de tareas de CRAN "Dis- tributions", "Environmetrics" y "Finance". Dentro
del paquete, se implementan métodos y clases S3. Los algoritmos que suponen una
carga computacional se implementan como rutinas en C.
Las funciones, los métodos y los conjuntos de datos proporcionados en este paquete cubren
básicamente todos los
aspectos de la EVT. Citando la descripción del paquete:

Amplía las funciones de simulación, distribución, cuantil y densidad a


las distribuciones paramétricas de valores extremos univariantes y
multivariantes, y proporciona funciones de ajuste que calculan
estimaciones de máxima verosimilitud para modelos de máximos
univariantes y bivariantes, y para modelos de umbrales univariantes y
bivariantes.

En particular, se implementan las siguientes distribuciones de valores extremos univariantes:

• distribuciones de valores extremos [dqpr]extreme()

• Distribución de Fréchet [dqpr]frechet()

• distribución generalizada de valores extremos [dqpr]gev()

• distribución de Pareto generalizada [dqpr]gpd()

• Distribución de Gumbel [dqpr]gumbel()

• distribuciones de estadísticas de orden [dqpr]orden()

• distribución de Weibull invertida [dqpr]rweibull().

Para todas estas distribuciones se implementan las funciones de densidad, cuantil


y distribución. También está disponible la generación de números aleatorios según
estas distribuciones. Se sigue la convención de nomenclatura dpqr mencionada
en la sección 6.4.1: se añade un prefijo d para los valores de la función de
densidad, q para la función de cuantiles, p para
98 TEORÍA DEL VALOR
EXTREMO
la función de distribución, y r para generar números aleatorios a partir de una de
las distribuciones mencionadas. Se utiliza el método ML para estimar los
parámetros desconocidos de estas distribuciones. Las funciones relevantes son
fgev(), fpot(), forder() y fextreme(). Se pueden especificar dos
modelos si se utiliza el método POT, a saber, la distribución de Pareto generalizada
o un proceso puntual de Poisson. Para ayudar al usuario a elegir un valor de umbral
adecuado, se implementan el gráfico de vida residual media (mrlplot()), el
gráfico de elección de umbral (tcplot()) y los gráficos de medida de
dependencia (chiplot()) como herramientas de diagnóstico preliminares. Los
objetos del modelo ajustado pueden inspeccionarse gráficamente mediante los
métodos plot() disponibles. Además, se dispone de métodos S3 para recuperar
y trazar el perfil de probabilidad logarítmica. Los intervalos de confianza se calculan
para los objetos del modelo ajustado o los perfiles de log-verosimilitud con el
método S3 confint(). Por último, se puede comprobar si los modelos
anidados difieren significativamente entre sí mediante una prueba de relación de
verosimilitud, que se implementa como un método anova().
Además de estas distribuciones univariantes, el paquete ofrece distribuciones de
valor extremo bivariantes (bvevd()) y multivariantes (mvevd()), así como
métodos de estimación no paramétricos (abvnonpar(), amvnonpar(),
qcbvnonpar()). Para las distribuciones de valor extremo bivariadas, la
estimación paramétrica se realiza con las funciones fbevd() y fbvpot(). La
función de densidad espectral paramétrica de los modelos de valores extremos
bivariados puede calcularse y trazarse con la función hbvevd().
Una característica distintiva del paquete es la posibilidad de simular procesos
estocásticos de valor extremo. Estos pueden especificarse como una cadena de
Markov (evmc()) o un proceso de media móvil autorregresiva máxima
(marma(), mar(), mma()). Los grupos de valores extremos se pueden
inspeccionar con la función clusters(), y el índice de valores extremos se
implementa como función exi().
El paquete se entrega con nueve conjuntos de datos que se han utilizado
ampliamente en la literatura académica. Está disponible una guía de usuario en
forma de archivo pdf ("guide22.pdf") dentro del subdirectorio doc del paquete
instalado. Además, el paquete contiene una viñeta en la que se reproducen las
figuras, tablas y análisis contenidos en el capítulo 9 de Beirlant et al. (2004).

7.3.2 El paquete evdbayes


El paquete evdbayes proporciona funciones y métodos para el análisis bayesiano
de modelos de valores extremos (véase Stephenson y Ribatet 2014). Se utilizan
técnicas de Markov Chain Monte Carlo (MCMC). Se implementan cuatro tipos
diferentes de modelos EVT: la distribución de valor extremo generalizada, la
distribución de Pareto generalizada, la estadística de orden y el modelo de proceso
puntual de Poisson. Las funciones de verosimilitud, las distribuciones a priori y los
muestreadores de Gibbs (de mezcla y de no mezcla) se interconectan a partir de
rutinas C. Estas últimas rutinas se utilizan para generar las cadenas de Markov. El
paquete está contenido en las vistas de tareas de CRAN "Bayesian",
"Distributions", "Environmetrics" y "Finance".
Las principales funciones del paquete pueden dividirse en cuatro categorías:
TEORÍA DEL VALOR 99
generación de distribuciones a priori, generación de cadenas de Markov,
EXTREMO
maximización local de las distribuciones a priori/
100 TEORÍA DEL VALOR
EXTREMO
distribución posterior, y herramientas de diagnóstico. En primer lugar, las funciones
para especificar las distribuciones a priori se denominan prior.prob(),
prior.quant(), prior.norm() y prior.loglognorm(). El usuario
puede elegir la distribución normal, beta o gamma como prior para los parámetros
desconocidos del modelo. Las funciones devuelven un objeto lista de la clase
informal S3 evprior. A continuación, se debe generar una cadena de Markov
con la función posterior(), con el objeto evprior generado previamente
como uno de sus argumentos. Los autores del paquete sugieren la función mcmc()
contenida en el paquete coda (véase Plummer et al. 2006) para inspeccionar la
validez y el buen comportamiento de la cadena de Markov generada. Las
distribuciones a priori y a posteriori se optimizan con la función mposterior().
Esta función es una envoltura para el optimizador de propósito general optim()
que se entrega con la instalación base de R. Finalmente, se incluyen dos funciones
para la inspección gráfica de un modelo EVD: rl.pst() y rl.pred(). Estas
funciones representan los niveles de retorno de los cuantiles GEV y las
distribuciones predictivas, respectivamente.
El paquete contiene el conjunto de datos de las precipitaciones, así
como la documentación del usuario. Esta última se almacena en el árbol de
instalación del paquete en su subdirectorio doc y se denomina "guide.pdf" (véase
Stephenson y Ribatet 2006). En esta guía se describen los fundamentos teóricos del
análisis bayesiano en el contexto de la EVT y se guía al lector a través de varias
aplicaciones empíricas en las que se muestra y discute el uso de las funciones
proporcionadas.

7.3.3 El paquete evir


El paquete evir ha sido portado del paquete S-PLUS EVIS escrito por McNeil (1999)
(véase Pfaff y McNeil 2012). Su nombre es un acrónimo de "Extreme Values in
R". Como quedó huérfano en 2008, el autor de este libro se convirtió en el
mantenedor del paquete. A diferencia de los dos paquetes introducidos
anteriormente, evir no se relaciona con ninguna rutina de C, sino que es una
colección autónoma de funciones de R que abarca las técnicas más comunes en
EVT. Dentro del paquete se emplean clases y métodos informales de S3. El
paquete está contenido en las vistas de tareas "Distributions", "Environmetrics" y
"Finance" de CRAN.
Las funciones incluidas pueden agruparse a grandes rasgos en las siguientes categorías:

• análisis exploratorio de datos (AED)

• método de los máximos en bloque

• picos sobre umbrales (POT)

• POT bivariado

• POT con procesos puntuales de Poisson

• distribuciones de valor extremo generalizado y de Pareto generalizado.

Dentro del primer grupo de funciones, el usuario puede investigar el conjunto de


TEORÍA DEL VALOR 101
datos de inter-est gráficamente trazando la función de distribución empírica
EXTREMO
(emplot()), el Hill
102 TEORÍA DEL VALOR
EXTREMO
estimación del índice de cola de los datos de cola pesada (hill()), o los excesos
medios sobre umbrales crecientes (meplot()). Por último, pueden crearse
gráficos QQ contra la distribución exponencial o la GPD con la función qplot().
Además de estos medios gráficos de EDA, el usuario puede estimar un índice
extremo con la función exindex() y mostrar los registros de un conjunto de
datos frente al comportamiento esperado de un conjunto de datos iid con la función
records().
Las funciones pertenecientes a la segunda categoría, el método de máximos en
bloque, son gev() y gumbel() para las distribuciones de valor extremo
generalizado y de Gumbel, respectivamente. Esta última función está diseñada para
ayudar al usuario a evaluar si una distribución de Fréchet o de Weibull es más
apropiada. Ambas funciones devuelven un objeto con el atributo de clase gev.
Para este tipo de objetos se implementa un método de trazado y de retorno de nivel.
La función fundamental para aplicar las técnicas POT es gpd(). Un GPD puede
ser ajustado por el método ML o el PWM. La función devuelve un objeto con el
atributo de clase gpd. Existe un método de trazado para estos modelos ajustados.
El usuario puede elegir entre cuatro tipos diferentes de gráficos: la distribución del
exceso, la cola de la distribución subyacente, un gráfico de dispersión de los
residuos o un gráfico QQ de los residuos. El gráfico de la cola puede producirse
directamente con la función tailplot(), evitando el menú de gráficos
interactivos. Además, las estimaciones de los cuantiles y los intervalos de
confianza para los cuantiles altos por encima del valor umbral pueden superponerse
a este gráfico con la función gpd.q(). Además, se puede incluir una estimación
del déficit esperado en el gráfico de cola utilizando la función gpd.sfall(). La
respuesta de la estimación del parámetro de forma de la GPD con respecto a los
valores del umbral puede representarse con la función shape(). La relación de la
estimación para un cuantil alto especificado y el umbral o el número de extremos
puede analizarse gráficamente con la función quant(). Ambas representaciones
gráficas pueden utilizarse como medio de análisis de sensibilidad para la GPD
ajustada y así ayudar a evaluar si se ha establecido un valor de umbral o un número
de excesos adecuados. Por último, la función riskmeasures() devuelve una
estimación puntual de un cuantil para una probabilidad determinada. Por lo tanto,
esta función puede emplearse rápidamente para extraer el valor de riesgo de un
objeto GPD ajustado.
Al igual que el paquete evd, la GPD bivariante puede ajustarse con evir. La
función se denomina gpdbiv() y el usuario puede especificar los valores umbral
o el número de observaciones extremas. Además, el usuario puede elegir entre
realizar una optimización global o en dos etapas. Con esta última optimización se
ajustan primero las distribuciones marginales y, a partir de ellas, se determina el
parámetro de dependencia en un segundo paso. La función devuelve un objeto con
el atributo de clase gpdbiv. Existe un método plot() para este tipo de objeto.
Al igual que el método plot() implementado para los objetos de la clase gpd,
se puede elegir entre cinco tipos de gráficos diferentes. Se han implementado
gráficos para las superaciones del umbral, un gráfico de contorno de la función de
distribución bivariada ajustada, un gráfico de contorno de la función de
supervivencia conjunta ajustada y gráficos de la distribución marginal. Por último,
se ha definido el método interpret() para calcular las probabilidades
conjuntas y condicionales.
TEORÍA DEL VALOR 103
Pasando a la quinta categoría, el usuario puede estimar un proceso puntual de
EXTREMO
Poisson con la función pot(). Esta función devuelve un objeto de clase informal
potd para el que
104 TEORÍA DEL VALOR
EXTREMO
se define un método plot(). Este método ofrece ocho tipos diferentes de
gráficos. En primer lugar, se pueden trazar los excesos del proceso de puntos. Si
los huecos de este proceso se comportan bien puede inspeccionarse mediante un
gráfico de dispersión de los huecos o un gráfico QQ, así como la función de
autocorrelación de los mismos. Además, los residuos del objeto del modelo
ajustado pueden analizarse gráficamente en forma de un gráfico de dispersión, un
gráfico QQ y su función de autocorrelación. Por último, el usuario puede emplear
los mismos métodos plot() que están disponibles para los modelos GPD
ajustados.
Dentro de la última categoría, las funciones para la distribución GEV y la GPD son sub-
sumed. Se sigue la convención de nomenclatura habitual de dpqr para las distintas
funciones y para la generación de números aleatorios. Por lo tanto, las funciones
relevantes para el GEV se denominan dgev(), qgev(), pgev() y rgev(), y
para el GPD las funciones correspondientes se denominan dgpd(), qgpd(),
pgpd() y rgpd().
El paquete incluye siete conjuntos de datos de los ámbitos de la hidrología
(nidd.annual y nidd. thresh), los seguros (danés) y las finanzas (bmw,
siemens, sp.raw y spto87). Además, se proporcionan archivos de
demostración para ayudar al usuario a entender cómo aplicar las funciones
contenidas en el paquete.

7.3.4 Los paquetes extRemes e in2extRemes


Desde la primera edición de este libro, el paquete extRemes ha recibido un
importante rediseño (véase Gilleland y Katz 2011). En las versiones 1.65 y
anteriores se ha implementado una interfaz gráfica de usuario (GUI) Tcl/Tk para
el paquete ismev (véase Heffernan y Stephen- son 2016). Estas versiones estaban
destinadas principalmente a ilustrar la aplicación de la EVT con fines pedagógicos.
Una interfaz gráfica de usuario para este tipo de análisis está ahora disponible en
un paquete separado in2extRemes (véase Gilleland y Katz 2011), pero ahora las
funciones subyacentes se toman de la versión 2.0-0 y superior de extRemes.
El paquete utiliza clases y métodos S3 y está escrito casi exclusivamente en
R. 1 El paquete incluye un total de 15 conjuntos de datos, todos ellos procedentes
de los campos de la meteorología y la hidrología, para ilustrar el análisis de valores
extremos.
La función principal para ajustar una distribución de valor extremo a los datos es
fevd(). Los modelos de distribución implementados son el valor extremo
generalizado, el Gumbel, el Pareto generalizado y las distribuciones exponenciales.
También está disponible el ajuste de un modelo de proceso puntual. El ajuste puede
realizarse a los datos máximos del bloque o a los excesos del umbral. Como
métodos de estimación el usuario puede elegir entre los principios ML y/o los
métodos bayesianos o de L-momento. La función devuelve un objeto de lista
con el atributo de clase fevd. Las funciones para imprimir, trazar y/o producir un
resumen están disponibles como métodos print(), plot() y summary(),
respectivamente. Las estimaciones de los parámetros de un objeto fevd se
devuelven llamando al método distill(). Los intervalos de confianza para los
parámetros pueden recuperarse con ci(). Además, las probabilidades y las
extracciones aleatorias de los objetos EVD ajustados son devueltas por las
TEORÍA DEL VALOR 105
funciones pextRemes() y EXTREMO

1 La función abba() interactúa con una rutina en C para ajustar modelos espaciales de valores

extremos mediante el método MCMC.


106 TEORÍA DEL VALOR
EXTREMO
rextRemes(), respectivamente. Para las distribuciones de valor extremo
generalizado y de Pareto generalizado, los valores de la densidad, los cuantiles y las
probabilidades son devueltos por las funciones devd(), qevd() y pevd(),
respectivamente. Las extracciones aleatorias de estas distribuciones se generan
invocando revd().
Puede encontrar más información en el sitio web del paquete, http://www
.assessment.ucar.edu/toolkit/. En particular, está disponible un
tutorial detallado sobre este paquete.

7.3.5 El paquete fExtremes


El paquete fExtremes forma parte del conjunto de paquetes Rmetrics (véase Würtz
2013). A diferencia de los paquetes presentados anteriormente, se utilizan clases y
métodos S4 formales y, al igual que evir, fExtremes está escrito exclusivamente
en R. El paquete se considera un paquete básico en la vista de tareas "Finance" de
CRAN y aparece en la vista de tareas "Distributions". Tiene dependencias de otros
paquetes contenidos en la suite Rmetrics. Además, fExtremes está dotado del
marco de pruebas unitarias RUnit (véase Burger et al. 2015). Un buen número de
funciones han sido portadas directamente y/o incluidas desde los paquetes evd,
evir, extRemes e ismev. Este último paquete se presenta en la siguiente
subsección.
Las funciones y métodos contenidos en fExtremes pueden agruparse en cinco
grupos: preprocesamiento de datos, EDA, la distribución GEV, la GPD y el cálculo
de medidas de riesgo. Los conjuntos de datos bmw y danish de evir también
están contenidos en fExtremes como objetos bmwRet y danishClaims,
respectivamente.
Las funciones blockMaxima(), findThreshold(), pointProcess()
y deCluster() se proporcionan para el preprocesamiento de datos. La primera
función puede utilizarse para extraer los valores máximos de los bloques, que
pueden utilizarse para ajustar una distribución GEV. Las dos funciones siguientes
pueden utilizarse cuando se emplean técnicas POT. En la función
findThreshold() debe especificarse el número de superaciones y la función
devuelve los valores que superan el umbral de acuerdo con este número. La función
pointProcess() también devuelve los excesos, pero aquí el usuario especifica
un cuantil superior. Por último, la función deCluster() puede utilizarse
cuando hay que ajustar un proceso puntual de Poisson y las observaciones extremas
se producen de forma estrecha con respecto al tiempo (por ejemplo, la agrupación
de la volatilidad).
Al igual que el paquete evir, este paquete también contiene funciones y métodos
para el análisis exploratorio de datos. Éstos pueden dividirse en funciones con las
que se pueden analizar los datos para la aparición de eventos extremos, así como en
herramientas para la inspección visual. Las funciones blockTheta(),
clusterTheta(), runTheta() y ferrosegersTheta() pertenecen al
primer subgrupo. La última de ellas, para calcular el índice extremo, fue propuesta
por Ferro y Segers (2003). Todas estas funciones devuelven un objeto de la clase S4
fTHETA para el que se de- mina un método show(). También están disponibles
las funciones exindexesPlot() y exindexPlot() para mostrar
gráficamente los índices extremos. Además, es posible simular una serie para un
TEORÍA DEL VALOR 107
valor dado del índice extremo con la función thetaSim().
EXTREMO
Al igual que el paquete evir, funciones para trazar la función de distribución
empírica (emdPlot()), produciendo un gráfico QQ contra la GPD o exponencial
108 TEORÍA DEL VALOR
EXTREMO
distribución (qqparetoPlot()), mostrar los excesos medios (mePlot() y
mxfPlot()), así como el desarrollo de registros (recordsPlot() y
ssrecordsPlot()), están disponibles en fExtremes. Además, el usuario puede
graficar las vidas residuales medias (mrlPlot()), la relación del máximo sobre
la suma (msratioPlot()), y los ajustes de los excesos medios según la normal
(normMeanExcessFit()) o la distribución hiperbólica generalizada
(ghMeanExcessFit()) y sus distribuciones derivadas, a saber, la gaussiana
inversa normal (nigMeanExcessFit()) y la distribución hiperbólica (hyp-
MeanExcessFit()). El ACF de los excesos, así como su distancia, pueden
representarse con la función xacfPlot(). Por último, la ley fuerte de los grandes
números de Kolmogorov y la ley del logaritmo iterado de Khinchine pueden
verificarse con las funciones sllnPlot() y lilPlot(), respectivamente.
El tercer grupo de funciones engloba la técnica de máximos en bloque. Las
funciones de densidad, cuantil y distribución de la GEV y el generador de números
aleatorios se denominan como en el paquete evir, es decir, dgev(), qgev(),
pgev() y rgev(), respectivamente. Además, se pueden calcular los momentos
reales de la distribución GEV con la función gevMoments() y se puede mostrar
la densidad o los números aleatorios para combinaciones de los parámetros de la
distribución con la función gevSlider(). Como el nombre de la función indica,
el usuario puede especificar los valores para el tamaño y los parámetros de la
distribución mediante una interfaz Tcl/Tk y el GEV resultante o los números
aleatorios se muestran inmediatamente. Los parámetros del GEV y de la
distribución de Gumbel pueden ajustarse a los datos de los máximos del bloque
mediante las funciones gevFit() y gumbelFit(). Ambas funciones
devuelven un objeto de la clase S4 fGEVFIT. Aquí, los parámetros desconocidos
pueden ser estimados por el principio ML o el método PWM. Hay métodos
plot(), print(), y summary() para tales objetos. Se puede generar un
gráfico de nivel de retorno con la función gevrlevelPlot(). Además, los
conjuntos de datos que se distribuyen según la distribución GEV o Gumbel pueden
generarse con las funciones gevSim() y gumbelSim(), respectivamente.
Estas funciones son envoltorios de rgev(), pero el usuario puede especificar la
semilla del generador de números aleatorios como argumento funcional. Por
último, el parámetro de forma puede determinarse según los estimadores del
máximo dominio de atracción (MDA). Las funciones relevantes son hillPlot()
y shaparmPlot() para los gráficos de Hill y del parámetro de forma,
respectivamente.
La misma convención de nomenclatura básica se sigue cuando se aplica la técnica
POT a la GPD. Se sigue la convención de nomenclatura dpqr, por lo que dgpd()
denota la densidad, pgpd() la distribución y qgpd() la función de cuantiles de
la GPD. Los números aleatorios se pueden generar con la función rgpd(). Una
envoltura de esta función para simular datos según la GPD se proporciona como
gpdSim(). También está disponible una función para recuperar los momentos
reales (gpdMoments()) y la facilidad de trazado dinámico (gpdSlider()). Los
parámetros de la GPD pueden estimarse con la función gpdFit(). Para ello se
puede utilizar el método ML o el método PWM. El objeto resultante es de la clase
formal fGPDFIT para la que existen los métodos print(), plot() y
summary().
Con respecto al cálculo y la inspección visual de los riesgos de cola, las funciones
TEORÍA DEL VALOR 109
y gpdTailPlot()
EXTREMO
tailRisk(), gpdRiskMeasures(), tailplot()
110 TEORÍA DEL VALOR
EXTREMO
están disponibles para los modelos GPD ajustados. Además, el VaR y el ES
empíricos pueden calcularse con las funciones VaR() y CVaR().

7.3.6 El paquete ismev


El paquete ismev es el segundo paquete contribuido más antiguo en CRAN (véase
Heffernan y Stephenson 2016). Es una adaptación a R de funciones escritas
originalmente en S por Janet E. Heffernan. El paquete está contenido en las vistas
de tareas "Environmetrics" y "Finance" de CRAN. Incluye rutinas para replicar los
cálculos y resultados de Coles (2001). Se suministra con 12 conjuntos de datos
procedentes de los campos de las finanzas y la environmétrica. Además, hay
archivos de demostración disponibles para ayudar al usuario a entender cómo
utilizar el paquete.
Las funciones pueden agruparse de forma general en cinco categorías: Modelos
GEV, modelos GPD, procesos puntuales de Poisson, modelos estadísticos de orden
y funciones de utilidad para guiar al usuario en la elección de los valores de umbral
para el método POT.
Las funciones para ajustar los modelos de máximos de bloque (es decir, las
distribuciones GEV y Gumbel) son gev.fit() y gum.fit(), respectivamente.
Los parámetros desconocidos de la distribución se estiman aplicando el principio
ML. Las pruebas de diagnóstico de la idoneidad del modelo pueden comprobarse
gráficamente con las funciones gev.diag() para el modelo GEV y
gum.diag() para la distribución Gumbel. La función de probabilidad
logarítmica del perfil para la distribución GEV puede representarse con las
funciones gev.prof() y gevprofxi(). La primera función produce un gráfico del
nivel de retorno para m años por bloque. La segunda función devuelve el perfil con
respecto al parámetro de forma solamente. Las bandas de confianza pueden
superponerse a ambos tipos de gráficos.
Existen dos tipos de modelos para las técnicas POT: la distribución GPD y un
modelo de proceso puntual. Los parámetros desconocidos del modelo se estiman
con las funciones gpd.fit() y pp.fit() aplicando el principio ML. De
forma similar al método de máximos de bloque, las funciones para inspeccionar
gráficamente la adecuación del modelo se denominan gpd.diag() para la GPD y
pp.diag() para el modelo de proceso puntual. La log-verosimilitud del perfil se
puede trazar de forma análoga al GEV con las funciones gpd.prof() y
gpd.profxi().
Hay tres funciones que pretenden guiar al usuario eligiendo un valor de umbral
apropiado cuando se aplica la técnica POT. En primer lugar, se puede generar un
gráfico de LMR con la función mrl.plot(). Las otras dos funciones ajustan la
GPD o el modelo de proceso puntual sobre un rango de valores de umbral
especificado por el usuario y representan la trayectoria del parámetro de forma para
la GPD y los parámetros de ubicación, escala y forma para el modelo de proceso
puntual.
Por último, se puede ajustar un modelo estadístico de orden con la función
rlarg.fit()
y el resultado se puede investigar gráficamente con la función rlarg.diag().

7.3.7 El paquete QRM


TEORÍA DEL VALOR 111
El paquete QRM se presentó en la sección 6.4.4. Sus facilidades para la EVT
EXTREMO
incluyen funciones para máximos de bloque, POT, procesos puntuales y el cálculo de
medidas de riesgo. En
112 TEORÍA DEL VALOR
EXTREMO
Además, se incluyen métodos para representar gráficamente los objetos del modelo
ajustado o aspectos del mismo.
Se implementan las distribuciones GEV y Gumbel, y se sigue la convención de
nomenclatura para la densidad, la distribución, la función cuantil y la generación de
números aleatorios, dando, por ejemplo, dGPD() y dGumbel() para las
respectivas den- sidades. El ajuste de un modelo GEV se realiza con la función
fit.GEV(). Aquí se aplica el principio ML y la optimización se realiza con el
optimizador de propósito general optim(). La función se especifica con
un argumento de elipsis dentro de optim(). Esto permite al usuario elegir el
optimizador y proporciona un mayor control de la optimización numérica.
Con respecto a las técnicas POT, los valores de los excesos para un número
determinado de ellos pueden recuperarse con la función findthreshold().
Además, es posible trazar los excesos medios de la muestra para umbrales
variables con la función MEplot() y/o producir un gráfico de Hill
(hillPlot()). Esta última función es la misma que la del paquete evir. Para
estimar una GPD se puede utilizar la rutina fit.GPD(). Aquí, el usuario puede
elegir entre las funciones optim() y nlminb() para determinar numéricamente
los coeficientes desconocidos. El modelo ajustado puede ser investigado con las
funciones plotTail() y plotFittedGPDvsEmpiri- calExcesses().
La trayectoria del parámetro de forma puede mostrarse para un rango de valores de
umbral con la función xiplot().
Las medidas de riesgo VaR y ES para los modelos ajustados a la GPD pueden
calcularse con la función RiskMeasures() o showRM(). Esta última función
devuelve un gráfico de cola con el valor de la medida de riesgo estimada y una
banda de confianza. Por cierto, las estimaciones de los límites inferior y superior
del VaR para un conjunto dado de distribuciones marginales pueden calcularse con
la función VaRbound() (véase Embrechts et al. 2013).
Los datos del proceso puntual extremo pueden recuperarse mediante la función
extremalPP() e inspeccionarse visualmente como un proceso puntual marcado
(plot.MPP()) o un proceso puntual (plot.PP()). Los objetos de datos de este
tipo pueden ajustarse a una GPD con la función fit.POT(). Además, es posible
estimar procesos puntuales autoexcitables con las rutinas fit.sePP() y
fit.seMPP().

7.3.8 Los paquetes Renext y RenextGUI


El paquete Renext es la última adición a los paquetes de R en CRAN que se
ocupan explícitamente de la EVT (véase Deville 2015a). Se añadió por primera vez
en 2010. Dentro del paquete, se implementan funciones para el "méthode de
renouvellement" -una técnica similar a la POT-. La principal diferencia de esta
técnica con respecto al POT es la suposición de que los tiempos de rebasamiento
siguen un proceso de Poisson homogéneo y son independientes de los tamaños de
los mismos. Dada la validez de estos supuestos, los rebasamientos pueden
modelizarse no sólo con la GPD, sino también con otras distribuciones, como la
exponencial, la de Weibull, la gamma, la log-normal, las mezclas de la
exponencial, la Weibull desplazada hacia la izquierda y la Pareto desplazada.
Como se indica en la guía del usuario "RenextGuide.pdf" (incluida en el
subdirectorio doc del paquete), este método es bastante popular entre los
TEORÍA DEL VALOR 113
hidrólogos franceses. El paquete está escrito exclusivamente
EXTREMO en R y
114 TEORÍA DEL VALOR
EXTREMO
se implementa un NAMESPACE. Al igual que extRemes, una interfaz gráfica de
usuario está contenida en un paquete complementario RenextGUI (véase Deville
2015b); el uso de la interfaz gráfica de usuario se explica en una guía de usuario
(véase "RenextGUIGuide.pdf" en el subdirectorio doc del paquete).
Las funciones contenidas en el paquete pueden agruparse principalmente en tres
cate- gorías: EDA y estimación; inferencia y simulación de este tipo de modelos; y
funciones de utilidad.
Dentro de la primera categoría, las funciones de trazado para investigar si los
excesos pueden ser aproximados por la distribución exponencial o Weibull se
denominan exp- plot() y weibplot(), respectivamente. El número de
excesos dentro de parcelas de tiempo específicas puede representarse como un
gráfico de barras con la función barplotRebnouv(). La función de ajuste de los
modelos de renovación se denomina Renouv() y la de generación de números
aleatorios a partir de este tipo de modelos se denomina rRenouv(). Los
parámetros desconocidos de la distribución especificada se estiman según el
principio de ML utilizando la función optim(). Por defecto, los datos se
ajustarán a la distribución exponencial, aunque el paquete también contiene las
funciones pertinentes para ajustar las distribuciones mencionadas anteriormente.
Además de la estimación, se genera un gráfico del nivel de rendimiento
resultados. Este gráfico también puede producirse por separado con la función
RLplot().
Las funciones para leer objetos Rendata en un formato XML específico
(read- XML()), el trazado de los mismos (plot.Rendata()), el cálculo de
los valores de los parámetros a partir de los momentos teóricos (mom2par()), y
las pruebas de bondad de ajuste para la repartición de las fechas y la distribución
exponencial (funciones gof.date() y gofExp.test(), respectivamente)
pueden agruparse en la última categoría.

7.4 Aplicaciones empíricas de la EVT


7.4.1 Esquema de la sección
A continuación se aplicará la teoría del valor extremo a los datos financieros,
mostrando cómo los métodos y técnicas presentados anteriormente pueden aplicarse
a la modelización de los riesgos del mercado. En particular, los modelos de valor
extremo que utilizan las técnicas de máximos de bloque, POT y procesos puntuales
se ajustan a los rendimientos diarios de las acciones.
Las aplicaciones empíricas comienzan con un análisis exploratorio de los datos
de los rendimientos de las acciones de Siemens. Esta serie se utilizará
posteriormente para aplicar el método de máximos de bloque a este conjunto de
datos. En los siguientes ejemplos se aplica el método de los máximos de bloque a
las pérdidas de las acciones de BMW y el POT a las pérdidas de las acciones de
Boeing. En el último ejemplo se investiga la sensibilidad de la técnica de desglose
para las pérdidas del índice NYSE. Estos ejemplos mostrarán cómo se pueden
utilizar las diferentes implementaciones de los paquetes evir, ismev y fExtremes.

7.4.2 Modelo de máximos en bloque para Siemens


TEORÍA DEL VALOR 115
En este subapartado se aplica el método de máximos
EXTREMOde bloque a las pérdidas
diarias de las acciones de Siemens. Este conjunto de datos se introdujo en la
sección 3.1. El ajuste del GEV a este conjunto de datos, así como las pruebas de
inferencia y diagnóstico, se muestran en el listado 7.1.
116 TEORÍA DEL VALOR
EXTREMO
Código R 7.1 Bloque de máximos para las pérdidas de Siemens.
biblioteca ( e v i r ) 1

d a t o s ( s i emens ) 2

## P é r d i d a s 3

S i e L o s s <- -100.0 ∗ s i e m e ns 4
## paquete e v i r : 5

SieGEV <- gev ( Sie Loss , b l o c k = " s e m e s t r e " ) 6

SieGEV 7

p l o t ( SieGEV$data , t ype = " h " , c o l = " bl ue " , xl a b = " " , 8

y la b = " Bloque Máximo" , 9

main = " L o s m á x i m o s b i e n e s d e l a s s e m i n a s " ) 10

## paquete i smev : 11

b i b l i o t e c a ( ismev ) 12

SieGEV2 <- gev . f i t ( SieGEV$ d a t a ) 13

SieGEV2 14

gev . d i a g ( SieGEV2 ) 15

p a r ( mfrow = c ( 2 , 1 ) ) 16

gev . p r o f ( SieGEV2 , m = 20 , xlow = 5 , xup = 16 , conf = 0 . 9 5 ) 17

gev . p r o f x i ( SieGEV2 , xlow = 0. 0 , xup = 0 .7 , conf = 0. 9 5 ) 18

mLoss <- max ( SieGEV$ d a t a ) 19

mAños <- 1 / ( 1 - pgev ( mLoss , mu = SieGEV2$mle [ 1 ] , 20

sigma = SieGEV2$mle [ 2 ] , 21

x i = SieGEV2$mle [ 3 ] ) / 2 22

## paquete f E x t r e m e s : 23

biblioteca ( f E x t r e m e s ) 24

SieGEV3 <- g e v F i t ( SieGEV$data , t y p e = "pwm" ) 25

SieGEV3 26

En primer lugar, los rendimientos diarios se convierten en cifras de pérdidas


positivas expresadas en porcentajes. A continuación, esta serie se ajusta a la
distribución GEV empleando la función gev() del paquete evir. El bloque de
argumentos de la función se ha establecido como "semestral". De este modo,
se extraen los máximos semestrales de la serie si ésta contiene un atributo
temporal con marcas de tiempo de clase POSIXct o de una clase que pueda
ser coercitiva. Los puntos de datos extraídos se muestran en la figura 7.2. El
hallazgo de una mayor volatilidad durante la segunda mitad del periodo de la
muestra se refleja en este gráfico. Por lo tanto, la suposición de que los máximos de
los bloques se distribuyen de forma idéntica podría ser violada. Sin embargo, por el
momento no tendremos en cuenta esta posible violación y la abordaremos de nuevo
más adelante, cuando se incluya una tendencia como covariable en el modelo.
Los resultados de la estimación ML se presentan en el cuadro 7.1. Todos los
coeficientes son significativamente diferentes de cero. La estimación del parámetro
de forma, 𝜉̂, implica la existencia de colas pesadas y pérdidas no finitas, es decir, el
GEV es del tipo Fréchet.
Alternativamente, los datos de los máximos del bloque podrían ajustarse
aplicando el principio ML al GEV con la función gev.fit() del paquete ismev.
Las estimaciones de los parámetros son iguales a las devueltas por gev(). Los
gráficos de diagnóstico pueden producirse rápidamente con la función
TEORÍA DEL VALOR 117
gev.diag(), como se muestra en la Figura 7.3. Como indica el
EXTREMO
118 TEORÍA DEL VALOR
EXTREMO
Pérdidas máximas bianuales de Siemens
12

10


8
xi
m
os 6
de
l
bl 4
oq
ue
2

0 10 20 30 40

Figura 7.2 Máximos del bloque para las pérdidas de Siemens.

Tabla 7.1 GEV ajustada a los máximos de los bloques de Siemens.

GEV 𝜉 𝜎 𝜇
Estimación 0.287 1.047 2.700
Error estándar 0.117 0.141 0.170

Gráfico de Gráfico de
probabilidad cuantiles
0.
M 0 Empíri
od 0 . co
elo 4
0. 6 10
8
2
0.0 0 .2 0 .4 0 .6 0 .8 1 .0 2 4 6 8 10
Empírico Modelo

Gráfico de nivel de Parcela de


retorno densidad
25
Ni
vel
f(z)
de 15
ret 0.2
or
no
5
0.0

1e-01 1e+01 1e+03 0 2 4 6 8 10 12 14

Período de retorno z

Figura 7.3 Gráficos de diagnóstico del modelo GEV ajustado.


TEORÍA DEL VALOR 119
EXTREMO
Perfil
Log-
likeliho
od
-92 -86

6 8 10 12 14 16
Nivel de retorno

Pe
rfil
Lo -
g- 86
lik
eli -
ho 90
0.0 0.1 0.2 0.3 0.4 0.5 0.6 0.7
od
Parámetro de forma

Figura 7.4 Gráficos de probabilidad logarítmica del perfil para el modelo GEV
ajustado.

En los gráficos de probabilidad y de cuantiles, los puntos de los datos de la cola de


la derecha no quedan bien reflejados en esta especificación del modelo. Esto puede
atribuirse a las pérdidas relativamente pequeñas registradas al principio del periodo
de la muestra. Este artefacto aparece en el gráfico de niveles de rentabilidad. Para
los puntos de datos de la cola de la derecha, los niveles de rentabilidad estimados
son sistemáticamente inferiores a los niveles empíricos, aunque estos últimos se
mantienen dentro de las bandas de confianza del 95%.
Además de estos gráficos de diagnóstico, se pueden hacer más inferencias del
modelo utilizando las probabilidades logarítmicas del perfil. En la figura 7.4 se
muestran estos datos para un nivel de retorno de 10 años (panel superior) y para el
parámetro de forma (panel inferior). Una pérdida diaria de hasta el 7,6% se
observaría una vez cada 10 años. Esta estimación puntual entra dentro de un nivel
de confianza del 95% que va del 6% al 11,75%. Por lo tanto, la pérdida máxima
observada del 12,01% no se habría cubierto como un evento "una vez cada 10
años", sino que esta pérdida ocurriría sólo una vez cada 42 años aproximadamente. El
cálculo correspondiente a este intervalo de tiempo se incluye en el listado 7.1
(véanse las líneas 20-22). En el panel inferior de la Figura 7.4 se muestra la log-
verosimilitud del perfil para el parámetro de forma con una banda de confianza del
95% (las líneas horizontales de color gris claro) superpuesta. Como puede verse
claramente, la con-
La banda de confianza es asimétrica y hacia la derecha para la estimación puntual
de 𝜉̂ = 0,287. Un valor de casi 0,6 estaría cubierto por esta banda de confianza.
En las siguientes líneas del listado de código R, los parámetros del GEV se
determinan mediante los métodos PWM. Las estimaciones son bastante cercanas a
120 TEORÍA DEL VALOR
las estimaciones
EXTREMO ML. Los parámetros de forma, escala y localización toman los
=
valores 𝜉̂ 0,319, 𝜎̂ = 2,675, y 𝜇̂ = 1,001,
respectivamente.
TEORÍA DEL VALOR 121
EXTREMO
14

Pé 12
rdi
da 10
s
B
M 8
W
(p
or 6
ce
nt 4
aj
es
) 2
1975 1980 1985 1990 1995

Figura 7.5 Las dos mayores pérdidas anuales de BMW.

7.4.3 maxima r-block para BMW


A continuación, ajustaremos un modelo de máximos de bloque r a las pérdidas
diarias de BMW. En este caso, se extraen las dos mayores pérdidas anuales del
conjunto de datos. La serie de retorno está contenida en el paquete evir y las
funciones para ajustar y diagnosticar modelos de este tipo se proporcionan en el
paquete ismev, a saber, rlarg.fit() y rlarg.diag(), respectivamente. El
lapso de tiempo y la estructura del objeto de datos bmw son los mismos que
para siemens.
En el listado 7.2 se cargan primero los paquetes mencionados. A continuación,
se calculan las pérdidas porcentuales de las acciones de BMW como cifras
positivas (es decir, el objeto BmwLoss). El objeto bmw tiene un atributo de
tiempo que es de clase POSIXct. Para obtener las dos mayores pérdidas
anuales de la serie y preparar un objeto matriz adecuado para el ajuste, se
recupera una serie de años únicos del atributo tiempo empleando el método
format() para objetos de esta clase. El objeto resultante se añade como atributo
años al objeto BmwLoss. Los años únicos se almacenan como objeto Yearu y
se crea un índice idx igual a la longitud de este elemento. A continuación, el
orden r se establece en 2, y esto se utiliza para recuperar las dos mayores pérdidas
por año. Aquí, las pérdidas por año se clasifican en orden decreciente y se extraen
los primeros valores de r. El objeto resultante BmwOrder es de clase matriz y
tiene una dimensión de columna de 2 para las dos mayores pérdidas observadas y
una dimensión de fila de 24 que coincide con el lapso de tiempo anual de 1973 a
1996. Las pérdidas recuperadas se representan en la figura 7.5.
Como se desprende del gráfico, la segunda mayor pérdida observada no tiene en
todos los años una magnitud similar a la mayor pérdida anual. En particular, las
diferencias son bastante marcadas en los años 1989 y 1991, con 11,357 y 6,249
puntos porcentuales, respectivamente.
Una vez preparados los datos en un formato adecuado para el ajuste, el GEV se
ajusta a la
122 TEORÍA DEL VALOR
datos máximos del bloque r. Los resultados de la estimación se presentan en el
EXTREMO
cuadro 7.2. Todas las estimaciones
TEORÍA DEL VALOR 123
EXTREMO
Código R 7.2 Máximos del bloque r para las pérdidas de BMW.
## Loading o f packages 1

biblioteca ( e v i r ) 2

b i b l i o t e c a ( ismev ) 3

## Order s t a t i s t i c s 4
d a t a (bmw) 5
BmwLoss <- -1.0 ∗ bmw ∗ 100 6

Años <- f o r m a t ( a t r ( BmwLoss , " t ime " ) , "%Y" ) 7

a t t r ( BmwLoss , " a ñ o s " ) <- Años 8

Yearu <- u n i q u e ( Years ) 9

idx <- 1 : l o n g i t u d ( Yearu ) 10

r <- 2 11

BmwOrder <- t ( s a p p l y ( idx , f u n c i ó n ( x ) 12

head ( s o r t ( BmwLoss [ a t r ( BmwLoss , " y e a r s " ) == 13

Añou [ x ] ] , d e c r e c i e n t e = 14

TRUE) , r ) ) ) 15

rownames ( BmwOrder ) < - Yearu 16

colnames ( BmwOrder ) <- p a s t e ( " r " , 1 : r , sep = " " ) 17

## P l o t o d o s l o s d a t o s d e l o s p r o d u c t o s 18

p l o t ( Yearu , BmwOrder [ , 1 ] , c o l = " b l a c k " , 19

ylim = r a n g e ( BmwOrder ) , y l a b = " L o s s e s BMW ( p e r c e n t a j e s ) " , 20

xl a b = " " , pch = 21 , bg = " b l a c k " ) 21

p o i n t o s ( Yearu , BmwOrder [ , 2 ] , c o l = " b l u e " , pch = 23 , 22

bg = " az ul " ) 23

## F i t y d i a g n ó s t i c o s 24

BmwOrderFit < - r l a r g . f i t ( BmwOrder ) 25

r l a r g . d i a g ( BmwOrderFit ) 26

Tabla 7.2 Máximos ajustados del bloque r de BMW.

GEV 𝜇 𝜎 𝜉
Estimación 4.480 1.752 0.303
Error estándar 0.341 0.289 0.159

son significativamente diferentes de cero, pero para 𝜉 sólo al nivel del 10%. El
signo del valor del parámetro indica una distribución de tipo Fréchet, que implica
la posible aparición de pérdidas no limitadas.
La bondad del ajuste puede inspeccionarse visualmente con la función
rlarg.diag(), que devuelve dos gráficos. Primero, se producen gráficos para
las pérdidas más grandes, similares a los de la función gev.diag(), y luego se
devuelven gráficos PP y QQ para r = 1, 2. Estas herramientas de diagnóstico se
muestran en las figuras 7.6 y 7.7, respectivamente.
En general, el gráfico PP indica un ajuste decente. Sin embargo, el gráfico QQ
revela que las pérdidas en el rango del 8% al 10% aproximadamente no se cubren
tan bien. Esto también se refleja en el gráfico del nivel de retorno. Aquí, los valores
para un periodo de retorno de un año están en el límite
124 TEORÍA DEL VALOR
EXTREMO
Gráfico de probabilidad Gráfico de
cuantiles
M
o Emp
d írico
el 26
o 10 14
0.0 0.4 0.2 0 .4 0 .6 0 .8 1 .0
0.8 4 68 10 12 14
Empírico
Modelo
Gráfico de nivel de
retorno Parcela de
Nivel
de f densidad
retorn (
o z
)
10
0.00
30 0.10
1e-01 1e+01 1e+03 0.20
Período de retorno 2 4 6 8 10 12 14
z

Figura 7.6 Gráficos de diagnóstico de los máximos del bloque r: mayores pérdidas.

k=1 k=1
6
0. 10
4 14
0.
8
0. 2
0
0.2 0 .4 0 .6 0 .8 1 .0 4 68 10 12 14

k=2 k=2

0. 4
4 6
0. 8
8
0. 2
0
0.2 0 .4 0 .6 0 .8 1 .0 3 4 5 6 7

Figura 7.7 Gráficos de diagnóstico de los máximos del bloque r: Gráficos PP y QQ.

de la banda de confianza superior. La curva de nivel de retorno con pendiente


ascendente reitera que el GEV es de tipo Fréchet. El error estándar relativamente
grande estimado para el parámetro de forma se refleja en las bandas de confianza
que se amplían bastante para los periodos de retorno más altos, alertando al
investigador de los caprichos de extrapolar demasiado en las colas de la
distribución.
La figura 7.7 muestra los gráficos PP y QQ para cada uno de los dos órdenes.
Como cabe esperar del análisis descriptivo de este conjunto de datos, los resultados
para k = 2 parecen menos favorables en cuanto al gráfico QQ (panel inferior
TEORÍA DEL VALOR 125
EXTREMO

derecho).
126 TEORÍA DEL VALOR
EXTREMO
Código R 7,3 POT GPD para las
pérdidas de Boeing.
## Loading o f packages 1

biblioteca ( f B a s i c s ) 2

biblioteca ( f E x t r e m e s ) 3

## M a ne j o de datos 4
d a t a ( DowJones30 ) 5

DJ <- t i m e S e r i e s ( DowJones30 [ , -1] , 6


c h a r v e c = as . c a r a c t e r ( DowJones30 [ , 1 ] ) 7

BALoss <- -1,0 ∗ d e v u e l v e ( DJ [ , "BA" ] , p e r c e n t a g e = TRUE, 8


t r i m = TRUE) 9

## MRL- pl ot 10

m r l P l o t ( BALoss , u m i n = -10 , umax = 10) 11

## GPD 12

BAFit <- g p d F i t ( BALoss , u = 3 ) 13

## D i a g n o s t i c p l o t s 14

p a r ( mfrow = c ( 2 , 2 ) ) 15

p l o t ( BAFit , que = 1 ) 16

p l o t ( BAFit , which = 2 ) 17

p l o t ( BAFit , which = 3 ) 18

p l o t ( BAFit , which = 4 ) 19

## Me di das de ri e sgo 20

gpdRi skMe a sure s ( BAFit , prob = c ( 0 . 9 5 , 0 . 9 9 , 0 . 9 95 ) ) 21

7.4.4 Método POT para Boeing


En esta subsección, la distribución GPD se ajusta a las pérdidas diarias de las
acciones de Boeing utilizando el método POT. Los precios de cierre de esta acción
están contenidos en el objeto DowJones30 que forma parte del paquete fBasics
(véase Würtz et al. 2014). La muestra abarca desde el 31 de diciembre de 1990
hasta el 2 de enero de 2001 y comprende 2529 observaciones.
En el listado 7.3 se cargan primero los paquetes necesarios. El paquete
fExtremes se utilizará para realizar el análisis. A continuación, se carga el
conjunto de datos en el espacio de trabajo y se convierte en un objeto
timeSeries. Se calculan las pérdidas diarias de Boeing y se expresan como cifras
porcentuales. El objeto resultante se ha denominado BALoss.
Para aplicar el método POT, hay que determinar un valor umbral adecuado. Esta
elección puede guiarse por el gráfico de LMR que se muestra en la figura 7.8. En este
gráfico se han superpuesto bandas de confianza del 95% en torno a los excesos de la
media y están coloreadas en gris claro. Desgraciadamente, y esto es algo que suele
ocurrir empíricamente, a partir de este tipo de gráfico no se puede deducir una
elección definitiva del valor del umbral. Sin embargo, parece razonable asumir como
valor umbral una pérdida diaria de hasta el 3%, dado que existe una relación lineal
entre los umbrales trazados y los excesos medios por encima de este valor. En
principio, podría elegirse un umbral ligeramente superior o inferior al 3%, pero en
ese caso existe un compromiso entre una mayor incertidumbre para las estimaciones
y el sesgo. Para el umbral dado se obtiene un total de 102 excesos. Este conjunto de
datos corresponde aproximadamente a los cuantiles superiores del 96% de la
TEORÍA DEL VALOR 127
función de distribución empírica. EXTREMO
128 TEORÍA DEL VALOR
EXTREMO
Una vez fijado el valor del umbral, se puede ajustar la GPD a los excesos. Esto
se consigue con la función gpdFit(). Las estimaciones de los parámetros de
escala y forma, así como sus desviaciones estándar estimadas, se muestran en la
Tabla 7.3. El parámetro de forma es mayor que cero y significativamente diferente
de uno, lo que indica colas pesadas.
Además de la estimación, la idoneidad del modelo ajustado puede investigarse
gráficamente mediante el método plot() para objetos de la clase fGPDFIT. La
figura 7.9 muestra los gráficos de diagnóstico obtenidos. Los paneles superiores
muestran la distribución de exceso ajustada y un gráfico de cola. Ambos indican un
buen ajuste de la GPD a las exedencias. Los paneles inferiores muestran los
residuos con una línea de mínimos cuadrados ordinarios (OLS) ajustada a la
izquierda y un gráfico QQ a la derecha. Ninguno de los dos gráficos da lugar a
dudas sobre el efecto del tamaño; es decir, la línea OLS se mantiene bastante plana
y en el gráfico QQ los puntos representados no se desvían mucho de la diagonal.
Por último, las estimaciones puntuales de las medidas de riesgo VaR y ES
pueden calcularse rápidamente con la función GPDRiskMeasures(). En el
listado 7.3 se calculan para los niveles del 95%, 99% y 99,5%. Los resultados se
muestran en el cuadro 7.4. Estas medidas se califican como evaluaciones de riesgo
incondicionales para el siguiente día laborable.
En el ejemplo anterior se asumió implícitamente que los excesos son puntos de
datos iid. Sin embargo, esta suposición apenas es sostenible para los rendimientos
de los mercados financieros. En particular, dada la validez de los hechos
estilizados, los rendimientos grandes en valor absoluto se agrupan con respecto al
tiempo y esta característica empírica también se mantiene cum grano salis para las
pérdidas que superan un valor alto elegido como umbral. La atención se desplaza ahora
al dominio temporal de las superaciones, denominadas marcas, en lugar de los
valores reales. La cuestión planteada aquí se ejemplifica en el listado 7.4
empleando los rendimientos diarios del índice de la Bolsa de Nueva York.
En primer lugar, se cargan en el espacio de trabajo los paquetes necesarios
fBasics y fExtremes. A continuación, se calculan las pérdidas continuas diarias del
índice bursátil y se expresan en porcentajes. Los datos de los excesos por encima
del percentil 95 se recuperan de las pérdidas con la función pointProcess().
Esta función devuelve un objeto con las marcas de tiempo y las marcas, es decir,
las pérdidas por encima del umbral. Para un proceso puntual iid, los intervalos de
tiempo entre superaciones consecutivas deben tener una distribución de Poisson.
Esto puede comprobarse fácilmente mediante un gráfico QQ adecuado. Otro medio
gráfico para detectar la desviación de la hipótesis iid es representar la ACF y/o la
PACF de los intervalos. Si los rebasamientos se produjeron aleatoriamente durante
el periodo de muestreo, los huecos no deberían estar autocorrelacionados. Estos
gráficos se muestran en la figura 7.10.
Los cuatro gráficos indican que no se puede suponer que los excesos sean iid. El
panel superior izquierdo muestra el proceso puntual. En este gráfico es bastante
evidente que los excesos están agrupados. Esto se refleja en el gráfico QQ del
panel superior derecho. En este caso, los intervalos de tiempo entre las marcas
consecutivas se representan con una distribución de Poisson. Los puntos de
dispersión se desvían considerablemente de la línea ajustada. La falta de aleatoriedad
de los sucesos también se refleja en los gráficos ACF y PACF del panel inferior. El
TEORÍA DEL VALOR 129
ACF disminuye lentamente y el PACF indicaEXTREMO
una importante autocorrelación de
segundo orden.
130 TEORÍA DEL VALOR
EXTREMO
Parcela de Residuos Medios en Vivo
10

8
Ex
ce
6
so
m
ed
io: 4
e

2
ci
=
0,9
0 5
-10 -5 0 5 10
Umbral: u

Figura 7.8 Gráfico de la LMR para las pérdidas de Boeing.

Tabla 7.3 GPD de Boeing.


ajustado
GPD 𝜉 𝛽
Estimación 0.331 1.047
Error estándar 0.128 0.166

Exceso de Cola de la distribución


distribución subyacente
x 0. 1-
[lo 0 F(x)
g 0. [esca
Es 4 la
cal 0. logar
a] 8 u
ítmic
=
3 a]
5 10 20 5 10 20
5e-05
Fu(x-u) 2e-03 x [escala logarítmica]

Diagrama de dispersión Gráfico QQ de los


de los residuos residuos
Cu
Re 4 an
sid tile
uo s 4
s ex
2 po 2
ne
0 nci 0
020 40 60 80 100 al 0 1 2 3 4 5
es
Pedir Datos ordenados
TEORÍA DEL VALOR 131
EXTREMO

Figura 7.9 Gráficos de diagnóstico del modelo GPD ajustado.


132 TEORÍA DEL VALOR
EXTREMO
Cuadro 7.4 Medidas de riesgo para Boeing.

Nivel de confianza VaR ES


95.0% 2.783 4.240
99.0% 4.855 7.336
99.5% 6.149 9.268

Código R 7.4 Desagregación de los excesos de la NYSE.


biblioteca ( f E x t r e m e s ) 1

biblioteca ( f B a s i c s ) 2
d a t a ( nyse ) 3

NYSELevel < - t i m e S e r i e s ( nyse [ , 2], 4


c h a r v e c = as . c h a r a c t e r ( nyse [ , 1 ] ) ) 5

NYSELoss <- na . omit ( -1.0 ∗ d i f f ( l o g ( NYSELevel ) ) ∗ 100) 6

colnames ( NYSELoss ) < - " NYSELoss " 7


## Datos del p r o c e s o d e p u n t o s 8

NYSEPP <- p o i n t P r o c e s s ( x = NYSELoss , 9


u = q u a n t i l e ( NYSELoss , 0 . 9 5 ) ) 10
## D e c l u s t e r i n g 11

DC05 <- d e C l u s t e r ( x = NYSEPP , Eje = 5 , d o pl o t = FALSE) 12


cut
ar
DC10 <- d e C l u s t e r ( = NYSEPP , Eje = 10 , d o p l ot = FALSO) 13
x cut
ar
DC20 <- d e C l u s t e r ( = NYSEPP , Eje = 20 , d o p l ot = FALSO) 14
x cut
ar
DC40 <- d e C l u s t e r ( = NYSEPP , Eje = 40 , d o p l ot = FALSO) 15
x cut
ar
DC60 <- d e C l u s t e r ( = NYSEPP , Eje = 60 , d o p l ot = FALSO) 16
x cut
ar
DC120 <- d e C l u s t e r ( x = NYSEPP , run = 120 , d o p l o t = FALSE) 17

## F i t o d e l o s d a t o s d e l o s c o n s u l t a d o s 18

DC05Fit <- g p d F i t ( DC05 , u = min ( DC05 ) ) 19

DC10Fit <- g p d F i t ( DC10 , u = min ( DC10 ) ) 20

DC20Fit <- g p d F i t ( DC20 , u = min ( DC20 ) ) 21

DC40Fit <- g p d F i t ( DC40 , u = min ( DC40 ) ) 22

DC60Fit <- g p d F i t ( DC60 , u = min ( DC60 ) ) 23

DC120Fit <- g p d F i t ( DC120 , u = min ( DC40) ) 24

Como medio de preprocesamiento de los datos, los excesos pueden


desclasificarse. En otras palabras, sólo se recupera el máximo dentro de un grupo
de excesos como pérdida extrema representativa. Por lo tanto, los excesos
desclasificados tienen al menos la anchura supuesta del grupo con respecto al
tiempo. El objetivo de esta técnica de preprocesamiento de datos es garantizar la
validez de los supuestos de la GPD. Obsérvese que los resultados son sensibles a la
TEORÍA DEL VALOR 133
elección del número de ejecuciones. Para resaltar esta cuestión, en el listado 7.4 se
EXTREMO
han recuperado series desclasificadas para varias periodicidades. Es decir, los datos
del proceso puntual se han desclasificado para series semanales, quincenales,
mensuales, bimensuales y trimestrales, así como semestrales. A continuación, se
ajusta la GPD a estas series y los resultados se presentan en el cuadro 7.5.
134 TEORÍA DEL VALOR
EXTREMO
4
Pérdid 6
as
0
515 2

1970-01-01 1990-01-01 0 5 10 15 20

ACF
parcial
A
C -0. 100.10 0.25
F
0.0 0.4
0.8
0 510 15 20 25 0 5 10 15 20 25

Figura 7.10 Gráficos para la agrupación de los excesos de la NYSE.

Tabla 7.5 Resultados de los modelos GPD desclasificados.

Desglose 𝜉̂ 𝛽̂ Excedencias NLLH


Semanal 0.252 0.536 303 189.9
[0.066] [0.046]
Quincenalmente 0.324 0.518 222 147.5
[0.084] [0.055]
Mensualmente 0.33 0.59 149 118.76
[0.102] [0.076]
Bimensual 0.376 0.752 86 92.67
[0.146] [0.133]
Trimestralment 0.421 0.824 61 73.59
e
[0.181] [0.178]
Semestralmente 0.581 0.928 25 37.66
[0.342] [0.352]

En esta tabla se presentan las estimaciones para 𝜉 y 𝛽. Los errores estándar estimados
figuran entre corchetes. En las dos columnas de la derecha se indican los números
de excesos declarados y los valores de la log-verosimilitud negativa. Las
estimaciones del parámetro de forma aumentan con la frecuencia de paso (a medida
que se desciende en la tabla), dado que cada frecuencia de paso es una opción
válida. Sin embargo, estas estimaciones puntuales se vuelven menos fiables debido
a la disminución del número de observaciones disponibles para minimizar la log-
verosimilitud negativa, aunque los valores de esta última se recuperan para períodos
de ejecución más largos. Con respecto a la derivación del VaR y/o del ES, estos
resultados implican valoraciones bastante diferentes del riesgo inherente al índice de
la Bolsa de Nueva York. En particular, los procesos puntuales para las series
mensuales, bimensuales, trimestrales y semestrales desclasificadas no indican que sus
intervalos de tiempo se aparten en gran medida de la distribución exponencial, pero
la inferencia extraída de los modelos ajustados difiere notablemente.
TEORÍA DEL VALOR 135
EXTREMO
Referencias
Beirlant J., Goegebeur Y., Segers J. y Teugels J. 2004 Statistics of Extremes: Theory and
Applications. John Wiley & Sons, Chichester, Inglaterra.
Burger M., Jünemann K., y König T. 2015 RUnit:R Unit Test Framework. Paquete R versión
0.4.28.
Coles S. 2001 An Introduction to Statistical Modeling of Extreme Values. Springer Verlag,
Londres, Nueva York.
Deville Y. 2015a Renext: Renewal Method for Extreme Values Extrapolation. Paquete R
versión 3.0-0.
Deville Y. 2015b RenextGUI: GUI para Renext. Paquete R versión 1.3-0.
Embrechts P., Klüppelberg C., y Miksoch T. 1997 Modelling Extremal Events for In-
surance and Finance vol. 33 of Stochastic Modelling and Applied Probability 1st edn.
Springer-Verlag, Berlín.
Embrechts P., Puccetti G. y Rüschendorf L. 2013 Model uncertainty and VaR aggregation.
Journal of Banking and Finance 38(8), 2750-2764.
Ferro C. y Segers J. 2003 Inferencia para grupos de valores extremos. Journal of the Royal
Statistical Society, Series B 65(2), 545-556.
Gilleland E. y Katz R. 2011 Nuevo software para analizar cómo cambian los extremos en el
tiempo. Eos
92(2), 13-14.
Heffernan E. y Stephenson A. 2016 ismev: An Introduction to Statistical Modeling of Ex-
treme Values. Paquete R versión 1.41.
Leadbetter M., Lindgren G., y Rootzén, H. 1983 Extremes and Related Properties of Random
Sequences and Series. Springer-Verlag, Nueva York.
McNeil A. 1999 Teoría del valor extremo para gestores de riesgos Internal Modelling and
CAD II RISK Books pp. 93-113.
McNeil A., Frey R. y Embrechts P. 2005 Quantitative Risk Management: Concepts, Tech-
niques and Tools. Princeton University Press, Princeton, NJ.
Pfaff B. y McNeil A. 2012 evir: Extreme Values in R. Paquete R versión 1.7-3.
Plummer M., Best N., Cowles K. y Vines K. 2006 CODA: Convergence diagnosis and output
analysis for MCMC. R News 6(1), 7-11.
Stephenson A. 2002 evd: Distribuciones de valor extremo. R News 2(2), 0.
Stephenson A. y Ribatet M. 2006 A User's Guide to the evdbayes Package (Version 1.1).
Stephenson A. y Ribatet M. 2014 evdbayes: Bayesian Analysis in Extreme Value Theory.R
package version 1.1-1.
Würtz D. 2013 fExtremes: Rmetrics - Datos extremos del mercado financiero. Paquete R
versión 3010.81.
Würtz D., Setz T. y Chalabi Y. 2014 fBasics: Rmetrics - Mercados y estadísticas básicas.
Paquete R versión 3011.87.
8

Modelización de la volatilidad

8.1 Preliminares
En los dos capítulos anteriores se introdujeron métodos cuantitativos para la
modelización del riesgo en el caso de rendimientos con distribución no normal, es
decir, la teoría del valor extremo y las clases de distribución hiperbólica
generalizada y lambda generalizada. El primer método aborda la modelización de
la cola de un proceso de retorno, mientras que el segundo se centra en capturar
adecuadamente toda la distribución. Con respecto a las medidas de riesgo de valor
en riesgo y de pérdida esperada, se asumió que los rendimientos del mercado
financiero son iid. Por lo tanto, estas medidas de riesgo son incondicionales en el
sentido de que no dependen de la información previa. Como ya se mostró en el
capítulo 3, la agrupación de la volatilidad es uno de los hechos estilizados de los
rendimientos de los mercados financieros. Dado este hecho estilizado, el supuesto
de rendimientos iid se viola claramente. Por lo tanto, este capítulo introduce una
clase de modelo que tiene en cuenta explícitamente la agrupación de la volatilidad.
Como se mostrará, las medidas de riesgo condicional pueden deducirse de estos
modelos. En este caso, el fenómeno de la agrupación de la volatilidad alimenta
directamente las medidas de riesgo derivadas para períodos futuros en el tiempo.

8.2 La clase de modelos ARCH


La clase de modelos heteroscedásticos condicionales autocorrelacionados (ARCH)
se introdujo en el artículo seminal de Engle (1982). Desde entonces, este tipo de
modelo se ha modificado y ampliado de varias maneras. Los artículos de Engle y
Bollerslev (1986), Bollerslev et al. (1992) y Bera y Higgins (1993) ofrecen una
visión general de los modelos ARCH.

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd.
Sitio web complementario: www.pfaffikus.de
MODELIZACIÓN DE LA 117
VOLATILIDAD
extensiones del modelo durante la década posterior al artículo original. Hoy en día,
los modelos ARCH no sólo están bien establecidos en la literatura académica, sino
que también se aplican ampliamente en el ámbito de la modelización del riesgo. En
esta sección, el término "ARCH" se utilizará tanto para el modelo ARCH
específico como para sus extensiones y modificaciones.
El punto de partida de los modelos ARCH es una ecuación de expectativas que
sólo se desvía de la regresión lineal clásica con respecto al supuesto de errores
independientes e idénticamente distribuidos con normalidad:
y = x′ 𝜷 + 𝜖 , (8.1)
t t t

𝜖t| Ψt−1 ∼ N(0, ht). (8.2)

Se supone que el proceso de error 𝜖t se distribuye normalmente, pero la varianza no


es constante, ya que se permite que cambie con el tiempo. Esta variabilidad de la
varianza se expresa como dependencia con respecto a la información disponible en
el tiempo t - 1, denotada por Ψt−1 . Una notación alternativa se encuentra
comúnmente en la literatura: √
𝜖t = 𝜂t ht, (8.3)
𝜂t ∼ 𝔇𝜈 (0, 1), (8.4)

donde 𝜂t denota una variable aleatoria con distribución 𝔇 con valor esperado cero
y varianza unitaria. Los parámetros adicionales de esta distribución se subsumen en
el vector de parámetros 𝜈. Esta notación es más general en el sentido de que ahora
ya no se requiere un proceso de error con distribución normal, sino distribuciones
con exceso no nulo
La curtosis y/o la asimetría pueden intercalarse. En la literatura se encuentra a
menudo la distribución t de Student, la distribución t de Student sesgada o la
distribución de error generalizada.
El segundo componente de los modelos ARCH es la ecuación de la varianza. En
un modelo ARCH de orden q, la varianza condicional se explica por la historia de
los errores al cuadrado hasta el desfase q:

ht = 𝛼0 + 𝛼1𝜖t-1+ - - + 𝛼 𝜖t-qq
2 2
, (8.5)

donde 𝛼0 > 0 y 𝛼i ≥ 0, i = 1, ... , q. Estas restricciones de los parámetros garantizan una


posi-
tivo de la varianza condicional. La inclusión de la información disponible hasta el
momento t - 1 se desprende de
𝜖t-i = yt-i - x′t-i 𝜷, i = 1, ... , q. (8.6)

Ya se puede deducir por qué esta clase de modelo puede captar el hecho
estilizado de la agrupación de la volatilidad: la varianza condicional se explica por
los errores de los períodos anteriores. Si estos errores son grandes en valor
absoluto, resulta un valor grande para la varianza condicional, y viceversa. A modo
de ilustración, la figura 8.1 muestra los gráficos de un proceso de ruido blanco y de
procesos ARCH(1) y ARCH(4) simulados.
Se observa un claro patrón de agrupación de la volatilidad para los procesos
ARCH(1) y ARCH(4), y es más pronunciado para este último. Se podría concluir
118 MODELIZACIÓN DE LA
VOLATILIDAD

que los dos procesos ARCH son más volátiles que el ruido blanco. Sin embargo,
todos los
MODELIZACIÓN DE LA 119
VOLATILIDAD
Ru 0
id 5
o
bl
-
an
10
co 0 1000 2000 3000 4000 5000

A 0
R 5
C
H( -
1) 10
0 1000 2000 3000 4000 5000

A 0
R 5
C
H( -
4) 10
0 1000 2000 3000 4000 5000

Figura 8.1 Gráficos de los procesos simulados de ruido blanco, ARCH(1) y ARCH(4).

se han simulado procesos que tienen varianzas incondicionales unitarias. Para un


proceso ARCH(1) la varianza incondicional viene dada por
𝜎 = E(𝜖2 ) =
2
, (8.7)
𝛼
0
𝜖 t
1 - 𝛼(1)

donde 𝛼(1) representa la suma de los coeficientes de los errores cuadrados


retardados. Los procesos de la figura 8.1 se han generado según ht = 0,1 + 0,9𝜖2 t
y ht = 0,1 + 0,36𝜖2 + 0,27𝜖
t-1
2
+ 0,18𝜖
t-2 + 0,09𝜖
2 2
t-3 t-4 para el ARCH(1) y
ARCH(4), respectivamente. Por lo tanto, para ambos modelos la varianza
incondicional es igual a la unidad. Obsérvese que el cuarto momento (es decir, la
curtosis) para los modelos ARCH(1),
( 2
)
E(𝜖t 4 1
1-
) = 𝛼 , (8.8)
3 1 - 3𝛼 1
2
4
𝜎𝜖

es mayor que 3 y, por tanto, tiene más masa de probabilidad en las colas que la
distribución normal. Esto es una prueba más de que con los modelos ARCH se
pueden captar bien los hechos estilizados de los rendimientos de los mercados
financieros.
Una vez analizado el modelo ARCH básico, nos centramos ahora en sus
modificaciones y ampliaciones. Bollerslev (1986) introdujo el modelo GARCH(p,
q) en la literatura. Éste difiere del modelo ARCH en la inclusión de variables
endógenas retardadas en la ecuación de la varianza, es decir, ahora la varianza
condicional no sólo depende de los errores cuadrados pasados, sino también de las
120 MODELIZACIÓN DE LA
VOLATILIDAD

varianzas condicionales retardadas:

ht = 𝛼0 + +---+𝛼 + t-1 +---+ t-p , (8.9)


𝛼1𝜖 2 𝜖2 𝛽1h 𝛽ph
MODELIZACIÓN DE LA 121
VOLATILIDAD
con las restricciones 𝛼0 > 0, 𝛼i ≥ 0 para i = 1, ... , q, y 𝛽i ≥ 0 para j = 1, ... , p tales
que el proceso de varianza condicional es estrictamente positivo. La ventaja de este
enfoque es que un modelo GARCH es lo mismo que un modelo ARCH con un
número infinito de rezagos, si las raíces del polinomio de rezago 1 - 𝛽(z) se
encuentran fuera del círculo unitario, por lo que es posible una especificación más
parsimoniosa cuando se utilizan especificaciones de tipo GARCH. La varianza
incondicional para un modelo GARCH(1, 1) viene dada por
2
𝜎 = E(𝜖2 ) =𝛼 0 . A partir de esto, la condición para un proceso de varianza estable puede
ser 1-𝛼1-𝛽1
𝜖 t
+
directamente deducido, es decir, 𝛼1 𝛽 1 < 1.
Hasta ahora se ha asumido que el signo del choque no tiene un impacto en la
varianza condicional. Esto se debe a que los errores pasados entran como
cuadrados en la ecuación de la varianza. Nelson (1991) amplió la clase de ARCH
para que fuera posible tener en cuenta este efecto. Propuso la clase de modelos
GARCH exponenciales (EGARCH) para capturar dichas asimetrías. La
modelización de los efectos asimétricos puede justificarse desde un punto de vista
económico con los efectos de apalancamiento, en particular cuando se investigan
los giros de las acciones. Para estos, se postula una relación negativa entre la
volatilidad y los rendimientos pasados (véase Black 1976). La ecuación de la
varianza adopta ahora la forma
q p
∑ 𝛼ig ∑ 𝛽j
log(ht) = 𝛼0 + (𝜂t-i) + log(ht-j), (8.10)
i=1 j=1

donde se emplea la especificación alternativa de los modelos ARCH introducida


anteriormente y la función g(𝜂t) se define como:
g(𝜂t ) = 𝜃𝜂t + 𝛾[ 𝜂t - E( 𝜂t )]. (8.11)
Este enfoque tiene algunas peculiaridades con respecto a la meticulosidad. En
primer lugar, se asume una relación multiplicativa para explicar las varianzas
condicionales. Esto se desprende de la forma logarítmica de la ecuación de la
varianza. Por lo tanto, no hay necesidad de restricciones de no negatividad en el
espacio de parámetros, 𝛼i, i = 1, ... , q y 𝛽j, j = 1, ... , p,
porque ht = exp (⋅) siempre será positivo. En segundo lugar, el impacto del error
es lineal a trozos y toma para un choque positivo un valor de 𝛼i(𝜃 + 𝛾) y para uno
negativo 𝛼i(𝜃 - 𝛾). Aquí aparece el impacto dependiente del signo de los errores
pasados con respecto a la varianza condicional contemporánea. El primer término,
g(𝜂t), en la ecuación representa la correlación entre el proceso de error 𝜂t y la
volatilidad condicional futura. Los efectos ARCH en sí mismos son capturados por
el coeficiente
𝛾. Cuanto mayor sea la desviación de la variable 𝜂t de su valor esperado, mayor
será el valor de la función g(𝜂t ) y, por tanto, del valor logarítmico de la varianza
condicional.
La última de las muchas extensiones del modelo ARCH que vamos a discutir es la
asimétrica
(APARCH) propuesto por Ding et al. (1993). La razón de esta elección es que el
modelo APARCH engloba otras especificaciones ARCH, como se mostrará a
continuación. Su ecuación de varianza se define como

𝜖t = 𝜂tht, (8.12)
122 MODELIZACIÓN DE LA
VOLATILIDAD

𝜂t ∼ 𝔇𝜈 (0, 1), (8.13)


MODELIZACIÓN DE LA 123
q VOLATILIDAD
p
∑ 𝛼i ∑ 𝛽jh
h𝛿t = 𝛼0 + (|𝜖t-i| - 𝛾i𝜖t-i)𝛿 + t-j ,
𝛿 (8.14)
i=1 j=1
con restricciones de parámetros 𝛼 > 0, 𝛿 ≥ 0, 𝛼 ≥ 0, i = 1, ... , q, -1 < 𝛾 < 1, i =
1, ... , q, y 𝛽 ≥ 0, i = 1, ... , p. Una
0
peculiaridadi de este enfoque para modelar
i
i
la varianza condicional es el exponente 𝛿. Para 𝛿 = 2 se obtiene la varianza
condicional, de forma similar a los modelos discutidos anteriormente. Pero el
parámetro se define para valores no negativos en general y, por lo tanto, la
característica de memoria larga que a menudo se encuentra en las series de
rentabilidad diaria absoluta y/o cuadrada puede tenerse en cuenta explícitamente.
La característica de la memoria larga puede describirse simplemente por el hecho
de que, en el caso de los rendimientos absolutos y/o cuadrados, las
autocorrelaciones disminuyen lentamente y, por lo tanto, existen dependencias
entre las observaciones que están más separadas. Las posibles asimetrías con
respecto a las perturbaciones positivas/negativas se reflejan en los coeficientes
𝛾i, i = 1, ... , q. El modelo APARCH incluye los siguientes casos especiales:
• Modelo ARCH, si 𝛿 = 2, 𝛾i = 0, y 𝛽j = 0;
• Modelo GARCH, si 𝛿 = 2 y 𝛾i = 0;
• TS-GARCH (véase Schwert 1990; Taylor 1986), si 𝛿 = 1 y 𝛾i = 0;
• GJR-GARCH (véase Glosten et al. 1993), si 𝛿 = 2;
• T-ARCH (véase Zakoian 1994), si 𝛿 = 1;
• N-ARCH (véase Higgins y Bera 1992), si 𝛾i = 0 y 𝛽j = 0;
• Log-ARCH (véase Geweke 1986; Pentula 1986), si 𝛿 → 0.

El lector se remite a las citas anteriores para obtener más detalles sobre estos casos
especiales. Las estimaciones de los parámetros desconocidos del modelo suelen
obtenerse aplicando el principio de máxima verosimilitud o de cuasi máxima
verosimilitud. En este caso, se aplican técnicas de optimización numérica. Menos
frecuentes son las técnicas de estimación bayesiana del parámetro desconocido en la
investigación aplicada. Una vez obtenido el ajuste del modelo, se pueden calcular
recursivamente las previsiones de las varianzas condicionales y deducir las medidas
de riesgo deseadas junto con los cuantiles de los supuestos.
distribución para el proceso de error a partir de estos.

8.3 Sinopsis de los paquetes de R


8.3.1 El paquete bayesGARCH
El paquete bayesGARCH implementa la estimación bayesiana de modelos
GARCH(1, 1) con innovaciones t de Student (véase Ardia 2008, 2009, 2015; Ardia
y Hoogerheide 2010; Nakatsuma 2000). El paquete está contenido en las vistas de
tareas de CRAN "Bayesian", "Finance" y "TimeSeries". Depende de los paquetes
mvtnorm y coda. Este último se utiliza para generar objetos MCMC que
124 MODELIZACIÓN DE LA
VOLATILIDAD
puede utilizarse para formar el muestreo posterior conjunto. Además,
bayesGARCH interactúa con rutinas escritas en C para calcular recursivamente las
varianzas condicionales. El paquete se entrega con un archivo NAMESPACE en el
que se exportan las dos funciones fundamentales bayesGARCH() y
formSmpl(). Incluye un archivo de demostración en el que se ejemplifica el uso
adecuado de las funciones, así como un conjunto de datos de rendimientos
continuos del marco alemán/la libra esterlina (DEM/GBP). En una viñeta se ofrece
una descripción del modelo, los factores a priori y el esquema MCMC
implementado.
Dentro de la llamada a bayesGARCH(), se pueden especificar las prioridades
para los coeficientes y las matrices de covarianza asociadas. Además, se pueden
proporcionar los hiperparámetros para la distribución exponencial traducida o el
parámetro de grados de libertad 𝜈 de la distribución t. Si los valores de éstos se
fijan en valores razonablemente altos, se obtiene un modelo con innovaciones
normales en el límite. Por último, se puede influir en la estimación proporcionando
un objeto de lista con elementos nombrados para el argumento de control de la
función. En este caso, se puede suministrar el número de cadenas de Markov
("n.chain"), la longitud de las cadenas ("l.chain"), los valores iniciales
("start.val"), las condiciones previas ("addPriorConditions") y los
elementos de la lista que determinan la forma del informe de estimación
(frecuencia de la misma ("refresh") y número de dígitos a imprimir
("digits")). Las condiciones previas deben proporcionarse en forma de una
función que devuelva los valores lógicos TRUE/FALSE.

8.3.2 El paquete ccgarch


Este paquete es uno de los tres en los que se pueden tratar los modelos GARCH
multivariantes. En particular, se implementa el enfoque de correlación condicional
para GARCH multivariante (CC-GARCH) (véase Nakatani 2014). El paquete está
contenido en la vista de tareas "Finance" de CRAN. Se entrega con un archivo
NAMESPACE. El paquete en sí es una colección de funciones y no emplea ni
métodos ni clases S3 ni S4. Normalmente, las funciones devuelven objetos de
lista y sus elementos pueden utilizarse como argumentos funcionales en otras
llamadas. Las rutinas de estimación, que suponen una carga computacional, se
interconectan desde el código C.
Los parámetros desconocidos de un modelo CC-GARCH se estiman utilizando
la función dcc.estimation(). Dentro de esta función se lleva a cabo el
procedimiento de estimación en dos pasos. También se puede acceder a cada uno
de estos estimadores y emplearlos de forma independiente mediante las funciones
dcc.estimation1() y dcc.estimation2(). Estas funciones devuelven
objetos de lista y sus elementos pueden utilizarse en el análisis posterior. Por
ejemplo, los errores estándar robustos de los parámetros del modelo pueden
devolverse con la función dcc.results(), proporcionando explícitamente los
argumentos necesarios. Del mismo modo, los valores de las log-verosimilitudes
pueden calcularse con las funciones loglik.dcc(), log- lik.dcc1() y
loglik.dcc2() para el modelo CC-GARCH, la optimización de la primera
etapa y la optimización de la segunda etapa, respectivamente. La condición de
estacionariedad de un modelo CC-GARCH empírico puede comprobarse utilizando
MODELIZACIÓN DE LA 125
la función stationarity(). Para las pruebas de diagnóstico, se implementan
VOLATILIDAD
las pruebas de causalidad propuestas por Hafner y Herwatz (2006) (hh.test())
y por Nakatani y Teräsvirta (2009) y Nakatani (2010) (nt.test()). La validez
de la
126 MODELIZACIÓN DE LA
VOLATILIDAD
El supuesto de normalidad puede evaluarse con la función jb.test(). En
ccgarch se incluyen rutinas para simular datos de acuerdo con parametrizaciones
CC-GARCH preespecificadas, a saber, dcc.sim() y eccc.sim(). Las
innovaciones pueden seguir la distribución normal o la t de Student. Sin embargo,
el paquete carece de una rutina para obtener previsiones de los modelos de tipo
CC-GARCH.

8.3.3 El paquete fGarch


El paquete fGarch forma parte del conjunto de paquetes Rmetrics (véase Würtz y
Chalabi 2013). Está contenido en las vistas de tareas "Finance" y "TimeSeries" de
CRAN y se considera un paquete principal en la primera. Este paquete es la
implementación más amplia de los modelos ARCH univariantes y sus extensiones.
Se interconecta con las rutinas FORTRAN para los cálculos más pesados desde el
punto de vista computacional. Dentro del paquete, se utilizan métodos y clases S4.
Como detalle técnico, se implementa un marco de pruebas unitarias basado en el
paquete RUnit (véase Burger et al. 2015).
La función fundamental para ajustar modelos de tipo ARCH es garchFit().
En esta función se especifican los modelos de media y varianza que se van a
utilizar en forma de fórmula. Actualmente, se pueden suministrar modelos
GARCH/APARCH puros en los que la ecuación de la media es un simple
intercepto, o se pueden estimar especificaciones más generales como los modelos
ARMA/GARCH o ARMA/APARCH. Las innovaciones pueden distribuirse según
la normal, la t de Student, la t de Student sesgada, el GEV o el GEV sesgado. La
maximización de la log-verosimilitud se realiza mediante optimizadores
numéricos. Aquí, el usuario puede elegir entre nlminb, lbfgsb, nlminb+nm y
lbfgsb+nm; en los dos últimos casos se emplea el optimizador Nelder-Meade en
una primera etapa. Las restricciones nulas pueden superponerse para los modelos
de tipo ARCH más complejos empleando las directivas include como banderas
lógicas para estos coeficientes. La función devuelve un objeto de la clase formal
fGARCH. Para los objetos de esta clase, se han definido los métodos coef(),
fitted(), formula(), initialize(), plot(), predict(),
residuals(), show(), summary() y update(). Los datos para los
modelos de tipo ARCH univariante pueden generarse con la función
garchSim(). Aquí, se puede especificar un modelo particular con la función
garchSpec() y el objeto devuelto se puede utilizar en las llamadas a esta
función.

8.3.4 El paquete GEVStableGarch


El paquete GEVStableGarch se ha añadido recientemente a CRAN (véase do
Rego Sousa et al. 2015). Aparece en las vistas de tareas "Finance" y "Time Series".
El paquete está escrito puramente en R y no emplea ni el esquema de
clases/métodos S3 ni el S4.
Al igual que fGarch, los modelos ARMA/GARCH y ARMA/APARCH pueden
ajustarse a los datos. Esto se consigue con la función GSgarch.Fit(). Aunque
el nombre del paquete implica que sólo se utiliza la distribución generalizada de
valores extremos para el término de error ("gev"), se puede especificar mediante
MODELIZACIÓN DE LA 127
el argumento cond.dist que el proceso de error se adhiera a la distribución
VOLATILIDAD
normal ("norm"), a la t de Student ("std"), a la t de Student sesgada ("sstd") o
a la estable ("stable"). Por lo tanto,
128 MODELIZACIÓN DE LA
VOLATILIDAD
Desde el punto de vista de la modelización, se puede lograr prácticamente lo mismo
que con la función garchFit() de fGarch. Para la estimación de los parámetros
desconocidos del modelo, el usuario puede elegir entre nlminb() o una línea de
optimización cuadrática secuencial, como se implementa en RSolnp (véase
Ghalanos y Theussl 2015; Ye 1987). El usuario es guiado en la selección de un
orden de retardo apropiado para los modelos ARMA/GARCH o ARMA/A-
PARCH llamando a la función GSgarch.FitAIC(). Aquí, uno proporciona
límites superiores para los órdenes de retardo y se devuelve el modelo con el AIC
mínimo. Finalmente, para un conjunto dado de estimaciones, se puede simular la
progresión del proceso de generación de datos (DGP) con la función
GSgarch.Sim().

8.3.5 El paquete gogarch


El paquete gogarch (véase Pfaff 2012) implementa el modelo GARCH ortogonal
generalizado (GOGARCH), un modelo GARCH múltiple propuesto por Boswijk y
van der Weide (2006); van der Weide (2002) y Boswijk y van der Weide (2009). El
paquete está contenido en las vistas de tareas "Finance" y "TimeSeries" de CRAN.
Utiliza clases y métodos formales de S4 y está escrito exclusivamente en R.
La función fundamental del paquete es gogarch(), que inicializa el modelo y
su especificación y realiza la estimación según los métodos elegidos. Los
parámetros desconocidos de un modelo GOGARCH pueden estimarse por máxima
verosimilitud, mínimos cuadrados no lineales, el método de los momentos, o
aplicando un análisis de componentes independientes mediante la función
fastICA() contenida en el paquete del mismo nombre. Una vez estimados los
parámetros desconocidos del modelo, el usuario puede proceder a emplear los
métodos indicados en la Tabla 8.1. La disponibilidad de los métodos depende en
parte de la técnica de estimación elegida. Sin embargo, independientemente de
esto, el usuario no sólo puede recuperar los valores ajustados, los residuales, los
coeficientes, las covarianzas y/o las correlaciones, sino que también puede obtener
un resumen del modelo ajustado. Además, el método pre-dict() permite
elaborar rápidamente las previsiones. Aunque hay bastantes métodos disponibles
en el paquete, el esfuerzo de codificación se reduce al mínimo definiendo los
métodos para la clase padre GOGARCH de forma que las clases hijas definidas
hereden los métodos haciendo uso de callNextMethod().

8.3.6 El paquete lgarch


El paquete lgarch se centra en la estimación y simulación de modelos log-GARCH
univariantes y multivariantes. El paquete ha sido recientemente contribuido a
CRAN está contenido en las vistas de tareas "Finanzas" y "Series temporales".
Dentro del paquete se utiliza el motor de clases/métodos S3. Los modelos Log-
GARCH pueden representarse en forma de un modelo (V)ARMA-X (véase Francq
y Sucarrat 2013; Sucarrat et al. 2013). Esta representación se elige para estimar los
parámetros desconocidos del modelo en el caso del método cuasi-ML. Los cálculos
de las recursiones necesarias que implica este enfoque se interconectan a partir de
rutinas escritas en C++, lo que permite una ejecución más rápida en comparación
MODELIZACIÓN DE LA 129
con una implementación pura en R. Como VOLATILIDAD
12
4
Tabla 8.1 Resumen del paquete gogarch.
M
Clases O
Métodos Goinit GoGARCH Goestica Goestmm Goestml Goestnls Gosum Gopredict Orthom D
EL
ángulos × IZ
ccor × × × × × × A
CI
ccov × × × × × × Ó
convergente × × × × × N
coef × × × × × D
cvar × × × × × × E
fórmula × × × × × L
logLik × A
V
M ×
O
parcela × × × × × L
predecir × × × × × A
imprimir × TI
residir × × × × × LI
residuos × × × × × D
mostrar × × × × × × × × × A
D
resumen × × × × ×
t ×
actualizaci × × × × ×
ón
MODELIZACIÓN DE LA 125
VOLATILIDAD
Como alternativa al QML, las estimaciones de los parámetros del modelo también
pueden determinarse aplicando mínimos cuadrados no lineales.
Los modelos log-GARCH univariantes se ajustan mediante la función
lgarch(). Esta función devuelve un objeto lista con el atributo de clase
lgarch. Se dispone de métodos para recuperar/extraer los coeficientes estimados
(coef()), los valores ajustados (fit- ted()), los residuos (residuals()),
la suma residual de los cuadrados (rss()), el valor de la log-verosimilitud
(logLik()), un resumen (summary()) y la matriz de varianza-covarianza de
los coeficientes (vcov()). Se pueden generar series simuladas llamando a
lgarchSim().
La función mlgarch puede emplearse para la estimación de modelos log-
GARCH multivariados en los que se superponen correlaciones condicionales
constantes entre los procesos de error. Las simulaciones para este tipo de DGP
multivariante y un conjunto dado de parámetros pueden calcularse con
mlgarchSim().

8.3.7 Los paquetes rugarch y rmgarch


En el paquete rugarch (véase Ghalanos 2015b), que se encuentra en las vistas de
tareas "Finanzas" y "Series temporales", se ofrece un conjunto bastante completo de
modelos de tipo GARCH para series univariantes. Se emplean clases y métodos S4
y el paquete se entrega con un archivo NAMESPACE. Las rutinas más pesadas
desde el punto de vista computacional se interconectan con las funciones de C++.
Esto se consigue con los paquetes Rcpp (Eddelbüttel y François 2011) y
RcppArmadillo (véase Eddelbüttel y Sanderson 2014), de los que depende este
paquete. Debido a la complejidad numérica y a la exigente tarea de ajustar los
modelos cubiertos a los datos, se dispone de funciones de envoltura que admiten
capacidades multinúcleo si los modelos se ajustan a más de una variable endógena.
El paquete se suministra con una viñeta en la que se explican las principales
capacidades y aplicaciones mediante ejemplos. En rugarch se incluyen cuatro
conjuntos de datos: una serie de rendimientos del índice Dow Jones (dji30ret),
una serie de rendimientos del índice S&P 500 (sp500ret), los rendimientos
diarios de apertura y cierre del SPDR S&P 500 y la volatilidad kernel realizada
(spyreal), tal como la utilizan Hansen et al. (2012), y una serie de tipos de
cambio al contado para DEM/GBP (dmbp), todos ellos diarios.
Un flujo de trabajo típico comenzaría especificando el tipo de modelo GARCH
con la función ugarchspec(). Esta función es similar en diseño y propósito a la
función garchSpec() de fGarch presentada anteriormente. Toma cinco
argumentos. El tipo de modelo de varianza se determina mediante un objeto de lista
para el argumento variance.model, la ecuación media se establece con el
argumento mean.model, y la distribución del proceso de error con el argumento
distribution.model. Los valores iniciales de los parámetros según estos tres
primeros argumentos, así como si alguno de ellos debe mantenerse fijo, pueden
controlarse con los argumentos start.pars y fixed.pars. La función
devuelve un objeto de la clase formal uGARCHspec.
Los objetos de esta clase pueden utilizarse para ajustar los datos a la
especificación elegida, lo que se consigue llamando a ugarchfit(). Aparte de un
uGARCHspec, que se pasa como argumento spec a la función, el conjunto de
126 MODELIZACIÓN DE LA
datosVOLATILIDAD
se pasa al cuerpo de la función como argumento data. Éste puede ser un
vector numérico, una matriz o un objeto data.frame, o uno de los objetos
específicos de la clase de series temporales: zoo, xts,
MODELIZACIÓN DE LA 127
VOLATILIDAD
timeSeries, o irts. La solución numérica del modelo puede ser determinada
por uno de los optimizadores nlminb(), solnp(), o gosolnp(), que es
establecido por el argumento solver. Los argumentos de control pertinentes a
estos solvers pueden ser pasados proporcionando un objeto de lista para el
argumento solver.control. Además, la conformidad de las restricciones de
estacionariedad, el cálculo de los errores estándar en el caso de los parámetros
fijos, y/o si los datos deben ser escalados antes de la optimización pueden
establecerse con el argumento fit.control. Una característica de la función es
el argumento out.sample. Aquí el usuario puede restringir el tamaño de la
muestra utilizada para el ajuste, dejando los n puntos de datos restantes disponibles
para las previsiones pseudo ex ante. La función ugarchfit() devuelve un objeto de
la clase S4 uGARCHfit. Esta clase tiene las ranuras fit para el modelo
ajustado y model para su especificación. Se definen un total de 22 métodos para
estos objetos, incluyendo extracciones de datos, visualización y análisis del modelo
ajustado, pruebas de diagnóstico y facilidades de trazado.
Las previsiones pueden generarse con la función ugarchforecast(). En este caso,
debe proporcionarse un modelo ajustado o un modelo especificado. Si se utiliza
este último, debe haberse establecido un conjunto válido de parámetros fijos y debe
pasarse a la función un conjunto de datos como argumento. El número de
períodos de previsión y/o si las previsiones deben derivarse de una ventana móvil
se determinan mediante los argumentos n.ahead y n.roll, respectivamente.
Si se especifican regresores exógenos en la ecuación de la media o de la varianza,
los valores de éstos deben suministrarse como un objeto de lista para ex-
ternal.forecast. La función de previsión devuelve un objeto de la clase S4
uGARCH-previsión, para el que se dispone de métodos de extracción de datos,
de trazado y de medición del rendimiento. Las bandas de confianza para las
previsiones pueden generarse mediante el boot- strapping, que se implementa como
función ugarchboot().
Además de utilizar un modelo ajustado con fines de previsión, la función ugarch-
sim() permite al usuario simular datos a partir de él. Los métodos de extracción
de datos, de visualización y de trazado se implementan para el objeto devuelto de
la clase uGARCHsim.
La función ugarchroll() se puede utilizar para realizar una prueba retrospectiva
del VaR de una serie de rendimientos/pérdidas. El usuario puede producir
rápidamente previsiones de VaR de un modelo GARCH y analizar los resultados
del objeto devuelto, que es de la clase uGARCHroll, con los métodos
proporcionados para la extracción de datos de los números de VaR, el trazado, la
presentación de informes, la comprobación del rendimiento de la previsión, y/o el
resumen de los resultados del back-test. La prueba retrospectiva puede llevarse a
cabo tanto para una ventana de extensión recursiva como para una ventana de
muestra móvil.
El usuario puede filtrar datos para una especificación de modelo determinada
utilizando la función ugarchfilter(). La función devuelve un objeto S4
uGARCHfilter para el que está disponible el mismo conjunto de métodos que en
el caso de los objetos uGARCHfit. Por lo tanto, el filtrado podría utilizarse, en
principio, para evaluar la solidez de los resultados, dados los diferentes valores de
los parámetros, y para comprobar si una especificación alternativa produce
resultados razonables.
128 MODELIZACIÓN DE LA
VOLATILIDAD
Por último, cabe señalar que el paquete contiene una rutina para la comparación
de resultados (ugarchbench()) y soporta el cálculo paralelo a través de las
funciones envolventes multispec(), multifit(), multifor- cast() y
multifilter(), como se ha mencionado anteriormente en esta subsección.
Un paquete complementario a rugarch del mismo autor es rmgarch Ghalanos
(2015a). Este paquete también aparece en la lista de CRAN Task Views on
"Finance" y
MODELIZACIÓN DE LA 129
VOLATILIDAD
"Time Series", y está dotado de una viñeta. En este paquete se implementan clases
y conceptos de modelos GARCH multivariados, a saber, los modelos GARCH de
correlación condicional dinámica (DCC) propuestos por Engle (2002), los modelos
GOGARCH y los modelos copula-GARCH. Este último concepto se presentará en
el capítulo 9, cuando se trate el concepto de cópula. Para cada uno de estos
modelos GARCH multivariantes se define un conjunto de clases y métodos S4. La
convención de nomenclatura es DCCfoo, goGARCHfoo y cGARCHfoo para los
tres modelos, donde foo sirve como marcador de posición para el propósito del
objeto: spec para la especificación, fit para el modelo ajustado, filter para
la solución de filtro de un modelo especificado, roll para una estimación rodante
del modelo, simulación de trayectorias a partir de una especificación de
modelo dada y forecast para contener las previsiones de un modelo. Así, se
han definido un total de 16 clases. Además de estas definiciones de clases, las
clases virtuales de las que heredan las específicas del modelo se definen como
mGARCHfoo. Los objetos de cada una de las clases se pueden crear llamando a las
funciones constructoras del mismo nombre que la clase S4, pero escritas en
minúsculas. Por ejemplo, un modelo DCC se especifica llamando a la función
dccsim(). El objeto resultante puede utilizarse para estimar los coeficientes
desconocidos invocando a dccfit().

8.3.8 El paquete tseries


El paquete tseries fue el primer paquete contribuido en CRAN en el que se
implementan principalmente modelos de series temporales y pruebas estadísticas
relacionadas (véase Trapletti y Hornik 2016). Su historia se remonta a finales de la
década de 1990. Está contenido en las vistas de tareas "Econo- métrica", "Finanzas",
"Series temporales" y "Environmetría", y es un paquete principal en las tres primeras
vistas. Dentro del paquete se emplean clases y métodos S3, y se entrega con un
archivo NAMESPACE.
Con respecto a los modelos ARCH, se proporciona la función garch(). Esta
función permite al usuario ajustar modelos GARCH a los datos. Se supone que los
errores se distribuyen normalmente. El orden del modelo GARCH se establece
mediante el argumento order. Este vector de dos elementos determina el número
de rezagos que se incluirán en el modelo, el primer elemento determina los rezagos
consecutivos para las varianzas condicionales rezagadas y el segundo elemento
determina el número de rezagos para los residuos al cuadrado. No es posible omitir
los rezagos intermedios ni para la parte GARCH ni para la parte ARCH. Las
estimaciones ML para los parámetros desconocidos del modelo se determinan
empleando un optimizador cuasi-Newton. Este optimizador está interconectado con
las rutinas de C/FORTRAN. Los argumentos específicos del optimizador pueden
proporcionarse a través de un objeto de lista, garch.control. El argumento
elipsis de garch() se pasa a la función qr(), que se emplea en el cálculo de
la matriz de covarianza asintótica. La función devuelve un objeto de lista con
el atributo de clase garch.
Para los objetos de este tipo, se definen los métodos print(), coef(),
vcov(), residuals(), fitted(), logLik(), plot() y predict().
El resultado de la estimación se devuelve con el primer método. Los valores de los
coeficientes estimados pueden extraerse con coef() y la matriz de varianza-
130 MODELIZACIÓN DE LA
VOLATILIDAD
covarianza asociada con vcov(). El valor de la log-verosimilitud se puede
recuperar con el método logLik(). Este método es útil para establecer pruebas de
cociente de verosimilitudes para los análisis estadísticos.
MODELIZACIÓN DE LA 131
VOLATILIDAD
discriminando entre modelos anidados. El método fitted() devuelve las ±
desviaciones estándar condicionales. La idoneidad de un orden GARCH
determinado puede investigarse gráficamente con el método plot(). Aquí, se
pueden devolver gráficos de series de tiempo de la propia serie y de los residuos,
así como un histograma, un gráfico QQ y una representación ACF de los mismos.
Finalmente, se pueden generar predicciones para las ± desviaciones estándar
condicionales con el método predict().

8.4 Aplicación empírica de los modelos de volatilidad


En esta sección se lleva a cabo una prueba retrospectiva del déficit esperado con un
nivel de confianza del 99% para los rendimientos diarios de la Bolsa de Nueva
York (NYSE). El código R se muestra en el listado 8.1. Este conjunto de datos es
un suplemento de la monografía de Stock y Wat- son (2007) y está contenido en el
paquete AER (véase Kleiber y Zeileis 2008).

Código R 8.1 Pérdida esperada derivada de los modelos GARCH(1, 1)


b i b l i o t e c a (AER) 1

b i b l i o t e c a ( f Garch ) 2

d a t a (NYSESW) 3

NYSELOSS <- t i m e S e r i e s ( -1,0 ∗ d i f f ( l o g (NYSESW) ) ∗ 100 , 4


c ha r . vec = t ime (NYSESW) ) 5

## F u n c i ó n para ES de t -GARCH 6

ESgarch <- f u n c i ó n ( y , p = 0 , 9 9 ) { 7

g f i t <- g a r c h F i t ( f o r m u l a =∼ ga rc h ( 1 , 1 ) , d a t a = y , 8

cond . d i s t = " s t d " , t r a c e = FALSE) 9

sigma <- p r e d i c t o ( g f i t , n . adelante = 1 ) [ 3 ] 10

df <- c oe f ( g f i t ) [ " shape " ] 11

ES <- sigma ∗ ( d t ( q t ( p , df ) , df ) / ( 1 - p) ) ∗ 12
( ( df + ( q t ( p , df ) ) ^ 2) / ( df - 1) ) 13

d e v o l v e r ( ES ) 14

} 15

## V e c t o r e s d e fecha para el b a c k t e s t 16

from <- time ( NYSELOSS) [ -c ( ( nrow ( NYSELOSS ) - 999) : 17

nrow ( NYSELOSS) ) ] 18

to <- tiempo ( NYSELOSS) [ -c ( 1 : 1 0 0 0 ) ] 19

NYSEES <- f a p l i a ( NYSELOSS , from = de , t o = a , FUN = ESgarch ) 20

NYSEESL1 <- l a g ( NYSEES , k = 1 ) 21

re s <- na . omit ( c b i n d ( NYSELOSS, NYSEESL1 ) ) 22

colnames ( r e s ) <- c ( "NYSELOSS" , " ES99 " ) 23

p l o t ( r e s [ , 2 ] , c o l = " r e d " , ylim = r a n g e ( r e s ) , 24

main = "NYSE : t -GARCH( 1 , 1 ) ES 99%" , 25

y l a b = " porcentajes " , x l a b = " " ) 26

p o i n t s ( r e s [ , 1 ] , t y p e = " p " , cex = 0 . 2 , pch = 19 , c o l = " b l u e " ) 27

l e ge n d ( " t o p l e f t " , l e ge nd = c ( " Loss " , " ES" ) , 28

c o l = c ( " b l u e " , " r e d " ) , l t y = c (NA, 1 ) , pch = c ( 1 9 , NA) ) 29


132 MODELIZACIÓN DE LA
VOLATILIDAD

po
rc 2
en
taj 0
es
-2

-4

1992-01-01 1996-01-01 2000-01-01 2004-01-01

Figura 8.2 Gráfico de la serie temporal de las pérdidas diarias de la Bolsa de


Nueva York.

La muestra va del 2 de enero de 1990 al 11 de noviembre de 2005 y contiene 4003


observaciones. Los paquetes necesarios y el conjunto de datos se cargan en el
espacio de trabajo con los tres primeros comandos del listado de código R. A
continuación, las pérdidas compuestas diarias se calculan como porcentajes y se
expresan como números positivos. Los hechos estilizados de esta serie son bastante
evidentes en la Figura 8.2.
Para realizar la prueba retrospectiva, se define la función ESgarch() en las
líneas 6-14. Dentro de esta función se estima primero un modelo GARCH(1, 1) con
un proceso de in- novación distribuido por la t de Student. A continuación, se
calcula la previsión de la desviación estándar condicional con un paso de
antelación, y el valor ajustado de los grados de libertad

NYSE: t-GARCH(1,1) ES 99%

10 Pérdi
da
ES

porcen
tajes
5

-5

0 500 1000 1500 2000 2500 3000

Figura 8.3 Comparación de las pérdidas diarias de NYSE y ES.


MODELIZACIÓN DE LA 133
VOLATILIDAD
se asigna al objeto df. A continuación se calcula el déficit esperado para el nivel
de confianza por defecto de p = 0,99. Por cierto, la ecuación de la media de este
modelo GARCH consiste únicamente en una constante y se omite en el cálculo del
ES. Dado que su estimación representa la media de la serie que es empíricamente
cercana a cero, puede descartarse con seguridad del cálculo del ES. La prueba
retrospectiva se lleva a cabo utilizando una ventana deslizante con 1000
observaciones. La función fapply() es muy útil para realizar este tipo de
pruebas retrospectivas. Se crean dos vectores de fechas en los que se almacenan las
fechas de inicio y fin de esta ventana móvil en el tiempo. En la siguiente línea la
función fapply() llamará a ESgarch() con las submuestras de las pérdidas
según los valores de fecha contenidos en los objetos desde y hasta. Hay que
tener en cuenta que los números ES están ahora asociados a los valores de fecha de
from. Pero estas medidas de riesgo condicional pertenecen al siguiente día de
negociación y, por lo tanto, las series deben retrasarse un período (objeto
NYSEESL1) para compararlas con las pérdidas reales. Por lo tanto, el tamaño de la
prueba retrospectiva consta de 3001 pares de medidas de riesgo-pérdidas. Una
comparación gráfica de las pérdidas reales y el ES condicional para un 99% de
nivel de confianza se produce en las líneas finales. El resultado se muestra en la figura 8.3.
Esta medida de riesgo condicional no sólo capta bastante bien los picos de las
pérdidas diarias, sino que además el nivel de la medida de riesgo disminuye
rápidamente durante los periodos más tranquilos. Durante esta simulación de
prueba retrospectiva sólo se produjeron cinco infracciones. Se trata de una medida
demasiado conservadora, dado que cabe esperar unos 15 excesos.

Referencias
Ardia D. 2008 Financial Risk Management with Bayesian Estimation of GARCH Models: The-
ory and Applications vol. 612 of Lecture Notes in Economics and Mathematical Systems.
Springer-Verlag, Berlín, Alemania.
Ardia D. 2009 Estimación bayesiana de un modelo GARCH asimétrico de umbral de
conmutación de Markov con innovaciones de Student-t. Econometrics Journal 12(1),
105-126.
Ardia D. 2015 bayesGARCH: Bayesian Estimation of the GARCH(1,1) Model with Student-t
Innovations in R. Version 2.0.2.
Ardia D. y Hoogerheide L. 2010 Estimación bayesiana del modelo GARCH(1,1) con
innovaciones Student-t. The R Journal 2(2), 41-47. URL http://journal.r-project.org/.
Bera A. y Higgins H. 1993 Modelos ARCH: Propiedades, estimación y pruebas. Journal of
Economic Surveys 7(4), 305-362.
Black F. 1976 Studies of stock price volatility changes Proceedings of the 1976 Meeting of
Business and Economics Statistics Section, pp. 177-181 American Statistical Association.
Bollerslev T. 1986 Heteroscedasticidad condicional autorregresiva generalizada. Journal of
Econometría 31, 307-327.
Bollerslev T., Chou R. y Kramer K. 1992 Arch modeling in finance. Journal of Econometrics
52, 5-59.
Boswijk H. P. y van der Weide R. 2006 Wake me up before you GO-GARCH. Discussion
Paper TI 2006-079/4, Universidad de Amsterdam e Instituto Tinbergen, Amsterdam.
Boswijk H. P. y van der Weide R. 2009 Method of moments estimation of GO-GARCH
models. Documento de trabajo, Universidad de Ámsterdam e Instituto Tinbergen y Banco
134 MODELIZACIÓN DE LA
VOLATILIDAD
Mundial, Ámsterdam.
MODELIZACIÓN DE LA 135
VOLATILIDAD
Burger M., Jünemann K. y König T. 2015 RUnit:R Unit Test Framework. Paquete R versión 0.4.31.
Ding Z., Granger C. y Engle R. 1993 A long memory property of stock market returns and a
new model. Journal of Empirical Finance 1, 83-106.
do Rego Sousa T., Otiniano C., y Lopes S. 2015 GEVStableGarch. Paquete R versión 1.1.
Eddelbüttel D. y François R. 2011 Rcpp: Integración perfecta de R y C++. Journal of Sta-
tistical Software 40(8), 1-18.
Eddelbüttel D. y Sanderson C. 2014 RcppArmadillo: Aceleración de R con álgebra lineal C++
de alto rendimiento. Computational Statistics and Data Analysis 71, 1054-1063.
Engle R. 1982 Heteroscedasticidad condicional autorregresiva con estimaciones de la varianza de
la inflación del Reino Unido. Econometrica 50(4), 987-1007.
Engle R. 2002 Correlación condicional dinámica. Journal of Business & Economic Statistics
20(3), 339-350.
Engle R. y Bollerslev T. 1986 Modelling the persistence of conditional variances. Econo-
metric Reviews 5, 1-50.
Francq C. y Sucarrat G. 2013 An exponential chi-squared QMLE for log-GARCH models
via the ARMA representation. Documento de trabajo 51783, Universidad de Múnich,
Múnich.
Geweke J. 1986 Modelización de la persistencia de las varianzas condicionales: Un comentario.
Econometric Reviews 5, 57-61.
Ghalanos A. 2015a rmgarch: Multivariate GARCH models. Paquete R versión 1.3-0.
Ghalanos A. 2015b rugarch: Univariate GARCH models. Paquete R versión 1.3-6.
Ghalanos A. y Theussl S. 2015 Rsolnp: Optimización general no lineal mediante el método del
multiplicador de Lagrange aumentado. Paquete R versión 1.16.
Glosten L., Jagannathan R. y Runkle D. 1993 On the relation between expected value and
the volatility of the nominal excess return on stocks. Journal of Finance 48, 1779-1801.
Hafner C. y Herwatz H. 2006 A Lagrange multiplier test for causality in variance. Economía
Cartas 93(1), 137-141.
Hansen P., Huang R. y Shek H. 2012 Realized GARCH: a joint model for returns and real-
ized measures of volatility. Journal of Applied Econometrics 27(6), 877-906.
Higgins M. y Bera A. 1992 A class of nonlinear ARCH models. International Economic
Review 33, 137-158.
Kleiber C. y Zeileis A. 2008 Applied Econometrics with R. Springer-Verlag, Nueva York.
Nakatani T. 2010 Four Essays on Building Conditional Correlation GARCH Models Tesis doctoral
Escuela de Economía de Estocolmo.
Nakatani T. 2014 ccgarch: An R Package for Modelling Multivariate GARCH Models with
Conditional Correlations. Paquete R versión 0.2.3.
Nakatani T. y Teräsvirta T. 2009 Testing for volatility interactions in the constant conditional
correlation GARCH model. Econometrics Journal 12(1), 147-163.
Nakatsuma T. 2000 Análisis bayesiano de modelos ARMA-GARCH: A markov chain sampling
approach. Journal of Econometrics 95(1), 57-69.
Nelson D. 1991 Heteroscedasticidad condicional en los rendimientos de los activos: Un nuevo enfoque.
Econometrica
59(2), 347-370.
Pentula S. 1986 Modelización de la persistencia de las varianzas condicionales: Un comentario.
Econometric Reviews 5, 71-74.
136 MODELIZACIÓN DE LA
VOLATILIDAD
Pfaff B. 2012 gogarch: Modelos GARCH ortogonales generalizados (GO-GARCH). Paquete R
versión 0.7-2.
Schwert G. 1990 Stock volatility and the crash of '87. Review of Financial Studies 3(1), 77-102.
Stock J. y Watson M. 2007 Introduction to Econometrics. Addison Wesley, Boston.
Sucarrat G., Gronneberg S., y Escribano A. 2013 Estimación e inferencia en modelos log-
GARCH univariantes y multivariantes cuando la densidad condicional es desconocida.
Documento de trabajo 49344, Universidad de Munich, Munich.
Taylor S. 1986 Modeling Financial Time Series. John Wiley, Nueva York.
Trapletti A. y Hornik K. 2016 tseries: Análisis de series temporales y finanzas
computacionales. Paquete R versión 0.10-35.
van der Weide R. 2002 GO-GARCH: Un modelo GARCH generalizado multivariado.
Journal of Applied Econometrics 17(5), 549-564.
Würtz D. y Chalabi Y. 2013 fGarch: Rmetrics-Autoregressive Conditional Heteroskedastic
Modelling. Paquete R versión 3010.82.
Ye Y. 1987 Interior Algorithms for Linear, Quadratic, and Linearly Constrained Non-Linear
Programming PhD thesis Department of ESS, Stanford University.
Zakoian J. 1994 Threshold heteroscedasticity models. Journal of Economic Dynamics and
Control 15, 931-955.
9

Modelización de la dependencia

9.1 Resumen
En los capítulos anteriores se han presentado alternativas al modelo gaussiano para
evaluar los riesgos de los precios de mercado de los instrumentos financieros
individuales. Las pérdidas potenciales derivadas de mantener una posición en un
activo se interpretaron como una variable aleatoria, y se derivaron medidas de
riesgo tanto incondicionales como condicionales.
En este capítulo se aborda el tema de la modelización del riesgo financiero en el
contexto de los instrumentos financieros múltiples. En el apartado 9.2 se presenta
el coeficiente de correlación entre dos activos y se investiga su idoneidad como
medida de dependencia entre dos activos. En la sección 9.3 se analizan medidas
alternativas de dependencia, a saber, el uso de correlaciones de rango y el concepto
de cópula. La sección 9.4 ofrece una sinopsis de los paquetes de R que incluyen
específicamente la modelización de cópulas. Por último, la sección 9.5 muestra
cómo los modelos de cópula pueden combinarse de forma fructífera con las
técnicas descritas en los capítulos 6-8. En particular, se propone un modelo de
cópula-GARCH para medir el riesgo de mercado de una cartera.

9.2 Correlación, dependencia y distribuciones


El cálculo y el uso del coeficiente de correlación de Pearson es bastante
omnipresente en el análisis cuantitativo de los mercados financieros. Sin embargo,
los investigadores cuantitativos aplicados a menudo no son conscientes de las
dificultades que conlleva la aplicación y el uso descuidado de las correlaciones
como medida de riesgo. Por lo tanto, es conveniente investigar este concepto de
pendencia con cierto detalle y señalar las deficiencias de esta medida.

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd. Sitio
web complementario: www.pfaffikus.de
134 MODELIZACIÓN DE LA
DEPENDENCIA
El coeficiente de correlación de Pearson entre dos variables aleatorias X1 y X2 con
varianzas finitas se define como
𝜌(X , X ) = COV(X1X , 2) , (9.1)
1 2 √VAR
(X )√VAR(X
1
)2

donde COV(X1, X2) = E((X1 - E(X1))(X2 - E(X2)) denota la covarianza entre las
variables aleatorias y VAR(X1 ) y VAR(X2 ) son sus varianzas, respectivamente.
Como se desprende de (9.1), el coeficiente de correlación es una medida escalar.
En el caso
de una dependencia lineal perfecta el valor de esta medida es 𝜌(X1 , X2 ) =| 1 , donde
la dependencia lineal perfecta viene dada por X2 = 𝛽 + 𝛼X1 , con 𝛼 ∈ ℝ\0,| 𝛽 ∈ ℝ, o
bien el coeficiente de correlación puede tomar valores en el intervalo -1 < 𝜌(X1 , X2
)<
1. Además, el coeficiente de correlación lineal es invariante con respecto a las
transformaciones lineales afines de las variables aleatorias X1 y X2: 𝜌(𝛼1X1 + 𝛽1,
𝛼2X2 + 𝛽2) = signum(𝛼1𝛼2)𝜌{X1, X2} para 𝛼1, 𝛼2 ∈ ℝ\0, 𝛽1, 𝛽2 ∈ ℝ.
Por lo tanto, el coeficiente de correlación de Pearson representa la fuerza de una relación
lineal.
entre dos variables aleatorias. El razonamiento lógico de que 𝜌(X1 , X2 ) = 0 implica
la independencia entre X1 y X2 sólo es válido en el caso de variables aleatorias con
distribución elíptica multivariante. Dicho de otro modo, la falta de correlación es
sólo una condición suficiente para la independencia y sólo en el caso de las
distribuciones elípticas pueden utilizarse los dos conceptos indistintamente. Las
distribuciones elípticas se caracterizan porque los puntos de la función de densidad
que arrojan los mismos valores representan una elipse; es decir, los cortes
horizontales de la masa de probabilidad tienen forma elíptica.
La implicación para la modelización del riesgo multivariante es que sólo en el
caso de factores de riesgo distribuidos conjuntamente de forma elíptica puede
captarse adecuadamente la dependencia entre ellos mediante el coeficiente de
correlación lineal. Teniendo en cuenta los hechos estilizados de los rendimientos de
los mercados financieros, este supuesto apenas se cumple. Cabe señalar en este punto
que, con respecto a la modelización del riesgo, uno suele estar más preocupado por
la estructura de dependencia en la cola de una distribución de pérdidas
multivariable que por una evaluación de la dependencia global, pero una medida de
correlación sólo representa esto último, en principio.
Además, el coeficiente de correlación lineal no es invariable con respecto a
variables aleatorias no lineales (por ejemplo, transformadas en logaritmos), o si
existe una dependencia no lineal (por ejemplo, cuadrática o cúbica) entre las
variables. Este hecho se ilustrará con los dos ejemplos siguientes.
En primer lugar, se investiga una variable aleatoria normal estandarizada X1 ∼
N(0, 1) con depen-
1
dencia cuadrática X2 = X2 . Entre estas dos variables es evidente
una relación directa; para una realización dada x1 de X1 se puede concluir el valor
de x2 . Sin embargo, si se calcula el coeficiente de correlación lineal entre estas dos
variables,
el resultado sería COV(X1, X2) = E(X1 ⋅ (X2 - 1)) = E(X3 ) - E(X1) = 0, porque
1 1
la asimetría de las variables aleatorias distribuidas normalmente es cero.
El propósito del segundo ejemplo es resaltar el hecho de que la correlación co-
eficiente depende de las distribuciones marginales de las variables aleatorias en

≤ ≤
MODELIZACIÓN DE LA 135
DEPENDENCIA
cuestión y la posibilidad de que el coeficiente de correlación no pueda tomar todos
los valores en el inter- val -1 𝜌 1 si se ve la distribución multivariada de estas
variables aleatorias.
136 MODELIZACIÓN DE LA
DEPENDENCIA
Dadas dos variables aleatorias log-normales X1 ∼ log N(0, 1) y X2 ∼ log N(0, 𝜎2 )
con 𝜎 > 0, el rango factible de valores para el coeficiente de correlación tiene un
límite inferior de 𝜌 m i n = 𝜌(eZ , e−𝜎Z ) y un límite superior de 𝜌 m a x = 𝜌(eZ , e𝜎Z
), donde Z ∼ N(0, 1). El signo del exponente depende de si las variables aleatorias
se mueven en la misma dirección o en direcciones opuestas. En el primer caso
resulta una dependencia positiva (co-monotonicidad), y en el segundo una negativa
(contra-monotonicidad). Por tanto, el límite inferior del coeficiente de correlación
viene dado por
e−𝜎 - 1
𝜌min = √ (9.2)
(e - 1)(e𝜎2 - 1)
y el límite superior viene determinado por
e𝜎 - 1
𝜌max = √ . (9.3)
(e - 1)(e𝜎2 - 1)

Como es evidente a partir de (9.2) y (9.3), estos límites dependen sólo de la


varianza de la distribución marginal de X2 . Aquí, el límite inferior es mayor que -1
y el límite superior coincide con el caso de dependencia perfecta sólo cuando 𝜎 = 1,
y es menor que 1 en todos los demás casos. Por cierto, con una varianza cada vez
mayor el coeficiente de correlación se aproxima a cero.
Con respecto a la modelización del riesgo, se pueden extraer las siguientes
conclusiones. Por ejemplo, un coeficiente de correlación tan alto como 0,2 sólo
indicaría una relación débil entre dos factores de riesgo. De hecho, lo contrario
puede ser cierto y, por tanto, una ganancia tentativa de diversificación en el
contexto de una cartera es nula cuando se asigna el capital a los activos respectivos.
Por el contrario, la información de un coeficiente de correlación tan alto como 0,7
entre dos factores de riesgo distribuidos log-normalmente con valores esperados de
cero y varianzas de 1 y 4, respectivamente, es nula. Si estas dos variantes aleatorias
se distribuyen conjuntamente, no se puede alcanzar un valor tan alto del coeficiente
de correlación.
En resumen, la dependencia entre instrumentos financieros sólo puede
representarse correctamente con el coeficiente de correlación lineal si éstos se
distribuyen conjuntamente de forma elíptica. También se ha demostrado que el
valor del coeficiente de correlación depende de las distribuciones marginales y que
no todos los valores en el rango [-1, 1] son alcanzables. En particular, una
dependencia positiva perfecta entre dos variables aleatorias no es inter- cambiable
con un coeficiente de correlación de uno, sino que el valor puede ser mucho menor
y en el límite se obtiene un valor de cero. A la inversa, un coeficiente de
correlación de cero no permite concluir la independencia. Este razonamiento sólo
es válido en el caso de distribuciones conjuntamente elípticas. Por último, pero no
por ello menos importante, hay que señalar que el coeficiente de correlación lineal
sólo está definido para pares de variables aleatorias con varianza fi- nita. Este
supuesto puede ser violado para factores de riesgo con grandes masas de
probabilidad situadas en las colas. En consecuencia, se hace necesaria la aplicación
de conceptos alternativos para medir la dependencia entre los factores de riesgo.
Además de los coeficientes de correlación de rango de Kendall y Spearman, el
concepto de cópula es una vía prometedora. Los métodos se presentarán en la
MODELIZACIÓN DE LA 137
DEPENDENCIA

siguiente sección.
138 MODELIZACIÓN DE LA
DEPENDENCIA
9.3 Copulae
9.3.1 Motivación
El enfoque de la cópula fue introducido por Sklar (1959). Se pueden encontrar
exposiciones detalladas en los libros de texto de Schweizer y Sklar (1983), Nelsen
(2006), Joe (1997) y McNeil et al. (2005). Sin embargo, sólo desde mediados de la
década de 1990 se han utilizado las cópulas como herramienta para modelizar las
dependencias entre activos en las finanzas empíricas. La palabra "cópula" deriva
del verbo latino copulare y significa "enlazar" o "atar". Lo que se vincula
exactamente con una cópula será el tema del resto de esta subsección.
Las distribuciones marginales de las variables aleatorias distribuidas
conjuntamente, así como su dependencia, están contenidas en su función de
distribución conjunta,

F(x1 , ... , x d) = P[X1≤ x ,1... , X ≤d x ]. d (9.4)

En el apartado anterior se ha demostrado que en el caso de las variables aleatorias


normales el valor del coeficiente de correlación depende de las distribuciones
marginales. Esta medida puede tomar valores inferiores a 1 incluso si existe una
dependencia perfecta entre las dos variables aleatorias. Por lo tanto, es necesario
separar las distribuciones marginales de la estructura de dependencia entre las
variables aleatorias. Esta separación puede lograrse mediante una cópula.
Para ello se requiere una transformación a lo largo de los elementos del
v e c t o r aleatorio X = (X1 , ... , Xd ), de forma que las variables resultantes
sigan una distribución uniforme U(0, 1). Dada la suposición de que todas las
funciones de distribución F1 , ... , Fn del vector aleatorio X son continuas, esta
proyección viene dada por la integral de probabilidad ℝd →ℝd , (x1, ... , xn)t →
(F1(x1), ... , Fd (xd ))t. La función de densidad conjunta C
de las variables aleatorias transformadas (F1(x1), ... , Fd (xd ))t es la cópula del vector
X = (X1 , ... , Xd ):

F(x1, ... , x d) = P[F1(X


1 ) ≤ F 1(x
1 ), ... , F d(X d) ≤ F d(x
d )] (9.5)
= C(Fd (xd ), ... , Fd (xd )). (9.6)

Por lo tanto, una cópula es la función de distribución en el espacio ℝd de un


vector aleatorio de d elementos con distribuciones marginales uniformes estándar
U(0, 1). Alternativamente, una cópula
puede interpretarse como una función que mapea desde el espacio d-dimensional
[0, 1]d al intervalo unitario: C ∶ [0, 1]d →[0, 1]. En esta interpretación debendarseotras
condiciones
ser cumplida por la función C para calificarla como cópula. La estructura de dependencia
del vector aleatorio X se plasma en la cópula. Si las distribuciones marginales son
continua, entonces la cópula está definida de forma única. Por lo tanto, es posible
emplear diferentes distribuciones para las variables aleatorias (es decir, los factores
de riesgo) como marginales y capturar las dependencias entre ellas con una cópula.
En principio, todas las distribuciones introducidas anteriormente se clasificarían
MODELIZACIÓN DE LA 139
DEPENDENCIA
como candidatos potenciales para modelar los factores de riesgo en la función de
pérdida de una cartera.
140 MODELIZACIÓN DE LA
DEPENDENCIA
9.3.2 Correlación y dependencia revisadas
En la sección 9.2 se demostró que el coeficiente de correlación lineal no capta bien
las dependencias en el caso de variables aleatorias no distribuidas elípticamente.
Además, aunque esta medida representa la dependencia global, en la evaluación del
riesgo de una cartera lo que más importa es la dependencia en la cola de la
distribución conjunta. Por lo tanto, en esta subsección se introducen otros dos
conceptos para captar la dependencia entre los factores de riesgo, a saber, la
concordancia y la dependencia de la cola. El primer concepto implica los
coeficientes de correlación de rango de Kendall y Spearman.
El concepto de concordancia se ilustrará con el siguiente ejemplo. Supongamos
que tenemos dos realizaciones (xi, yi) y (xj, yj) de un vector aleatorio bidimensional (X,
Y). Si uno traza estos dos puntos en un sistema de coordenadas cartesianas y los une
mediante una línea, se dice que existe una dependencia positiva si la línea tiene una
pendiente ascendente (concordancia) y
una negativa prevalece si la línea se inclina hacia abajo (discordancia). De forma
equivalente, si se calcula el producto de las diferencias entre pares (xi - xj)(yi - yj)
se obtiene concordancia si el resultado es positivo y discordancia si el resultado es
negativo. Ahora se supone que los vectores aleatorios continuos e independientes
(X1, Y1) y (X2, Y2)
tienen cada una funciones de densidad conjunta H1 y H2 con cópulas C1 y C2.
Sea Q la diferencia de probabilidad para los casos de concordancia y discordancia
de (X1 , Y1 )
y (X2 , Y2 ):

Q = P((X1 - X2)(Y1 - Y2) > 0) - P((X1 - X2)(Y1 - Y2) < 0). (9.7)
La expresión de la probabilidad de (9.7) puede expresarse en términos de
cópulas. Se puede encontrar una derivación detallada en Genest y Favre (2007).
1 1

Q = Q(C1 , C2 ) = 4∫ ∫0 C2(u, 𝑣) dC1(u, 𝑣) - 1. (9.8)


0

Si los dos vectores aleatorios comparten la misma dependencia, entonces (9.8)


puede simplificarse a:
1 1
Q = Q(C1 , C2 ) = 4∫ ∫0 C(u, 𝑣) dC(u, 𝑣) - 1. (9.9)
0

El coeficiente de correlación de rangos de Kendall, denominado "tau" y denotado por


𝜌 𝜏 , se define como
𝜌𝜏 (X1, X2) ∶= E[sign((X1 - X2)(Y1 - Y2))], (9.10)
donde E denota el operador de expectativa. La definición de la tau de Kendall en
(9.10) es idéntica a la expresión de probabilidad de (9.7). Por tanto, la tau de
Kendall puede interpretarse como una integral de probabilidad de las cópulas
(véanse (9.8) y (9.9)) y sólo depende de éstas. Al igual que el coeficiente de
correlación lineal, la tau de Kendall es invariante con respecto a las
transformaciones monótonas de las variables aleatorias y mide una dependencia
global entre ellas. A diferencia del coeficiente de correlación lineal, las relaciones
de rango son menos sensibles a los valores atípicos o a las observaciones extremas.
Además, se puede demostrar que para cópulas elípticas 𝜌 (X , X ) =2 arcsin 𝜌,
MODELIZACIÓN DE LA 141
DEPENDENCIA

donde 𝜌 denota el coeficiente de Pearson


𝜏 1 2 𝜋
coeficiente de
correlación.
142 MODELIZACIÓN DE LA
DEPENDENCIA
Ahora pasamos al coeficiente de correlación de rango de Spearman, 𝜌s. Este
coeficiente se define para el caso bivariante como 𝜌s = COR(F1(X1), F2(X2)). La
dependencia de una cópula puede expresarse de forma análoga a la de la tau de
Kendall mostrada anteriormente:
1 1
𝜌s(X1, X2) = 12
∫0 ∫0 C(u, 𝑣) du d𝑣 - 3. (9.11)

Entre las correlaciones de Spearman y de Pearson existe la siguiente relación:


𝜌s(X1, X2) =6 arcsin𝜌 . La diferencia entre los dos conceptos podría parecer
𝜋 2
despreciable, pero el coeficiente de correlación de rango de Spearman posee la
característica de que E(𝜌s) = ±1 si existe una relación funcional entre las dos
variables aleatorias (en este caso la cópula coincidiría con uno de los dos límites de
Fréchet-Hoeffding). Por el contrario, E(𝜌p) = ±1 sólo se mantiene para una
relación lineal entre las dos variables aleatorias. Además, 𝜌s es un parámetro de
distribución y como tal siempre está definido. Sin embargo, 𝜌p de Pearson no puede
derivarse teóricamente de todas las distribuciones. Una alternativa al concepto de
concordancia y a las correlaciones de rango para modelar las de- pendencias es el
concepto de dependencias de cola, que es de gran importancia en la evaluación del
riesgo de una cartera. La medida de dependencia se centra únicamente en las colas
de la distribución conjunta. Por lo tanto, es posible determinar la probabilidad de
que para una pérdida determinada en un instrumento financiero se produzca una
pérdida equivalente o incluso mayor
ocurren en una segunda explotación. Formalmente, las dependencias de cola superior e
inferior para dos variables aleatorias (X, Y) con distribuciones marginales FX y FY se
definen como
𝜆 = lim P(Y > F−1 (q) X > F−1 (q)), (9.12a)
u Y | X
q1

𝜆l = lim P(Y ≤ F−Y1 (q)| X ≤ F−X1 (q)). (9.12b)


q↘0

En otras palabras, la dependencia de la cola es una expresión de probabilidad


condicional, es decir, la probabilidad de observar un valor grande (pequeño) de Y,
dado un valor grande (pequeño) de
X. Si 𝜆u > 0 entonces hay dependencia en la cola superior entre las dos variables
aleatorias, y si 𝜆 l > 0 entonces hay dependencia en la cola inferior. Para los casos
de 𝜆 u = 0 o 𝜆 l = 0, se dice que (X, Y) son asintóticamente independientes en el
extremo superior o inferior de la distribución. Según la fórmula de Bayes, las
dependencias de cola para las funciones de distribución continua vienen dadas
como
P(Y ≤ F−1 (q) X ≤ F−1 (q))
Y | X
𝜆l = lim
q↘ P(X ≤ F−X1
0
(q))
C(q, q) (9.13)
= lim
q↘0 q
para el coeficiente de dependencia de la cola inferior, y
análogamente
(9.14)
𝜆u = 2 + lim C(1 - q, 1 - q) - 1
MODELIZACIÓN DE LA 143
DEPENDENCIA

q↘0 q
para el coeficiente de dependencia de la cola superior.
144 MODELIZACIÓN DE LA
DEPENDENCIA
9.3.3 Clasificación de las cópulas
En las dos subsecciones anteriores se ha ofrecido un breve resumen del concepto
de cópula y su relación con las correlaciones de rango. En esta subsección se
presentan las cópulas de manera más formal y se describe su clasificación en
subcategorías. Se mostrará cómo se puede deducir de ellas la dependencia de la cola
como medida de riesgo. No es el objetivo de este libro proporcionar una exposición
detallada de las cópulas; el objetivo es más bien comprender mejor el concepto
subyacente y aplicar las cópulas como una herramienta para modelar las
dependencias. En Joe (1997) y Nelsen (2006) se pueden encontrar exposiciones
detalladas en los libros de texto.
En general, una cópula se expresa en forma de función de densidad multivariante
u1 ud
C(u) = P(U1 ≤ u1, U2 ≤ u2, ... , Ud ≤ ud ) = --- c(u) du, (9.15)
∫0 ∫0

donde u es un vector aleatorio d-dimensional.


La forma implícita de una cópula para una función de distribución continua F
con distribuciones marginales continuas F1 , ... , Fd puede, por tanto, escribirse
como
f (F−1 (u1), ... , F−1 (ud ))
C(u) = f1(F−11 (u1)) - - fd (F
d
−1 (ud )) . (9.16)
1 d

De forma equivalente, (9.16) puede escribirse como


f (x1, ... , xd )
c(F (x ), ... , F (x )) = . (9.17)
11 dd
f1(x1) - - - fd (xd )
Como se puede ver en esta ecuación, una función de densidad d-dimensional se
puede representar como una concatenación multiplicativa de la cópula con las
distribuciones marginales.
Anteriormente se demostró que una cópula debe cumplir ciertas condiciones con
respecto a su dominio. Estos límites de Fréchet-Hoeffding se introdujeron también
en el contexto del coeficiente de correlación lineal para variables aleatorias
distribuidas normalmente de forma conjunta. Estos límites se derivarán ahora para
cópulas arbitrarias. Se suponen dos variables aleatorias uniformemente distribuidas
U1 y U2 . Entre estas dos variables se pueden distinguir tres casos extremos de
dependencia: concordancia, independencia y discordancia. En primer lugar, se
investigará el caso de dependencia positiva perfecta (por ejemplo, U1 = U2 ). La
cópula para este caso podría escribirse como
C(u , u ) = P(U ≤ u , U ≤ u ) = min(u , u ). (9.18)
12 1 1 1 2 12

La cópula también sería válida si se aplica una transformación monótona a las


variables aleatorias. Como paso intermedio entre este caso y el de las variables
aleatorias discordantes, a continuación se investigará la independencia. La cópula
es entonces la
producto de las dos variables aleatorias C(u1, u2) = u1 ⋅ u2. Simbólicamente se
MODELIZACIÓN DE LA 145
DEPENDENCIA

puede imaginar que se lanza una moneda dos veces. La función de densidad
conjunta de las variables aleatorias independientes
es el producto de las respectivas distribuciones marginales, que es igual a la cópula
de independencia:
146 MODELIZACIÓN DE LA
DEPENDENCIA
d

C(u) = ui = P(U1≤ u1) - - - P(Ud ≤ ud )
i=1
= P(U ≤ u , ... , U ≤ u ) = f (u). (9.19)
1 1 d d

El caso de discordancia se da si se cumple U2 = 1 - U1 . La cópula viene dada entonces


por
C(u , u ) = P(U ≤ u , 1 - U ≤ u )
12 1 1 1 2
= P(U ≤ u , 1 - u ≤ U ) = u + u - 1, (9.20)
1 1 2 1 1 2

y es cero para todos los demás casos. El dominio de una cópula para el caso d-
dimensional C(u = C(u1, ... , ud )) está entonces limitado por
d
max{∑ ui + 1 - d, 0} ≤ C(u) ≤ min{u1, ... , ud } (9.21)
i=1

y el límite inferior sólo es alcanzable para el caso bivariante.


Hasta ahora, la discusión del concepto de cópula ha sido bastante abstracta, en
términos de sus principales características y límites. A continuación clasificaremos
las cópulas en dos grandes categorías, a saber, las cópulas arquimedianas, por un
lado, y las cópulas basadas en la distribución, por otro. Dentro de este último grupo
de cópulas, la dependencia entre las variables aleatorias será capturada
implícitamente por un parámetro de distribución. Por ejemplo, el caso bivariado de
una cópula de Gauss se define como
CGA (u , u ) = Φ (Φ-1(u ), Φ-1(u ))
𝜌 1 2 Σ 1 2
= Φ-1(u1) Φ-1(u1)
∫ ∫ 1
-∞ 2𝜋√1 - 𝜌 2
-∞
( )
x2 1- 2𝜌x1x2 + x22
exp - 2(1 - d x1 d x2 . (9.22)
𝜌2)

La función de distribución en (9.22) depende de la matriz de varianza-covarianza .


Dado que las transformaciones monótonas no alteran la estructura de dependencia,
la matriz de varianza-covarianza puede ser sustituida por la matriz de correlación.
Por lo tanto, la cópula de Gauss incluye los casos extremos de co-monotonicidad
(𝜌 = 1), la cópula de indepen- dencia (𝜌 = 0), y la contra-monotonicidad (𝜌 = -1).
Una característica de la cópula de Gauss es que la dependencia de la cola es cero.
Por lo tanto, tiene una aplicación limitada a la modelización del riesgo.
Como segundo ejemplo, nos centraremos ahora en la cópula t de Student, que se define
como
Ct (u , u ) = t (t−1 (u ), t−1 (u ))
𝜌,𝜈 1 2 Σ,𝜈 𝜈 1 𝜈 2
MODELIZACIÓN DE LA 147
DEPENDENCIA
= t-1(u1)
∫ 𝜈t-1(u1) ∫ 𝜈 1
-∞ -∞2𝜋√1 - 𝜌2
[ ]-(𝜈+2)∕2
x12 - 2𝜌x1x2 + x2
2
1+ dx dx2 , (9.23)
𝜈(1 -
𝜌2) 1
donde 𝜈 denota los grados de libertad como un parámetro de distribución adicional.
A diferencia de la cópula de Gauss, el coeficiente de dependencia de la cola para la
cópula t de Student puede calcularse como
√ √
𝜆u = 𝜆l = 2t𝜈+1(- 𝜈 + 1 (1 - 𝜌)∕(1 + 𝜌)). (9.24)
Las ventajas de las cópulas basadas en la distribución son dos: en primer lugar, y
lo más importante, su simplicidad; y en segundo lugar, que las simulaciones
basadas en estos modelos de cópula pueden llevarse a cabo fácilmente. Entre las
desventajas está el hecho de que hay que estimar muchos parámetros. Además, en
el caso de las distribuciones elípticas su simetría es un problema, dado el hecho
estilizado de que las distribuciones empíricas de las funciones de pérdida suelen ser
sesgadas. Por último, no se puede derivar una forma cerrada para las cópulas
basadas en la distribución. Las cópulas de Arquímedes no comparten esta última
desventaja. Una cópula arquimediana i s se define como

C(u1, u2) = 𝜓 −1 (𝜓(u1) + 𝜓(u2)), (9.25)

donde 𝜓 es la función generadora de cópulas. Dos ejemplos destacados de esta


categoría son las cópulas de Clayton y Gumbel. La función generadora de la cópula
de Clayton viene dada por 𝜙(t) = (t−𝛿 - 1)∕𝛿, con 𝛿 ∈ (0, ∞). Para 𝛿 → ∞ resulta la
depen- dencia perfecta, y para 𝛿 → 0 la independencia. Si se inserta la función
generadora en (9.25), la cópula de Clayton viene dada entonces por
CCL = 𝜓−1 (𝜓(u1) + 𝜓(u2)) = (u−𝛿 + u−𝛿 - 1)1∕𝛿. (9.26)
𝛿 1 2

La cópula de Clayton posee una dependencia de la cola inferior. El coeficiente relevante


se calcula según 𝜆l = 2−1∕𝛿 .
La función generadora de la cópula de Gumbel viene dada por 𝜓(t) = (- ln t)𝜃,
con la restricción del parámetro 𝜃1.
≥ La inserción de esta función generadora en
(9.25) conduce a la cópula de Gumbel,

C𝜃GU = 𝜓−1 (𝜓(u1) + 𝜓(u2)) = exp(-[(- ln u1)𝜃 + (- ln u2) 𝜃]1∕𝜃). (9.27)

La cópula de Gumbel posee dependencia de la cola superior. La dependencia


perfecta existe para
𝜃 → ∞ e independencia para 𝜃 → 1. El coeficiente de dependencia de la cola puede
determinarse según 𝜆u = 2 - 21∕𝜃 .
Las principales ventajas de las cópulas de Arquímedes son dos: estas cópulas tienen
una forma cerrada y las estructuras de dependencia de los colectores pueden
modelarse con ellos. Un inconveniente es su estructura bastante compleja para las
dimensiones más altas. Por lo general, esto se evita mediante diseños de
modelización anidados/jerárquicos.
148 MODELIZACIÓN DE LA
DEPENDENCIA
En principio, los parámetros desconocidos de una cópula pueden estimarse de
dos maneras. El primer procedimiento es totalmente paramétrico. Dado que para
los modelos de distribución multivariante derivados de una cópula de mayores
dimensiones este procedimiento puede ser bastante pesado, Joe y Xu (1996) y Shih
y Louis (1995) propusieron una estimación en dos pasos. En este caso, primero se
estiman los parámetros desconocidos para los modelos supuestos de las
distribuciones marginales. Sobre la base de estos modelos ajustados, las variables
pseudouniformes se obtienen a partir de las funciones de distribución inversa. A
continuación, se pueden utilizar para maximizar la probabilidad (cópula). Este
enfoque se denomina, por razones obvias, funciones de inferencia para los
márgenes. El segundo procedimiento se basa en un enfoque semiparamétrico. A
diferencia del primer procedimiento, no se asumen modelos para los marginales,
sino que se emplean las funciones de distribución empírica para recuperar las
variables pseudouniformes. A continuación, se utilizan para maximizar la
pseudoverosimilitud. Los parámetros de la cópula se determinan mediante técnicas
de optimización numérica. Para el caso de una cópula de la t de Student, se
simplifica si se calcula primero la tau de Kendall y luego se maximiza la
pseudoverosimilitud sólo con respecto al parámetro de grados de libertad 𝜈. Para
las cópulas bivariadas de Arquímedes de tipo Clayton y Gumbel, las siguientes
simplificaciones
están dadas, donde 𝜌̂𝜏 denota la correlación empírica de rango de Kendall (véase,
por ejemplo, Genest y Favre 2007):

𝛿̂ = 2𝜌̂𝜏 , 𝜃̂ = 1 . (9.28)
1 - 𝜌̂𝜏 1 - 𝜌̂𝜏
En la sección 9.2 se argumentó que el coeficiente de correlación lineal no es
adecuado para captar las dependencias entre los factores de pérdida, es decir, que
formas de dependencia muy distintas pueden dar el mismo valor a este coeficiente.
Concluimos esta sección destacando este hecho. La figura 9.1 muestra cuatro
diagramas de dispersión. El tamaño de la muestra para cada uno de los pares de
datos se ha fijado en 2.000 observaciones y las muestras se han generado de forma
que el coeficiente de correlación para cada uno de los cuatro conjuntos es igual a
0.7. A partir de estos diagramas de dispersión, es bastante evidente que las
estructuras de dependencia varían y que el contenido informativo del coeficiente de
correlación con respecto a la dependencia de la cola es bastante limitado. En el
caso de la cópula de Gumbel es evidente una concentración de pares positivos y en
el caso de la cópula de Clayton una agrupación de pares negativos. La cópula t de
Student se caracteriza por una mayor dispersión de pares con signos opuestos.

9.4 Sinopsis de los paquetes de R


9.4.1 El paquete BLCOP
El paquete BLCOP (véase Gochez et al. 2015) implementa el enfoque Black-
Litterman (véase Black y Litterman 1990) para la optimización de carteras y el
marco de agrupación de opiniones de cópulas (véase Meucci 2006a,b, 2010). Se
presenta en este capítulo por esta última característica, pero su aplicación se
MODELIZACIÓN DE LA 149
DEPENDENCIA

pospone a la Parte III del libro (Capítulo 13). El paquete está escrito
exclusivamente en R, y las clases y métodos de S4 son
150 MODELIZACIÓN DE LA
DEPENDENCIA
Cópula de Gauss Cópula de Gumbel
4 4

2 2

X2 X2
0 0
-2 -2

-4 -4
-4 -2 0 2 4 -4 -2 0 2 4
X1 X1

Clayton copulat copula


4 4

2 2

X2 X2
0 0
-2 -2

-4 -4
-4 -2 0 2 4 -4 -2 0 2 4
X1 X1

Figura 9.1 Diferentes tipos de cópulas.

empleado. El paquete depende de los paquetes methods, MASS (véase Venables y


Ripley 2002) y quadprog; este último es un paquete no estándar y se instalará
automáticamente si no se encuentra en la ruta de búsqueda. BLCOP se entrega con
un archivo NAMESPACE y hay una viñeta para guiar al usuario. Además, se ha
implementado un marco de pruebas unitarias para poder controlar el correcto
funcionamiento de las funciones del paquete. Para ello, es necesario instalar el
paquete RUnit (véase Burger et al. 2015). BLCOP se entrega con tres conjuntos
de datos: monthlyReturns, que contiene los rendimientos mensuales de seis
acciones estadounidenses, y sp500Returns y US13wTB, que contienen los
rendimientos mensuales del índice S&P 500 y los tipos de interés de las letras del
Tesoro a 13 semanas. En cuanto al marco de agrupación de opiniones de la cópula,
se de- mina la clase COPViews. Las distintas opiniones sobre determinados
activos se almacenan en objetos de esta clase. Esta clase de objetos puede
generarse con una función del mismo nombre. Se dispone de un método
deleteViews() y otro show(). El primero facilita la eliminación de las
opiniones de un objeto de este tipo, mientras que el segundo método produce una
impresión amigable de las opiniones. Las vistas (es decir, las opiniones sobre
determinados activos) pueden añadirse a un objeto COPViews existente con la
función addCOPViews(). Como nota, una interfaz gráfica de usuario -mediante
la invocación del editor de datos incorporado en R- para acceder y
La manipulación de las vistas está disponible mediante la función
MODELIZACIÓN DE LA 151
DEPENDENCIA

createCOPViews().
152 MODELIZACIÓN DE LA
DEPENDENCIA
La distribución posterior se genera mediante simulaciones de Monte Carlo a
través de la función COPPosterior(). En este caso, hay que proporcionar un
objeto de distribución multivariante para la distribución global del mercado, así
como un objeto de la clase COPViews. La función devuelve un objeto de la clase
COPResultado para el que se definen métodos que muestran las distribuciones
a priori y marginal a priori de cada activo (densityPlot()), imprimen
información sobre los resultados posteriores (show()) y generan carteras óptimas
a priori y a posteriori (optimalPort- folios.fPort()). La última función
utiliza rutinas contenidas en el paquete fPortfolio (véase Würtz et al. 2014).
Además de estas clases y métodos fundamentales que se ocupan del marco de
agrupación de la opinión de la cópula, el paquete también ofrece funciones de
utilidad para recuperar y manipular las ranuras de los objetos de las dos clases
presentadas.

9.4.2 La cópula del paquete


En el paquete copula se implementa el concepto de cópula de forma amplia y
autónoma (véase Hofert y Mächler 2011; Hofert et al. 2015; Kojadi- novic y Yan
2010; Yan 2007). El paquete se considera un paquete central de la vista de tareas
"Distributions" de CRAN y también aparece en las vistas de tareas "Finance" y
"Multivariate". Se definen clases y métodos S4 no sólo para cópulas elípticas y
arquimedianas, sino también para cópulas de valores extremos, lo que permite al
usuario estimar cópulas y realizar pruebas estadísticas con respecto a la idoneidad
de una cópula elegida. De hecho, las aplicaciones de las pruebas de bondad de
ajuste están disponibles en forma de archivos R DEMO, además de otros ejemplos
de código R. Las rutinas computacionalmente gravosas están interconectadas a
partir de código escrito en el lenguaje C. Por último, el paquete contiene cuatro
conjuntos de datos procedentes de los campos de los seguros, las finanzas y la
química. Por cierto, el conjunto de datos de finanzas se utiliza en McNeil et al. (2005,
capítulo 5). La clase virtual cópula se define para tratar las cópulas. Esta clase se
amplía con clases para cópulas elípticas, arquimedianas y de valor extremo:
elipCopula, archmCopula y evCopula, respectivamente. También se definen
clases particulares para las cópulas que se ajustan y heredan de uno de estos tres
tipos. Por un lado, se pueden tener en cuenta las peculiaridades de cada cópula
específica y, por otro lado, en la mayoría de los casos sólo es necesario definir
métodos para la clase matriz. Los objetos de cópula pueden crearse rápidamente
empleando funciones de creación del mismo nombre que la clase de cópula. La
cópula específica viene determinada por la familia de argumentos comunes
dentro de estas funciones. La creación adecuada de objetos pertenecientes a estas
clases se controla mediante funciones de validez. Los objetos específicos de la
cópula también se pueden generar llamando a la función fooCópula(), donde
foo es un marcador de posición para el nombre de la cópula; por ejemplo, una
cópula normal se puede crear llamando a normalCópula()
y una cópula de Gumbel utilizando gumbelCopula().
Existen métodos para devolver los valores de las funciones de densidad y
distribución de los objetos de la clase cópula, así como la generación de
números aleatorios. Se utiliza la convención de nomenclatura de R introducida por
primera vez en la sección 6.4, según la cual el nombre de la cópula lleva el prefijo
MODELIZACIÓN DE LA 153
DEPENDENCIA
[d] para la densidad, [p] para la distribución y [r] para la generación de
números aleatorios. Los gráficos de contorno y perspectiva de un objeto de
cópula se pueden dibujar
154 MODELIZACIÓN DE LA
DEPENDENCIA
con los métodos definidos contour() y persp(), respectivamente. Además,
se dispone de métodos que calculan las medidas de asociación debidas a Kendall
(tau()), Spearman (rho()) y el índice de cola (tailIndex()). Es posible
calibrar los parámetros de una cópula para un rango de correlación determinado
con las funciones iTau() e iRho() para los coeficientes de Kendall y
Spearman, respectivamente. Se puede acceder a las funciones de generación y a sus
inversas para las cópulas arquimedianas mediante las funciones genFun() y
genInv(). Además, las derivadas primera y segunda de la función generadora para
este grupo de cópulas se denominan genFunDer1() y genFunDer2(). Del
mismo modo, la función generadora de cópulas de valor extremo es Afun(), y la
función AfunDer() puede devolver un marco de datos de las derivadas primera
y segunda.
La estimación de los parámetros desconocidos de la cópula se implementa en
la función fitCopula(). El usuario puede elegir entre la máxima verosimilitud,
la máxima pseudoverosimilitud y la inversión de la tau de Kendall o la 𝜌 de
Spearman como métodos de estimación. La función devuelve un objeto de la clase
fitCopula, para el que se definen los métodos show() y summary(). La
maximización de la verosimilitud se realiza con la función optim(). El usuario
puede suministrar el optimizador a utilizar así como una lista de parámetros de
control de acuerdo con esta función. En la sección 9.3.3 se mencionó brevemente
que puede ser bastante pesado estimar todos los parámetros desconocidos para
dimensiones más altas y, por lo tanto, se debe realizar una estimación en dos etapas
(es decir, funciones de inferencia para los márgenes). Yan (2007, Sección 4)
proporciona un ejemplo que muestra cómo se puede lograr esto con la función
fitCopula().
La segunda clase fundamental definida en la cópula es mvdc, que contiene los
elementos relevantes para las distribuciones multivariantes construidas a partir de
cópulas. Los objetos pertenecientes a esta clase pueden generarse rápidamente con
la función mvdc(). Los argumentos de la función hacen referencia a la cópula y a
las distribuciones marginales que se van a utilizar, así como a una lista ob- jeto que
contiene los parámetros de cada una de las distribuciones marginales. De forma
similar a la clase cópula, se dispone de métodos para la función de densidad y
distribución, así como para la generación de números aleatorios. El ajuste de un
modelo de distribución multivariante definido por una cópula se implementa en la
función fitMvdc(), que devuelve un objeto de la clase fitMvdc. Los
parámetros desconocidos se estiman aplicando el principio ML mediante
optim(), y la log-verosimilitud se define mediante la función loglikMvdc().
Al igual que los objetos de la clase fitCopula, se definen los métodos show()
y summary() para los resultados de fitMvdc().
Además, se implementan pruebas de bondad de ajuste y pruebas de
independencia y dependencia de valores extremos. La idoneidad de una determinada
cópula puede evaluarse con las funciones gofCopula() y gofEVCopula(). Si la
suposición de independencia para una muestra multivariante dada se puede
comprobar con las funciones indepTest() y/o multIndepTest(). El
resultado de la primera función puede inspeccionarse gráficamente utilizando un
dependograma. Este tipo de figura se crea mediante una función del mismo
nombre. Del mismo modo, las funciones serialIndepTest() y
multSerialIndepTest() pueden utilizarse para probar la independencia en
MODELIZACIÓN DE LA 155
DEPENDENCIA
serie del conjunto de datos. Estas pruebas se describen en Deheuvels (1979), Genest
y Rémillard (2004), Genest et al. (2006) y Genest et al. (2007). Tres pruebas
diferentes de valor extremo
156 MODELIZACIÓN DE LA
DEPENDENCIA
de dependencia también se implementan. Una prueba bivariada basada en la
función de dependencia de Pickand está disponible a través de la función
evTestA(), y una basada en un proceso de Kendall está disponible como
evTestK(). Se puede realizar una prueba de muestra grande de la dependencia
de valores extremos multivariados llamando a evTestC(). En las páginas de
ayuda de las funciones se ofrece más información sobre estas pruebas estadísticas.
En comparación con la primera edición de este libro, el paquete nacopula se ha
fusionado completamente con copula. Las fuentes de nacopula siguen siendo
accesibles desde el archivo CRAN. Como tal, el enfoque de anidar cópulas de
Arquímedes (AC) está disponible dentro de copula usando clases y métodos S4.
Las cópulas de Arquímedes se interconectan a partir de rutinas escritas en el
lenguaje C. El uso de las rutinas disponibles para especificar y estimar AC anidadas
se detalla en una viñeta (véase Hofert y Mächler 2011). Además, se dispone de un
marco de pruebas estándar para el correcto funcionamiento de los métodos.
Las dos clases fundamentales para AC (anidadas) son acopula y nacopula
para cópulas arbitrarias simples y anidadas de Arquímedes, respectivamente.
Además, la clase outer_nacopula hereda de esta última clase, pero las dos
difieren únicamente en su función de validación. Las familias de cópulas disponibles
son Ali-Mikhail-Haq, Clayton, Frank, Gumbel y Joe. Los objetos de estas cópulas
pueden anidarse con la función onacopula(). Las variantes aleatorias de un
objeto de cópula anidado pueden generarse con la función rnacopula(), y para
sus hijos se utiliza la función rnchild(). Los objetos AC anidados pueden
evaluarse, es decir, se calcula la probabilidad para un vector d-dimensional de
observaciones dado, con la función pnacopula(). Las probabilidades que se
refieren a intervalos se devuelven con la función prob(). Ambas funciones se
refieren a puntos/límites del hipercubo.

9.4.3 El paquete fCopulae


Al igual que el paquete copula, el paquete fCopulae ofrece un tratamiento
unificado de las cópulas (véase Würtz y Setz 2014). El paquete forma parte del
conjunto de paquetes Rmetrics y se considera un paquete básico en las vistas de
tareas "Distributions" y "Fi- nance" de CRAN. Emplea clases y métodos S4 y
S3. Una función de utilidad para la integración numérica multidimensional se
conecta a una rutina FORTRAN. El paquete se entrega con un archivo
NAMESPACE, y se implementa un marco de pruebas unitarias a través del
paquete RUnit (véase Burger et al. 2015). Además, fCopulae ofrece interfaces
gráficas de usuario escritas en Tcl/Tk para mostrar el impacto de los
parámetros/ajustes alternativos de la cópula. Un inconveniente del paquete es que
solo se implementan cópulas bidimensionales, pero las funciones que abordan las
distribuciones multivariables normal sesgada ([dpr]mvsnorm()) y t de Student
sesgada ([dpr]mvst()) no se limitan a este caso. Por cierto, los datos pueden
ajustarse a estas distribuciones multivariantes mediante la función mvfit().
De forma similar a la cópula del paquete, las cópulas del paquete fCopulae se
clasifican en tres categorías: Arquímicas, elípticas y de valor extremo. Además,
también se ofrecen funciones para investigar cópulas empíricas bivariantes. En
cuanto a las cópulas de Arquímedes, se dispone de un total de 22 variantes. Las
funciones de densidad y distribución de las mismas y la generación de números
MODELIZACIÓN DE LA 157
aleatorios DEPENDENCIA
158 MODELIZACIÓN DE LA
DEPENDENCIA
se puede acceder con las funciones [dpr]archmCopula(). Como se ha dicho en
el párrafo anterior, se pueden generar visualizaciones interactivas de la densidad, la
función de distribución y las variantes aleatorias con las funciones
[dpr]archmSlider(), respectivamente. Debido a su importancia, se puede
acceder a la densidad, la función de distribución y la generación de variantes
aleatorias de la cópula de Gumbel llamando a [dpr]gumbelCopula(). Como
medidas de asociación, la tau de Kendall, la tau de Spearman
𝜌, y el coeficiente de cola pueden calcularse con las funciones archmTau(),
archmRho(), y archmTailCoeff(), respectivamente. Este último se puede
trazar con la función archmTailPlot(). El ajuste y la simulación de AC
pueden realizarse con las funciones archmCopulaFit() y
archmCopulaSim(). A diferencia del paquete cópula, la rutina de optimización
empleada para estimar los parámetros desconocidos de la cópula es nlminb(). El
argumento elipsis de archmCopulaFit() se pasa a este optimizador.
A diferencia de la cópula del paquete, la cópula de Cauchy está disponible
además de las cópulas normal y t de Student, aunque todas estas cópulas basadas
en la distribución se limitan al caso bidimensional. La nomenclatura para la
función de densidad y distribución y la generación de variantes aleatorias sigue la
convención de nomenclatura de R de la misma manera que para las cópulas
arquimedianas, es decir, [dpr]ellipticalCopula(). Se pueden crear
visualizaciones interactivas de las mismas a través de una interfaz gráfica de
usuario Tcl/Tk que se inicia llamando a [dpr]ellipticalSlider(). El
tipo de cópula elíptica se selecciona mediante el argumento de tipo correspondiente
a estas funciones. Del mismo modo, la tau de Kendall, la tau de Spearman
𝜌, y el coeficiente de cola se calculan mediante las funciones
ellipticalTau(), ellipticalRho(), y ellipticalTailCoeff().
Para esta última medida de asociación se puede mostrar un gráfico mediante
ellipticalTailPlot(). No hace falta decir que el coeficiente de cola es
cero en el caso de una cópula normal. Las cópulas elípticas bivariadas se pueden
ajustar y/o simular con las funciones ellipticalCopu laFit() y
ellipticalCopulaSim(), respectivamente. Dentro de la primera función se
utiliza nlminb() como optimizador y se le pasa el argumento de elipsis de la
función de ajuste.
Para las cópulas de valores extremos se utiliza la misma convención de
nomenclatura y el mismo conjunto de funciones que en los casos de cópulas
arquimedianas y elípticas. El acrónimo utilizado para esta clase de cópulas es ev;
por ejemplo, las funciones [dpr]evCopula() se refieren a la función de
densidad y distribución y a la generación de variantes aleatorias. El paquete
fCopulae implementa no sólo las cópulas disponibles en copula sino también la
cópula BB5.

9.4.4 El paquete gumbel


El paquete gumbel está dedicado exclusivamente a la cópula de Gumbel (véase
Dutang 2015). Está contenido en la vista de tareas de CRAN "Distribution". El
paquete está escrito puramente en R y va acompañado de una viñeta (solo en
francés). No se emplean clases y métodos S3 ni S4, pero las funciones se
exportan a través del mecanismo NAMESPACE. Además de la función de densidad y
MODELIZACIÓN DE LA 159
DEPENDENCIA
distribución y de la generación de variantes aleatorias, la función generadora de la
cópula de Gumbel y su
160 MODELIZACIÓN DE LA
DEPENDENCIA
inversa están disponibles. Para el primer grupo de funciones se sigue la convención
de nomenclatura de R (es decir, [dpr]gumbel()). La función generadora y la
función generadora inversa se denominan phigumbel() e invphigumbel(),
respectivamente. Un punto fuerte del paquete es la inclusión de funciones para
estimar los parámetros desconocidos de la cópula de Gumbel y los márgenes
mediante los métodos de máxima verosimilitud (gumbel.EML()), máxima
verosimilitud canónica (gumbel.CML()), funciones de inferencia para los
márgenes (gumbel.IFM()) y un método basado en momentos
(gumbel.MBE()). Las funciones optim() y optimize() se utilizan para
maximizar numéricamente las funciones objetivo. Lamentablemente, sólo se
devuelven las estimaciones como objeto vectorial, por lo que no es posible la
inferencia estadística. Una desventaja adicional de la implementación es que las
distribuciones marginales deben ser exponenciales o gamma para todos los
métodos de estimación excepto la máxima verosimilitud canónica.

9.4.5 El paquete QRM


El paquete QRM se introdujo en la sección 6.4.4 y se volvió a encontrar en la sección
7.3.7. Para nuestros propósitos actuales, contiene funciones para las cópulas de
Frank, Gumbel, Clay- ton, normal y t de Student. Aquí se implementan las
densidades y la generación de variantes aleatorias. El ajuste de las cópulas de
Arquímedes se realiza con la función fit.AC(). La maximización numérica de la
verosimilitud se realiza con nlminb(). La función devuelve un objeto lista con el
valor maximizado de la log-verosimilitud, los coeficientes estimados, los errores
estándar de los mismos, y una bandera logi-cal que indica si el algoritmo convergió
o no. Los parámetros de las cópulas normal elíptica y t de Student se estiman
mediante las funciones fit.gausscopula() y fit.tcopula(),
respectivamente. Resulta ventajoso emplear la función fit.tcopula() para datos
de mayor dimensión estableciendo el método de argumento como "Kendall"
o "Spearman" cuando se utiliza una cópula t. En estos casos se lleva a cabo una
estimación en dos pasos por la que primero se determinan las relaciones de rango,
y luego se realiza la optimización sólo con respecto al parámetro de grados de
libertad 𝜈.

9.5 Aplicaciones empíricas de las cópulas


9.5.1 Modelo GARCH-cópula
Motivación
Los hechos estilizados de los rendimientos diarios se expusieron en la Parte I de
este libro. En particular, se afirmó que los supuestos de un proceso de rentabilidad
iid y normal no suelen cumplirse en la práctica. Los hechos estilizados relativos a
las "colas gruesas" y a la "agrupación de la volatilidad" pueden verse como la otra
cara de estos supuestos violados. Como debería ser evidente en este capítulo, la
determinación adecuada de la dependencia entre los instrumentos financieros de
una cartera es de importancia fundamental. Se ha demostrado que la matriz de
varianza-covarianza o de correlación sólo es apropiada para los instrumentos
MODELIZACIÓN DE LA 161
elípticos. DEPENDENCIA
162 MODELIZACIÓN DE LA
DEPENDENCIA
variables aleatorias distribuidas. Esta suposición es tan perjudicial para los hechos
estilizados observados para las series de rentabilidad financiera multivariante como
la suposición iid para el caso univariante. Por lo tanto, en este capítulo se ha
defendido la utilización del concepto de cópula.
Dicho esto, se plantea la cuestión del tipo de modelo que debe emplearse para
abordar simultáneamente los hechos estilizados univariantes y multivariantes de los
rendimientos del mercado en el contexto de la cartera. Ahora estamos en
condiciones de unir las piezas de los capítulos anteriores de esta parte del libro, es
decir, de combinar los modelos GARCH y de cópula. Por cierto, la modelización
de los marginales también podría lograrse, en principio, aplicando la teoría del
valor extremo o una distribución hiperbólica generalizada o lambda generalizada,
pero las ventajas de emplear modelos de volatilidad en su lugar son sorprendentes
si se contrasta el modelo GARCH-cópula con un enfoque de varianza-covarianza
"sencillo" y el supuesto de rendimientos distribuidos normalmente:

1 Los modelos GARCH poseen una mayor curtosis que la distribución normal,
por lo que la mayor probabilidad de asistir a rendimientos extremos puede
captarse con estos modelos de volatilidad.

2 Las medidas de riesgo basadas en el enfoque de la varianza-covarianza son


incondicionales por naturaleza y, por tanto, implican un proceso iid. Por lo
tanto, es imposible modelar grupos de volatilidad. Los modelos GARCH
captan específicamente este artefacto empírico y permiten calcular medidas
de riesgo condicionales.

3 A menudo se desea una evaluación del riesgo para los próximos 10 días.
Este es un requisito del Acuerdo de Basilea II (véase el Comité de
Supervisión Bancaria de Basilea 2006, Parte 2, D.4). En la práctica, se utiliza
la desviación estándar derivada de los rendimientos diarios y se multiplica por
un factor de 10. El llamado escalado de la "raíz cuadrada del tiempo" se
menciona explícitamente en el documento que acabamos de citar, pero en un
borrador más re ciente sólo tiene carácter explicativo (véase el Comité de
Supervisión Bancaria de Basilea 2008). Sin embargo, este tipo de escalado
puede dar lugar a una volatilidad muy desestimada si no se aplica a un
proceso homocedástico (véase, por ejemplo, Danielsson y Zigrand 2005).
Por el contrario, las previsiones absolutas de la volatilidad a 10 días pueden
derivarse de los modelos GARCH. 1

4 Si se emplea el enfoque de la varianza-covarianza con la suposición de que


los rendimientos/pérdidas de la cartera se distribuyen normalmente, entonces
también se asume implícitamente que todas las distribuciones marginales
son del mismo tipo. No se puede excluir esta posibilidad per se, pero es poco
probable que se cumpla en las aplicaciones empíricas. El enfoque GARCH-
cópula permite explícitamente el uso de diferentes distribuciones/modelos
para los márgenes, proporcionando así una gran flexibilidad.

1 En aras de la exhaustividad, cabe mencionar que el Comité de Supervisión Bancaria de Basilea aboga
MODELIZACIÓN DE LA 163
DEPENDENCIA
ahora por la utilización del déficit esperado como medida de riesgo con un nivel de confianza del 97,5%
(véase Comité de Supervisión Bancaria de Basilea, 2013, sección 1.4).
164 MODELIZACIÓN DE LA
DEPENDENCIA
5 Para repetir, sólo en el caso de las distribuciones elípticas las correlaciones
representan correctamente la dependencia entre las variables aleatorias. Pero
en la práctica, la suposición de que las variables aleatorias se distribuyen
conjuntamente de forma elíptica rara vez se cumple, por lo que las
dependencias se representan de forma errónea. El enfoque de la cópula evita
este problema al distinguir entre la estructura de la dependencia, por un lado,
y la modelización de las distribuciones marginales, por otro.

Descripción
El enfoque GARCH-cópula fue probablemente introducido por primera vez por
Rockinger y Jondeau (2001). Esta combinación de modelos se ha utilizado desde
entonces no sólo para la modelización del riesgo de cartera, sino también en el
ámbito de los derivados financieros. Por ejemplo, Patton (2006), Jondeau y
Rockinger (2006), Micocci y Masala (2005), Embrechts y Dias (2003), Hsu et al.
(2008), y Chiou y Tsay (2008) han utilizado este enfoque en su investigación
empírica. El modelo GARCH-cópula se basa en el concepto de "funciones de
inferencia para los márgenes". Aquí, la dependencia entre los factores de riesgo
financiero se deduce de las distribuciones marginales, que son los modelos
GARCH especificados.
Los modelos GARCH se introdujeron en el capítulo 8. Ahora nos centramos en
las ecuaciones de expectativa y varianza de los modelos ARMA-GARCH para
procesos de la forma

Xk,t = 𝜇k,t + 𝜖k,t , (9.29)


p1,k q1,k
∑ 𝜙i ∑ 𝜃j𝜖k
𝜇k,t = 𝜇k + (Xk,t-i - 𝜇k ) + ,t-j, (9.30)
i=1 j=1

𝜖k,t = 𝜎k,t Zk,t , (9.31)


Zk,t ∼ 𝔇k,𝜈 (0, 1), (9.32)
p2,k q2,k

= 2

+ 2
𝜎 2k,t 𝛼 + 𝛼 𝜖0k,t-i j k,t-j
𝛽𝜎 , (9.33)
i=1 i j=1

donde (Zk,t )k∈ℕ,t∈ℤ es una variable aleatoria distribuida en 𝔇k,𝜈 con valor esperado
0 y varianza 1, y Xk denota el rendimiento/pérdida del kº instrumento financiero
contenido en la cartera, k = 1, ... , K. Se necesitan supuestos sobre las
distribuciones de la misma. Los candidatos potenciales son la normal estándar,
la t de Student y su versión sesgada. Las estimaciones de los parámetros
desconocidos del modelo, 𝜁k = (𝜇k, 𝜙k, 𝜃k, 𝛼k, 𝛽k, 𝜈k )′ para k = 1, ... , K, podrían
calcularse aplicando el principio de ML. Cabe destacar de nuevo que las
especificaciones de los modelos GARCH elegidos para cada serie de
rendimiento/pérdida financiera pueden ser diferentes. Esto no se limita al orden del
modelo GARCH, sino que se aplica igualmente a la distribución asumida para
las innovaciones Zk,t . Las estimaciones de los residuos estandarizados de estos
modelos GARCH pueden calcularse como ẑk,t = (xk,t - 𝜇̂k,t)∕𝜎̂ k,t .
La distribución conjunta de los procesos K puede expresarse con respecto a una cópula
MODELIZACIÓN DE LA 165
DEPENDENCIA

C de la siguiente manera: F(x1, ... , xK ; 𝜉) = C(F1(x1; 𝜁1), ... , FK (xK ; 𝜁K )).


(9.34)
166 MODELIZACIÓN DE LA
DEPENDENCIA
Aquí, 𝜉 denota el vector de parámetros de la cópula Cand F1 (⋅), ... , FK (⋅) son las
distribuciones marginales. Si la función de densidad k-dimensional de la cópula, c,
existe,
entonces la densidad conjunta puede expresarse como el producto de las distribuciones
marginales
f1(⋅), ... , fK (⋅) con densidad
K

f (x1, ... , xK ; 𝜉)= c(F1(x1; 𝜁1), ... , FK (xK ; 𝜁K ); 𝜉) fi(xi; 𝜁i), (9.35)
i=1
K
𝛿 c(u1, ... ,
c(u1 , ... , uK uK ) . (9.36)
)= 𝛿u , ... , 𝛿u
1 K

En principio, sería posible estimar los parámetros desconocidos estableciendo la


pseudo-log-verosimilitud y maximizándola. Sin embargo, este enfoque puede
resultar pesado desde el punto de vista computacional y requerir mucho tiempo. En
su lugar, en la práctica se lleva a cabo una estimación en dos pasos. En primer
lugar, se estiman los parámetros de los modelos GARCH y se determinan los
residuos estandarizados, ẑ1, ... , ẑK . A continuación, se transforman en variables
pseudouniformes empleando las funciones de distribución asumidas o sus
distribuciones empíricas. La primera opción se denomina MFI paramétrica
(funciones de inferencia para márgenes) y la segunda semiparamétrica, por razones
obvias. La probabilidad logarítmica que debe maximizarse viene dada por
T

L(𝜉; ẑ1, ... , ẑk) = log c(F1(ẑ1,i, ... , F1(ẑK,i); 𝜉), (9.37)
i=m

donde m = max(pi,k, qi,k ) para i = 1, 2 y k = 1, ... , K. El estimador para


maximizar esta verosimilitud tiene las propiedades de consistencia y normalidad
asintótica, si se puede suponer que los datos son independientes e idénticamente
distribuidos normalmente (véase Gen- est et al. 1995). Este supuesto puede
aceptarse si se emplean los residuos estandarizados.
Por lo tanto, el enfoque GARCH-cópula para determinar los riesgos de la cartera
consta de los siguientes pasos:
1. Especificar y estimar los modelos GARCH para cada factor de pérdida.
2. Determine los residuos estandarizados.
3. Calcular las variables pseudouniformes a partir de los residuos estandarizados:
• ya sea paramétricamente a partir de las distribuciones asumidas para los
procesos de error GARCH,
• o semiparamétricamente a partir de las funciones de distribución empíricas.
4. Estimar el modelo de cópula.
5. Utilizar la estructura de dependencia determinada por la cópula estimada
para generar N conjuntos de datos de variantes aleatorias para las variables
de distribución pseudo-uniforme.
6. Calcule los cuantiles para estos sorteos de Monte Carlo.
MODELIZACIÓN DE LA 167
DEPENDENCIA
7. Utilice estos cuantiles junto con el vector de pesos para calcular el N
escenarios de rentabilidad de la cartera.

8. Por último, utilice esta serie en el cálculo de la medida de riesgo deseada


para un nivel de confianza determinado.

Aplicación
El marco GARCH-cópula se aplica ahora a una cartera pasiva ficticia compuesta
por acciones europeas, y se calcula el déficit diario esperado del 95%. Se utiliza el
conjunto de datos EuStockMarkets, que aparece por primera vez en el
capítulo 3. Se supone que la cartera está compuesta en un 40% por el DAX y el
60% restante se distribuye a partes iguales entre el FTSE, el SMI y el CAC. 2
El código R se muestra en el Listado 9.1. En primer lugar, se cargan los paquetes
QRM y fGarch en el espacio de trabajo. Luego se recuperan los datos y se
expresan las pérdidas

Código R 9.1 Modelo GARCH-cópula: déficit esperado


b i b l i o t e c a (QRM) 1

b i b l i o t e c a ( f Garch ) 2

## P é r d i d a s 3

d a t a ( E uSt ockMa rke t s ) 4

l o s s <- as . d a t a . frame ( na . omit ( -1.0 ∗ d i f f ( l o g ( EuSt oc kMa rket s ) ) 5

∗ 100.0) ) 6
## GARCH 7

g f i t <- l a p l i c a ( l o s s , g a r c h F i t , f or m u l a = ~ g arch ( 1 , 1 ) , 8

cond . d i s t = " s t d " , t r a c e = FALSE) 9

gprog <- u n l i s t ( l a p l a d a ( g f i t , f u n c i ó n ( x ) 10

p r e d i c t o ( x , n . ahead = 1 ) [ 3 ] ) 11

gshape <- u n l i s t ( l a p l a d a ( g f i t , f u n c i ó n ( x ) x@ f i t$ c oe f [ 5 ] ) 12

g r e s i d <- as . m a t r i x ( d a t a . frame ( l a p l i c a ( g f i t , 13

f u n c i ó n ( x ) x @ r e s i d u a l s / s q r t ( x@h . t ) ) ) ) 14

## Cópula 15

U <- s a p l a d o ( 1: 4 , f u n c i ó n ( y ) p t ( g r e s i d [ , y ] , df = gshape [ y ] ) ) 16

cop < - f i t . t c o p u l a ( Udata = U, method = " K e n d a l l " ) 17

rcop <- r c o p u l a . t ( 100000 , df = cop$nu , Sigma = cop$P ) 18

qcop <- s a p l i c a ( 1 : 4 , f u n c t i o n ( x ) q s t d ( r cop [ , x ] , nu = gshape [ x ] ) 19

ht . mat <- m a t r i x ( gprog , nrow = 100000 , n c o l = n c o l ( l o s s ) , 20

byrow = TRUE) 21

pf <- qcop ∗ ht . mat 22


## ES 95 p o r c i e n t o 23
p e s o s <- c ( 0 . 4 , 0 .2 , 0 .2 , 0 . 2 ) 24

p f a l l <- ( qcop ∗ ht . mat ) %∗% pe sos 25


p f a l l . es 95 <- median ( t a i l ( s o r t ( p f a l l ) , 5000) ) 26

p f a l l . es 95 27

2 Por cierto, el enfoque GARCH-cópula también se exhibe en el archivo DEMO garch_copula

contenido en el paquete copula.


168 MODELIZACIÓN DE LA
DEPENDENCIA
como porcentajes continuos. En las líneas 7-9, se estiman los modelos GARCH
para los marginales y se calculan los residuos estandarizados. En aras de la
simplicidad, se especifican modelos GARCH(1, 1) con procesos de innovación
distribuidos en t para los cuatro mercados. La tarea de estimación puede realizarse
rápidamente con la función lapply(). El objeto gfit es una lista con
elementos de la clase fGARCH. Los resultados de la estimación se presentan en el
cuadro 9.1.
Como se puede ver en esta tabla, para cada modelo todos los coeficientes son
significativamente diferentes de cero y el requisito de estabilidad para los modelos
GARCH(1, 1) no se viola, es decir, 𝛼1 + 𝛽1 < 1. Además, la magnitud de las
estimaciones para el parámetro de grados de libertad 𝜈 indican una desviación
pronunciada de la normalidad, es decir, la característica de cola pesada se refleja en
estas estimaciones.
La figura 9.2 muestra los gráficos QQ de los residuos estandarizados. Aparte de
unos pocos valores atípicos, puede concluirse que la hipótesis de un proceso de
error distribuido en t se cumple en general.

Tabla 9.1 Modelos GARCH(1, 1)


ajustados.
GARCH EstimaciónError estándar P(> t )
Valor t
||
DAX
𝜇 -0.076 0.019 -4.046 0.000
𝜔 0.022 0.009 2.509 0.012
𝛼1 0.079 0.016 4.886 0.000
𝛽1 0.904 0.020 44.950 0.000
𝜈 6.038 0.814 7.418 0.000
SMI
𝜇 -0.114 0.018 -6.439 0.000
𝜔 0.058 0.019 3.062 0.002
𝛼1 0.114 0.024 4.742 0.000
𝛽1 0.822 0.039 21.079 0.000
𝜈 5.697 0.727 7.839 0.000
CAC
𝜇 -0.052 0.023 -2.234 0.025
𝜔 0.042 0.025 1.672 0.094
𝛼1 0.044 0.016 2.822 0.005
𝛽1 0.922 0.033 27.894 0.000
𝜈 7.986 1.364 5.856 0.000
FTSE
𝜇 -0.051 0.016 -3.128 0.002
𝜔 0.006 0.003 1.754 0.079
𝛼1 0.036 0.009 3.790 0.000
𝛽1 0.956 0.013 75.026 0.000
𝜈 9.526 1.787 5.331 0.000
MODELIZACIÓN DE LA 169
DEPENDENCIA
DAX SMI
Cu Cuantil
an 10 es de
tile la
s 5 muestr
de a
la 0
m -5 0 5
ue 10
-4 -2 0 2 4 -6 -4 -2 0 2 4 6
str
a Cuantiles teóricos Cuantiles teóricos

CAC FTSE
Cu Cuantil
an 8 es de
tile la
4
s muestr
de 0 a
la
-4 -6 -2 2
m
ue -4 -2 0 2 4 -4 -2 0 2 4
str
a Cuantiles teóricos Cuantiles teóricos

Figura 9.2 Gráficos QQ para modelos GARCH(1, 1).

Si la especificación GARCH(1, 1) elegida es adecuada para cada uno de los


factores de pérdida puede inspeccionarse gráficamente mediante el ACF de los
residuos al cuadrado. Estos se representan en la Figura 9.3. En ninguno de los
gráficos ACF se produce un pico significativo al nivel de confianza del 95%, por lo
que se puede concluir que los modelos GARCH calculados para las distribuciones
marginales captan adecuadamente las características de los factores de pérdida.
En las líneas 10-14 del código R se calculan las volatilidades condicionales y se
extraen las estimaciones de los parámetros de los grados de libertad y los residuos
estandarizados. Todas estas tareas pueden realizarse rápidamente utilizando
lapply(). Las previsiones de la varianza condicional con un paso de antelación
se utilizarán en el cálculo de las variantes de pérdida de la cartera, y ambas son
necesarias para el cálculo de las variables pseudouniformes. Estas se obtienen con la
expresión de la línea 13. A continuación, se estima una cópula t de Student basada
en las correlaciones de rango de Kendall. El resultado se asigna al objeto cop, que
luego se utiliza en la generación de 100 000 conjuntos aleatorios. El espectro de
pérdidas simuladas para cada instrumento financiero se determina en las líneas 20-
22. Las previsiones de volatilidad se repiten para cada simulación de conjuntos
aleatorios y se calcula el producto Hadamard de estas dos matrices. A
continuación, se determinan las pérdidas simuladas del puerto como resultado del
producto vectorial matriz-peso (es decir, objeto pfall). A continuación, este
objeto se ordena por tamaño y el déficit esperado con un nivel de confianza del
95% se expresa como la mediana de las 5.000 mayores pérdidas, que toma un valor
de 2,585. Por cierto, se ha supuesto implícitamente que la media de los
rendimientos/pérdidas de un día es cero.
170 MODELIZACIÓN DE LA
DEPENDENCIA
DAX SMI

0. ACF
8
ACF 0.4
0 .8
0.4
0. 0.
0 0
0 5 10 15 20 0 5 10 15 20
Lag Lag

CAC FTSE

ACF ACF
0.4 0.4
0 .8 0 .8

0. 0.
0 0
0 5 10 15 20 0 5 10 15 20
Lag Lag

Figura 9.3 Autocorrelaciones de los residuos estandarizados al cuadrado.

9.5.2 Enfoques de cópulas mixtas


Las cópulas de Clayton y Gumbel se introdujeron en la sección 9.3.3. Con estas
cópulas arquimedianas se puede modelar la dependencia de la cola inferior o
superior, pero no ambas. En principio, esto puede rectificarse utilizando la cópula
de Joe-Clayton (véase Joe 1997),
CJC = 1 - {1 - [(1 - ūk )-𝛾 + (1 - ūk )-𝛾 - 1]-1∕𝛾 }1∕k, (9.38)
𝜶 1 2

con ūi = 1 - ui, para i = 1, 2, y 𝜶 = (k, 𝛾)′. Esta cópula tiene una dependencia de
la cola inferior igual a 𝜆l = 2−1∕𝛾 y una dependencia de la cola superior igual a 𝜆u
= 2 - 21∕k . Para k = 1, la cópula de Joe-Clayton se reduce a la cópula de Clayton, y
para 𝛾 → 0, se acerca a la cópula de Gumbel. La cópula de Joe-Clayton se
caracteriza por una dependencia creciente de la cola superior para valores crecientes
del parámetro k. Sin embargo, esta cópula no tiene en cuenta los eventos extremos.
Dado que una combinación lineal de dos cópulas de Arquímedes es una
La cópula de Arquímedes (véase Nelsen 2006), se puede crear una mezcla de la
cópula de Clayton y de Gumbel en la forma

CCG = 𝜋C C (u1, u2) + (1 - 𝜋)CG (u1, u2), (9.39)


𝝃 𝛿 𝜃

donde 𝜋 ∈ (0, 1) es el coeficiente de ponderación entre estas dos cópulas. Las


dependencias de cola para esta cópula vienen dadas por 𝜆l = 𝜋2−1∕𝛿 para la parte
inferior y 𝜆u = (1 -
𝜋)(2 - 21∕𝜃 ) para el coeficiente superior, respectivamente.
MODELIZACIÓN DE LA 171
DEPENDENCIA
Código R 9.2 Mezcla de cópulas: Clayton y Gumbel.
l i b r a r i a ( c opul a ) 1

b i b l i o t e c a ( FRAPO) 2

b i b l i o t e c a (QRM) 3

## R e c u p e r a c i ó n d e datos y e d f 4

d a t o s ( DJ . df ) 5

Datos <- DJ . df [ , c ( "GM" , "UTX" ) ] 6

R <- r e t u r n s e r i e s ( Data , method = " d i s c r e t e " , t r i m = TRUE) 7

U <- a pl ic a r ( R, 2 , edf ) 8

d e t a c h ( paquete :QRM) 9

## Cópula de identificación 10

copC < - c l a y t o n C o p u l a ( 2 ) 11

copG <- gumbelCopula ( 2 ) 12

## O b j e t i v o d e f u n c i ó n 13

LLCG <- f u n c t i o n ( params , x , copC , copG ) { 14

s l o t ( copC , " p a r á m e t r o s " ) <- params [ 1 ] 15

s l o t ( copG , " p a r á m e t r o s " ) <- params [ 2 ] 16

pi <- params [ 3 ] 17

l d e n s <- log ( p i ∗ dCopula ( x , copC ) + ( 1 - pi ) ∗ dCopula ( x , copG ) ) 18


i f ( any ( i s . i n f i n i t e ( l d e n s ) ) ) { 19

l d e n s [ que ( i s . i n f i n i t e ( l d e n s ) ) ] <- 0 20

} 21

suma ( l d e n s ) 22

} 23

## Límites de los parámetros e i n i c i a l i z a c i ó n 24

lower <- c ( copC@param . lowbnd , copG@param . lowbnd , 0 . 0 ) 25

upper <- c ( copC@param . upbnd , copG@param . upbnd , 1 . 0 ) 26

par1 <- c ó p u l a : : f i t C o p u l a ( copC , U, " i t a u " ) @ estimación 27

par2 <- c ó p u l a : : f i t C ó p u l a ( copG , U, " i t a u " ) @ estimación 28

par3 <- 0.5 29

## O p t i m i z a c i ó n 30

opt <- optim ( c ( par 1 , par 2 , par 3 ) , LLCG, x = U, copC = copC , 31

copG = copG , inferior = inferior , superior = superior , 32

método = " L-BFGS-B" , 33

c o n t r o l = l i s t ( f n s c a l e = -1 , t r a c e = 2 ) , 34

h e s s i a n = TRUE) 35

## Varianza - Co v ari an za 36

va rc ov <- round ( s o l v e ( - opt$ h e s i a n ) , 4 ) 37

En el listado 9.2 se muestran las líneas de código relevantes para estimar un


modelo de cópula mixta. En primer lugar, se cargan los paquetes necesarios en el
espacio de trabajo. Aquí, las funciones y métodos contenidos en el paquete copula
se utilizarán para crear la log-verosimilitud consistente en las densidades
ponderadas de las cópulas de Clayton y Gumbel. La función returnseries()
contenida en el paquete FRAPO se utilizará para calcular los rendimientos
discretos expresados en porcentajes, y el conjunto de datos se tomará del paquete
QRM, al igual que la función edf() para determinar
172 MODELIZACIÓN DE LA
DEPENDENCIA
Tabla 9.2 Mezcla ajustada de Clayton y Gumbel.

Clayton-Gumbel 𝛿̂ 𝜃̂ 𝜋̂
Valores estimados 0.7377 1.1147 0.3540
Errores estándar 0.2166 0.0265 0.0927

las variables pseudo-uniformes de los rendimientos de las acciones para GM y


UTX. En el siguiente bloque de sentencias, se inicializan dos objetos cópula. Los
parámetros elegidos para 𝛿 y 𝜃 se fijan arbitrariamente en 2 y se actualizarán
durante la minimización numérica de la log-verosimilitud negativa. A continuación
viene la definición de la función objetivo LLCG(). Sus argumentos son params
para el vector de parámetros de tres elementos, x para la matriz de variables pseudo-
uniformes, y copC y copG para los objetos de cópula definidos anteriormente
para las cópulas de Clayton y Gumbel, respectivamente. En el siguiente trozo de
código se establecen los límites inferior y superior del espacio de parámetros y los
valores iniciales de
𝛿 y 𝜃 se determinan según las correlaciones de rango. La minimización de la log-
verosimilitud negativa se lleva a cabo mediante optim(). Dado que el valor de la
log-verosimilitud es devuelto por LLCG(), el argumento de control fnscale
debe establecerse en -1. Además, para un mejor seguimiento de la optimización
numérica, el argumento de control trace se ha fijado en 2.
Las estimaciones de los parámetros y los errores estándar se muestran en el cuadro
9.2.
El valor estimado de 𝜋 implica una ponderación de aproximadamente un tercio a
dos tercios entre las cópulas de Clayton y Gumbel y es significativamente diferente
de cero. A partir de las estimaciones de 𝛿 y 𝜃, los coeficientes de dependencia de la
cola son 0,138 para la inferior y 0,945 para la superior.

Referencias
Comité de Supervisión Bancaria de Basilea 2006 International Convergence of Capital
Mea- surement and Capital Standards, A Revised Framework Banco de Pagos
Internacionales Basilea, Suiza.
Comité de Supervisión Bancaria de Basilea 2008 Revisiones propuestas al marco de riesgo
de mercado de Basilea II Banco de Pagos Internacionales Basilea, Suiza.
Comité de Supervisión Bancaria de Basilea 2013 Documento consultivo-Revisión
fundamental de la cartera de negociación: A Revised Market Risk Framework Banco de
Pagos Internacionales Basilea, Suiza.
Black F. y Litterman R. 1990 Asset allocation: Combinando los puntos de vista del inversor
con el equi- librio del mercado. Informe técnico, Goldman Sachs Fixed Income Research.
Burger M., Jünemann K., y König T. 2015 RUnit:R Unit Test Framework. Paquete R versión
0.4.31.
Chiou S. y Tsay R. 2008 A copula-based approach to option pricing and risk assessment.
Journal of Data Science 6, 273-301.
MODELIZACIÓN DE LA 173
DEPENDENCIA
Danielsson J. y Zigrand J. 2005 On Time-Scaling of Risk and the Square-Root-of-Time Rule
efa 2004 Maastricht Meetings paper no. 5399 edn London School of Economics Londres,
Reino Unido.
Deheuvels P. 1979 La fonction de dépendence empirique et ses proprietés: un test non
paramétrique d'indépendence. Académie Royale de Belgique, Bulletin de la Classe des
Sci- ences, 5e 65, 274-292.
Dutang C. 2015 gumbel: Paquete para la cópula de Gumbel. Paquete R versión 1.10-1.
Embrechts P. y Dias A. 2003 Dynamic copula models for multivariate high-frequency data
in finance Discussion Paper, Department of Mathematics, ETH Zurich.
Genest C. y Favre A.-C. 2007 Todo lo que siempre quiso saber sobre la modelización de
cópulas pero temía preguntar. Journal of Hydrologic Engineering pp. 347-368.
Genest C. y Rémillard B. 2004 Pruebas de independencia y aleatoriedad basadas en el proceso de
cópula empírica. Test 13, 335-369.
Genest C., Ghoudi K., y Rivest L.-P. 1995 A semiparametric estimation procedure of depen- dence
parameters in multivariate families of distributions. Biometrika 82(3), 543-552.
Genest C., Quessy J.-F., y Rémillard B. 2006 Local efficiency of a Cramér-von Mises test of
independence. Journal of Multivariate Analysis 97, 274-294.
Genest C., Quessy J.-F., y Rémillard B. 2007 Asymptotic local efficiency of Cramér-von
Mises tests for multivariate independence. The Annals of Statistics 35, 166-191.
Gochez F., Chandler-Mant R., Jin S. y Xie J. 2015 BLCOP: Black-Litterman and Copula
Opinion Pooling Frameworks. Paquete R versión 0.3.1.
Hofert M. y Mächler M. 2011 Nested archimedean copulas meet R: The nacopula package.
Journal of Statistical Software 39(9), 1-20.
Hofert M., Kojadinovic I., Mächler M., y Yan J. 2015 copula: Dependencia multivariada con
cópulas. Paquete R versión 0.999-14.
Hsu C., Wang Y., y Tseng C. 2008 Cobertura dinámica con futuros: Un modelo GARCH basado
en la cópula. Journal of Futures Markets 28, 1095-1116.
Joe H. 1997 Multivariate Models and Dependence Concepts number 73 in Monographs on
Statistics and Applied Probability. Chapman & Hall, Londres.
Joe H. y Xu J. 1996 El método de estimación de las funciones de inferencia de los márgenes
para los modelos multivariantes. Technical Report 166, University of British Columbia,
Department of Statistics. Jondeau E. y Rockinger M. 2006 The copula-GARCH model of
conditional dependencies:
Una aplicación al mercado bursátil internacional. Journal of International Money and Finance 25,
827-853.
Kojadinovic I. y Yan J. 2010 Modelización de distribuciones multivariadas con márgenes
continuos utilizando el paquete R de copula. Journal of Statistical Software 34(9), 1-20.
McNeil A., Frey R. y Embrechts P. 2005 Quantitative Risk Management: Concepts, Tech-
niques and Tools. Princeton University Press, Princeton, NJ.
Meucci A. 2006a Más allá de Black-Litterman en la práctica: Una receta de cinco pasos para
introducir opiniones en mercados no normales. Risk 19(9), 114-119.
Meucci A. 2006b Beyond Black-Litterman: Views on non-normal markets. Risk 19(2), 96-
102.
Meucci A. 2010 El enfoque Black-Litterman: Original model and extensions In The Ency-
clopedia of Quantitative Finance (ed. Cont R.) vol. I John Wiley & Sons Chichester, UK
p. 196.
174 MODELIZACIÓN DE LA
DEPENDENCIA
Micocci M. y Masala G. 2005 Backtesting value-at-risk estimation with non-Gaussian
marginals Working Paper, 8th International Congress on Insurance: Mathematics & Eco-
nomics, Roma.
Nelsen R. 2006 An Introduction to Copulas number 139 in Lecture Notes in Statistics 2nd
edn. Springer Verlag, Nueva York.
Patton A. 2006 Modelling asymmetric exchange rate dependence. International Economic
Review 47(2), 527-556.
Rockinger M. y Jondeau E. 2001 Dependencia condicional de las series financieras: Una
aplicación de las cópulas. Notes d' Études et de Recherche NER 82, Banque de France,
París, Francia.
Schweizer B. y Sklar A. 1983 Probabilistic Metric Spaces. North-Holland/Elsevier, Nueva
York.
Shih J. y Louis T. 1995 Inferencias sobre el parámetro de asociación en modelos de cópula para
datos de supervivencia bivariados. Biometrics 51, 1384-1399.
Sklar A. 1959 Fonctions de répartition à dimensions e leurs marges. Publications de
l'Institut de l'Université de Paris 8, 229-231.
Venables W. N. y Ripley B. D. 2002 Modern Applied Statistics with S 4th edn. Springer,
Nueva York.
Würtz D. y Setz T. 2014 fCopulae: Rmetrics-Bivariate Dependence Structures with Cop-
ulae. Paquete R versión 3011.81.
Würtz D., Setz T. y Chalabi Y. 2014 fPortfolio: Rmetrics-Portfolio Selection and Optimiza-
tion. Paquete R versión 3011.81/r5908.
Yan J. 2007 Disfruta de la alegría de las cópulas: Con un paquete de cópulas. Journal of
Statistical Software
21(4), 1-21.
MODELIZACIÓN DE LA 175
DEPENDENCIA
Parte III
ENFOQUES DE
OPTIMIZACIÓN DE
CARTERAS
10

Optimización robusta de la
cartera

10.1 Resumen
En el capítulo 5 se presentaron las carteras de Markowitz y su aplicación en R. Se
abordaron los problemas que se pueden encontrar al optimizar directamente carteras
de este tipo. En particular, se afirmó que el uso de estimadores de muestra para los
rendimientos ex- pectos y la matriz de covarianza puede dar lugar a resultados de
cartera subóptimos debido al error de estimación. Además, en las simulaciones a
posteriori suelen observarse ponderaciones extremas de las carteras y/o oscilaciones
erráticas en la combinación de activos. En general, este hecho empírico no es
deseable debido a los costes de transacción. Desde un punto de vista estadístico,
estos artefactos pueden atribuirse principalmente a la sensibilidad de los es-
timadores de muestra ordinarios con respecto a los valores atípicos. Estos puntos
de datos atípicos influyen en las estimaciones de dispersión en menor medida que
las medias, ceteris paribus. Por ello, pero no sólo por esta razón, se aboga por las
carteras de varianza mínima en comparación con las carteras de varianza media
(véanse las referencias del capítulo 5). Por lo tanto, sería deseable disponer de
estimadores que reduzcan el impacto de los valores atípicos y, por lo tanto,
produzcan estimaciones que sean representativas del grueso de los datos de la
muestra, y/o técnicas de optimización que incorporen directamente los errores de las
estimaciones. Lo primero puede lograrse utilizando estadísticas robustas y lo
segundo empleando técnicas de optimización robustas.
En las dos secciones siguientes se presentan estos dos medios desde un punto de
vista teórico. Luego se discuten las fuentes en R. El capítulo concluye con
aplicaciones empíricas en forma de una simulación de Monte Carlo y
comparaciones de back-test, en las que estas optimizaciones de carteras robustas se
comparan con soluciones de carteras basadas en estimadores muestrales ordinarios.
Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd. Sitio
web complementario: www.pfaffikus.de
164 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
10.2 Estadísticas robustas
10.2.1 Motivación
Ya se ha señalado en el capítulo 3 que el supuesto de normalidad no suele
cumplirse en los datos de rentabilidad de los mercados financieros (véase también
Pfaff 2010, capítulo 1). La violación de este supuesto se justifica por razones
empíricas por los hechos estilizados para los rendimientos simples y multivariados.
Pero también se demostró en el capítulo 6 que el supuesto de normalidad se viola
en menor medida cuanto menor es la frecuencia de los datos (véase también Pfaff
2010, capítulo 2).
Es justo decir que en el trabajo empírico la media aritmética y la covarianza
muestral se emplean ampliamente para estimar los correspondientes momentos
teóricos de localización y dispersión de la población. Estos estimadores pueden
derivarse del principio de ML y son asintóticamente eficientes y consistentes.
Además, se distribuyen normalmente de forma asintótica. Sin embargo, cuando no
se cumple el supuesto de distribución, los estimadores pierden sus propiedades
deseables. De hecho, la media aritmética -como estimador de la localización de una
población- es sensible a las observaciones extremas, de modo que la estimación no
refleja bien el grueso de los datos. Del mismo modo, la dependencia entre dos
variables aleatorias puede verse muy distorsionada por un solo par de datos
periféricos. A la luz de esto, sería deseable recurrir a métodos y técnicas que sean
relativamente inmunes a dichos valores atípicos y/o a las violaciones de los
supuestos del modelo subyacente, pero que aún puedan ofrecer resultados
razonables para la mayoría de las observaciones de una muestra. El campo de la
estadística robusta se ocupa de este tipo de problemas y ofrece soluciones en forma
de estimadores robustos y de inferencia basada en ellos. Se pueden encontrar
exposiciones en libros de texto, por ejemplo, en Huber (1981), Hampel et al.
(1986), Rousseeuw y Leroy (1987), Staudte y Sheather (1990) y Maronna et al.
(2006).
Anteriormente, el problema de los valores atípicos esbozado anteriormente se resolvía
mediante el recorte-
mación (eliminación de los valores atípicos) o winsorización (igualación de las
observaciones extremas a un valor cuantitativo fijo). De hecho, ambos métodos
pueden considerarse medios de robustecimiento. Por desgracia, el resultado de
estos procedimientos depende en gran medida de la elección subjetiva del
investigador. La mediana podría quizás emplearse como es- timador para la
localización y la desviación media absoluta para la escala. Ambos producen
estimaciones más robustas que los estimadores muestrales ordinarios de la media
aritmética y la desviación estándar. La ventaja de estos estimadores robustos es que
evitan especificar de antemano qué puntos de datos se consideran atípicos. De este
modo, se elimina un elemento subjetivo en el análisis de los datos. Antes de que se
presenten los estadísticos ro- bustos más comunes en la siguiente subsección, cabe
mencionar que hasta ahora no se ha definido con precisión el término "outlier" u
"observación extrema". La razón es sencilla: no hay una forma clara de evaluar si
un punto de datos es un valor atípico o no. La cuestión es siempre relativa y
depende fundamentalmente del modelo/la hipótesis de distribución subyacente. Por
ejemplo, dada la distribución normal estándar y una observación muestral de 5,
OPTIMIZACIÓN ROBUSTA DE LA 165
CARTERA
seguramente se podría clasificar este punto de datos como un valor atípico. Pero,
¿se mantendría esta clasificación cuando se asume una distribución t de Student
con cuatro grados de libertad o una distribución de Cauchy?
166 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
10.2.2 Estimadores robustos seleccionados
La siguiente presentación de los estimadores robustos seleccionados y sus
propiedades se basa en Maronna et al. (2006) y Todorov y Filzmoser (2009). La
medida más utilizada para evaluar la robustez de un estimador es el punto de
ruptura (BP). Esta medida se define como la proporción relativa de valores atípicos
en una muestra tal que el estimador no toma un valor grande arbitrario. Por
definición, el PB puede tomar valores entre 0 y 0,5. La media aritmética tiene un
PB de 0, porque si se sustituye una sola observación por un valor, la estimación de
la localización puede ser arbitrariamente alta. En cambio, la mediana tiene un PB
de 0,5. El límite superior del PB se explica por el hecho de que si más de la mitad
de las observaciones son valores atípicos, la muestra está falseada hasta un grado
tal que no se puede hacer ninguna inferencia con respecto a la población. Otro
criterio para evaluar la idoneidad de un estimador robusto es la eficiencia relativa
(ER). En este caso, la varianza asintótica de un estimador robusto se expresa en
relación con la varianza de un estimador óptimo que se ha derivado bajo una
estricta adhesión al supuesto de modelo/distribución. Como tal, puede interpretarse
como una cifra porcentual que indica en qué medida debe aumentarse el tamaño de
la muestra para que las varianzas de los dos estimadores se igualen.

Clase de estimadores M y MM
Ya en 1964 Huber introdujo la clase de estimadores M. El nombre de la clase
debería indicar la semejanza de este estimador con el principio ML (véase Huber
1964, 1981). Es conveniente restringir la siguiente presentación del estimador a
muestras univariantes. Recordemos que, de acuerdo con el principio ML, los
parámetros desconocidos, 𝜃, se determinan de tal manera que lo más probable es
que hayan producido una muestra iid dada,
{x1, ... , xn}, extraída de la distribución F(x, 𝜃) con función de densidad f (⋅).
Debido a la suposición iid, la distribución conjunta es igual al producto de los
marginales,
se maximiza:que

( n )
𝜃̂ = arg max f (xi, 𝜃) . (10.1)
i=1

Dado que el logaritmo es una transformación estrictamente monótona, la


optimización se realiza generalmente minimizando la función de probabilidad
logarítmica negativa:
n
( )
∑i
1
=
𝜃̂ = arg min - log (f (xi, 𝜃) . (10.2)

Análogamente, los estimadores M se definen como el mínimo de una suma de


𝜌(x,funciones
𝜃):

( n )
𝜃̂ = arg min 𝜌(xi, 𝜃) . (10.3)
i=1

Esta amplia clase de estimadores incluye el principio ML (𝜌(⋅) = - log f (x, 𝜃)) y el
OPTIMIZACIÓN ROBUSTA DE LA 167
CARTERA

método de los mínimos cuadrados (LS). En este último caso, la función 𝜌(⋅) es el error
cuadrático.
168 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
La función 𝜌(⋅) debe cumplir los requisitos de simetría, definición positiva y un
mínimo global en cero. Por supuesto, la función debe proporcionar estimaciones
decentes cuando se cumplan los supuestos del modelo/distribución y no verse
afectada negativamente por
casos de violación. La diferencia entre las formas robustas de los estimadores M y
las de los principios ML y LS está en la especificación de 𝜌(⋅). Para los primeros
estimadores, los puntos de datos extremos obtienen un peso menor y, por lo tanto,
son menos i n f l u y e n t e s c o n r e s p e c t o a las estimaciones de los
parámetros. En el trabajo empírico se suelen emplear dos tipos de especificaciones
para 𝜌(⋅). En primer lugar, está la clase de funciones de Huber,
definido {x2
como si |x| ≤ k,
𝜌k(x) = 2
io|
2k x - k si x > k.

Esta función es cuadrática en un reg| n central alrededor de|k|y lineal fuera de él. Para
k → ∞ y k → 0 los estimadores M son idénticos a la media aritmética y la mediana,
respectivamente.
En segundo lugar, la función bi-cuadrada propuesta por Tukey también se encuentra
en el trabajo empírico. Viene dada por
{1
- [1 - (x∕k)2 ]3 si |x| ≤ k,
𝜌 (x) =
Esta función está acotada para1 valores absolutos xgrandes > k. o|f |x. La función
bicuadrada es preferiblek a las funciones de Hubers para distribuciones simétricas
caracterizadas por un exceso de i curtosis, porque la influencia de los valores
atípicos puede suprimirse por completo.
En lugar de optimizar directamente (10.3), a menudo es más fácil encontrar la solución
() =
mediante la ecuación
con el gradiente 𝜓 x𝛿𝜌(x,𝜃) a cero.
𝛿𝜃
La clase de estimadores MM fue introducida originalmente por Yohai (Yohai 1987; Yohai
et al. 1991) en el contexto del análisis de regresión robusta. Lopuhaã (1991, 1992)
adaptó estos estimadores para el análisis de datos multivariantes. En un primer paso, se
estima la dispersión de los datos mediante un estimador M. A partir de ahí, se lleva a
cabo una segunda estimación de tipo M para los parámetros de localización que se
ajusta a la matriz de varianza-covarianza del primer paso.

Estimadores basados en el escalamiento robusto


Ahora se presenta una clase general de estimadores robustos que pueden derivarse
del escalamiento robusto, a saber, el estimador del elipsoide de volumen mínimo
(MVE), el estimador del determinante de covarianza mínimo (MCD) y el
estimador S. Un estimador p-dimensional
Se considera una variable aleatoria x = (x1, ... , xp)′ ∈ ℝp que está distribuida
normalmente de forma conjunta, x ∼ N(𝝁, Σ). El vector de localización viene
dado por 𝝁 = E(x) = (E(x1 ), ... , E(xp))′ y la matriz de covarianza por Σ =
VAR(x) = E((x - 𝝁)(x - 𝝁)′). La distancia
es la distancia de Mahalanobis al cuadrado entre la muestra y los parámetros de
localización y dispersión: d(x, 𝝁, Σ) = (x - 𝝁)′Σ-1(x - 𝝁). La solución trivial de la
distancia cero puede alcanzarse si el valor propio más pequeño de una covarianza
estimada
matriz Σ̂ tiende a cero. Para excluir esta solución trivial, se requiere
| | Σ̂ = 1,
OPTIMIZACIÓN ROBUSTA DE LA 169
CARTERA
donde |⋅ denota el determinante de una matriz. Los tres estimadores robustos
mencionados
| para 𝝁̂ y Σ̂ se basan en la optimización
( )
arg min 𝜎̂ d(X, 𝝁̂ , Σ̂ ) , (10.4)

donde X es la muestra completa y d es el vector de distancias d(xi, 𝝁̂ , Σ̂ ) para i = p

+
1, ... , N y 𝜎̂ es una métrica robusta.
Los estimadores MVE y MCD fueron introducidos por Rousseeuw (Rousseeuw
1985; Rousseeuw y Leroy 1987). En el caso del estimador MVE, la nube de datos más
pequeña se determina de forma que se incluya al menos la mitad de las
observaciones de la muestra. Esto se consigue utilizando la mediana de 𝜎̂ . La tasa
de convergencia para este estimador es sólo N −1∕3 . En el caso del estimador MCD,
la submuestra robusta con tamaño h > N∕2 se elige de forma que el determinante de
la matriz de varianza-covarianza sea mínimo. El vector de localización se
determina como las p medias aritméticas de los puntos de datos seleccionados,
y el estimador de la matriz de varianza-covarianza se ajusta mediante factores de
corrección, de forma que la estimación resultante Σ̂ sigue la distribución normal. El
PA es máximo para h = int[(N + p + 1)∕2], pero se puede elegir cualquier
valor en el intervalo [(N + p + 1)∕2, N]. Davies (1987) introdujo la clase de
estimadores S. La letra "S" significa escala. Con respecto a la optimización
anterior, un estimador M para la escala N
∑N
según 1∕N 𝜌(di) =i=1
𝛿 se inserta, donde 𝜌(⋅) debe ser una función acotada
(por ejemplo, la función bicuadrada) y 𝛿 ∈ (0, 1).

El estimador Stahel-Donoho
El estimador Stahel-Donoho (SDE) se debe a Stahel (1981) y Donoho (1982). Según
este procedimiento, el grado de periferia se determina en términos de un pro
jección de la matriz de datos X con un vector a ∈ ℝp . Este vector se define para unas
observaciones x dadas, una ubicación robusta 𝝁̂ , y un estimador de escala con respecto
a la totalidad de
conjunto de datos X como
x′a - 𝜇̂(Xa)
t(x, a) = . (10.5)
𝜎̂(Xa)

El grado de los contornos se da como el máximo de (10.5) para todos los vectores a
donde las normas de estos vectores son iguales a 1. Esta solución se utiliza
entonces como esquema de ponderación para X, de manera que se aplica una
función no creciente t(xi).

El estimador OGK
Un problema de los estimadores robustos que poseen la propiedad de invariancia
afín es la optimización no convexa resultante. El estimador propuesto por Maronna
y Zamar (2002) evita este problema estimando las covarianzas entre dos variables
aleatorias como
170 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA

( [ ] [ Yj ]2)
1 Yj Yk 2 Yk
sjk = 𝜎 +
4 𝜎(Yj ) 𝜎(Yk ) j k
OPTIMIZACIÓN ROBUSTA DE LA 171
CARTERA
Esta forma de estimación de la dispersión fue introducida por Gnanadesikan y
Kettenring (1972). Si las covarianzas se determinan de acuerdo con (10.6), la
propiedad de invariancia afín se ve compensada por un cálculo más sencillo. Sin
embargo, si se aplicara este estimador de dispersión directamente a los pares de
datos de X, la matriz de varianza y covarianza resultante dejaría de ser positiva
definida. Por esta razón, Maronna y Zamar (2002) propusieron una
ortogonalización de X y, por tanto, el estimador se denomina "Gnanadesikan-
Kettenring ortogonalizado" (OGK). Si un estimador robusto para 𝜎 es
utilizado para las covarianzas por pares sjk, con j = 1, ... , p y k = 1, ... , p,
entonces la matriz de varianza-covarianza resultante también es robusta.

10.3 Optimización robusta


10.3.1 Motivación
En esta sección se pre sentarán los enfoques y técnicas robustas para optimizar las
carteras. En la sección anterior se trató la utilización de estimadores robustos en
lugar de clásicos para los parámetros desconocidos de localización y dispersión. En
ambos casos, las estimaciones resultantes -ya sean obtenidas por máxima
verosimilitud o por técnicas de estimación robusta- se han tomado como fijas y se
utilizarían directamente como entradas del programa matemático. Sin embargo, en
ambos casos los valores de estos parámetros están sujetos a la incertidumbre. En
cambio, ahora presentaremos e investigaremos enfoques de optimización en los
que la incertidumbre de los parámetros se tiene en cuenta directamente en la
formulación del programa matemático. El término "robusto" se define ahora de
forma diferente a la de la sección anterior. Allí se utilizaba para los estimadores
puntuales que son menos propensos a los valores atípicos en comparación con el
comportamiento de los estimadores ML clásicos. Ahora se define como una técnica
de optimización que producirá una solución que no se verá afectada negativamente
por una especificación alternativa de los parámetros, por ejemplo, si las
expectativas de rendimiento resultan ser menos favorables. Por cierto, las técnicas
de optimización robusta difieren de la optimización estocástica en el sentido de que
esta última se basa en una hipótesis de distribución específica para los parámetros.
En general, esto no es necesario para la optimización robusta. En resumen, el
objetivo de la optimización robusta es la derivación de una solución óptima para
conjuntos de posibles constelaciones de parámetros. En Ben-Tal y Nemirovski
(1998), Cornuejols y Tütüncü (2007), Fabozzi et al. (2007), Meucci (2005, capítulo
9), Scherer (2010, capítulo 5) y Tüntücü y König (2004) se ofrecen presentaciones
ampliadas de los enfoques para abordar estos problemas.

10.3.2 Conjuntos de incertidumbre y formulación de problemas


El concepto de optimización robusta se dilucidará ahora para las carteras de
varianza media, aunque el enfoque también es aplicable a otros tipos de
optimización. La optimización clásica de la cartera viene dada por1

P𝜆 = arg min (1 - 𝜆) 𝝎 ′ Σ 𝝎 - 𝜆𝝎′ 𝝁, (10.7)
𝝎∈Ω
172 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
1 La mayor parte de esta subsección se basa en (Schöttle 2007, capítulo 4).
OPTIMIZACIÓN ROBUSTA DE LA 173
CARTERA
donde 𝝎 denota el vector de pesos de la cartera n × 1 y Ω ⊂ {𝝎 ∈ ℝN |𝝎′ 𝟏 = 1} es el
conjunto de todas las soluciones admisibles. Los rendimientos (esperados) de los N
activos están contenidos en el vector 𝝁, con la matriz de varianza-covarianza Σ ∈
ℝN×N (se supone que es positiva definida). Se permite que el parámetro 𝜆 tome
todos los valores en el intervalo [0, 1] y de-
termina la ponderación entre el rendimiento de la cartera y su riesgo. Por supuesto,
la formulación del problema anterior puede modificarse con otras restricciones,
como una restricción presupuestaria (𝝎′ 𝟏 = 1),≥ una restricción de no negatividad
(𝝎 0), y/o límites en las ponderaciones ≤ para activos individuales o grupos de
activos (A𝝎 b). El programa matemático en la formulación anterior incluye los
casos especiales de una cartera de mínima varianza y de máxima rentabilidad si los
valores de 𝜆 se eligen como 𝜆 = 0 o 𝜆 = 1, respectivamente. Todos los valores de
𝜆 entre estos límites producen soluciones de cartera que se encuentran en la frontera
eficiente factible.
Hasta ahora, se han utilizado estimaciones puntuales para los parámetros
desconocidos (𝝁, Σ). Éstas pueden derivarse de estimadores clásicos o robustos,
como se ha mostrado en la sección anterior. Por cierto, se demostrará mediante
simulación en la sección 10.5 que esta última clase de estimadores resulta ser
beneficiosa en comparación con los estimadores ML. Sin embargo,
independientemente de que las estimaciones puntuales se obtengan a partir de
estimadores clásicos o robustos, estas estimaciones puntuales están sujetas a la
incertidumbre y, en cualquier caso, pequeñas desviaciones de los valores verdaderos
pero desconocidos de los parámetros pueden dar lugar a soluciones de cartera muy
distintas. Desde este punto de vista, sería deseable incluir las incertidumbres de los
parámetros directamente en la formulación de la optimización de la cartera. Dado
que la incertidumbre de los parámetros ejerce un mayor impacto en la composición
de la cartera en el caso de los rendimientos esperados en comparación con su
dispersión, limitaremos la siguiente exposición a la inclusión de los parámetros
inciertos de los rendimientos únicamente y trataremos los parámetros pertinentes al
riesgo de la cartera como fijos. Hasta ahora, el término "incertidumbre" se ha
utilizado de forma bastante vaga. A efectos de la aplicación de las técnicas de
optimización robusta, es necesario colmar esta laguna
con una definición concreta. Esto se consigue definiendo un conjunto de
incertidumbre U𝝁̂ para todos los valores admisibles de los parámetros. En
principio, son posibles tres tipos diferentes de conjuntos:

U𝝁̂ = {𝝁 ∈ ℝN 𝝁̂ 1, ... , 𝝁̂ i, ... , 𝝁̂ M, i = 1, ... , M}, (10.8a)


|
U𝝁̂ = {𝝁 ∈ ℝ | | 𝜇̂i - 𝜇i | ≤ 𝛿i , i = 1, ... , N},
N
(10.8b)
-1
U𝝁̂ = {𝝁 ∈ ℝN | (𝜇 - 𝜇̂ ) ′Σ̂ (𝜇 - 𝜇̂) ≤ 𝛿2 }. (10.8c)
T

Para el conjunto de incertidumbre en (10.8a), deben especificarse M escenarios


para el vector de rendimiento esperado 𝝁. Éstos pueden incluir expectativas
subjetivas y/o estimaciones de localización derivadas de estimadores alternativos.
En (10.8b), el conjunto de incertidumbre se define como intervalos alrededor del
vector de rendimiento verdadero, pero desconocido. Estos límites pueden
establecerse de forma subjetiva, pero también pueden derivarse de un √supuesto de
174 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA

distribución. Por ejemplo, si se supone que cada uno de los rendimientos de los
activos se distribuye normalmente, la fluctuación central
El intervalo de confianza con (1 - 𝛼) viene dado por 𝛿i = Φ-1(𝛼∕2) ⋅
𝜎̂ i ∕ T), donde Φ-1 es la función cuantil, 𝜎̂i la desviación estándar de los
rendimientos del i-ésimo activo, y T denota el tamaño de la muestra. El hecho
estilizado del exceso de curtosis de la re
Los procesos de giro se pueden tener en cuenta, utilizando una distribución t de Student,
para
OPTIMIZACIÓN ROBUSTA DE LA 175
CARTERA
ejemplo. En este caso, se realiza primero una estimación ML para obtener una
estimación del parámetro de grados de libertad 𝜈. A continuación, se determina el
cuantil en el nivel de confianza deseado utilizando esta estimación empírica. Merece
la pena mencionar que en el caso de un conjunto de incertidumbre como el de
(10.8b) no se tienen en cuenta las dependencias entre los márgenes de
incertidumbre de los diferentes activos, sino que se tratan como independientes
entre sí. Para el conjunto de incertidumbre de (10.8c) se define un conjunto de
incertidumbre elíptico. A diferencia del conjunto de incertidumbres de (10.8b),
ahora se supone que las incertidumbres proceden de una distribución elíptica
multivariante; las covarianzas entre los rendimientos de los activos se incluyen
ahora explícitamente en el conjunto de incertidumbres. Por último, pero no por ello
menos importante, cabe señalar que el primer y el segundo conjunto de
incertidumbres pueden combinarse. Los escenarios (por ejemplo estimadores
basados en ML y robustos para los rendimientos desconocidos) estarían entonces
dados por M ∶= {𝝁̂ML , 𝝁̂MCD , 𝝁̂M , 𝝁̂MM , 𝝁̂MVE , 𝝁̂S , 𝝁̂SD , 𝝁̂OGK } y se puede generar
un conjunto de incertidumbre elíptico como
-1
Ue = {𝝁 ∈ ℝN | (𝜇 - 𝜇̄ ) ′Σ̄ (𝜇 - 𝜇̄) ≤ 𝛿̄2}, (10.9)

con st

1 ∑
𝜇̄ = m, (10.10a)
|M| m∈M
1 ∑
Σ̄ = diag(𝜎̄11, ... , 𝜎̄NN ) donde 𝜎̄ii = (mi - 𝜇̄i)2, (10.10b)
|M| -1 m∈M
𝛿̄ = arg max(m - 𝜇̄ ) ′Σ̄ -1(m - 𝜇̄). (10.10c)
m∈M

Una vez introducidas las especificaciones alternativas para los conjuntos de


incertidumbre, se mostrará a continuación cómo se pueden expresar estas
incertidumbres en un programa matemático. En general, e independientemente de
la forma elegida para el conjunto de incertidumbre, se emplea un enfoque del peor
caso para resolver las tareas de optimización de forma robusta. Este enfoque
también se conoce como enfoque min-max. Aborda la cuestión de cuál es el vector
de pesos óptimo dada la constelación de parámetros menos favorable, es decir, el
menor rendimiento de la cartera para un nivel de riesgo determinado. En términos
generales: espere lo peor y al menos no se decepcionará.
En el caso de un conjunto de incertidumbre como el de (10.8a), en un primer
paso se determinarían los vectores de pesos para los M escenarios y, a
continuación, se seleccionaría el que produjera el menor rendimiento de la cartera.
Hay que señalar que, para este tipo de conjunto de incertidumbre, la determinación
de la solución óptima puede resultar costosa desde el punto de vista informático y
depende del número de escenarios M. También hay que destacar que todos los
escenarios se tratan como igualmente probables, pero que la solución se determina
únicamente por el peor escenario. De ello se deduce que el enfoque es muy
conservador y que el resultado óptimo puede estar muy influenciado por los valores
atípicos de los rendimientos esperados de los activos. Por lo tanto, una buena
especificación de los escenarios M es de suma importancia.
176 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA

A continuación se describe cómo se puede implementar el problema para un


conjunto de incertidumbre de un intervalo simétrico alrededor de los parámetros de
localización 𝝁 como se muestra en (10.8b).
OPTIMIZACIÓN ROBUSTA DE LA 177
CARTERA
La rentabilidad posterior verdadera pero desconocida del i-ésimo activo está contenida
en el intervalo
𝜇i ∈ [𝜇̂i - 𝛿i, 𝜇̂i + 𝛿i] para un nivel de confianza determinado. La rentabilidad menos
favorable para el i-ésimo activo viene dada, por tanto, como 𝜇i = 𝜇̂i - 𝛿i para una
posición larga y como 𝜇i = 𝜇̂i + 𝛿i para una posición corta. Estos N intervalos de
confianza forman un poliedro y pueden expresarse como un sistema de
restricciones de desigualdades lineales. Sin embargo, se desconoce de antemano si
un activo entra en la cartera con un peso positivo o negativo. Para resolver este
problema, se incluyen dos variables de holgura, 𝜔+ y 𝜔i, en la función objetivo:

PR𝜆 =arg max 𝝎 ′ 𝝁̂- 𝜹′ (𝝎+ - 𝝎-) - (1 - 𝜆) 𝝎 ′ Σ𝝎,
𝝎,𝝎+,𝝎-

𝝎 = 𝝎+ - 𝝎-,
𝝎+ ≥ 0,
𝝎- ≥ 0. (10.11)

Por supuesto, la formulación del problema anterior puede modificarse con una
restricción presupuestaria
′𝝎 𝟏 = 1 y/o otras restricciones. Durante la optimización, para los pesos positivos 𝜔i
> 0 los rendimientos son iguales a (𝜇̂i - 𝛿i), y para los pesos negativos los
rendimientos se establecen como (𝜇̂i + 𝛿i). En el primer caso, el iésimo elemento
de 𝝎+ es positivo y el de 𝝎- se fija igual a cero según la restricción de desigualdad,
y viceversa. Los activos con una mayor rentabilidad
La incertidumbre obtendrá una ponderación de la cartera inferior a la de aquellos
para los que la rentabilidad esperada es más segura. La incertidumbre de los
rendimientos esperados también puede limitarse a un
subconjunto U ⊂ N de los activos. En este caso, 𝛿i ∉ U se fijan en cero. Si se
incluyen las restricciones de sólo largo plazo como restricciones laterales, entonces
la formulación del programa matemático
se reduce a la expuesta en (10.7), donde el vector de retorno se establece como 𝝁̂ -

𝜹 con la restricción adicional de no negatividad 𝝎0.
Por último, se aclara el tratamiento de un conjunto de incertidumbre elíptico para
los retornos como en (10.8c). De forma análoga a los enfoques anteriores, este
problema también se resuelve en forma de wo rst-case approach:
PR𝜆 = arg min arg max (1 - 𝜆)√𝝎′Σ𝝎 - 𝜆(𝝎′ 𝝁). (10.12)
𝝎∈Ω 𝝁∈U
Si los rendimientos están distribuidos normalmente de forma multivariable,
entonces (𝝁 - 𝝁̂ )′Σ-1(𝝁 - 𝝁̂ ) se distribuye como 𝜒2 con N grados de libertad. El
escalar 𝛿2 es entonces el valor del cuantil correspondiente para un nivel de
confianza determinado (1 - 𝛼). El vector de retorno estocástico
Por lo tanto, 𝝁 se encuentra en la elipse definida por el nivel de confianza. Ahora se
determina la distancia máxima entre este elipsoide de incertidumbre y el vector de
ubicación empírica, de manera que los rendimientos corresponden al resultado
menos favorable. De (10.12) se desprende que la incertidumbre se limita a los
rendimientos y que la matriz de varianza-covarianza se toma como dada. Por lo
tanto, en un primer paso se puede determinar la distancia máxima utilizando un
enfoque de Lagrange, donde
P̂ =1 Σ̂T es la matriz de varianza-covarianza de los rendimientos empíricos y 𝛾 denota la
Multiplicador lagrangiano:
178 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA [𝛾 ]
L(𝝁, 𝛾) = 𝝎′ 𝝁̂ - 𝝎′ 𝝁 - (𝝁̂ - 𝝁)′P̂ -1
(𝝁̂ - 𝝁) - 𝛿2 . (10.13)
2
OPTIMIZACIÓN ROBUSTA DE LA 179
CARTERA
La solución óptima se encuentra entonces tomando las derivadas parciales de
(10.13) con respecto a 𝝁 y 𝛾 y poniéndolas a cero. Esto da lugar a un sistema de
dos ecuaciones, que se resuelve para 𝝁:
(
𝛿 𝝎)
𝝁= 𝝁̂ - √
P . (10.14)
𝝎′P̂ 𝝎

Después de multiplicar por la izquierda por 𝝎′ se obtiene, para los rendimientos de la cartera,
′𝝎 𝝁 = 𝝎′ 𝝁
̂- 𝛿√𝝎′P̂ 𝝎
= 𝝎′ 𝝁̂- 𝛿 P̂12𝝎 . (10.15)
De esta ecuación se desprende que el rendimiento po||rtfoli|o| en el caso de una
optimización robusta con incertidumbre elíptica es menor que la solución clásica
por el término 𝛿 𝝎 ′ P 𝝎. La raíz cuadrada del valor del cuantil puede
interpretarse
√ como un parámetro de aversión al riesgo con respecto a la
incertidumbre de las estimaciones. Sustituyendo la solución interna de la ecuación
(10.15) en la especificación de optimización robusta como en (10.12), se obtiene
PR𝜆 = arg min arg max (1 - 𝜆)√𝝎′Σ𝝎 - 𝜆(𝝎′ 𝝁)
√ 𝝎 ′ Σ̂
= arg min(1
𝝎∈Ω - 𝜆)√𝝎′Σ𝝎
𝝁∈U - 𝜆(𝝎′ 𝝁) + 𝜆 𝛿 𝝎

𝝎∈Ω T
( ) √𝝎′Σ𝝎
= arg min 1 - 𝜆 + 𝜆 𝛿√ - 𝜆𝝎′ 𝝁̂. (10.16)
𝝎∈Ω T

La ecuación (10.16) tiene las siguientes implicaciones:

• La frontera eficiente de una cartera cuando se optimiza de forma robusta bajo


incertidumbre elíptica es, excepto por un factor de acortamiento, la misma
que la frontera eficiente de una cartera clásica de media-varianza.

• El vector de pesos óptimo para una cartera de mínima varianza es el mismo


para ambos tipos de optimización. Esto debe ser cierto por definición, porque
la incertidumbre se ha limitado sólo a los rendimientos.

Con respecto al primer punto, el parámetro de compensación de riesgo-


rendimiento en (10.16) se expresa ahora como 𝜃. El parámetro de compensación
equivalente 𝜆 en la formulación del problema de (10.7) viene dado entonces por
𝜃
𝜆 ∶= . (10.17)
𝛿
1 + 𝜃 √T

El intervalo definido para 𝜃 ∈ [0, 1] está ahora


√ acotado por encima para las carteras
clásicas equivalentes de media-varianza: 𝜆 ∈ [0, 1∕(1 + 𝛿∕ T)].
180 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
Pero la solución también es conservadora en el caso de un conjunto de
incertidumbre elíptico, en el sentido de que las ponderaciones óptimas de la cartera
corresponden a una situación en la que para todos los activos se obtienen los
rendimientos menos favorables. El problema matemático formulado como en
(10.16) puede expresarse en forma de un programa cónico de segundo orden
(SOCP). Los SOCP se resuelven mediante métodos de punto interior. Más
precisamente, un programa matemático se expresa como un SOCP si se puede
escribir como
argxmin f′ x
sujeto a A x + b ≤ c′ x + d para j = 1, ... , J, (10.18)
||j j j j

donde J denota el número de restricciones cónicas. La formulación SOCP incluye


programas lineales (los Aj serían matrices nulas y los bj serían vectores nulos),
programas cuadráticos y problemas con restricciones hiperbólicas, así como
problemas
que puede contener sumas y máximos de normas vectoriales (véase Lobo et al.
1998). Como ya implica el nombre de esta formulación, la optimización de un cono
cuadrático requiere un cono corres-pondiente -también conocido como cono de
Lorenz o de helado- con la propiedad de que el primer elemento es al menos tan
grande como la norma euclidiana de sus restantes elementos. Analíticamente, el
cono se define como:
C = {x = (x , ... , x ) ∈ ℝN ∶ x ≥ x , ... , x }. (10.19)
1 N 1 || 2 N ||

El SOCP de (10.18) también puede expresarse en su forma


dual: J ′
arg max - ∑(b zj + dj𝑤j)
j
z,w j=1
J

sujeto a ∑(A′ zj +j cj𝑤j) = f , (10.20)


j=1

||zj| ≤ 𝑤 j para j = 1, ... , J.


||
Aquí, z ∈ ℝn j-1 y w ∈ ℝJ denotan las variables de optimización. Al igual que su
forma primaria, este es un programa convexo, ya que la función objetivo a
maximizar es cóncava y las restricciones son convexas. Más detalles sobre estos
tipos de optimización pueden
se encuentran, por ejemplo, en Nesterov y Nemirovsky (1994) o Boyd y Vanden-
berghe (2004).
Ahora, con respecto a la tarea de llevar la formulación del problema en (10.12) a
la forma SOCP, se define como variable de holgura para la rentabilidad de la
cartera del peor caso desconocido t = 𝝁 ′ 𝝎. El vector x en (10.18) y (10.19) es
entonces x = (t, 𝝎)′ y el problema puede escribirse como
e
arg min ||𝛼 s t
t u o
t,𝝎
≥ j
OPTIMIZACIÓN ROBUSTA DE LA 181
CARTERA

a t ≤ 𝝁̂′ 𝝎 - 𝛿

1
P 2 𝝎|| , (10.21)
1
𝜎max || Σ 2𝝎 ||.
182 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
La primera restricción de desigualdad es la restricción cónica y la segunda es una
restricción cuadrática con respecto al riesgo de la cartera. Por supuesto, la
especificación del problema en (10.21) puede ser modificada por otras restricciones
lineales, tales como restricciones de presupuesto, de no negatividad y/o de límite y
de grupo.

10.4 Sinopsis de los paquetes de R


En esta sección, sólo se presentan los paquetes dedicados parcial o totalmente a los
métodos de estimación robusta en el contexto del análisis de datos multivariantes.
Por lo tanto, los paquetes de R que cubren la regresión robusta, el análisis robusto
de series temporales y otros temas robustos no se incluyen en esta sinopsis. Se
remite al lector a la vista de tareas "Robust" de CRAN para obtener una visión
general y una breve descripción de estos paquetes.

10.4.1 El paquete covRobust


El paquete covRobust fue escrito por Wang et al. (2013). Está contenido en las
vistas de tareas "Robust" y "Multivariate" de CRAN. El paquete consiste
únicamente en la función cov.nnve(), que es una implementación del estimador
de covarianza y localización introducido por Wang y Raftery (2002). Los valores
atípicos o grupos de ellos se de- tectan mediante un procedimiento de vecino más
cercano (NN) y de ahí que el sufijo de la función sea un acrónimo de "estimador de
la varianza del vecino más cercano". La función se especifica con los dos
argumentos principales datamat para la matriz de observaciones de la muestra y
k para elegir el número de vecinos a considerar, con un valor por defecto de 12.
Los argumentos restantes pueden utilizarse para controlar el procedimiento de
optimización. La función devuelve un objeto de lista con elementos para la
estimación robusta de la covarianza (cov), el vector de la media ro- busta (mu) y las
probabilidades posteriores (postprob), es decir, las probabilidades de que los
puntos de datos tengan que ser considerados como atípicos. El elemento de la lista
clasificación contiene las probabilidades posteriores discretizadas (0, 1). Por
último, los resultados iniciales de la limpieza de la NN están contenidos en el
elemento de lista innc, que a su vez es una lista con los cuatro elementos
mencionados anteriormente.

10.4.2 El paquete fPortfolio


El paquete fPortfolio es un potente paquete de R para llevar a cabo muchos tipos
diferentes de tareas de optimización de carteras. Forma parte del conjunto de
paquetes Rmetrics. Se considera un paquete básico en la vista de tareas "Finance"
de CRAN. Las capacidades del paquete se describen de forma concisa en Würtz et
al. (2009, 2014). En esta subsección, nos centramos en cómo pueden emplearse los
estimadores robustos para la optimización de carteras; el paquete se analiza con
más detalle en el capítulo 12. La ranura fundamental para un objeto de la clase
fPFOLIOSPEC es el modelo. Esta ranura es a su vez un objeto de lista y
contiene el elemento llamado estimador. El valor de este elemento de la lista
OPTIMIZACIÓN ROBUSTA DE LA 183
CARTERA
denota la función para estimar la media y la covarianza de los rendimientos de los
activos y su valor por defecto es "covEstimator", que se refiere al estimador
clásico del producto-momento. El tipo de estimador para una especificación de
cartera determinada puede consultarse con la función
184 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
getEstimator() y modificada por la función setEstimator(). Esta
última función espera el nombre de una función que devuelva estimaciones para las
localizaciones y la dispersión. Devuelve un objeto lista con los elementos mu
y sigma para la localización y la dispersión, respectivamente.
En fPortfolio las funciones para robustecer las carteras son
kendallEstimator(), spearmanEstimator(), mcdEstimator(),
mveEstimator(), covMcdEstimator(), y covOGKEstimator(). Las
dos primeras funciones emplean las correlaciones de rango de Kendall y Spearman
como medidas de asociación entre los rendimientos de los activos. La diferencia
entre las funciones mcdEstimator() y covMcdEstimator() es que la
primera emplea la función contenida en el paquete MASS y la segunda utiliza la
función contenida en el paquete robustbase. Del mismo modo, el estimador MVE,
mveEstimator(), se importa del paquete MASS, y el estimador OGK,
covOGKEstima- tor(), del paquete robustbase. Sin embargo, cabe destacar
de nuevo que el usuario puede proporcionar cualquier estimador, y en Würtz et al.
(2009, Capítulo 20) se proporcionan ejemplos en los que se dilucida este enfoque.2

10.4.3 El paquete MASS


MASS es el paquete que acompaña al libro Modern Applied Statistics with S (Ven-
ables y Ripley 2002). Debido a su importancia y a la amplia implementación de
métodos encontrados en estadística, forma parte de la distribución básica de R. El
paquete MASS está contenido en las vistas de tareas de CRAN "Distributions",
"Econometrics", "En- vironmetrics", "Multivariate", "Pharmaconetics",
"Psychometrics", "Robust" y "SocialSciences". Dentro del paquete, se emplean
clases y métodos de tipo S3 y el paquete se entrega con un archivo
NAMESPACE. A continuación, sólo se presentan las funciones pertinentes a la
estadística robusta.
Los estimadores M de Huber se implementan como funciones huber() y
hubers(). La primera función estima la ubicación de un vector de datos. La
desviación absoluta media (MAD) se utiliza como estimación de la escala y el
valor por defecto para winsorizar la muestra se establece en k = 1,5. La última
función puede emplearse cuando se especifica la ubicación o la escala o si el
usuario no proporciona ninguna de las dos. Ambas funciones devuelven un objeto
lista con elementos para las estimaciones de localización y escala.
En el caso de los datos multivariantes, se pueden calcular estimaciones robustas
para el vector de localización y la dispersión con la función cov.rob(). Hay dos
métodos disponibles, el elipsoide de volumen mínimo y el determinante de
covarianza mínimo, siendo el primero el predeterminado. Se calcula una
estimación de covarianza clásica según los momentos del producto si se ha
establecido como argumento method = "classical". Las funciones
cov.mve() y cob.mcd() son envoltorios de los dos primeros métodos. La
función devuelve un objeto lista que contiene elementos con nombre para las
estimaciones de localización ("centro") y de dispersión ("cov"). Si las
correlaciones también deben ser

2 En aras de la exhaustividad, cabe mencionar que los estimadores de contracción y embolsados para

la matriz de dispersión también se incluyen en el paquete fPortfolio, a saber, shrinkEstimator()


OPTIMIZACIÓN ROBUSTA DE LA 185
y baggedEstimator(), respectivamente. CARTERA
Además, el lector puede consultar el paquete tawny
(véase Lee y Rowe 2014) para facilitar la optimización de carteras basada en estimadores de
contracción.
186 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
calculado (el valor por defecto es cor = FALSE), estos serán devueltos como
elemento de lista con nombre "cor". Los demás elementos de la lista contienen
información sobre el resultado de la optimización numérica.
Por último, la matriz de dispersión de una distribución t de Student multivariante
puede estimarse con la función cov.trob(). La distribución t proporciona cierta
solidez con respecto a los valores atípicos debido a una mayor masa de
probabilidad en las colas en comparación con la distribución normal. La función
permite incluir un vector de ponderación (wt) para las observaciones de la muestra.
Por defecto, las observaciones se ponderan por igual. Los grados de libertad deben
especificarse mediante el argumento nu; el valor por defecto es 5. El argumento
cor es un interruptor lógico (el valor por defecto es FALSE) que sirve para el
mismo propósito que en cov.rob(). El proceso de optimización puede controlarse
mediante los argumentos maxit y tol, que limitan el número máximo de iteraciones
y el criterio de convergencia, respectivamente; los valores por defecto son 25 y 0,01.
La función devuelve un objeto lista y los elementos "cov", "center" y
"cor" denotan las estimaciones de covarianza, localización y correlación,
respectivamente. Al igual que la función cov.rob(), los elementos restantes de
la lista contienen información sobre la optimización numérica.

10.4.4 El paquete robustbase


El paquete robustbase incluye la base y las funciones esenciales para la es-
tadística robusta (véase Rousseeuw et al. 2015; Todorov y Filzmoser 2009). El
paquete sirve como bloque de construcción para otros paquetes en el dominio de la
estadística robusta. Este paquete de CRAN está contenido en las vistas de tareas
"Multivariate", "Robust" y "SocialSciences". Emplea métodos y clases S4, pero
también importa métodos S3. Los cálculos pesados de algunos métodos robustos,
en particular el modelo lineal, están interconectados desde rutinas C.
Con respecto a la estadística robusta, se pueden utilizar las funciones covMcd()
y covOGK() para estimar la dispersión. La primera es una implementación del
determinante de covarianza mínima, y la segunda del estimador ortogonalizado de
Gnanadesikan-Kettenring. Ambas funciones devuelven un objeto de lista del que
se pueden extraer las estimaciones de localización ("centro") y dispersión
("cov").
La clase generalizada de estimadores M de Huber se implementa como función
hu- berM(). Esta función devuelve un objeto de lista con una estimación
robusta de la ubicación ("mu") y una estimación de la escala ("s"), donde se utiliza
la MAD por defecto, y el número de iteraciones se devuelve como elemento de
lista "it".

10.4.5 El paquete robusto


El paquete robust es un puerto de R del paquete Insightful (ahora TIBCO) del
mismo nombre (véase Wang et al. 2014). Está dirigido a usuarios ocasionales de
métodos y estadísticas robustas. Forma parte de las visiones de tareas "Robust" y
"SocialSciences" de CRAN y se considera un paquete central -similar a
robustbase- de las primeras. El paquete depende de los paquetes fit.models,
MASS, lattice, robustbase, rrcov y stats. La estimación de los modelos lineales y
OPTIMIZACIÓN ROBUSTA DE LA 187
lineales generalizados se realiza a partir deCARTERA
rutinas escritas en C.
188 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
Para los estadísticos multivariantes robustos está disponible la función
covRob(). Los datos para los que se requieren los estadísticos robustos pueden
especificarse como una matriz o un objeto data.frame. El usuario puede
elegir si se devuelven las covarianzas o las correlaciones estableciendo el
argumento lógico corr en consecuencia. Por defecto, se calcula una matriz de
varianza-covarianza. Además, el argumento distance se utiliza como
interruptor para determinar si se calculan o no las distancias de Mahalanobis al
cuadrado (el valor por defecto es TRUE). Los valores de datos perdidos pueden
manejarse especificando una función para el argumento na.action; la acción
por defecto es na.fail, pero en su lugar puede utilizarse na.omit. El método
de estimación robusta que se va a emplear viene determinado por el argumento
estim. Se puede proporcionar una cadena de caracteres para elegir entre los
siguientes estimadores multivariantes: "mcd" para el algoritmo MCD rápido;
"weighted" para el estimador MCD reponderado; "donostah" para el
estimador Stahel-Donoho; "M" para la clase de estimadores M; "pairwiseQC"
para el estimador de correlación de cuadrantes ortogonalizado; y
"pairwiseGK" para el estimador Gnanadesikan-Kettenring ortogonalizado. El
valor por defecto del argumento es "auto", en cuyo caso la función selecciona
automáticamente uno de los estimadores de correlación de cuadrantes de Stahel-
Donoho, MCD, o por pares, compensando el tiempo de cálculo con estimaciones
razonables de localización y dispersión. La regla es utilizar el estimador de Stahel-
Donoho para conjuntos de datos que contengan menos de 1000 observaciones y
menos de 10 variables, o menos de 5000 observaciones y menos de cinco variables.
Si el recuento de variables es mayor de 10 y menor de 20 con un máximo de 5000
puntos de datos, se utiliza el estimador MCD. En todos los casos de mayor
dimensión se utiliza el método de correlación ortogonalizada por pares. El
estimador MCD se importa del paquete robustbase y el resto de rrcov (véase la
sección 10.4.6). La función covRob() acepta un objeto para controlar la
estimación robusta. Este argumento funcional puede crearse con la función
covRob.control(), que devuelve una lista con nombre de parámetros de
control. Estos también pueden ser proporcionados a través del argumento ellipsis
cuando estim no está establecido en su valor por defecto "auto".
La función devuelve un objeto de lista de la clase informal S3 covRob. El
elemento de la lista "call" muestra cómo el usuario invocó la función, es decir,
el tipo de argumentos utilizados. Por lo tanto, se puede utilizar el método genérico
update() para este objeto. La estimación de la dis- persión (covarianzas o
correlaciones) se devuelve como elemento "cov" y el vector de localización
como "center". Si se han calculado las distancias de Mahanalobis, aparecerán
en el elemento de la lista "dist". Si el algoritmo se ha inicializado con
estimaciones robustas, estos valores se devuelven como "raw.cov",
"raw.center" y "raw.dist", para las dispersiones, localizaciones y
distancias, respectivamente. El nombre del estimador elegido se devuelve como
elemento de lista "estim" y los parámetros de control como objeto de lista
"control". Para los objetos de esta clase informal se proporcionan los métodos
print(), plot() y summary(), y este último también tiene su propio método
print(). Para el método plot(), el usuario puede elegir de forma interactiva
entre una representación de los valores propios, la raíz cuadrada de las distancias de
Mahalanobis o un gráfico de elipses. Los valores propios de las estimaciones de
OPTIMIZACIÓN ROBUSTA DE LA 189
dispersión están contenidos enCARTERA
objetos de la clase informal S3
summary.covRob.
Por último, la función ccov() es una implementación de los estimadores
clásicos y devuelve un objeto lista de la clase informal S3 cov. La intención
principal del paquete
190 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
es proporcionar una función que devuelva un objeto similar en estructura a los
objetos de la clase covRob de S3 y así facilitar una fácil comparación de las
estimaciones. Para estos objetos se definen los métodos plot(), print() y
summary().

10.4.6 El paquete rrcov


El paquete rrcov está dedicado exclusivamente a la estadística multivariante
robusta. Como tal, depende del paquete robustbase, pero ofrece un enfoque
autónomo de clases y métodos S4 para implementar estimadores robustos (véase
Todorov y Filzmoser 2009). Otras dependencias y/o directivas de importación del
paquete son methods, lattice, cluster, pcaPP (véase Filzmoser et al. 2014) y
mvtnorm (véase Genz y Bretz 2009). Está contenido en las vistas de tareas
"Multivariate" y "Robust" de CRAN y se considera un paquete principal en este
último. Su estructura con respecto a las clases definidas, los métodos
proporcionados y las estadísticas robustas cubiertas se detalla en una viñeta. El
paquete se entrega con un archivo NAMESPACE en el que se exportan todas las
funciones, métodos y clases relevantes del paquete y se importan los métodos S3
como funciones genéricas. Los cálculos computacionales intensivos se interconectan
a partir de rutinas C.
Además de los estadísticos multivariantes robustos, también se implementan
métodos robustos para el componente principal y el análisis discriminante lineal,
pero aquí nos centraremos únicamente en los estimadores robustos. Se emplea una
estructura de clases jerárquica, con una clase virtual CovRobust para la que se
definen los métodos habituales show(), summary() y plot(). Se define una
clase S4 para cada uno de los estimadores robustos multivariantes; son clases
derivadas de esta clase virtual. Del mismo modo, se define una clase virtual
CovControl de la que se derivan las clases que controlan un método robusto
específico. Básicamente, se implementan todos los métodos robustos para la
estadística multivariante: Los estimadores M, MM y S, así como los métodos
MVE, MCD y OGK y el estimador Stahel-Donoho. La convención de
nomenclatura para las clases es que existe una función constructora
correspondiente con el mismo nombre. Así, por ejemplo, la clase correspondiente
al método del determinante de covarianza mínima es CovMcd, la función
constructora del objeto es CovMcd(), y la construcción de estos objetos (es decir,
los ajustes de los parámetros para la estimación) se controla mediante
CovControlMcd(), que devuelve un objeto de la clase CovControlMcd. Por
lo tanto, las clases de los métodos robustos mencionados son CovMest,
CovMMest, CovSest, CovMve, CovMcd, CovOgk y CovSde
respectivamente, y las funciones constructoras asociadas tienen los mismos
nombres. Además, existe una función envolvente CovRobust() para estos
métodos robustos. Además de un argumento x para el objeto de datos, se define con
un argumento de control que requiere un objeto creado por una de las rutinas de
control para un método de estimación particular, por ejemplo, la salida de
CovControlMve(). Las ranuras de los objetos formales de la clase S4 pueden
extraerse llamando a una de las funciones getfoo(), donde foo es el nombre
de la ranura.
OPTIMIZACIÓN ROBUSTA DE LA 191
Al igual que el paquete robusto, losCARTERA
estimadores clásicos para la localización y la
dispersión son
implementado como función CovClassic(), que devuelve un objeto S4
CovClas- sic. El usuario puede elegir si se estiman los momentos de la
muestra o de la población empleando el argumento lógico unbiased; el valor por
defecto es TRUE.
192 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
El usuario puede elegir entre cinco tipos diferentes de gráficos para las
estimaciones clásicas o robustas de la localización y la dispersión: un gráfico de
índice de las distancias robustas y de Mahalanobis, un gráfico de distancia-distancia
(sólo para los métodos robustos), un gráfico 𝜒2 QQ de las distancias robustas y de
Mahalanobis, un gráfico de elipses y un gráfico de desglose de los valores propios. El
método plot() toma un argumento que el usuario puede emplear para controlar
el tipo de gráfico producido; el valor por defecto es which = "all", por lo que
todos los gráficos se devuelven sucesivamente si se ejecutan en modo interactivo.

10.4.7 Paquetes para resolver los SOCP


El paquete cccp
El paquete cccp se ha añadido recientemente a CRAN y aparece en la vista de
tareas sobre "Optimización" (véase Pfaff 2015). El nombre del paquete es un
acrónimo de "cone constrained convex programs" (programas convexos limitados
por conos) y, como tal, es adecuado para resolver funciones objetivo convexas con
restricciones de conos de segundo orden. Esto se consigue mediante métodos de
punto interior. Los algoritmos implementados son parcialmente portados de CVX-
OPT, un módulo de Python para la optimización convexa (ver
http://cvxopt.org para más información). Dentro del paquete se emplean
clases y métodos S4. Todos los cálculos relacionados con el solucionador están
interconectados desde módulos C++, para los que se utilizan los paquetes Rcpp
(véase Eddelbüttel 2013; Eddelbüttel y François 2011) y RcppAr- madillo (véase
Eddelbüttel y Sanderson 2014). cccp está dotado de un marco de pruebas unitarias
como el que proporciona RUnit (véase Burger et al. 2015). En el próximo capítulo
se proporcionará una descripción detallada del paquete y esta exposición se limita a
los programas de segundo orden limitados por el cono.
La función clave para resolver programas convexos es cccp(). En ella, el
usuario puede especificar la función objetivo mediante los argumentos P, q o f0.
Las restricciones del cono se proporcionan como un objeto de lista y sus elementos
deben haber sido creados por una de las funciones nnoc() (para las restricciones
de desigualdades lineales), psdc() (para las restricciones de desigualdades
matriciales semidefinidas
se utiliza para especificar positivas), y/o socc().
las restricciones de cono Esta última es
de segundo orden y tiene argumentos
F , d, y
f
+≤,fg. || Fx - g
para proporcionar la restricción cónica de segundo orden en||la forma d′ x
2
La función cccp() sí devuelve un objeto de clase de referencia Rcpp_CPS para el cual
se define el método show(). Funciones Getter para los campos contenidos un en
Rcpp_CPS
Los objetos también están disponibles.

El paquete Rsocp
El paquete Rsocp forma parte del conjunto de paquetes Rmetrics (véase Chalabi y
Würtz 2014). En el momento de escribir este artículo, el paquete estaba alojado
únicamente en R-Forge. Dentro del paquete, se implementan funciones de
envoltura para el software socp de Lobo et al. (1997). El algoritmo para resolver
los SOCP se ha desarrollado en C. Estas rutinas en C están interconectadas desde
OPTIMIZACIÓN ROBUSTA DE LA 193
CARTERA
R. Además de estas funciones en lenguaje de alto nivel, los autores proporcionan
scripts de MatLab. El software original todavía está disponible en
http://stanford.edu/∼boyd/old_software/SOCP.html.
194 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
El paquete contiene dos funciones: socp() y socpControl(). La función
for- mer sirve como envoltura del código C subyacente, y para controlar el
comportamiento del algoritmo se puede especificar un objeto de lista creado
por la última función. El SOCP tiene que ser formulado al menos en su forma
primaria (ver (10.18)) y proporciona argumentos para especificar los parámetros de
su forma dual. Si no se proporcionan estos últimos argumentos, se calcula una
solución interna antes de pasar los parámetros del SOCP a la rutina C. Esto se
consigue con las funciones internas .socp.phase1() y .socp.phase2().
La primera de estas funciones devuelve una solución interna para x y la segunda
determina los valores correspondientes para
z. Por cierto, el paquete contiene otra función oculta .SqrtMatrix() para calcular
la raíz cuadrada de una matriz. La guía del usuario (Lobo et al. 1997) y una versión
preliminar de Lobo et al. (1998) se encuentran en el directorio doc del
paquete.

10.5 Aplicaciones empíricas


10.5.1 Simulación de carteras: estadística robusta frente a la clásica
En esta primera aplicación empírica se realizará una simulación en la que se
compararán los estimadores clásicos y los robustos. Los rendimientos de cinco
activos ficticios se generarán aleatoriamente de acuerdo con uno de los siguientes
procesos de generación de datos (PGD):

• Cópula de Gauss con márgenes normalmente distribuidos

• Cópula de Gauss con márgenes distribuidos en t

• Cópula t de Student con márgenes distribuidos en t.

La primera DGP corresponde al caso en que los estimadores clásicos son los
mejores estimadores lineales insesgados para la cópula de Gauss con márgenes
normales; las otras dos DGP reflejan los hechos estilizados de los rendimientos de
los mercados financieros, a saber, el exceso de curtosis y la dependencia de la cola.
Para la distribución t se han elegido cinco grados de libertad, y los tamaños de las
muestras para todas las DGP son de 60, 120 y 240 observaciones. Suponiendo una
frecuencia mensual, esto corresponde a un periodo de tiempo de 5, 10 y 20 años
para los datos de cada una de las optimizaciones de cartera. Para cada DGP se ha
generado un conjunto de 1000 muestras. Se ha supuesto una estructura de
dependencia igualmente correlacionada entre los cinco activos con un valor de 𝜌 =
0,5. La generación de estas muestras aleatorias se muestra en el listado 10.1.
En primer lugar, se cargan los paquetes necesarios en el espacio de trabajo. Las
muestras aleatorias se generan mediante las funciones contenidas en el paquete
copula (véase la sección 9.4.2). A continuación, se crean objetos de cópula para la
cópula de Gauss y la cópula t de Student y se denominan ncop y tcop,
respectivamente. Los DGP se crean utilizando la función mvdc(). Esto requiere
un objeto de clase cópula y un objeto de lista que contenga la información
de los parámetros de las distribuciones marginales asumidas. Los objetos se
OPTIMIZACIÓN ROBUSTA DE LA 195
CARTERA
denominan NcopMargN, NcopMargT y TcopMargT para los tres modelos de
distribución multivariante.
196 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
Código R 10.1 Simulación de cartera: generación de datos.
## Carga de paquetes 1

l i b r a r i a ( cccp ) 2

l i b r a r i a ( c opul a ) 3

biblioteca ( r r c o v ) 4

## C r e a c i ó n de cópulas 5

ncop <- normal Copul a ( param = 0 . 5 , dim = 5 ) 6

t c op <- t C o pul a ( param = 0 . 5 , dim = 5 , df = 5 , df . f i x e d = TRUE) 7

## C r e a c i ó n d e DGP 8

NcopMargN <- mvdc ( ncop , ma rgi ns = " norm " , 9

paramMargins = l i s t ( l i s t ( mean = 0 , sd = 1 ) ) , 10

m á r g e n e s I d é n t i c o s = TRUE) 11

NcopMargT <- mvdc ( ncop , ma rgi ns = " t " , 12

paramMargins = l i s t ( df = 5 ) , 13

m á r g e n e s I d é n t i c o s = TRUE) 14

TcopMargT <- mvdc ( t cop , ma rgi ns = " t " , 15

paramMargins = l i s t ( df = 5 ) , 16

m á r g e n e s I d é n t i c o s = TRUE) 17

## I n i c i a l i z a c i ó n d e los l i s t o s para el DGP 18

Lobj < - l i s t a ( ) 19

l o n g i t u d ( Lobj ) <- 1000 20

## E s t a b l e c e r una semilla 21

s e t . semilla (12345) 22

## G e n e r a c i ó n d e muestras aleatorias 23

rNcopMargN < - l a p l i c a ( Lobj , f u n c i ó n ( x ) rMvdc ( 2 4 0 , NcopMargN ) ) 24

rNcopMargT <- l a p l i c a ( Lobj , f u n c i ó n ( x ) rMvdc ( 2 4 0 , NcopMargT ) ) 25

rTcopMargT < - l a p l i c a ( Lobj , f u n c i ó n ( x ) rMvdc ( 2 4 0 , TcopMargT ) ) 26

Estos objetos se emplean después para extraer las muestras aleatorias. Para ello,
primero se crea un objeto lista, Lobj, y se le asigna el tamaño de la simulación
como su longitud. En segundo lugar, se establece una semilla a efectos de
replicación. En principio, las 1000 muestras aleatorias para cada uno de los DGP
podrían asignarse como elementos de la lista con un bucle for, pero es más propio
de R utilizar lapply() en su lugar. En las tres últimas líneas se utiliza el objeto de
lista Lobj para este fin y los resultados se almacenan en los objetos
rNcopMargN, rN- copMargT y rTcopMargT. Estos objetos de lista constan
de 1000 muestras para cada una de las DGP con 240 filas y cinco columnas para
los rendimientos de los activos ficticios. Los datos de las muestras más cortas
pueden extraerse rápidamente de los elementos de la lista. Como paso siguiente, se
crea una función que devuelve las estimaciones de dispersión para los métodos
clásico y robusto. Esta función puede aplicarse a los conjuntos de datos simulados
para cada uno de los DGP y luego utilizarse para optimizar los portfo- lios de
varianza mínima. La simulación comparativa abarcará los estimadores clásicos y los
M-,
Estimadores robustos MM, S-, MCD, MVE, SD y OGK. La especificación de la función
se muestra en el listado 10.2, donde se utilizan los estimadores del paquete rrcov.
La función se especifica con tres argumentos. El primero, x, se utiliza para el
conjunto de datos aleatorios, el segundo para determinar qué tipo de estimador se
OPTIMIZACIÓN ROBUSTA DE LA 197
emplea, y el CARTERA
198 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA

Código R 10.2 Simulación de carteras: función de estimación de momentos.


## F u n c i ó n para la e s t i m a c i ó n d e momentos 1

Momentos <- f u n c i ó n ( x , método = c ( " C o v C l a s s i c " , " CovMcd" , 2

" CovMest " , " CovMMest " , " CovMve " , " CovOgk " , 3

" CovSde " , " Cov Sest " ) , . . . ) { 4

method <- match . a r g ( method ) 5

ans <- do . c a l l ( método , l i s t ( x = x , . . ) ) 6

r e t u r n ( get Cov ( ans ) ) 7

} 8

Código R 10.3 Simulación de carteras: estimaciones para procesos de datos.


## Di me nsi one s de la S i m u l a c i ó n 1

DGP <- c ( " rNcopMargN " , " rNcopMargT " , " rTcopMargT " ) 2

EST <- c ( " C o v C l a s s i c " , " CovMcd" , " CovMest " , " CovMMest" , 3

" CovMve" , " CovOgk " , " CovSde " , " Cov Sest " ) 4

MUESTRA <- c ( 6 0 , 120 , 240) 5

## C r e a n d o l i s t o b j e t o s p a r a c o m b i n a c i o n e s d e 6

## DGP y t a m a ñ o s d e muestra 7

## v e c t o r i n i t i a l d e l o s d a t o s 8

datnames <- NULL 9

para ( i i n DGP) { 10

f o r ( j i n SAMPLE) { 11

objname <- p a s t e ( i , j , sep = " " ) 12

datnames <- c ( datnames , objname ) 13

c a t ( p a s t e ( " C r e a t i s t o o b j e c t " , objname , " \ n " ) ) 14

a s i g n ( objname , l a p l i c a ( e v a l ( as . name ( i ) ) , 15

función ( x ) x [ 1 : j , ] )) 16

} 17

} 18

## C r e a n d o l i s t o b j e t o s con e s t i m a s d e 19

## l o c a c i ó n y d i s p e r s i ó n d e l a s c o m b i n a c i o n e s d e 20

## DGP, muestras y e s t i m a d o r e s 21

## v e c t o r i n i t i a l d e l o s p r o c e d i m i e n t o s 22

objnames <- NULL 23

f o r ( i i n datnames ) { 24

pa ra ( j i n EST ) { 25

objname <- p a s t e ( j , i , sep = " " ) 26

objnames <- c ( objnames , objname ) 27

c a t ( p a s t e ( " C r e a t i s t o o b j e c t " , objname , " \ n " ) ) 28

a s i g n ( objname , l a p l i c a ( e v a l ( as . name ( i ) ) , Momentos , 29

método = j ) ) 30

} 31

} 32
OPTIMIZACIÓN ROBUSTA DE LA 199
CARTERA
El tercero es el argumento de la elipsis que se pasa a do.call() para que el
usuario tenga el control de los argumentos de la función de estimación. En la
primera línea del cuerpo de la función se incluye la coincidencia parcial del
nombre de la función de estimación. En la segunda línea, se aplica la función
determinada por el método de argumentos al conjunto de datos x. Finalmente,
se extrae la estimación del objeto ans mediante la función de acceso
getCov() y se devuelve su resultado.
Esta función puede utilizarse ahora para estimar el segundo momento para cada
uno de los elementos de la lista y para cada uno de los DGP y tamaños de muestra.
El listado 10.3 muestra cómo se puede realizar esta tarea rápidamente. En primer
lugar, se define la dimensión del estudio de simulación: hay tres modelos para las
distribuciones multivariantes, DGP. Estos objetos de lista se crearon en el
Listado 10.1. Cada objeto de lista contiene 1000 elementos en forma de matrices
(240 × 5). A continuación, los nombres de las funciones de los estimadores que se
van a utilizar se recogen en el vector de caracteres EST. Por último, se establecen
los tamaños de las muestras en el vector numérico SAMPLE. En la siguiente
sección de código se crean las muestras de diferentes tamaños. En el primer bucle
doble for, se crean los nombres de los objetos y se muestran mediante la función
cat() para que el usuario pueda seguir mejor el progreso del bucle. Además, los
nombres de estos objetos de la lista se guardan en el vector datnames para su
uso en la construcción del segundo bucle for. En la última línea, se utiliza lapply()
para extraer para cada elemento de la lista y para cada DGP el número de filas según
SAMPLE. De este modo, una vez finalizada la ejecución del bucle, se han creado
nueve nuevos objetos de lista. Con estos conjuntos de datos a mano, se puede
proceder ahora a estimar los momentos para cada elemento de la lista. Esto se hace
en el segundo bucle for doble. En primer lugar, se crean los nombres de los
objetos de la lista que almacenarán las estimaciones de la media y la covarianza, y
estos nombres se muestran para permitir el seguimiento del progreso cuando se
ejecuta el bucle for. Al igual que en el primer bucle, los nombres de estos objetos se
guardan en el vector de caracteres objnames. En la última línea, se utiliza
lapply() para aplicar la función Moments() a cada elemento de la lista
para cada uno de los DGP y tamaños de muestra. Tras la finalización con éxito de
este bucle, se han creado un total de 3 × 3 × 8 = 72 objetos de lista y cada uno
contiene una estimación de dispersión. A continuación, se realizan las
optimizaciones de la cartera con respecto a estos 72 objetos, lo que implica un total
de 72 000 optimizaciones que hay que realizar.
Una vez creados todos los objetos de datos necesarios, se puede proceder a las
optimizaciones de la cartera. En el listado 10.4 se ha definido la función
PortMinVar(). La optimización se realiza empleando cccp() del paquete
cccp. La optimización de la varianza mínima tiene lugar bajo las restricciones de
estar completamente invertido (objetos a1 y b1) y con sólo posiciones largas
permitidas (objetos nno1). La función devuelve el vector de pesos. En el siguiente
bucle for se llevan a cabo las optimizaciones y se almacenan las 1000
cifras de riesgo de la cartera para cada una de las combinaciones de DGP,
estimador y tamaño de la muestra. Por último, se calculan la mediana y el rango
intercuartil (IQR) de los riesgos de la cartera.
Los resultados de la simulación se resumen en la tabla 10.1. Las medianas y los
rangos intercuartiles se presentan en las columnas para cada uno de los tres DGP.
200 OPTIMIZACIÓN ROBUSTA DE LA
Los CARTERA
resultados se agrupan por tamaño de la muestra. De esta tabla se pueden
extraer un par de conclusiones. Incluso en el caso de la cópula de Gauss con
márgenes distribuidos normalmente, el estimador clásico de la covarianza no
produce una estructura de cartera de menor riesgo en promedio, y la dispersión de
los riesgos de la cartera tampoco es la más pequeña. Este resultado es válido para
todos los
OPTIMIZACIÓN ROBUSTA DE LA 201
CARTERA
Código R 10.4 Simulación de carteras: optimizaciones de varianza mínima.
## F u n c i ó n para el p o r t a m i n o d e v a r i a d e l a f o l i ó n 1

## C o n s t r a i n t s : S ó l o en el caso de que sea largo 2

PortMinVar <- f u n c t i o n ( x ) { 3

k <- nc ol ( x ) 4

nno1 <- nnoc (G = - d i a g ( k ) , h = re p ( 0 , k ) ) 5

A1 <- m a t r i z ( r e p (1 , k ) , nrow = 1 ) 6

b1 <- 1 .0 7

opt <- cccp ( P = x , q = r e p ( 0 , k ) , A = A1 , b = b1 , 8

c L i s t = l i s t ( nno1 ) , 9

o p t c t r l = c t r l ( t r a c e = FALSE) ) 10

obtener x ( opt ) 11

} 12

## Conduct o p t i m i s a c i ó n 13

n o m b r e s d e p u e r t o s <- NULL 14

idx <- 1:1000 15

f o r ( i i n objnames ) { 16

objname <- p a s t e ( " P o r t " , i , sep = " " ) 17

p o r t na m e s <- c ( portnames , objname ) 18

obj <- e v a l ( as . name ( i ) ) 19

p e s o s <- l a p l a d a ( obj , PortMinVar ) 20

a s i g n ( objname , s a p l a d o ( idx , f u n c i ó n ( x ) 21

s q r t ( c r o s s p r o d ( w e i g h t s [ [ x ] ] , o b j [ x ] ) %∗% 22
pesos [ [ x ] ] ) ) ) 23

} 24

## C a l c u l a r la mediana y el IQR de los f o l i o r e s p o r t a n t e s 25

mednames <- NULL 26

i q r n a m e s <- NULL 27

f o r ( i i n po r t n a m e s ) { 28

objname1 <- p a s t e ( " Med" , i , sep = " " ) 29

objname2 <- p a s t e ( " IQR" , i , sep = " " ) 30

mednames < - c ( mednames , objname 1 ) 31

i q r na m e s <- c ( iqrnames , objname2 ) 32

a s i g n ( objname1 , median ( e v a l ( as . name ( i ) ) ) ) 33

a s i g n ( objname2 , IQR ( e v a l ( as . name ( i ) ) ) ) 34

} 35

tamaños de muestra, pero las diferencias se vuelven insignificantes para T = 240


con respecto a los riesgos medios. Se pueden conseguir riesgos de cartera más
bajos con los estimadores robustos OGK y Stahel-Donoho para esta DGP. Para T =
60, los estimadores M-, MM- y S- también destacan.
En el caso de la segunda DGP, una distribución multivariante con exceso de
curtosis pero sin de- pendencia de cola, se pueden hacer dos observaciones. En
primer lugar, los niveles de riesgo aumentan para todos los tipos de estimadores y
este aumento es más pronunciado para el estimador clásico. En cambio, el aumento
de la mediana de los riesgos para los estimadores robustos es bastante insignificante,
y
202 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
Cuadro 10.1 Simulación de cartera: resumen de los riesgos de la cartera
EstimatorNormal / NormalNormal / StudentStudent / Student
Median IQR Median IQR Mediana IQR
a a
T = 60
Clásico 0.75 0.098 0.91 0.142 0.92 0.158
MCD 0.76 0.147 0.79 0.178 0.82 0.172
M 0.73 0.131 0.76 0.161 0.79 0.159
MM 0.74 0.100 0.82 0.121 0.82 0.129
MVE 0.74 0.154 0.77 0.173 0.80 0.165
OGK 0.66 0.117 0.67 0.129 0.67 0.129
SDE 0.70 0.141 0.72 0.149 0.75 0.164
S 0.73 0.110 0.80 0.127 0.82 0.144
T = 120
Clásico 0.76 0.067 0.95 0.106 0.96 0.121
MCD 0.77 0.091 0.82 0.102 0.83 0.111
M 0.75 0.081 0.79 0.105 0.81 0.107
MM 0.76 0.067 0.85 0.084 0.84 0.090
MVE 0.76 0.096 0.81 0.106 0.83 0.114
OGK 0.69 0.080 0.71 0.089 0.69 0.090
SDE 0.74 0.094 0.77 0.098 0.80 0.109
S 0.75 0.075 0.82 0.086 0.84 0.096
T = 240
Clásico 0.77 0.052 0.97 0.084 0.97 0.097
MCD 0.77 0.058 0.83 0.074 0.85 0.077
M 0.77 0.059 0.82 0.077 0.82 0.077
MM 0.76 0.051 0.86 0.067 0.86 0.066
MVE 0.77 0.064 0.84 0.079 0.85 0.083
OGK 0.70 0.056 0.72 0.068 0.71 0.065
SDE 0.76 0.061 0.80 0.074 0.81 0.075
S 0.76 0.052 0.84 0.068 0.86 0.068

todos estos estimadores superan al estimador clásico, es decir, producen


asignaciones de cartera de menor riesgo. El estimador OGK es el que mejor se
comporta.
Este panorama se mantiene prácticamente sin cambios para la tercera DGP, en la
que ahora existen dependencias de cola entre los activos incluidos. Las diferencias
entre la segunda y la tercera DGP en los niveles medios son bastante pequeñas para
todos los estimadores y tamaños de muestra. Se puede concluir que la dependencia
de la cola no tiene un impacto material en el riesgo global de la cartera para el
diseño de simulación dado.
Los dos mensajes principales son, primero, que incluso en el caso de la distribución
normal multivariante, puede ser ventajoso emplear un estimador robusto, en particular
OGK, en lugar del estimador clásico; y segundo, todos los estimadores robustos
OPTIMIZACIÓN ROBUSTA DE LA 203
son bastante CARTERA
204 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
inmune con respecto a diferentes DGP, pero las violaciones de los supuestos del
modelo ejercen un gran impacto en el riesgo de la cartera cuando se utiliza un
estimador clásico.
Cuando se comparan los rangos intercuartiles de los riesgos de cartera para cada
uno de los estimadores y tamaños de muestra, surgen dos características. En primer
lugar, en el caso de la DGP gaussiana, los riesgos de cartera están más
concentrados en comparación con los estimadores robustos para todos los tamaños
de muestra. Este resultado confirma la propiedad de mejor estimador lineal
insesgado del estimador clásico. En segundo lugar, al violar ligeramente el
supuesto de normalidad, los riesgos de cartera implícitos del estimador clásico
están más dispersos en comparación con la mayoría de los estimadores robustos.
Para estos últimos, el rango intercuartil sigue siendo prácticamente el mismo,
independientemente de la DGP.

10.5.2 Prueba de espalda de la cartera: estadística robusta frente a la


clásica
En esta subsección se lleva a cabo un back-test de optimización de una cartera de
mínima varianza con long-only y full investment para los principales índices
bursátiles. Se utilizan los estimadores clásicos y robustos para la estimación de
momentos. Los seis índices bursátiles cubiertos son el S&P 500, el Nikkei 225, el
FTSE 100, el CAC 40, el DAX y el Hang Seng. La muestra de niveles de índices a
final de mes comienza el 31 de julio de 1991 y termina el 30 de junio de 2011, por
lo que comprende 240 observaciones.
En el Listado 10.5 se cargan primero en memoria los paquetes necesarios. El
conjunto de datos está contenido en el paquete FRAPO que acompaña a este libro.
En principio, el back-test de la cartera podría realizarse con las facilidades que
ofrece fPortfolio, pero para facilitar la comprensión se describirá un back-test
personalizado en el que se emplearán las funciones y métodos de los paquetes
cargados en las líneas 3-6.
Con los paquetes en memoria, el conjunto de datos se carga y se convierte en un
objeto zoo. Se calculan los rendimientos discretos porcentuales y, a modo de
análisis preliminar de los datos, se calculan los estadísticos descriptivos y se
dibujan gráficos de caja para cada índice.

Código R 10.5 Back-test de la cartera: estadísticas descriptivas de los rendimientos.


## Carga de paquetes 1

b i b l i o t e c a ( FRAPO) 2

l i b r a r i a ( P erformanceAnalytics ) 3

l i b r a r i a ( quadprog ) 4

biblioteca ( r r c o v ) 5

b i b l i o t e c a ( zoo ) 6

## Carga de datos , c a l c u l a d o r e s 7

d a t a ( S tockIndex ) 8

pzoo <- zoo ( Stock Index , o r d e r . by = rownames ( S t o c k I n d e x ) ) 9

rzoo <- ( pzoo / l a g ( pzoo , k = -1) - 1) ∗ 100 10


## b o x p l o t y d e s c r i p t i d a d e s t a t i s t i c a s 11
OPTIMIZACIÓN ROBUSTA DE LA 205
b o x p l o t ( c o r e d a t a ( r zoo ) ) CARTERA 12

r s t a t s < - r b i n d ( a pply ( rzoo , 2 , summary ) , 13

asimetría ( r zoo ) , 14

c u r t o s i s ( r zoo ) 15

) 16
206 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
30

20

10

-
10

-
20

-
30
SP500N225 FTSE100 GDAX HSI

Figura 10.1 Gráficos de caja de los rendimientos de los índices


bursátiles.

El gráfico de caja se muestra en la Figura 10.1, en la que los hechos estilizados


de los rendimientos de los mercados financieros son claramente evidentes. Los
rendimientos están sesgados hacia la izquierda y la amplitud de los rendimientos
indica un exceso de curtosis. La serie de rendimientos más volátil es el índice Hang
Seng. Todas las series de rendimientos tienen valores atípicos en la cola izquierda, pero
sólo el DAX alemán y el Hang Seng los tienen en la cola derecha. Las principales
estadísticas descriptivas se resumen en el cuadro 10.2.
El código para realizar el back-test se muestra en el Listado 10.6. En primer
lugar, se crea un vector de caracteres, EST, con los nombres de los estimadores a
utilizar. A continuación, se define una función, PfBack(), para determinar los
pesos de la cartera de mínima varianza para un estimador dado. Las funciones
definidas anteriormente Momentos()

Cuadro 10.2 Prueba retrospectiva de la cartera: estadísticas descriptivas de los


rendimientos

Estadísticas SP500 N225 FTSE100 CAC40 GDAX HSI


Mínimo -16.940 -23.830 -13.020 -17.490 -25.420 -29.410
Primer cuartil -1.854 -4.319 -1.762 -3.351 -2.533 -3.122
Mediana 1.067 -0.082 0.690 1.266 1.320 0.959
Media 0.604 -0.190 0.436 0.499 0.829 1.009
Tercer cuartil 3.323 3.886 3.115 4.017 4.431 4.679
Máximo 10.640 16.150 10.400 13.410 21.380 30.160
Skewness -0.558 -0.249 -0.481 -0.296 -0.457 0.242
Exceso de 0.985 0.484 0.420 0.215 1.763 2.310
OPTIMIZACIÓN ROBUSTA DE LA 207
curtosis CARTERA
208 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
Código R 10.6 Back test de la cartera: optimización de la ventana móvil.
## Conduct back t e s t 1

EST <- c ( " C o v C l a s s i c " , " CovMcd" , " CovMest " , " CovMMest" , 2

" CovMve" , " CovOgk " , " CovSde " , " Cov Sest " ) 3

## F u n c i ó n para la espalda 4

PfBack <- f u n c i ó n ( x , método = c ( " C o v C l a s s i c " , " CovMcd" , 5

" CovMest " , " CovMMest " , " CovMve " , " CovOgk " , 6

" CovSde " , " Cov Sest " ) , . . . ) { 7

cov <- Momentos ( x , método = método ) 8

r e t u r n ( Puerto Min Var ( cov ) ) 9

} 10

## Conduc ci ón de la vuelta al ruedo 11

PfWe i ght s <- l a p p l y ( EST , f u n c t ió n ( x ) 12

r o l l a p l a d o ( rzoo , width = 120 , FUN = PfBack , 13

método = x , por . columna = FALSE , 14

align = " r i g h t " ) ) 15

16

p e r i o d o s <- as . Fecha ( i n d e x ( Pf Pesos [ [ 1 ] ] ) ) 17

## C a r t e r a d e valores de la empresa / re ndimi e nt o r e l a t i v o 18

P f R e t u r n s <- l a p p l y ( Pf Weights , f u n c t i o n ( x ) 19

rowSums ( l a g ( x , k = -1) ∗ rzoo ) ) 20


P f R e t u r n s <- zoo ( m a t r i z ( u n l i s t ( P f R e t u r n s ) , 21

n c o l = l ength ( P f R e t u r n s ) ) , periodos ) 22

colnames ( P f R e t u r n s ) <- EST 23

P o r t O u t <- ( P f R e t u r n s [ , -1] - P f R e t u r n s [ , 1 ] ) 24

## p l o t r e l a t i v o rendi mie nto 25

p l o t ( Port Out , t y p e = " h " , 26

xl a b = " " , 27

y la b = EST[ - 1] , 28

main = "R e n d i m i e n t o r e l a t i v o " , 29

ylim = r ange ( P o rt O u t ) ) 30

## s t a t i s t i c a s s o b r e l a s e r v i c i o n e s r e l a t i v a s 31

P o r t R e l S t a t s <- r b i n d ( a pply ( Port Out , 2 , summary ) , 32

asimetría ( P o r t O u t ) 33

) 34

y PortMinVar(). La función PfBack() es utilizada por rollapply()


para calcular las ponderaciones de la cartera utilizando una ventana móvil de 120
observaciones. El objeto zoológico resultante se denomina PfWeights. La
función rollapply() se llama dentro de un recinto lapply() y el vector de
caracteres EST se ha utilizado como objeto de lista. Por lo tanto, el objeto
PfPesos es a su vez una lista de objetos zoo con los pesos para cada uno de los
métodos de estimación como en EST. A continuación, su índice se almacena como
los períodos del objeto. Para cada uno de los estimadores subyacentes, los
rendimientos de la cartera pueden calcularse rápidamente empleando la función
lag(), de modo que las ponderaciones, retrasadas por un período, se
multiplican por los rendimientos respectivos y las sumas de las filas de estos
productos son los rendimientos de la cartera. Este cálculo
OPTIMIZACIÓN ROBUSTA DE LA 209
CARTERA

CovM CovO
cd gk
012 0123
3

CovM CovS
est de
012 0123
3 -2 -2

CovM CovS
Mest est
01 012
23- 3 -2
2

3- -2
2
Jan Mar Mayo
Co 2
v 1
M 0
ve
-2
Jan Mar Mayo

Figura 10.2 Rendimiento relativo de las carteras robustas.

de nuevo implica la función lapply(). En las dos líneas siguientes, este objeto
lista se transforma en un objeto zoo y se calcula el exceso de rendimiento
de las carteras basado en estimadores robustos en comparación con el estimador de
covarianza clásico. En los dos últimos bloques de código se muestran los excesos de
rentabilidad y se calculan los estadísticos de resumen. El exceso de rendimientos de
la prueba retrospectiva basada en los estadísticos robustos en comparación con los
estimadores clásicos se muestra en la Figura 10.2 y los estadísticos de resumen
pertinentes en la Tabla 10.3. Para las medidas dadas, el resultado de las
optimizaciones robustas es más favorable que el del estimador clásico. El exceso
de rendimiento medio es positivo

Cuadro 10.3 Prueba retrospectiva de la cartera: estadísticas descriptivas


del exceso de rendimiento

Estimador Min 1er cuartil Mediana Medi 3er cuartil Max Skew
a
MCD -1.592 -0.350 -0.003 0.034 0.427 3.768 1.054
M -1.312 -0.314 -0.003 0.039 0.438 3.682 1.279
MM -0.685 -0.166 0.004 0.024 0.195 1.696 1.115
MVE -1.545 -0.372 -0.020 0.021 0.454 2.132 0.143
OGK -1.468 -0.337 0.017 0.037 0.484 2.670 0.363
SDE -1.898 -0.376 0.061 0.035 0.515 2.319 -0.018
S -1.360 -0.294 0.000 0.044 0.423 2.749 0.810
210 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
para todas las carteras robustas, y están sesgadas hacia la derecha. Ciertamente, la
asimetría se ve afectada por el gran exceso de rentabilidad positiva en 2009, pero
incluso si se ignora este punto de los datos resulta una asimetría positiva. Esto
puede concluirse por la diferencia entre el tercer cuartil y el valor absoluto del
primer cuartil, que es mayor que cero para todos los estimadores robustos. En
comparación con los demás estimadores robustos, el rendimiento del estimador
MM es el menos favorable, dando la media más baja y el exceso de rendimiento
máximo. Entre los estimadores robustos con un exceso de rendimiento positivo en
la mediana, los estimadores MCD y MM produjeron asignaciones de cartera que
arrojaron un exceso de rendimiento de mayor asimetría, seguidos por los
estimadores OGK y Stahel-Donoho.

10.5.3 Prueba de resistencia de la cartera: optimización robusta


En esta subsección se aplican optimizaciones robustas de cartera con incertidumbre
elíptica para los rendimientos esperados al conjunto de datos de la sección anterior.
La incertidumbre elíptica se basará en las estimaciones puntuales de ML. A
continuación, se compararán las fronteras eficientes para una optimización clásica de
la media-varianza, como se indica en (10.7), y la optimización robusta homóloga,
como se indica en (10.16). Recordemos que estas dos formulaciones de problemas
sólo difieren en el factor del primer término. El SOCP se resolverá utilizando la
función cccp() contenida en el paquete cccp (véase Pfaff 2015). Es decir, los
problemas de optimización de la cartera en (10.7) y (10.16) se plantean para
maximizar el rendimiento esperado de la cartera para un riesgo de desviación
estándar de la cartera dado. Antes de hacerlo, se define la función PMV() para
llevar a cabo esta tarea; devuelve las ponderaciones de la cartera y se expone en el
Listado 10.7.
Aquí, el SOCP se expresa en su forma primaria como en (10.18). Los
argumentos de la función son SRoot para la raíz cuadrada de la matriz de
varianza-covarianza, mu para la

Código R 10.7 Optimización robusta de la cartera con incertidumbre elíptica.


## D e f i n i r l a f u n c i ó n d e l o s p o l í t i c o s e n l a f r a n c i a d e l a s e n t i d a d e s 1

PMV <- f u n c t i o n ( SRoot , mu , SigTerm , 2

o p t c t r l = c t r l ( t r a c e = FALSE) ){ 3

N <- nrow ( SRoot ) 4

## R e s t r i c c i ó n d e r i e s g o d e l a c a r t e r a 5

soc1 <- socc ( F = SRoot , g = r e p ( 0 , N) , d = r e p ( 0 , N) , 6

f = SigTerm ) 7

## no n e g a t i v i d a d c o n s t r a i n t e r n a c i ó n 8

nno1 <- nnoc (G = - d i a g (N) , h = re p ( 0 , N) ) 9

## Presupuesto c o n s t r a i n t e r n o 10

A1 <- m a t r i z ( r e p (1 , N) , nrow = 1 ) 11

b1 <- 1 .0 12

## o p t i m i z a c i ó n 13

ans <- cccp ( q = -mu , A = A1 , b = b1 , 14

c L i s t = l i s t ( nno1 , soc 1 ) , o p t c t r l = o p t c t r l ) 15

ge t x ( ans ) 16
OPTIMIZACIÓN ROBUSTA DE LA 211
} CARTERA 17
212 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
estimaciones puntuales de los rendimientos esperados, SigTerm para el primer
término como en (10.7) y (10.16), y optctrl para proporcionar las opciones de
control especificadas por el usuario con respecto a la función cccp(). Por
defecto, este argumento se inicializa de forma que no se imprime la traza del
solucionador. En el cuerpo de la función, primero se determina el número de
activos mediante el recuento de filas de SRoot. En las siguientes líneas, se crean
las restricciones de la cartera con respecto a una cartera totalmente invertida y sólo
a largo plazo. La restricción de riesgo de desviación estándar de la cartera se define
llamando a la función socc. Esta restricción consiste en la raíz cuadrada de la
matriz de covarianza de la varianza como argumento del lado izquierdo y el
término constante SigTerm como límite superior. Esta restricción cónica de
segundo orden se asigna al objeto soc1. Las restricciones de no negatividad se
crean llamando a la función nnoc para crear restricciones con respecto al cono de
ortantes no negativos. Dado que todas las restricciones de cono se formulan como
restricciones inferiores o iguales con respecto a un cono, la matriz diagonal negativa
debe proporcionarse como argumento del lado izquierdo G. Esta restricción se asigna
al objeto nno1. Por último, la exigencia de inversión completa se convierte en una
restricción de igualdad (objetos A1 y b1). La optimización se lleva a cabo
rápidamente llamando a la función cccp(), y el objetivo lineal a minimizar se
establece en menos los rendimientos negativos. El parámetro de ponderación 𝜆
como en (10.7) y (10.16) no tiene que ser proporcionado, dado que es un escalador
y no influye en el resultado de la optimización, sino sólo en el valor de la función
objetivo. El resto de los argumentos que se pasan a cccp() son la restricción de
presupuesto (argumentos A y b), las dos restricciones de cono creadas previamente
y que se convierten en un objeto de lista como argumento cList, y los ajustes
de control para el optimizador (argumento optctrl).
Con esta función de envoltura en el Listado 10.7 uno puede ahora trazar las
fronteras eficientes de la media-varianza y de las carteras robustamente
optimizadas. El código R pertinente para hacerlo se muestra en el Listado 10.8.
En primer lugar, se carga el paquete cccp en el espacio de trabajo. En las líneas
2-8 se definen los parámetros utilizados en las optimizaciones. Éstos consisten en
el recuento de activos y observaciones, el vector de rendimientos esperados
establecido como las medias de columna de rzoo, la matriz de varianza-
covarianza de los rendimientos y la raíz cuadrada de los mismos, y el cuantil del
90% para las incertidumbres de los rendimientos. En las líneas 9-12 se determina
una secuencia de diez parámetros de aversión al riesgo para calcular los puntos de
la frontera eficiente. Éstos se construyen de forma que el rango abarca los riesgos
de desviación estándar de la cartera superiores al 110% del activo menos
arriesgado y al 90% del activo más arriesgado en términos de riesgo de desviación
estándar.
A partir de la línea 14, se definen dos objetos matriciales para almacenar
los resultados de optimización del enfoque clásico de cartera de media-varianza
(objeto MVans) y su contraparte robusta (objeto RCans), respectivamente.
El cálculo de los diez puntos de la frontera eficiente para cada esquema de
optimización se realiza en un bucle for que comienza en la línea 18. En el cuerpo
del bucle, se determina la asignación im- plicada por el enfoque clásico de media-
varianza para un parámetro de aversión al riesgo dado ra[i] y se asigna al objeto
wmv. A continuación, la desviación estándar del riesgo de la cartera asociada, la
OPTIMIZACIÓN ROBUSTA DE LA 213
CARTERA
rentabilidad de la cartera que se espera y la propia asignación se almacenan en la
fila i del objeto matriz MVans. De forma similar, se realiza lo mismo para la
configuración de la contraparte robusta en la parte restante del bucle
214 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
Código R 10.8 Fronteras eficientes para la optimización de la media-
varianza y la contraparte robusta con incertidumbre elíptica de 𝝁.
l i b r a r i a ( cccp ) 1

## A j u s t e de los pará met ros 2

N a s s e t s <- ncol ( r zoo ) 3

Nobs < - nrow ( r zoo ) 4

mu <- colMeans ( r zoo ) 5

S <- cov ( r zoo ) 6

SR <- sqrm ( S ) 7

d e l t a <- s q r t ( q c h i s q ( 0 . 9 , N a s s e t s ) ) 8

## D e t e r m i n a c i ó n d e l a f e a s i b l e r a d e l a v e r s i ó n 9

SigMax <- max ( c o l S d s ( r zoo ) ) 10

SigMin <- min ( c o l S d s ( r zoo ) ) 11

ra <- seq ( SigMin ∗ 1 . 1 , SigMax ∗ 0 . 9 , l e n g t h . o u t = 10 ) / SigMax 12


## O b j e t o s i n i c i a l e s p a r a l a s r e s u l t a c i o n e s d e l a VM y de la c o n t r a p a r t e
robusta 13

RCans <- MVans <- m a t r i z (NA, 14

nrow = 10 , 15

nc ol = N a s e t s + 2 ) 16

## Computing p o i n t s on e f r o n t i e r e s y a l o c a c i o n e s 17

para ( i i n 1 : 1 0) { 18

## variación-mínima 19

wmv <- PMV( SRoot = SR , mu = mu , SigTerm = SigMin / r a [ i ] ) 20

MVans [ i , ] <- c ( s q r t ( t (wmv) %∗% S %∗% wmv) , 21


c r o s s p r o d ( mu , wmv) , 22

wmv) 23

## c o n t r a p a r t i d a r o b u s t a 24

t h e t a <- ra [ i ] + ( 1 - ra [ i ] ) ∗ d e l t a / s q r t ( Nobs ) 25
wrc <- PMV( SRoot = SR , mu = mu , SigTerm = SigMin / t h a ) 26

RCans [ i , ] <- c( s q r t ( t ( wrc ) %∗% S %∗% wrc ) , 27


c r o s s p r o d ( mu , wrc ) , 28

wrc ) 29

} 30

cuerpo. Como resultado de este bucle for, se han llenado dos objetos matriz
con respecto a las optimizaciones homóloga clásica y robusta. Como se
desprende de la invocación de la función cccp(), las dos optimizaciones sólo
difieren entre sí con respecto al argumento proporcionado sigTerm.
Ahora, recordemos (10.17) en el que se estableció la relación entre la contraparte
robusta y el parámetro clásico de ponderación del riesgo de varianza media 𝜆. Para
un valor dado del escalar de ponderación del riesgo 𝜃 ∈ [0, 1] en la optimización de
la contraparte robusta, se puede calcular un valor equivalente para el ajuste clásico
de la varianza media. Este es el tema en el Listado 10.9.
OPTIMIZACIÓN ROBUSTA DE LA 215
CARTERA
Código R 10.9 Determinación de la asignación equivalente de media-varianza para una
ponderación de riesgo de contraparte robusta dada.
## P a r á me t r o d e la temperatura para la t a m b i é n 1

t h e t a 2 l a m b d a <- f u n c i ó n ( t a , N a s e t a s , Nobs , l e v e l ) { 2

d e l t a <- s q r t ( q c h i s q ( l e v e l , N a s s e t s ) ) 3

lambda <- t h e t a / ( 1 + t h e t a ∗ ( d e l t a / s q r t ( Nobs ) ) ) 4


lambda 5

} 6

## r o b u s t a a l o c a c i ó n y e q u i v a l i d a d 7

## u b i c a c i ó n media de la v a r i a n c i a 8

t h e t a <- 0,7 9

wrc <- PMV( SRoot = SR , mu = mu , SigTerm = SigMin / t h a ) 10

## P u n t o RC en la f r o n t a c i ó n e f i c i e n t e 11

rc e q <- c ( s q r t ( t ( wrc ) %∗% S %∗% wrc ) , c r o s s p r o d ( mu , wrc ) ) 12


## R i e s g o de c o n t a m i n a c i ó n 13

rweq <- t h e t a 2 l a m b d a ( t h e t a , N a c t i v o s = N a s e t s , Nobs = Nobs , 14

l e v e l = 0,9) 15

## E q u i v a l e n t o MV p o i n t e r n o s e n f r o n t i d a d e s 16

wmv <- PMV( SRoot = SR , mu = mu , SigTerm = SigMin / rweq ) 17

mveq <- c ( s q r t ( t (wmv) %∗% S %∗% wmv) , c r o s p r o d ( mu , wmv) ) 18

En primer lugar, se define la función theta2lambda() para calcular la


ponderación de riesgo equivalente para la cartera de varianza media. El cierre de la
función tiene argumentos theta para una ponderación de riesgo dada de la
cartera robusta de contrapartida, Nassets para el recuento de activos, Nobs para
el tamaño de la muestra y nivel para el nivel de confianza deseado. Los
argumentos Nassets y level se emplean en el cálculo del cuantil según una
distribución 𝜒2 . A partir de la línea 10, se determina la asignación robusta para un
valor de theta = 0,7 (objeto wrc) y el punto asociado en la frontera eficiente
se asigna al objeto rceq en la línea 12. A continuación, se calcula la ponderación
de riesgo equivalente llamando a theta2lambda(), y su valor devuelto se
asigna al objeto rweq. Este escalar se utiliza entonces en la llamada a PMV()
para determinar la asignación clásica equivalente de la varianza media (objeto wmv).
Por último, se calcula el punto asociado en la frontera eficiente y se almacena como
mveq.
El código R para producir una visualización gráfica de la frontera eficiente con
puntos de equiva- lencia se muestra en el Listado 10.10.
En primer lugar, se fijan los límites de los ejes X e Y. A continuación, se traza la
frontera eficiente de los puntos calculados según las asignaciones clásicas de la
varianza media en forma de línea. En este gráfico se superponen los puntos
eficientes con respecto a las asignaciones de varianza media y contrapartida
robusta. Por último, los puntos equitativos de la varianza media y de la contraparte
robusta se dibujan tal y como se calculan en el Listado 10. 9. El resultado se
muestra en la Figura 10.3.
216 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
Código R 10.10 Visualización gráfica de la frontera eficiente para las carteras de
varianza media y contraparte robusta.
## F r o n t i d a d e s e f i c i e n t e s 1

## r a n g o s d e d e t e r m i n a c i ó n 2

xl i ms <- c ( SigMin ∗ 0,9 , 3


max ( c b i n d ( MVans [ , 1 ] , RCans [ , 1 ] ) ) ) 4

y li ms <- c ( min ( c b i n d ( MVans [ , 2 ] , RCans [ , 2 ] ) ) , 5

max ( c b i n d ( MVans [ , 2 ] , RCans [ , 2 ] ) ) ) 6

## p l o t a n d o e f r o n t i d a d d e l a s m u e s t r a s 7

p l o t ( MVans [ , 1 ] , MVans [ , 2 ] , t y p e = " l " , 8

xlim = xlims , 9

ylim = ylims , 10

x l a b = e x p r e s i ó n ( sigma ) , 11

y l a b = e x p r e s i ó n ( mu) ) 12

## S u p e r p o s i c i ó n d e p o i n t e s 13

pa ra ( i i n 1 : nrow ( MVans ) ) { 14

p o i n t s ( x = MVans [ i , 1 ] , y = MVans [ i , 2 ] , c o l = " b l u e " , 15

pch = 19) 16

p o i n t o s ( x = RCans [ i , 1 ] , y = RCans [ i , 2 ] , c o l = " r e d " , 17

pch = 19) 18

} 19

## S u p e r p o s i c i ó n d e los puntos de vista de la e q u i v a l i d a d 20

p o i n t o s ( x = rc e q [ 1 ] , y = rc e q [ 2 ] , c o l = " d ar k g r een " , 21

bg = " d a r k g r e e n " , pch = 23 ) 22

p o i n t o s ( x = mveq [ 1 ] , y = mveq [ 2 ] , c o l = " g reen " , bg = " gree n " , 23

pch = 23) 24

## Leyenda 25

l e g e n d ( " t o p l e f t " , l e g e n d = c ( " E f f i c i e n t F r o n t i e r " , " MV p o i n t s " , 26

" P u n t o s RC " , 27

e x p r e s i ó n ( p a s t e ( "RC a l o c a c i ó n c o n " , 28

t h e t a == 0 . 7 ) ) , 29

" E q u i v a l e n t e MV- C a r t e r a " ) , 30

l t y = c ( 1 , NA, NA, NA, NA) , pch = c (NA, 19 , 19 , 23 , 23 ) , 31

pt . bg = c (NA, NA, NA, " d a r k g r e e n " , " o r a n g e " ) , 32

col = c ( " b la ck " , " b lue " , " r e d " , " d a r k g r e e n " , " o r a n g e " ) ) 33

Se puede observar que las soluciones de la optimización robusta seleccionadas


forman parte de la frontera eficiente de la media-varianza, aunque las soluciones de
la primera no llegan a la segunda. Esto se pone de manifiesto cuando se comparan
las soluciones equivalentes de las optimizaciones media-variable y robusta. La
solución indicada como un punto en el extremo noreste es la solución de varianza
media correspondiente a la homóloga robusta adyacente, que se encuentra al
suroeste de la misma.
OPTIMIZACIÓN ROBUSTA DE LA 217
CARTERA
Puntos MV de
la frontera
0.
eficiente
95
Puntos RC
Asignación RC con θ = 0,7 Cartera
0. MV equivalente
90

0.85

0.
80

0.
75

0.
70
4.0 4.5 5.0 5.5 6.0 6.5 7.0
σ

Figura 10.3 Frontera eficiente de las carteras de varianza media y robusta.

Referencias
Ben-Tal A. y Nemirovski A. 1998 Robust convex optimization. Mathematics of Operations
Research 23(4), 769-805.
Boyd S. y Vandenberghe L. 2004 Convex Optimization. Cambridge University Press, Cam-
bridge.
Burger M., Jünemann K., y König T. 2015 RUnit:R Unit Test Framework. Paquete R versión 0.4.28.
Chalabi Y. y Würtz D. 2014 Rsocp: Una biblioteca de extensión de R para utilizar SOCP desde
R. Paquete R versión 271.1.
Cornuejols G. y Tütüncü R. 2007 Optimization Methods in Finance. Cambridge University
Press, Cambridge.
Davies P. 1987 Comportamiento asintótico de los estimadores S de los parámetros de localización
multivariante y de las matrices de dispersión. The Annals of Statistics 15, 1269-1292.
Donoho D. 1982 Breakdown properties of multivariate location estimators. Informe técnico,
Universidad de Harvard, Boston.
218 OPTIMIZACIÓN ROBUSTA DE LA
CARTERA
Eddelbüttel D. 2013 Seamless R and C++ Integration with Rcpp. Springer, Nueva York.
Eddelbüttel D. y François R. 2011 Rcpp: Seamless R and C++ integration. Journal of Sta-
tistical Software 40(8), 1-18.
Eddelbüttel D. y Sanderson C. 2014 RcppArmadillo: Aceleración de R con álgebra lineal C++
de alto rendimiento. Computational Statistics and Data Analysis 71, 1054-1063.
Fabozzi F., Focardi S., Kolm P. y Pachamanova D. 2007 Robust Portfolio Optimization and
Management. John Wiley & Sons, Nueva Jersey.
Filzmoser P., Fritz H. y Kalcher K. 2014 pcaPP: Robust PCA by Projection Pursuit. Paquete
R versión 1.9-60.
Genz A. y Bretz F. 2009 Computation of Multivariate Normal and t Probabilities Lecture
Notes in Statistics. Springer-Verlag, Heidelberg.
Gnanadesikan R. y Kettenring J. 1972 Robust estimates, residuals and outlier detection with
multiresponse data. Biometrics 28, 81-124.
Hampel F. R., Rochetti E. M., Rousseeuw P. J. y Stahel W. A. 1986 Robust Statistics, The
Approach Based on Influence Functions. John Wiley & Sons, Nueva York.
Huber P. 1964 Estimación robusta de un parámetro de localización. Anales de Estadística Matemática
35, 73-101.
Huber P. J. 1981 Robust Statistics. John Wiley & Sons, Nueva York.
Lee B. y Rowe Y. 2014 tawny: Proporciona varias estrategias de optimización de carteras,
incluyendo la teoría de las matrices aleatorias y los estimadores de contracción. Paquete R
versión 2.1.2.
Lobo M., Vandenberghe L., y Boyd S. 1997 SOCP: Software for Second-order Cone Pro-
gramming, User's Guide Stanford University Stanford. Versión Beta.
Lobo M., Vandenberghe L., Boyd S. y Lebret H. 1998 Applications of second-order cone
programming. Linear Algebra and its Applications 284, 193-228.
Lopuhaã H. 1991 Multivariate 𝜏 - e s t i m a t o r s for location and scatter. Canadian Journal of
Statistics 19, 307-321.
Lopuhaã H. 1992 Estimadores altamente eficientes de localización multivariante con alto
punto de ruptura. Anales de Estadística 20, 398-413.
Maronna R. y Zamar R. 2002 Estimaciones robustas de localización y dispersión de
conjuntos de datos de alta dimensión. Technometrics 44(4), 307-317.
Maronna R., Martin D. y Yohai V. 2006 Robust Statistics: Theory and Methods. John Wiley &
Sons, Nueva York.
Meucci A. 2005 Risk and Asset Allocation. Springer-Verlag, Nueva York.
Nesterov Y. y Nemirovsky A. 1994 Interior-Point Polynomial Methods in Convex Program-
ming vol. 13 of Studies in Applied Mathematics. SIAM, Philadelphia.
Pfaff B. 2010 Modelización de los riesgos financieros: Fat Tails, Volatility Clustering and
Copulae. Frank- furt Allgemeine Buch, Frankfurt am Main.
Pfaff B. 2015 cccp: Cone Constrained Convex Problems. R package version 0.2-4.
Rousseeuw P. 1985 Multivariate estimation with high breakdown point In Mathematical Statis-
tics and Applications (ed. Grossmann W., Pflug G., Vincze I. y Wertz W.) vol. B Reidel
Publishing Dordrecht pp. 283-297.
Rousseeuw P. y Leroy A. 1987 Robust Regression and Outlier Detection. John Wiley &
Sons, Nueva York.
Rousseeuw P., Croux C., Todorov V., Ruckstuhl A., Salibian-Barrera M., Verbeke T., Koller
M. y Mächler M. 2015 robustbase: Basic Robust Statistics. Paquete R versión 0.92-5.
OPTIMIZACIÓN ROBUSTA DE LA 219
CARTERA
Scherer B. 2010 Portfolio Construction and Risk Budgeting 4th edn. Risk Books, Londres.
Schöttle K. 2007 Robust Optimization with Application in Asset Management Dissertation
Technische Universität München München.
Stahel W. 1981 Robuste Schätzungen: Infinitesimale Optimalität und Schätzungen von
Kovar- ianzmatrizen Tesis de doctorado Instituto Federal Suizo de Tecnología (ETH)
Zürich.
Staudte R. G. y Sheather S. J. 1990 Robust Estimation and Testing. John Wiley & Sons, Nueva
York.
Todorov V. y Filzmoser P. 2009 An object-oriented framework for robust multivariate
analysis. Journal of Statistical Software 32(3), 1-47.
Tüntücü R. y König M. 2004 Robust asset allocation. Annals of Operation Reserach 132,
132-157.
Venables W. N. y Ripley B. D. 2002 Modern Applied Statistics with S 4th edn. Springer,
Nueva York.
Wang J., Zamar R., Marazzi A., Yohai V., Salibian-Barrera M., Maronna R., Zivot E.,
Rocke D., Martin D., Maechler M., y Konis K. 2014 robust: Robust Library. Paquete R
versión 0.4-16.
Wang N. y Raftery A. 2002 Nearest neighbor variance estimation (NNVE): Estimación
robusta de la covarianza mediante la limpieza del vecino más cercano (con discusión).
Journal of the American Statistical Association 97, 994-1019.
Wang N., Raftery A., y Fraley C. 2013 covRobust: Robust Covariance Estimation via Nearest
Neighbor Cleaning. Paquete R versión 1.1-0.
Würtz D., Setz T. y Chalabi Y. 2014 fPortfolio: Rmetrics-Portfolio Selection and Opti-
mization. Paquete R versión 3011.81.
Würtz D., Setz T., Chalabi Y., Chen W., y Ellis A. 2009 Portfolio Optimization with R/Rmet-
rics Update 2015 Rmetrics eBooks. Rmetrics Association y Finance Online Publishing,
Zürich.
Yohai V. 1987 Estimaciones de alto punto de ruptura y alta eficiencia para la regresión. The
Annals of Statistics 15, 642-656.
Yohai V., Stahel W. y Zamar R. 1991 A procedure for robust estimation and inference in
linear regression En Directions in Robust Statistics and Diagnostics (Part II) (ed. Sta- hel
W. y Weisberg S.) vol. 34 de The IMA Volumes in Mathematics and its Applications
Springer-Verlag New York pp. 365-374.
11

La diversificación reconsiderada

11.1 Introducción
Casi no hace falta decir que uno de los objetivos de la asignación de la riqueza es la
diversificación de los riesgos. Por ello, la utilidad de un inversor con aversión al
riesgo aumenta cuando la riqueza se asigna a una combinación de activos en lugar
de mantener un único activo de riesgo. Los conceptos y métodos para la evaluación
de los riesgos de mercado se han presentado en la Parte II de este libro. Las
medidas de riesgo derivadas de los modelos estadísticos presentados se han
aplicado a posteriori, es decir, para una asignación de cartera determinada y su
función de pérdida implícita, se puede evaluar el riesgo de la inversión para un
nivel de confianza determinado. En este capítulo y en el siguiente, se presentan
enfoques de optimización de carteras que abordan directamente la cuestión de la
asignación de activos, de forma que se tiene en cuenta directamente el propósito de
la diversificación del riesgo.
Hasta ahora, el término "diversificación" se ha utilizado con bastante ligereza y
los enfoques presentados no han cuestionado la opinión de que la matriz de
varianza-covarianza de los re- giros es un estadístico apropiado para medir la
diversificación, excepto en el capítulo sobre la modelización de las dependencias
(es decir, las cópulas). La diversificación implica al menos dos dimensiones. La
primera dimensión aborda la cuestión de la característica común subyacente con
respecto a la cual los activos son diversos. La segunda aborda la cuestión de cómo
medir el grado de diversificación con respecto a esta característica. Por ejemplo, un
inversor con aversión al riesgo de tipo long-only no estaría en mejor situación si
mantuviera una cartera con fuertes co-movimientos en el signo de los rendimientos
en comparación con una mezcla de activos en la que los rendimientos de los
activos que la componen no comparten esta característica, ceteris paribus. La
matriz de varianza-covarianza de los rendimientos se emplea entonces a menudo
como medida para evaluar el riesgo de los activos y las dependencias entre ellos.
Pero

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
OPTIMIZACIÓN ROBUSTA DE LA 221
CARTERA

2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd. Sitio
web complementario: www.pfaffikus.de
LA DIVERSIFICACIÓN 199
RECONSIDERADA
Aquí la diversificación se define simplemente con respecto a las dependencias
globales de los rendimientos, medidas correctamente con la matriz de varianza-
covarianza. En general, esto no es una salvaguarda contra el riesgo per se.
En la sección 11.2 se centra primero en cómo medir el grado de diversificación y
cómo determinar una asignación de cartera tal que sea "la más diversificada". A
continuación, en la sección 11.3, la "diversificación" se caracteriza por la
contribución de los activos que componen la cartera al riesgo global de la misma.
En este caso, la diversificación es favorable si las contribuciones al riesgo no se
concentran en unos pocos activos y, por lo tanto, se considera que una asignación
de cartera está bien diversificada si cada uno de sus componentes contribuye en
igual medida al riesgo global de la cartera. En la sección 11.4, en la que se
reconsidera la diversificación, se construyen carteras óptimas (in)dependientes de
la cola. Ahora, la "diversificación" se utiliza en el sentido de acontecimientos
extremos del mercado, de modo que la atención se desplaza hacia el
comportamiento de la cartera en los descensos generales del mercado. Esto puede
medirse mediante el coeficiente de dependencia de la cola (inferior) (TDC; véase el
capítulo 9). En la sección 11.5, se presentan los paquetes de R en los que se
implementan directamente los enfoques de optimización de carteras o se pueden
emplear para la optimización, y el capítulo concluye con ejemplos en los que se
contrastan las soluciones de los enfoques de cartera más diversificada, de igual
riesgo contribuido y de mínima dependencia de la cola con la asignación de la
cartera de mínima varianza global. Todos los enfoques de optimización tienen un
objetivo común, a saber, minimizar el riesgo del inversor mediante la
diversificación, pero difieren en las dos dimensiones de "diversidad con respecto a
qué característica" y "cómo medirla".

11.2 Cartera más diversificada


En una serie de trabajos, Choueifaty y Coignard (2008) y Choueifaty et al. (2011)
abordaron las propiedades teóricas y empíricas de las carteras cuando se utiliza la
diversificación como criterio. Para ello, establecieron en primer lugar una medida
con la que se puede evaluar el grado de diversificación de una cartera solo a largo
plazo. Sea Σ la matriz de varianza-covarianza de los rendimientos de N activos y 𝝈
el vector de volatilidades de los activos medido por sus respectivas desviaciones
estándar. El ratio de diversificación (DR) se define entonces para un determinado
(N × 1) vector de pesos 𝝎 en el conjunto permitido de soluciones de cartera Ω
como
′𝝎 𝝈
DR𝝎∈Ω = √𝝎′Σ𝝎 . (11.1)

El numerador es la volatilidad media ponderada de los activos individuales, y viene


dada por el producto escalar del vector de pesos y las desviaciones estándar de los
rendimientos de los activos. El denominador es la desviación típica de la cartera.
Según esta definición, cuanto mayor sea la DR, más diversificada estará la cartera.
Este ratio tiene un límite inferior de uno, que sólo se alcanzará en el caso de una
cartera de un solo activo. Las soluciones de cartera que se caracterizan por una
asignación muy concentrada o por rendimientos de activos muy correlacionados se
200 LA DIVERSIFICACIÓN
RECONSIDERADA

considerarían poco diversificadas. Los autores confirman esta afirmación


considerando la siguiente descomposición de la
LA DIVERSIFICACIÓN 201
RECONSIDERADA
ratio de diversificación (prueba proporcionada en el Apéndice A de Choueifaty et al. 2011):
1
DR𝝎∈Ω = √ , (11.2)
𝜌 + CR) - 𝜌CR
donde 𝜌 y CR denotan la correlación media ponderada por la volatilidad y la relación de
concentración ponderada por la volatilidad, respectivamente. La primera se define
como
∑N≠j
i (𝜔i𝜎i𝜔j𝜎j)
𝜌𝝎∈Ω = 𝜌ij∑N , (11.3)
i≠j
(𝜔 i𝜎 i𝜔 j𝜎j )

y el último como el índice de Herfindahl-Hirschmann normalizado (véase Hirschman


1964), que está acotado en el intervalo [1∕N, 1]:
∑N (𝜔 i 𝜎 i 2
)
CR 𝝎∈Ω = (∑N
i=1
. (11.4)
i=1 𝜔i𝜎i)
2
Las derivadas parciales de (11.2)
son
1-CR

𝜕DR = - 1 𝜌+CR-𝜌CR , (11.5a)
𝜕𝜌 2 𝜌 + CR - 𝜌CR
1-𝜌
√𝜌+CR-𝜌CR
𝜕DR 1 , (11.5b)
=-
𝜕CR2 𝜌 + CR - 𝜌CR
de la que se puede deducir directamente la corrección de la relación indicada
anteriormente. Debido a la relación entre el número de activos y la CR con
respecto al límite inferior de la CR, una comparación de diferentes soluciones de
cartera sólo es válida si éstas se han derivado del mismo conjunto de oportunidades
de inversión. Además, la CR sólo depende de las correlaciones medias ponderadas
por la volatilidad en el caso de una asignación ingenua (es decir, igualmente
ponderada) entre activos. Si se supone que los excesos de rendimiento esperados
de los activos son proporcionales a sus respectivas volatilidades, el coeficiente de
diversificación es también proporcional al coeficiente de Sharpe de una cartera. Por
lo tanto, bajo este supuesto, las soluciones de una cartera de máxima RD y la de la
cartera de tangencia coincidirán. Por supuesto, el exceso de rendimientos no entra en
(11.1) de forma explícita, pero al comparar la asignación de una cartera que
maximiza la RD con la solución de la cartera de tangencia, se puede inferir para qué
activos se necesita una mayor/
La expectativa de un menor rendimiento se ha tenido en cuenta implícitamente.
A continuación, Choueifaty et al. (2011) plantean la condición de la cartera más
diversificada (MDP):
PMDP = arg max DR. (11.6)
𝜔∈Ω

Al introducir un conjunto de activos sintéticos que comparten la misma


volatilidad, el ratio de diversificación se maximiza minimizando 𝝎′ C𝝎, donde C
denota la matriz de correlación de los rendimientos de los activos iniciales. Por lo
202 LA DIVERSIFICACIÓN
RECONSIDERADA

tanto, la función objetivo coincide con


LA DIVERSIFICACIÓN 203
RECONSIDERADA
que para una cartera GMV, pero en lugar de utilizar la matriz de varianza-
covarianza, se emplea la matriz de correlación. Las ponderaciones finales se
obtienen reescalando el vector de ponderaciones intermedio (basado en la matriz de
correlaciones) con las desviaciones estándar de los rendimientos de los activos. En
otras palabras, el vector de pesos óptimo se determina en dos etapas. En primer
lugar, se determina una asignación que da lugar a una solución para una
combinación de activos menos correlacionada. A continuación, esta solución se
ajusta inversamente por las volatilidades de los activos. Este procedimiento
produce un resultado diferente al del GMV, porque en este último enfoque las
volatilidades de los activos entran directamente en la forma cuadrática de la
función objetivo que hay que minimizar. Por lo tanto, el impacto de las
volatilidades de los activos es menor para un MDP que para una cartera GMV.
Esto se puede deducir directamente por razonamiento intuitivo de la
descomposición de la RD como en (11.2)-(11.4). Las volatilidades de los activos
sólo entran en el cálculo de la CR como una parte relativa. Por último, el MDP
posee las siguientes dos propiedades fundamentales (véase Choueifaty et al. 2011,
pp. 7 y siguientes):

1. "Cualquier acción que no esté en manos de la MDP está más correlacionada


con la MDP que cualquiera de las acciones que pertenecen a ella. Además,
todas las acciones que pertenecen a la MDP tienen la misma correlación con
ella".

2. "La MDP de sólo largo plazo es la cartera de sólo largo plazo tal que la
correlación entre cualquier otra cartera de sólo largo plazo y ella misma es
mayor o igual que la relación de sus DR".

La segunda propiedad fundamental puede afirmarse de forma equivalente,


señalando que cuanto más diversificada esté una cartera long-only, mayor será la
correlación de los rendimientos de la cartera con los de la solución MDP.

11.3 Carteras con restricciones de contribución al riesgo


En esta sección, el término "diversificación" se aplica al propio riesgo de la cartera.
En principio, el riesgo de la cartera puede captarse mediante una medida basada en
la volatilidad (es decir, la desviación estándar de la cartera) o una medida basada
en la desviación (es decir, el valor en riesgo condicional (CVaR) o el déficit
esperado). Por lo tanto, se presentarán aquí dos enfoques. Desde el punto de vista
heurístico, estos enfoques están motivados por la observación empírica de que las
contribuciones al riesgo son un buen predictor de las pérdidas reales de la cartera y,
por tanto, al diversificar directamente sobre estas contribuciones, las pérdidas de la
cartera pueden limitarse potencialmente en comparación con una asignación que sea
testigo de una alta concentración de riesgo en uno o unos pocos componentes de la
cartera (véase Qian 2005).
En el primer enfoque, se busca una asignación de activos tal que las
contribuciones de los componentes de la cartera contribuyan en la misma
proporción a la volatilidad global de la cartera. En este caso, la asignación de igual
peso se aplica ahora a las contribuciones de riesgo de los activos, lo que da lugar al
204 LA DIVERSIFICACIÓN
RECONSIDERADA
término "contribución de igual riesgo" (ERC). Por lo tanto, la diversificación se
define y se consigue mediante un vector de pesos que se caracteriza por una
asignación de la cartera menos concentrada con respecto a las contribuciones al
riesgo de sus componentes. Fue introducido en la literatura por Qian (2005, 2006,
2011) y las propiedades de este enfoque de optimización de la cartera fueron
analizadas en Maillard
LA DIVERSIFICACIÓN 205
RECONSIDERADA
et al. (2009, 2010). Zhu et al. (2010) mostraron cómo este enfoque puede adaptarse
cuando las contribuciones de riesgo están restringidas o presupuestadas. Spinu
(2013) introdujo la optimización de carteras con paridad de riesgo como una
formulación de programa convexo con contribuciones de riesgo predefinidas. En
este caso, la cartera de ERC es un caso especial. Por último, pero no por ello menos
importante, la monografía de Roncalli (2013) es un tratamiento exhaustivo de las
técnicas de optimización de carteras con paridad de riesgo y presupuestación de
riesgo.
En el segundo enfoque, las contribuciones al riesgo de los componentes de la
cartera se miden por el riesgo a la baja de la cartera, como el CVaR. El término
"diversificación" se relaciona ahora con la noción de que las contribuciones al
riesgo a la baja de los activos contenidos en una cartera están limitadas por un
umbral superior o se reparten uniformemente entre los componentes. Este enfoque
fue introducido por Boudt et al. (2010, 2011) y Ardia et al. (2011b), basándose en
los resultados de Boudt et al. (2007, 2008) y Peterson y Boudt (2008).
En los párrafos siguientes, se presentan más formalmente las carteras ERC y, a
continuación, la atención se desplaza hacia el segundo tipo de optimización de
carteras que limita las contribuciones a una medida de riesgo a la baja. Recordemos
de la sección 4.3 la definición de la contribución al riesgo de un activo, que se
replantea en términos más generales a continuación:
𝜕M𝝎∈Ω
CM =𝜔 , (11.7)
i 𝝎∈Ω i 𝜕𝜔i

donde M𝝎∈Ω denota una medida de riesgo lineal homogénea y 𝜔i es el peso del i-
ésimo activo. Como tal, la medida de riesgo M𝝎∈Ω puede ser la desviación
estándar de la cartera, el valor en riesgo o el déficit esperado. Todas estas medidas
tienen en común la característica anterior y, por lo tanto, por el teorema de
homogeneidad de Euler, el riesgo total de la cartera es igual a la suma de las
contribuciones de riesgo definidas en (11.7). Estas contribuciones también pueden
expresarse en forma de porcentaje dividiendo las contribuciones de riesgo
por el valor de M𝝎∈Ω:
CiM𝝎∈Ω
%CiM𝝎∈Ω = × 100. (11.8)
M𝝎∈Ω

En la aplicación empírica, las contribuciones marginales se proporcionarán en esta


notación. √
Si se inserta la fórmula de la desviación estándar de la cartera 𝜎(𝝎) =
𝝎 ′ Σ 𝝎 para M𝝎∈Ω, donde 𝝎 es el vector de pesos (N × 1) y Σ denota la
matriz de varianza-covarianza de los rendimientos de los activos con elementos
i
fuera de la diagonal 𝜎ij y con 𝜎2 el elemento ith en su diagonal principal (es
decire., la varianza de los rendimientos del i-ésimo activo), entonces las derivadas
parciales en la ecuación anterior vienen dadas por
∑𝜎 N 𝜔 𝜎𝜔i
𝜕𝜎(𝝎) =
2
i
+ i j ij≠j
. (11.9)
𝜕𝜔i 𝜎(𝝎)

Estas i = 1, ... N derivadas parciales son proporcionales a la i-ésima fila de (Σ𝜔)i y,


206 LA DIVERSIFICACIÓN
RECONSIDERADA

por tanto, el problema para una cartera ERC con un long-only y una restricción
presupuestaria puede ser
LA DIVERSIFICACIÓN 207
RECONSIDERADA
se indica
como
PERC ∶ 𝜔 i (Σ𝜔)i = 𝜔j(Σ𝜔)j ∀i, j,

0 ≤ 𝜔i≤ 1para i = 1, - - , N, (11.10)


𝝎 i = 1,

donde i es un (N × 1) vector de 1s. La solución a este problema puede encontrarse


numéricamente minimizando la desviación estándar de las contribuciones de
riesgo. La solución óptima del ERC es válida si el valor de la función objetivo es
igual a cero, lo que sólo ocurre cuando todas las contribuciones de riesgo son
iguales. Una solución de forma cerrada sólo puede de- rminarse bajo el supuesto de
que todos los pares de activos comparten el mismo coeficiente de correlación. Bajo
este supuesto, las ponderaciones óptimas se determinan por la relación entre la
volatilidad inversa del i-ésimo activo y la media de las volatilidades inversas de los
activos. Los activos con una corriente de retorno más volátil se ven penalizados por
una menor ponderación en una cartera ERC (véase Maillard et al. 2010). Estos
autores demostraron además que, con respecto a la desviación estándar de la cartera,
la solución de la ERC adopta una posición intermedia entre la solución de una GMV
y una cartera de igual ponderación. También demostraron que bajo el supuesto de
correlaciones constantes, y si los ratios de Sharpe de los activos son todos
idénticos, entonces la solución del ERC coincide con la de la cartera de tangencia.
Como se mencionó en la sección 11.1, Spinu (2013) planteó el problema de la opti-
dad de la paridad del riesgo.
mizaciones como un programa convexo. El objetivo viene dado entonces como
N
1 𝝎′ ∑
F(x) = Σ𝝎 - bi log(𝜔i), (11.11)
2 i=1

donde bi es la contribución marginal al riesgo del i-ésimo activo. Si bi = 1∕Npara i =


1, ... , N en (11.11) entonces resulta una optimización de cartera ERC. Por lo
tanto, las restricciones de no negatividad para las ponderaciones deben incluirse
en la definición del programa convexo.
Si se inserta el CVaR de la cartera en lugar de su desviación estándar como
medida de riesgo en (11.7), se obtiene la contribución marginal del CVaR del i-
ésimo activo al CVaR de la cartera,
𝜕CVaR𝝎∈Ω,𝛼
CiCVaR𝝎∈Ω,𝛼 = 𝜔 . (11.12)
i
𝜕𝜔i
Obviamente, al emplear el CVaR o cualquier otra medida de riesgo basada en
cuantiles, todas las optimizaciones de la cartera dependerán del parámetro
perturbador preestablecido 𝛼, que es el nivel de confianza pertinente para el riesgo
de caída. La derivación de las derivadas parciales en (11.12) depende del modelo
de distribución asumido, pero puede proporcionarse con bastante facilidad en el
caso de las distribuciones elípticas. Por ello, en la práctica se asume el CVaR
basado en la hipótesis normal o modificado por la extensión de Cornish-Fisher
(véase la sección 4.3). Si se supone que los rendimientos siguen una distribución
normal multivariante, el CVaR de una asignación de cartera viene dado por
208 LA DIVERSIFICACIÓN
RECONSIDERADA

√ 𝜙(z𝛼)
CVaR𝝎∈Ω,𝛼 = -𝝎 𝝁 + , (11.13)
′ 𝝎′Σ𝝎′
𝛼
LA DIVERSIFICACIÓN 209
RECONSIDERADA
donde 𝝁 denota el vector (N × 1) de rendimientos esperados, 𝜙 la función de
densidad normal estándar, y z𝛼 el cuantil 𝛼 de la distribución normal estándar. La
]
contribución marginal del i-ésimo activo viene dada entonces por
𝜙(z𝛼)
C CVaR Σ𝝎)i . (11.14)
= 𝜔 [𝜇 + (
i 𝝎∈Ω,𝛼 i i √𝝎′Σ𝝎′
𝛼
Se demostró en Scaillet (2002) que las contribuciones del CVaR son iguales a
las contribuciones de las pérdidas de la cartera que superan el VaR de la cartera en
el nivel de confianza 𝛼. Por cierto, si se asume además que los rendimientos de los
activos se comportan como una caminata ran- dómica y, por lo tanto, la mejor
previsión para los rendimientos esperados es 𝝁 = 𝟎, entonces la asignación de la
cartera obtenida mediante la equiparación de todas las contribuciones marginales
del CVaR será idéntica a una asignación del CER, independientemente del nivel de
confianza especificado. Esto se debe a que el primer sumando desaparece de la
función objetivo y 𝜙(z𝛼)∕𝛼 es una constante que no afecta a la composición de la
cartera. Sin embargo, (11.14) podría emplearse de forma fructífera en la
optimización de carteras cuando se pone un límite superior a las contribuciones
marginales del CVaR o se exige una asignación bien diversificada con respecto a
las contribuciones de riesgo a la baja de los componentes. Este último objetivo
puede lograrse minimizando la máxima contribución marginal del CVaR:

C𝝎∈Ω,𝛼= maxCiCVaR𝝎∈Ω,𝛼 , (11.15)

como se propone en Boudt et al. (2011). Los autores denominaron a este enfoque
"concentración mínima del CVaR" (MCC), ya que resulta que al utilizar este
objetivo en la práctica se obtiene normalmente una solución más equilibrada -no
igual- con respecto a las contribuciones marginales, y el propio nivel de CVaR es
razonablemente bajo, en comparación con una solución en la que se presupuestan
las contribuciones de riesgo (BCC). En lugar de minimizar la máxima contribución
marginal al CVaR, se podría utilizar directamente una medida de divergencia.

11.4 Carteras óptimas dependientes de la cola


El concepto presentado en esta sección puede considerarse una síntesis de los
enfoques presentados en las dos secciones anteriores. En una cartera MDP se
determina una asignación de activos que produce la mayor diversificación, por
definición. Sin embargo, este enfoque se basa en las correlaciones simétricas entre
los activos. Como ya se señaló en el capítulo 9, el coeficiente de correlación de
Pearson sólo mide correctamente la dependencia entre dos variables aleatorias si
éstas se distribuyen conjuntamente de forma normal (elíptica). Además, la
covarianza/correlación tiene en cuenta las desviaciones por debajo y por encima de
la media, pero un inversor con aversión al riesgo (sólo a largo plazo) busca
rendimientos positivos (la cola superior o derecha de la distribución) y sólo
considera los rendimientos negativos (la cola inferior) como riesgo. Este punto fue
señalado por Markowitz (1952) cuando señaló la idoneidad del segundo momento
parcial inferior como medida de dispersión. En este sentido, el coeficiente de
dependencia de la cola inferior mide la fuerza de la relación entre los rendimientos
210 LA DIVERSIFICACIÓN
RECONSIDERADA

de los activos cuando ambos son extremadamente negativos al mismo tiempo, y es


LA DIVERSIFICACIÓN 211
RECONSIDERADA
Por lo tanto, es una medida de riesgo a la baja, al igual que el VaR o el CVaR.
Dependiendo del supuesto de la cópula subyacente (por ejemplo, la cópula EVT y/o
la cópula empírica), el valor de la TDC también depende del recuento de las
observaciones clasificadas utilizadas en su cálculo, que es similar al nivel de
confianza del VaR/CVaR. Para las cópulas arquimedianas, el TDC sólo depende del
parámetro de la cópula. En esta sección, el TDC para una cópula distributiva, como
la cópula t de Student, se descarta porque es una medida de dependencia para la
cola inferior y superior y, por lo tanto, no se ajusta bien a la tarea de gestión del
riesgo (véase la sección 9.3). A continuación, se ofrece una breve descripción de la
estimación no paramétrica de la TDC, seguida de una descripción de cómo se
pueden derivar soluciones óptimas de cartera a partir de ella. En Coles et al. (1999)
y Heffernan (2000), por ejemplo, se ofrece una descripción general y una sinopsis
de la dependencia de la cola.
En Dobric' y
Schmid (2005), Frahm et al. (2005) y Schmidt y Stadtmüller (2006). Sea (X, Y) el
porcentaje de pérdidas de dos inversiones. El coeficiente de dependencia de la cola
inferior, 𝜆L, entre estas dos variables aleatorias es invariante con respecto a las
transformaciones estrictamente crecientes aplicadas a (X, Y) y no depende del
distribuciones marginales de los rendimientos de los activos. Es únicamente una
función de la cópula asumida. La función de distribución conjunta de X e Y viene
dada por

FX,Y (x, y) = P(X ≤ x, Y ≤ y) para (x, y) ∈ ℝ2 . (11.16)


Esta distribución bivariada se puede expresar de forma equivalente en términos de la
cópula, C, como

FX,Y (x, y) = C(FX (x), FY (y)), (11.17)

donde FX (x) y FY (y) son las distribuciones marginales de X e Y, respectivamente. La


página web
La cópula es la distribución conjunta de las funciones de distribución marginal: C ≤= P(U
u, V ≤ 𝑣), con U = F (x) y V = F (y), y,Y
por lo tanto, mapea de [0, 1]2 a [0, 1].
X
Si el límite existe, el coeficiente de dependencia de la cola inferior se define como
C(u, u)
𝜆 = lim . (11.18)
L u→0 u
Este límite puede interpretarse como una probabilidad condicional, y como tal el
coeficiente de dependencia de la cola inferior está acotado en el intervalo [0, 1].
Los límites se realizan para una cópula de independencia (𝜆L = 0) y una cópula co-
monótona (𝜆L = 1), respectivamente. Los estimadores no paramétricos para 𝜆L se
derivan de la cópula empírica. Para una muestra dada de N pares de observaciones
(X1, Y1), ... , (XN , YN ) con los correspondientes estadísticos de orden X(1) X(2)
≤ ≤ ≤ ≤ ≤ ≤
- - - X(N) e Y(1) Y(2) - - - Y(N), la cópula empírica
se define como
( ) N
, 1 ∑
CN i j N = I(Xl ≤ X(i) ∧ ≤ Y(j) ) (11.19)
N N l=1
Yl
con i, j = 1, ... , N; I es la función indicadora, que toma un valor de 1 si la condición
establecida en el paréntesis es verdadera. Por definición, CN toma un valor de cero
212 LA DIVERSIFICACIÓN
RECONSIDERADA

para i = j = 0. En la bibliografía citada anteriormente, se han propuesto tres


funciones indicadoras consistentes y asintóticamente insesgadas
se proporcionan estimadores para 𝜆L, que dependen todos de un parámetro umbral k
(es decir,
LA DIVERSIFICACIÓN 213
RECONSIDERADA
el número de estadísticas de orden consideradas). El primer estimador,
L
𝜆(1) (N, k),
es una aproximación de la derivada de 𝜆L con respecto a u por la pendiente de una
secante en la vecindad de la misma (nótese que u se escribe como k∕N):
[ k ]-1 ⋅ ( )
(1) kk
𝜆L (N, k) = CN
, . (11.20)
N N N
El segundo estimador se basa en el coeficiente de la pendiente de una
regresión lineal afín simple entre los valores de la cópula como regresor y las
probabilidades de cola i∕N, i = 1, ... , k, como regresor. Se define como

[ k ( i )2]-1 ∑ k [ ( )]
𝜆∑(2)
(N, k) = i ⋅ CN i i . (11.21)
L ⋅ ,
i=1
N i=1 N NN

Un tercer medio para estimar 𝜆L de forma no paramétrica se deriva de una


mezcla de las cópulas de co-monotonía e independencia. Aquí el coeficiente de
dependencia de la cola inferior es el parámetro de ponderación entre estas dos
cópulas. El estimador es entonces
definido como
∑k ( ( ) ( )2) (( ) ( )2)
C i i i i
i=1 N N N -
, - i
N N N
(3)
𝜆L (N, k) = ( )2)2 . (11.22)
∑ki=1 i - ( Ni
N

Para estimar el coeficiente de dependencia de la cola inferior es fundamental


seleccionar adecuadamente k. Este parámetro es similar al valor del umbral para el
método de picos sobre el umbral en el campo de la EVT y, por lo tanto, el equilibrio
entre el sesgo y la varianza también es aplicable aquí. Si se elige un valor de k
demasiado pequeño, se obtendrá√una estimación imprecisa, y si es demasiado alto,
una estimación sesgada. Las condiciones de coherencia e insesgadez mencionadas
anteriormente se cumplen si k ∼ N , como se muestra en Dobric' y Schmid (2005).
La información sobre el tamaño de la dependencia de la cola inferior entre los
activos puede utilizarse de varias maneras. Por ejemplo, una aplicación directa
sería sustituir la matriz de correlación de Pearson -empleada para determinar la
asignación de una cartera más diversificada- por los coeficientes de dependencia de
la cola inferior, en los que los elementos de la diagonal principal se igualan a uno.
Tras reescalar los vectores de ponderación por las volatilidades de los activos, se
obtendría una cartera "más diversificada/mínima dependencia de la cola".
Alternativamente, si se clasifican los TDC entre los activos constituyentes de un
índice de referencia y el propio índice de referencia, se podría emplear esta
información para seleccionar los instrumentos financieros que sean menos
dependientes de las pérdidas extremas en el índice de referencia, pero
independientes con respecto a las subidas. Debe quedar claro que esta selección de
activos dará un resultado diferente al de seguir una estrategia de baja𝛽. Aunque el
presente relato se ha centrado en la dependencia de la cola inferior, el enfoque
esbozado anteriormente para la selección de activos constitutivos también podría
basarse en la diferencia entre la dependencia de la cola superior y la inferior. Estas
dos TDC podrían obtenerse de la cópula de Gumbel y de Clayton, respectivamente.
214 LA DIVERSIFICACIÓN
RECONSIDERADA

Este procedimiento es similar a la selección de activos


LA DIVERSIFICACIÓN 215
RECONSIDERADA
en función de su relación riesgo-recompensa. Sin embargo, hay que subrayar que la
utilización de la dependencia de la cola como criterio en la optimización de la
cartera debe ir siempre acompañada de una medida adicional del riesgo de los
activos. Un valor bajo de la dependencia de la cola no es informativo con respecto
al riesgo del activo en términos de su volatilidad o de su riesgo a la baja.

11.5 Sinopsis de los paquetes de R


11.5.1 El paquete cccp
El paquete cccp se ha introducido brevemente en la sección 10.4.7. Con respecto a
las optimizaciones de carteras con paridad de riesgo, contiene la función rp().
Esta función es una implementación de la formulación del programa convexo
propuesta por Spinu (2013); véase (11.11) para el objetivo. Esta función de R
interactúa con la rutina de C++ rpp(), que es un miembro del módulo Rcpp del
paquete. El gradiente y el hessiano del objetivo se dan como ∇F(𝝎) = Σ𝝎 - b𝝎−1 y
∇2F(𝝎) = Σ + diag(b𝝎−2 ), respectivamente, que se implementan como rutinas
C++ independientes. La función C++ rpp() devuelve un objeto de la clase C++
CPS para el que se define una clase de referencia del lado R Rcpp_CPS. La
función rp() tiene cuatro argumentos: x0 para los valores iniciales factibles, P
para la matriz de dispersión, mrc para las contribuciones marginales de riesgo y
optctrl para proporcionar los parámetros pertinentes al solucionador de punto
interior. Este último argumento requiere un objeto devuelto por ctrl(), es decir,
un objeto de la clase de referencia Rcpp_CTRL. Los métodos para mostrar la
solución de la optimización de la cartera de riesgo-paridad (show()); para mostrar
el estado, la situación y el recuento de iteraciones (getstate(), getstatus()
y getniter(), respectivamente); y para recuperar las variables primarias y
duales (getx(), gets(), getz() y gety()) están disponibles.

11.5.2 Los paquetes DEoptim, DEoptimR y RcppDE


De las optimizaciones de carteras presentadas anteriormente, en particular de las
contribuciones de igual riesgo al ES de una asignación de activos, debería ser
evidente que la tarea de encontrar una mejor solución global puede resultar
bastante complicada desde el punto de vista numérico. A la luz de esto, y también
debido a la dependencia del paquete PortfolioAnalytics (véase la sección 11.5.4)
de DEoptim, es necesario presentar por separado los paquetes de R que
implementan la evolución diferencial. Por supuesto, los solucionadores
implementados no se dedican únicamente a encontrar una asignación de cartera que
proporcione contribuciones marginales iguales al ES para un nivel de confianza
determinado, sino que también pueden utilizarse en otras optimizaciones.
El algoritmo de evolución diferencial (ED) fue introducido por Storn y Ulrich
(1997), y su aplicación se explica en Price et al. (2006). Se clasifica como un
algoritmo genético y, por tanto, es un optimizador global sin derivadas. En este
sentido, la ED es un algoritmo evolutivo en el que una población inicial de
soluciones candidatas se somete a operaciones de alteración y selección para obtener
un mínimo global de la función objetivo. Como el algoritmo de ED no tiene
derivadas, los únicos requisitos son que la función objetivo y los parámetros sean de
216 LA DIVERSIFICACIÓN
valorRECONSIDERADA
real. Ni la diferenciabilidad ni la
LA DIVERSIFICACIÓN 217
RECONSIDERADA
La continuidad de la función objetivo es necesaria. Sin embargo, dado que la
población inicial de soluciones candidatas es aleatoria, se debe establecer una
semilla para el generador de números aleatorios con el fin de replicar los
resultados. En Mitchell (1998) se puede encontrar una descripción detallada de los
algoritmos genéticos.
Históricamente, el primer paquete en CRAN para implementar el algoritmo de ED
fue DEop- tim por Ardia et al. (2011a,b, 2015) y Mullen et al. (2011). El paquete está
contenido en la vista de tareas "Optimization". En versiones anteriores, el algoritmo
DE se implementaba únicamente en R (escrito por David Ardia), pero para mejorar
la velocidad de cálculo las rutinas DE se portaron al lenguaje C, de forma similar a
la implementación de MS Visual C++ en Price et al. (2006). El paquete utiliza
clases y métodos de S3 y se entrega con dos viñetas. Por cierto, en una de las
viñetas Ardia et al. (2011b) dan un ejemplo que muestra una optimización de
cartera a gran escala utilizando la función DEoptim() que falla si se utilizan
optimizaciones basadas en el gradiente.
La función DEoptim() se especifica con cuatro argumentos en su cierre y el
argumento elipsis. La función objetivo a minimizar se proporciona como
argumento fn. La función debe devolver un valor escalar real. Los límites inferior
y superior de los parámetros pueden establecerse mediante los argumentos lower
y upper, respectivamente. Por cierto, las restricciones que no sean de caja deben
especificarse como términos de penalización en la función objetivo. Las
restricciones pueden incluirse directamente en la función objetivo como términos
aditivos. Cada restricción se multiplica por un factor constante positivo. Sin
embargo, la violación de una restricción aumentaría el valor de la función objetivo
a minimizar. El algoritmo puede adaptarse mediante el argumento de control,
que espera un objeto de lista devuelto por la función DEoptim.control().
La función DEoptim() devuelve un objeto lista de la clase S3 DEoptim
para el que se dispone de un método summary() y un método plot(). El objeto
lista consta de dos elementos con nombre, optim y member, que son a su vez
objetos lista. El for- mer contiene la solución óptima (bestmem), el valor de la
función objetivo evaluado en el óptimo (bestval), el recuento de evaluaciones
de la función (nfeval) y el número de iteraciones del procedimiento (iter). El
último elemento de la lista contiene los límites inferior y superior
especificados (lower y upper), el mejor valor de la función objetivo en cada
iteración (bestvalit) y sus valores de parámetros asociados (bestmemit), así
como la población generada en la última iteración (pop) y una lista de las
poblaciones intermedias (storepop). Como se ha indicado anteriormente, el
usuario puede afinar el algoritmo mediante la función DEoptim.control(),
que devuelve una lista con el atributo de clase del mismo nombre. Aquí, el
proceso de optimización puede terminarse especificando un valor de la función
objetivo (argumento VTR). Su valor por defecto es -Inf; si se cambia a un valor
superior, el proceso se termina cuando se alcanza el número máximo de iteraciones
(que puede cambiarse mediante el argumento itermax con un valor por defecto
de 200) o el valor real de la función objetivo es menor que VTR. Además, el usuario
puede controlar la terminación del proceso de optimización especificando un valor
para la tolerancia de convergencia relativa (argumento reltol). Dependiendo de
la plataforma en la que se ejecute R, esto equivale aproximadamente a 1-e8. A
continuación, el usuario puede elegir entre seis estrategias para propagar las
218 LA DIVERSIFICACIÓN
RECONSIDERADA
poblaciones de una iteración a la siguiente mediante el argumento strategy.
Estas estrategias se detallan en el manual y la viñeta del paquete y se basan en
LA DIVERSIFICACIÓN 219
RECONSIDERADA
la especificación como en Price et al. (2006). El número de miembros de la
población se deduce del argumento NP. Si su valor por defecto es NA, se crean
10 conjuntos de vectores de parámetros al azar. Por otro lado, el usuario puede
proporcionar un objeto matriz para el argumento initialpop en el que se
especifica la población inicial de vectores de parámetros. La dimensión de la fila de
esta matriz se refiere a los parámetros de la función objetivo y la dimensión de la
columna a la población.
El progreso de los parámetros a través de las iteraciones puede ser controlado
por los argumentos storepopfrom y storepopfreq. El primero establece la
generación a partir de la cual se almacenará la siguiente población intermedia con un
ajuste por defecto tal que no se almacena ninguna población intermedia. El
segundo argumento determina la frecuencia con la que se almacenan las
poblaciones. Su valor por defecto es 1, por lo que se almacenan todas las
poblaciones intermedias. El tamaño del paso de una iteración a la siguiente viene
determinado por el valor asignado a F. El resto de argumentos del cierre de la
función son pertinentes para el tipo de patrimonio de parámetros y dependen en
parte de la estrategia elegida. Se remite al lector al manual del paquete para obtener
más detalles sobre estos controles. Por último, el progreso de la optimización puede
controlarse mediante el argumento trace. Si se establece como TRUE (el valor
por defecto) entonces se imprimen los resultados intermedios de cada iteración, y si
se especifica como un valor entero i entonces se emite el resultado de sólo cada
ith iteración.
El paquete DEoptimR se añadió en 2014 a CRAN (véase Conceicao y Mächler
2015) y está contenido en la vista de tareas "Optimización". A diferencia de
DEoptim, el paquete está escrito puramente en R y solo contiene una función, a
saber, JDEop- tim(). Como su nombre indica, dentro de esta función se ha
implementado el algoritmo jDE propuesto por Brest et al. (2006). Como se ha
dicho en el párrafo anterior, la con- vergencia de los algoritmos de ED depende de
los valores de semilla elegidos (aleatoriamente) y de la estrategia de mutación. Una
característica del algoritmo jDE es la implementación de un esquema
autoadaptativo para llevar a cabo el ajuste de los parámetros de control y, por lo
tanto, disminuye la carga en los casos en que los valores por defecto para los
parámetros de control no dan lugar a la convergencia. Una segunda característica de
la función JDEoptim() es la provisión bastante sencilla de restricciones de
igualdad/desigualdad no lineales. El argumento de la función constr espera una
función con primer argumento para los parámetros y debe devolver un vector, en el
que cada elemento es el resultado de la restricción evaluada en el pa-
rámetros. Las restricciones deben suministrarse como hi(x) = 0 con i = 1, ... , K
para las restricciones de igualdad
j ≤y g (x) 0 con j = 1, ... , L para las restricciones
de desigualdad. Por lo tanto, el vector devuelto tiene K + L elementos. Si el
argumento constr se deja NULL (el valor por defecto), entonces se lleva a cabo
una optimización acotada (con restricciones de caja),
donde los límites inferior y superior permitidos para los parámetros se establecen
mediante los ar- gumentos inferior y superior, respectivamente.
El paquete RcppDE está estrechamente relacionado con el paquete DEoptim
(véase Eddelbüttel 2016). También se encuentra en la vista de tareas "Optimization"
de CRAN. La principal diferencia entre los dos paquetes es la interfaz del algoritmo
DE. Como el nombre del paquete indica, las rutinas se interconectan desde el
220 LA DIVERSIFICACIÓN
RECONSIDERADA
código escrito en C++. Como se muestra en la viñeta del paquete mediante una
comparación cruzada de esta implementación con la basada en C de DEoptim, la
primera da lugar a una ejecución más rápida de varias tareas de optimización. A
diferencia de la implementación en el paquete DEoptim, la función DEoptim()
LA DIVERSIFICACIÓN 221
RECONSIDERADA
tiene ahora un argumento adicional env para definir el entorno en el que se evalúa
la función objetiva. Si no se especifica, la función asignada a fn se evaluará en un
nuevo entorno. También están disponibles los métodos definidos para los objetos
con el atributo de clase DEoptim, así como el control del comportamiento
del algoritmo mediante DEoptim.control().

11.5.3 El paquete FRAPO


Esta subsección presenta las funciones y los métodos del paquete FRAPO que se
relacionan con los temas introducidos en este capítulo. Las funciones dr(), cr()
y rhow() pueden utilizarse para medir el grado de diversificación para un vector
de pesos y una matriz de varianza-covarianza dados. Estas funciones devuelven el
ratio de diversificación, el ratio de concentración y la correlación media ponderada
por la volatilidad, tal y como se introdujo en la sección 11.2. Las tres funciones
tienen el mismo cierre, consistente en argumentos para el vector de pesos
(weight) y la matriz de varianza-covarianza (Sigma). La solución de la cartera
más diversificada puede calcularse con la función PMD(). La matriz de
rendimientos se proporciona como argumento Rendimientos, y el argumento
lógico porcentaje determina si los pesos se devuelven como porcentajes (el
valor por defecto) o como valores decimales. El argumento elipsis se pasa a la
llamada de cov(), permitiendo al usuario controlar cómo se calcula la matriz de
varianza-covarianza. El objeto resultante se convierte en una matriz de correlación
mediante la función cov2cor(). La función PMD() devuelve un objeto de la
clase formal S4 PortSol para el que están disponibles los métodos show(),
Weights(), Solution() y update().
La función mrc() devuelve las contribuciones marginales al riesgo para una
asignación de activos y una matriz de dispersión determinadas. Además de los
argumentos pesos y Sigma para el vector de pesos y la matriz de varianza-
covarianza, el usuario puede especificar si las contribuciones se devuelven como
porcentajes que suman el 100% (el valor por defecto) o como números decimales.
La solución de una cartera de contribución de igual riesgo puede determinarse con
la función PERC(). El cierre de la función toma cuatro argumentos: Sigma para
la matriz de varianza-covarianza, par para el vector de pesos inicial que se
utilizará, percentage como interruptor lógico que gobierna si los pesos deben
devolverse como porcentajes (el valor predeterminado) o cifras decimales, y el
argumento optctrl que se pasa a la función rp() del paquete cccp (véase
Pfaff 2015) para llevar a cabo la optimización. Por defecto, par = NULL y se
utiliza un vector de pesos iguales en la llamada a rp().
Por último, para la construcción de carteras óptimas dependientes de la cola se
dispone de las funciones tdc() y PMTD(). La primera función devuelve las TDC
bivariadas; el usuario puede elegir entre una estimación no paramétrica según la
cópula de cola empírica (la predeterminada) o la función de cola estable mediante
el argumento del método. El ar- rayo de los rendimientos tiene que ser
proporcionado para el argumento x con el único requisito de que puede ser
coercitivo a un objeto de matriz. El argumento lógico lower, con valor por
defecto TRUE, determina si se devuelven coeficientes de dependencia de la cola
inferior o superior. El valor del umbral k se especifica como NULL, y si no se
indica lo contrario, se utiliza la raíz cuadrada del recuento de observaciones. El
222 LA DIVERSIFICACIÓN
RECONSIDERADA
argumento elipsis se pasa
LA DIVERSIFICACIÓN 223
RECONSIDERADA
hasta la función rank(), por lo que el usuario puede determinar cómo se
calculan los estadísticos de orden con respecto a los empates en los datos. La
función devuelve un objeto matriz con las TDC bivariadas y los 1 en la
diagonal, ya que por definición una serie tiene una de- pendencia de unidad
consigo misma. Para un inversor sólo a largo plazo, la solución de la cartera
mínima dependiente de la cola se devuelve llamando a PMTD(). El cuerpo de la
función es similar al de la función PGMV() mediante la cual se devuelve la
solución de una cartera global de mínima varianza. Pero en lugar de emplear la
matriz de varianza-covarianza como medida de dispersión, se utiliza la matriz TDC
devuelta por la llamada a tdc(). Además de los argumentos propios de esta
función, hay que asignar la matriz de rendimientos al argumento Returns. La
función devuelve un objeto de la clase formal S4 PortSol para el que están
disponibles los métodos mencionados anteriormente.

11.5.4 El paquete PortfolioAnalytics


El paquete PortfolioAnalytics (véase Peterson y Carl 2015) adopta un enfoque
conceptualmente diferente de la optimización de carteras en comparación con los
paquetes mencionados anteriormente. Permite al usuario obtener una solución
numérica de la cartera para restricciones y/o funciones objetivo complejas. En
cuanto a los enfoques de optimización de carteras relacionados con la medida de
riesgo que se presentan en este capítulo, se podría utilizar directamente una función
que devuelva la medida de riesgo en cuestión como función objetivo, por ejemplo.
La optimización numérica se lleva a cabo entonces con el optimizador de evolución
diferencial contenido en el paquete DEoptim (véase Ardia et al. 2015) o mediante
carteras generadas aleatoriamente que obedecen a las restricciones especificadas.
El primer algoritmo fue introducido por Storn y Ulrich (1997). El enfoque general
es que la función objetivo se modifica por las funciones de restricción, que se
multiplican por factores de penalización. El paquete está alojado en CRAN y se
entrega con cinco viñetas. Una de ellas está dedicada exclusivamente a mostrar
cómo se pueden utilizar las funciones incluidas en el paquete para optimizar una
cartera con presupuestos CVaR.
Las cuatro funciones fundamentales son portfolio.spec() para
especificar una estructura de cartera, add.objective() para añadir/alterar el
objetivo del objeto de clase S3 informal devuelto por portfo-
lio.spec(), add.constraint() para añadir restricciones al objeto de
clase port- folio/portfolio.spec, y optimize.portfolio() para
llevar a cabo la optimización numérica del problema de cartera así planteado. La
función optimizar.cartera() devuelve un objeto de la clase informal S3
optimizar.cartera.DEoptim, optimizar.cartera.aleatoria, u
optimizar.cartera. Para estos objetos se proporcionan los métodos plot()
y extractStats(). Este último método devuelve las estadísticas de la so- lución
óptima de la cartera. Los valores de la función objetivo para un conjunto determinado
de pesos pueden consultarse mediante la función constrained_objective().
Hay dos funciones útiles que merecen ser destacadas:
optimize.portfolio.rebalancing() para realizar el rebalanceo de la cartera
con una frecuencia determinada y optimize.portfolio.parallel() para
224 LA DIVERSIFICACIÓN
RECONSIDERADA
realizar múltiples llamadas a optimize.portfolio() en un ordenador
multiprocesador. El valor por defecto está configurado para utilizar cuatro nodos.
Las demás funciones de
LA DIVERSIFICACIÓN 225
RECONSIDERADA
el paquete están pensados principalmente para trazar y consultar/extraer
información de las soluciones óptimas de la cartera.

11.6 Aplicaciones empíricas


11.6.1 Comparación de enfoques
El primer ejemplo de código R, el listado 11.1, muestra cómo se pueden determinar
las soluciones de cartera para los índices sectoriales del Swiss Performance Index
(SPI) según una asignación global de varianza mínima, de contribución al mismo
riesgo, más diversificada y de dependencia de la cola mínima. Todas las
optimizaciones tienen en común que no se requieren previsiones de rentabilidad,
sino que las acciones a invertir dependen únicamente de las diferentes medidas de
riesgo. La asignación del GMV servirá de referencia en las comparaciones de la
cartera. Además de las asignaciones propiamente dichas, se evaluarán las
contribuciones marginales al riesgo y las características generales de la cartera. Los
sectores cubiertos son: Materiales básicos (BASI), Industriales (INDU), Bienes de
consumo (CONG), Salud (HLTH), Servicios de consumo (CONS),
Telecomunicaciones (TELE), Servicios públicos (UTIL), Financiero (FINA) y
Tecnología (TECH).
En las tres primeras líneas de código del Listado 11.1 se cargan los paquetes
necesarios. Todas las optimizaciones se llevarán a cabo con las funciones
proporcionadas en FRAPO. El conjunto de datos utilizado está contenido en el
paquete fPortfolio y el paquete base lattice se empleará en el análisis gráfico de
los resultados. En las siguientes líneas, se extraen los datos de nivel de los índices
sectoriales de SPISECTOR, se interpolan los valores NA y se calculan los
rendimientos diarios discretos, así como la matriz de varianza-covarianza de los
mismos. La muestra comienza el 30 de diciembre de 1999 y termina el 17 de
octubre de 2008; un total de 2216 observaciones por sector. A continuación, se
extraen las asignaciones según las cuatro optimizaciones de la cartera mediante el
método Weights() y se asignan a los objetos GMVw, MDPw, MTDw y ERCw
para las soluciones de varianza mínima global, más diversificada, mínima
dependiente de la cola e igual riesgo aportado, respectivamente. Los pesos se
recogen en el objeto matriz W. Este objeto se utiliza en la llamada a la función
apply() para determinar las contribuciones marginales de riesgo para cada uno de
los cuatro vectores de pesos óptimos. Los resultados se muestran gráficamente a
partir de la línea 20.
En primer lugar, las ponderaciones se muestran en forma de gráficos de puntos.
Normalmente, las asignaciones de activos se representan en forma de gráficos de
tarta. Sin embargo, este tipo de visualización es problemática, ya que la relación de las
superficies y sus tamaños no se puede digerir bien por inspección visual. En el
panel noroeste de la Figura 11.1 se muestran las asignaciones de sectores según la
cartera GMV y, en relación con este conjunto de ponderaciones, se representan las
soluciones de las carteras MDP, ERC y MTD en los tres paneles restantes.
En las Figuras 11.2 y 11.3, las contribuciones marginales al riesgo (MRC) para
cada una de las carteras se muestran como gráficos de puntos. Aquí, las MRC se
226 LA DIVERSIFICACIÓN
ordenan RECONSIDERADA
por sector y por optimización de la cartera y por cartera y por sector. Para
ello, los sectores y el tipo de cartera tienen que ser coaccionados a factores y
entonces este tipo de gráfico de rejilla
LA DIVERSIFICACIÓN 227
RECONSIDERADA
Código R 11.1 Comparación de la solución de cartera para los sectores de renta variable
suizos.
b i b l i o t e c a ( FRAPO) 1

biblioteca ( f Cartera ) 2

biblioteca ( l a t i c a ) 3

## Carga de datos y r e s p o n s a b l e c i m i e n t o d e l o s d a t o s 4

d a t a ( SPISECTOR ) 5

Idx <- interp NA ( SPISECTOR [ , -1 ] , método = " a n t e s " ) 6

R <- r e t u r n s e r i e s ( Idx , method = " d i s c r e t e " , t r i m = TRUE) 7

V <- cov ( R) 8

## P o r t f o l i o O p t i m i z a c i o n e s 9

GMVw <- Pesos (PGMV( R) ) 10

MDPw <- Pesos (PMD( R) ) 11

MTDw <- Pesos (PMTD( R) ) 12

ERCw <- Pesos ( PERC(V) ) 13

## Combinación de s o l u c i o n e s 14

W <- c b i n d (GMVw, MDPw, MTDw, ERCw) 15

MRC <- a pl ic ar (W, 2 , mrc , Sigma = V) 16

rownames (MRC) <- colnames ( Idx ) 17

colnames (MRC) <- c ( "GMV" , "MDP" , "MTD" , "ERC" ) 18

## P l o t o d e l a s a c t i v i d a d e s 19

o l d p a r <- p a r ( no . r e a d o n l y = TRUE) 20

p a r ( mfrow = c ( 2 , 2 ) ) 21

d o t c h a r t (GMVw, xlim = c ( 0 , 40 ) , main = "GMV A l l o c a c i ó n " , 22

pch = 19) 23

d o t c h a r t (MDPw - GMVw, xlim = c ( -20 , 20) , main = "MDP vs. GMV" , 24

pch = 19) 25

a b l i n e ( v = 0 , c o l = " grey " ) 26

d o t c h a r t (MTDw - GMVw, xlim = c ( -20 , 20) , main = "MTD vs. GMV" , 27

pch = 19) 28

a b l i n e ( v = 0 , c o l = " grey " ) 29

d o t c h a r t (ERCw - GMVw, xlim = c ( -20 , 20) , main = "ERC vs. GMV" , 30

pch = 19) 31

a b l i n e ( v = 0 , c o l = " grey " ) 32

p a r ( oldpar ) 33

## l a t t i c e p l o t s o f MRC 34

S e c t o r <- f a c t o r ( r e p ( rownames (MRC) , 4 ) , 35

l e v e l s = s o r t ( rownames (MRC) ) ) 36

P u e r t o <- f a c t o r ( r e p ( colnames (MRC) , each = 9 ) , 37

n i v e l e s = colnames (MRC) ) 38

MRCdf <- d a t a . f rame (MRC = c (MRC) , Port , S e c t o r ) 39

d o t p l o t ( S e c t o r ~ MRC | Port , groups = Port , d a t a = MRCdf , 40

x l a b = " Porcentajes " , 41

main = "MR C o n t r i b u c i o n e s de S e c t o r p e r f o l i o " , 42

c o l = " b la c k " , pch = 19 ) 43

d o t p l o t ( P o r t ~ MRC | S ector , g roups = S ector , d a t a = MRCdf , 44

x l a b = " Porcentajes " , 45

main = "C o n t r i b u c i o n e s de MR por el S e c t o r P o r t a l i ó n " , 46

c o l = " b la c k " , pch = 19 ) 47


228 LA DIVERSIFICACIÓN
RECONSIDERADA
Asignación de GMVMDP vs. GMV

TECH TECH
FINA FINA
UTIL UTIL
TELE TELE
CONS CONS
HLTH HLTH
CONG CONG
INDU INDU
BASI BASI

0 10 20 30 40 -20 -10 0 10 20

MTD vs. GMVERC vs. GMV

TECH TECH
FINA FINA
UTIL UTIL
TELE TELE
CONS CONS
HLTH HLTH
CONG CONG
INDU INDU
BASI BASI

-20 -10 0 10 20 -20 -10 0 10 20

Figura 11.1 Comparación de las asignaciones sectoriales.

0 10 20 30

MTD ERC
UTIL
TELE
TECH
INDU
HLTH
FINA
CONS
CONG
BASI
GMV MDP
UTIL
TELE
TECH
INDU
HLTH
FINA
CONS
CONG
BASI

0 10 20 30

Porcentajes

Figura 11.2 Contribuciones marginales de riesgo por sector y por cartera.


LA DIVERSIFICACIÓN 229
RECONSIDERADA
0 10 20 30

TECH TELE UTIL


ERC
MTD
MDP
GMV
FINA HLTH INDU
ERC
MTD
MDP
GMV
BASI CONG CONS
ERC
MTD
MDP
GMV

0 10 20 30 0 10 20 30
Porcentajes

Figura 11.3 Contribuciones marginales de riesgo por cartera y por sector.

pueden ser producidos por los argumentos de la fórmula en las llamadas a la


función dotplot() que forma parte del paquete lattice (véase Sarkar 2008).
Como se desprende del gráfico 11.1, la solución GMV se caracteriza por una
asignación dominante en el sector de los servicios públicos (aproximadamente el
40%), seguido de los sectores de las telecomunicaciones, la sanidad y los bienes de
consumo. Los sectores tecnológico, financiero e industrial quedan básicamente
excluidos de la cartera. Más del 80% del patrimonio está asignado a sólo cuatro de
los nueve sectores. Esta concentración de la cartera es bastante típica de los
enfoques de GMV y se rige por la baja volatilidad de los sectores dominantes. La
asignación relativa de la cartera más diversificada se muestra en el panel noreste. La
mayor diferencia es una clara infraponderación del sector sanitario. El resto de las
ponderaciones sectoriales no difieren sustancialmente de la solución GMV y, por
tanto, la mayor ponderación se atribuye también al sector de los servicios públicos.
El panorama es muy diferente en las asignaciones del MTD y del ERC. En ambos
casos, el sector de servicios públicos está infraponderado y los sectores tecnológico,
de servicios de consumo e industrial están sobreponderados. Además, el sector
financiero también está sobreponderado en la cartera del ERC. En general, los dos
últimos enfoques de cartera dan lugar a una asignación de la riqueza más
equilibrada. Estas características se reflejan en las contribuciones marginales al
riesgo en las figuras 11.2 y 11.3. Por supuesto, para la cartera del ERC todas son
iguales. En términos absolutos, la mayor parte de la contribución al riesgo la asume
el sector de servicios públicos en los casos de GMV y MDP, mientras que las
contribuciones al riesgo de la cartera MTP están más repartidas.
230 LA DIVERSIFICACIÓN
RECONSIDERADA
Código R 11.2 Medidas clave de las soluciones de cartera para los sectores de renta variable
suizos.
l i b r a r i a ( P erformanceAnalytics ) 1

## Medidas y c a r a c t e r í s t i c a s d e ri e sgo de l a c a r t e r a 2

Rdec <- R / 100 3

P r e t <- a pli c ar (W, 2 , f u n c i ó n ( x ) Rdec %∗% x / 100) 4

SD <- a pl i ca r ( Pret , 2 , sd ) ∗ 100 5


ES95 <- a pply ( Pret , 2 , f u n c i ó n ( x ) 6

abs ( ES ( R = x , método = " m o d i f i c a d o " ) ∗ 100) ) 7


DR <- a pl ic a r (W, 2 , dr , Sigma = V) 8

CR <- a pli c ar (W, 2 , cr , Sigma = V) 9

## Resumiendo r e s u l t a d o s 10

Res < - r b i n d ( SD , ES95 , DR, CR) 11

Las estadísticas resumidas de las cuatro soluciones de cartera se calculan en el


código R del listado 11.2. Aquí, las funciones contenidas en el paquete
PerformanceAnalytics se utilizan para calcular las desviaciones estándar y los
déficits esperados al nivel del 95%. La diversificación y los ratios de concentración
pueden calcularse con las funciones dr() y cr() descritas en la sección 11.5.3,
respectivamente. Todos los cálculos se realizan utilizando la función apply() con
respecto al objeto matricial W, que contiene los vectores de peso en sus columnas.
Los resultados se presentan en la tabla 11.1.
A juzgar por estas medidas clave seleccionadas, la solución GMV ofrece un
vector de ponderación óptimo que produce la menor desviación estándar de la
cartera, a posteriori, es más arriesgada en términos de su déficit esperado y tiene el
mayor ratio de concentración. En el otro extremo, la asignación ERC implica la
asignación más arriesgada en términos de desviación estándar de la cartera y de su
déficit esperado. Además, representa la menor concentración de la cartera, pero su
coeficiente de diversificación es el peor. Las soluciones MDP y MTD adoptan
posiciones intermedias; la primera es más parecida a la asignación GMV y la
segunda se asemeja más a la asignación de riqueza según el enfoque ERC.

11.6.2 Cartera óptima dependiente de la cola contra el índice de


referencia
Esta subsección muestra cómo el coeficiente de dependencia de la cola inferior
entre un agregado de mercado más amplio y sus componentes puede utilizarse de
manera que las acciones seleccionadas que entran en una cartera exclusivamente a
largo plazo sean únicamente las menos concordantes con el mercado negativo

Cuadro 11.1 Medidas clave de las soluciones de cartera para los sectores de renta
variable suizos.

Medidas GMV MDP MTD ERC


Desviación estándar 0.813 0.841 0.903 0.949
ES (modificado, 95%) 2.239 2.189 2.313 2.411
Ratio de diversificación 1.573 1.593 1.549 1.491
LA DIVERSIFICACIÓN 231
Relación de 0.218 RECONSIDERADA
0.194 0.146 0.117
concentración
232 LA DIVERSIFICACIÓN
RECONSIDERADA
rendimientos. Este enfoque contrasta con una estrategia low-𝛽 en el sentido de que
ahora el objetivo es proteger a los inversores de las pérdidas simultáneas del índice y
de los valores mantenidos en la cartera. La intención de una estrategia low-𝛽 es
básicamente la misma, seleccionando acciones que se mueven menos
proporcionalmente que el mercado en términos absolutos. Sin embargo, este tipo de
selección podría disuadir a los valores que se caracterizan por un alto valor del
coeficiente de dependencia de la cola superior con el mercado y, por lo tanto, una
asignación de cartera de este tipo fallaría al alza. Por cierto, hay que destacar que
ninguna de las dos estrategias tiene en cuenta explícitamente el riesgo de los
miembros de la cartera.
En el código R de los listados 11.3 y 11.4 se aplican las dos estrategias a los
componentes del índice S&P 500. En las dos primeras líneas se cargan en el
espacio de trabajo los paquetes FRAPO y copula necesarios para realizar la
comparación. A diferencia de la aplicación de la subsección anterior, la
dependencia de la cola inferior se derivará de una cópula de Clayton y esta tarea se
puede realizar rápidamente con las facilidades que ofrece este último paquete,
como se mostrará en su momento. A continuación, se introduce en la memoria el
conjunto de datos INDTRACK6, contenido en el paquete FRAPO. Este objeto es
un marco de datos con 291 observaciones semanales del índice S&P 500 y 457
miembros del mismo. La muestra comienza en marzo de 1991 y termina en
septiembre de 1997. El conjunto de datos se utilizó por primera vez en Canakgoz y
Beasley (2008) (véase también Beasley 1990). Se han descartado las poblaciones
con valores perdidos durante el periodo de la muestra. Originalmente, los datos se
descargaron de DATASTREAM y se han hecho anónimos. La primera columna se
refiere a los datos del índice en sí.
Los rendimientos del índice y de las acciones se calculan en las líneas 6 y 8 del
listado 11.3. Aquí, sólo se utilizan los primeros 260 puntos de datos y los restantes
se guardan para una pseudo evaluación ex ante de las progresiones de riqueza de
las carteras. Los valores 𝛽 de las acciones se asignan al objeto Beta en la
siguiente línea utilizando la función apply() en la dimensión de columna de RA
y el estimador del coeficiente de pendiente. Los coeficientes de dependencia de la
cola inferior derivados de la cópula de Clayton se calculan en las líneas 11 a 14.
Estas medidas se derivan de las correlaciones de rango de Kendall 𝜏 volviendo
primero a las estimaciones del parámetro de la cópula 𝜃 a partir del cual| la
dependencia de la cola inferior |
se pueden deducir los coeficientes. En el siguiente bloque de sentencias R, las 𝛽̂
acciones con
y los coeficientes de dependencia de la cola por debajo de su valor medio
respectivo se determinan y las ponderaciones se calculan mediante una escala
logarítmica inversa. Utilizando este esquema, aproximadamente el 80% de las
acciones son comunes a ambas selecciones. La asignación empleada es sólo un
ejemplo; se puede elegir cualquier otro tipo de asignación de pesos para los dos
conjuntos de valores, por ejemplo, una asignación de acuerdo con un enfoque de
varianza mínima global. La progresión de la renta variable de referencia fuera de la
muestra y para las dos estrategias se calcula en las líneas 25 a 43. En el código R
del listado 11.4, estas progresiones se representan en forma de gráfico de series
temporales (véase la figura 11.4) y los rendimientos relativos al índice de
LA DIVERSIFICACIÓN 233
RECONSIDERADA

referencia en forma de gráfico de barras (véase la figura 11.5).


Claramente, ambas estrategias superaron al punto de referencia, aunque la
estrategia de baja𝛽 lo hizo peor durante aproximadamente la primera mitad del
periodo fuera de la muestra. La estrategia de menor dependencia de la cola superó
al índice de referencia de forma consistente durante todo el periodo ex ante,
excepto en ocho puntos de datos, y mantuvo una ligera ventaja al final de la
muestra en comparación con la estrategia de baja𝛽. La cartera con baja
dependencia de la cola tuvo un rendimiento inferior al de su índice de referencia
234 LA DIVERSIFICACIÓN
RECONSIDERADA

Código R 11.3 S&P 500: dependencia de la cola frente a la cartera baja𝛽.


b i b l i o t e c a ( FRAPO) 1

l i b r a r i a ( c opul a ) 2

## S&P 500 3

d a t a ( INDTRACK6 ) 4

## R e n d i m i e n t o d e los mercados y de los a s e s t a d o s 5

RM <- r e t u r n s e r i e s ( INDTRACK6 [ 1 : 2 6 0 , 1 ] , method = " d i s c r e t e " , 6

t r i m = TRUE) 7

RA <- r e t u r n s e r i e s ( INDTRACK6 [ 1 : 2 6 0 , -1] , method = " d i s c r e t e " , 8

t r i m = TRUE) 9

Beta <- a p l i c a ( RA, 2 , f u n c i ó n ( x ) cov ( x , RM) / v a r (RM) ) 10

Tau <- a p l i c a d o ( RA, 2 , f u n c i ó n ( x ) c o r ( x , RM, método = " k e n d a l l " ) ) 11

## Cópula de C l a y t o n : Dependencia de T a i l inferior 12

ThetaC <- copClayton@iTau ( Tau ) 13

LambdaL <- copClayton@lambdaL ( ThetaC ) 14

## S e l e c c i ó n S t o c k s por debajo de la mediana; i n v e r s e l o g- w e i g h t e d and 15

escalado 16

I d x B e t a <- Beta < mediana ( Beta ) 17

WBeta <- -1 ∗ log ( abs ( Beta [ I d xB e t a ] ) 18

WBeta <- WBeta / suma ( WBeta) ∗ 100 19


## TD 20
IdxTD <- LambdaL < mediana ( LambdaL ) 21

WTD <- -1 ∗ l o g ( LambdaL [ IdxTD ] ) 22

WTD <- WTD / suma (WTD) ∗ 100 23


I n t e r s e c c i ó n <- suma ( nombres (WTD) %i n% nombres ( WBeta ) ) / 24

l o n g i t u d ( WBeta ) ∗ 100 25
## Rendimiento fuera de la muestra 26

RMo <- r e t u r n s e r i e s ( INDTRACK6 [ 2 6 0 : 2 9 0 , 1 ] , method = " d i s c r e t e " , 27

p o r c e n t a j e = FALSE) + 1 28

RAo <- r e t u r n a s e r i e s ( INDTRACK6 [ 2 6 0 : 2 9 0 , -1] , method = " d i s c r e t e " , 29

p o r c e n t a j e = FALSE) + 1 30

## Punto de referencia 31

RMo [ 1 ] <- 100 32

RMEquity <- cumprod (RMo) 33

## Low Beta 34

LBEquity <- RAo[ , I d x Be t a ] 35

LBEquity [ 1 , ] <- WBeta 36

LBEquity <- rowSums ( a p l i c a d o ( LBEquity , 2 , cumprod ) ) 37

## TD 38

TDEquity <- RAo [ , IdxTD ] 39

TDEquity [ 1 , ] <- WTD 40

TDEquity <- rowSums ( a p l i c a d o ( TDEquity , 2 , cumprod ) ) 41

## R e c o g i d a d e r e s u l t a d o s 42

y <- c b i n d ( RMEquity , LBEquity , TDEquity ) 43


LA DIVERSIFICACIÓN 235
RECONSIDERADA

Código R 11.4 Trazado de la progresión de la riqueza y del rendimiento relativo.


## Tiempo de espera de las c u r v a s d e calidad 1

p l o t ( RMEquity , t y p e = " l " , ylim = r a n g e ( y ) , 2

y la b = " Índice de r e n t a v a r i a b l e " , 3

xl a b = " P e r i o d e s d e l a s m u e s t r a s " ) 4

l i n e s ( LBEquity , l ty = 2 , c o l = " b l u e " ) 5

l i n e s ( TDEquity , l ty = 3 , c o l = " r e d " ) 6

l e y e n da ("t o p l e f t " , 7

l e ge n d = c ( " S&P 500 " , " Low Beta " , " Lower T a i l Dep . " ) , 8

l t y = 1 : 3 , c o l = c ( " b la c k " , " b lue " , " r e d " ) ) 9

## Bar p l o t o d e l a p r e s e n t a c i ó n r e l a t i v a 10

RelOut <- r b i n d ( ( LBEquity / RMEquity - 1) ∗ 100 , 11

( TDEquity / RMEquity - 1) ∗ 100) 12


RelOut <- RelOut [ , -1] 13

b a r p l o t ( Rel Out , b e s i d e = TRUE, ylim = c ( -5 , 17) , 14

nombres . a r g = 1 : n c o l ( Rel Out ) , 15

l e ge n d . t e x t = c ( " Low Beta " , " Lower T a i l Dep . " ) , 16

a r g s . l e ge nd = l i s t ( x = " t o p l e f t " ) ) 17

abline ( h = 0 ) 18

caja ( ) 19

11 S&P 500
5 Beta baja Dep.
de cola inferior

11
0
Ín
dic
e
de 10
re 5
nt
a
va
ria 10
bl 0
e

0 5 10 15 20 25 30
Períodos fuera de la muestra

Figura 11.4 Progresión de la riqueza de la cartera fuera de la muestra.


236 LA DIVERSIFICACIÓN
RECONSIDERADA
Beta baja Dep.
15
de cola inferior

10

-5
1 3 5 7 9 11 14 17 20 23 26 29

Figura 11.5 Rendimiento relativo de las estrategias frente al S&P 500.

en 11 de los 30 casos y sólo en la primera observación fuera de la muestra se


obtuvo un valor de la cartera superior al de la estrategia dependiente de la cola,
aunque sólo marginalmente.
Al igual que las medidas clave del ejemplo anterior para evaluar cuantitativamente
las asignaciones de carteras, se calcula un conjunto similar de cifras en el código R
del Listado 11.5 para las carteras de baja𝛽 y mínima dependencia de la cola. Todas
las medidas clave se calculan empleando las facilidades del paquete
PerformanceAnalytics. Dado que el listado
11.3 abarca una parte fuera de la muestra, los ratios cuantitativos se dividen en un
bloque de estadísticas "dentro de la muestra" y "fuera de la muestra". Dentro de la
primera categoría se calcula el mismo conjunto de estadísticas que en el listado
11.2 y no es necesario elaborar más. Las segundas están relacionadas con los
rendimientos de referencia, excepto los rendimientos anualizados de los dos
enfoques de cartera. El rendimiento fuera de la muestra se evalúa mediante el
coeficiente de información, el coeficiente de captura al alza y el coeficiente de
captura a la baja. Es deseable un valor alto para el ratio de captación al alza y un
valor bajo para el ratio de captación a la baja. En Bacon (2004, página 47) se ofrece
una referencia de estos estadísticos. El cálculo de estos estadísticos se ensambla en
la función km() y el resultado se asigna a los objetos LbKM y TdKM para las
carteras de baja𝛽 y baja cola, respectivamente. Los resultados se presentan en la
Tabla 11.2.
Con respecto a las estadísticas dentro de la muestra, la estrategia de baja𝛽 es
ligeramente menos arriesgada que la asignación dependiente de la cola inferior. Sin
embargo, esta última posee un mayor ratio de diversificación y está menos
concentrada. El coeficiente de información ex ante es mayor para la estrategia de
dependencia de la cola y también se comporta mejor en términos de coeficiente de
captación al alza, mientras que la estrategia de baja𝛽 tiene una ventaja sobre la
primera asignación con respecto al coeficiente de captación a la baja.
LA DIVERSIFICACIÓN 237
RECONSIDERADA
Código R 11.5 Medidas clave de soluciones de cartera para el S&P 500.
l i b r a r i a ( P erformanceAnalytics ) 1

## Medidas clave ( ex p o s t o ) 2

RAdec <- RA / 100 3

RALB <- RAdec [ , nombres ( WBeta ) ] 4

RATD <- RAdec [ , nombres (WTD) ] 5

LbStd <- StdDev ( rowSums (RALB ∗ WBeta / 100) ) ∗ 100 6

TdStd <- StdDev ( rowSums (RATD ∗ WTD / 100) ) ∗ 100 7

LbES95 <- abs ( ES ( R = rowSums (RALB ∗ WBeta / 100) , 8

método = " g a u s i a n " ) ) ∗ 100 9

TdES95 <- abs ( ES ( R = rowSums (RATD ∗ WTD / 100) , 10

método = " g a u s i a n " ) ) ∗ 100 11


LbDr <- dr ( WBeta , Sigma = cov (RALB) ) 12

TdDr <- dr (WTD, Sigma = cov (RATD) ) 13

LbCr <- c r ( WBeta , Sigma = cov (RALB) ) 14

TdCr <- c r (WTD, Sigma = cov (RATD) ) 15

## Medida clave ( ex ante ) 16

LbRetO < - r e t u r n s e r i e s ( LBEquity , method = " d i s c r e t e " , 17

p e r c e n t e = FALSE , t ri m = TRUE) 18

TdRetO < - r e t u r n s e r i e s ( TDEquity , method = " d i s c r e t e " , 19

p e r c e n t e = FALSE , t ri m = TRUE) 20

BmRetO <- RMo[ -1] - 1 21

t i m e A r t i f i c i a l < - t ime Se que nc e ( from = " 1997 -03 -01 " , by = " 7 d " , 22

l e n g t h . o u t = l e n g t h ( LbRetO ) ) 23

LbRetO < - t i m e S e r i e s ( LbRetO , as . Date ( t i m e A r t i f i c i a l ) ) 24

TdRetO < - t i m e S e r i e s ( TdRetO , as . Date ( t i m e A r t i f i c i a l ) ) 25

BmRetO <- t i m e S e r i e s ( BmRetO , as . Date ( t i m e A r t i f i c i a l ) ) 26

km <- f u n c t i o n ( pf , bm , s c a l e = 52 ) { 27

ra <- R e t u r n . a n n u a l i z e d ( pf , s c a l e = s c a l e ) ∗ 100 28
ap <- Prima activa ( pf , bm , s c a l e = s c a l e ) 29

te <- sd ( pf - bm ) ∗ s q r t ( s c a l e ) 30
ir <- ap / t e 31

upr <- UpDownRatios ( pf , bm , method = " C a p t u r a " , s i d e = " Up" ) 32

dnr <- UpDownRatios ( pf , bm , method = " C a p t u r a " , s i d e = " Down" ) 33

res <- c ( ra , i r , upr , dnr ) 34

names ( r e s ) <- c ( " R e t u r n " , " IR " , " Up Ratio " , " DownRatio " ) 35

retorno ( r e s ) 36

} 37

LbKM <- km( LbRetO , BmRetO ) 38

TdKM <- km( TdRetO , BmRetO ) 39

11.6.3Contribuciones limitadas al déficit previsto


El último ejemplo de este capítulo muestra cómo puede determinarse la asignación
de una cartera con respecto a los límites de las contribuciones de riesgo a la baja.
Estas limitaciones pueden definirse de dos maneras: en primer lugar, como una
restricción presupuestaria tal que la contribución de ES sea inferior a
238 LA DIVERSIFICACIÓN
RECONSIDERADA
Cuadro 11.2 Medidas clave de soluciones de cartera
para el S&P 500.

Medidas Low-𝛽 Dependenc


ia de la
cola
inferior
En la muestra
Desviación estándar 1.948 2.050
ES (95%) 3.813 3.954
Ratio de diversificación 2.350 2.576
Relación de 0.008 0.007
concentración
Fuera de la muestra
Rendimiento 24.357 24.870
(anualizado)
Ratio de información 2.364 2.847
Ratio de captación al alza 0.671 0.784
Ratio de captación de 0.111 0.214
bajas

un límite superior, y en segundo lugar, de forma que se minimice la contribución


máxima al riesgo de caída de la cartera de un activo. Estos dos enfoques se
contrastan con las soluciones de asignaciones globales de mínima varianza y de igual
riesgo contribuido. Las dos últimas optimizaciones de la cartera están dirigidas a la
volatilidad de la cartera, mientras que las dos primeras se refieren explícitamente al
riesgo a la baja de la cartera. En todos los casos, se supone que sólo se permiten
posiciones largas en un activo y que el patrimonio está totalmente invertido en los
activos de riesgo.
El código R con el que se realiza esta comparación se muestra en el listado 11.6.
En primer lugar, se cargan en memoria los paquetes FRAPO y PortfolioAnalytics.
A continuación, se carga el conjunto de datos MultiAsset. Este objeto es un
marco de datos con 85 observaciones a final de mes de índices de acciones y bonos
y oro (representado por el ETF SPDR Gold). En total, se incluyen diez clases de
activos representadas por sus índices. La muestra comienza el 30 de noviembre de
2004 y termina el 30 de noviembre de 2011. El conjunto de datos se ha obtenido de
Yahoo Finance y se han recuperado los precios de cierre no ajustados. Si no se ha
informado de un valor a final de mes, se ha utilizado el valor del día anterior.
Puede encontrar más información sobre el conjunto de datos en su página de
manual. En las dos líneas siguientes se calculan los rendimientos decimales
discretos de los activos (R) y se asigna el recuento de activos al objeto N.
En el siguiente bloque de afirmaciones se define una estructura de cartera por la
que la contribución marginal al ES está acotada por un límite superior del 20%. La
estructura de cartera consta de tres elementos. En primer lugar, el objeto C1
contiene las restricciones de no negatividad y de presupuesto. A continuación, se
añade a esta restricción el primer objetivo, que consiste en encontrar una
asignación de activos caracterizada por un CVaR mínimo con un nivel de
LA DIVERSIFICACIÓN 239
RECONSIDERADA
confianza del 95%. Estos dos elementos se combinan en el objeto ObjCVaR y
podrían emplearse como tal para encontrar un vector de pesos que produzca un
riesgo mínimo a la baja con el nivel de confianza especificado. El tercer elemento
define la restricción presupuestaria con respecto a la contribución del riesgo a la
baja de los activos. En este caso, se establece un máximo del 20%.
240 LA DIVERSIFICACIÓN
RECONSIDERADA
Código R 11.6 Comparación de las carteras ES restringidas con GMV y ERC.
b i b l i o t e c a ( FRAPO) 1

l i b r a r y ( P ortfolioAnalytics ) 2

## Carga de datos y c ál c ul o de los ingresos 3

da t os ( M u l t i A s s e t ) 4

R <- r e t u r n a s e r i e s ( M u l t i A s s e t , p e r c e n t a g e = FALSE , t r i m = TRUE) 5

N <- n co l ( R) 6

## D e f i n i c i ó n d e l o s c o n s t r a t a d o r e s y o b j e t i v o s p a r a e l p r e s u p u e
s t o d e l VCaR 7

C1 < - c o n s t r a i n t ( a s e t s = colnames ( R) , min = r e p ( 0 , N) , 8

max = r e p ( 1 , N) , min_suma = 1 , max_suma = 1 ) 9

ObjCVaR <- add . o b j e c t i v e ( c o n s t r a i n t s = C1 , t y p e = " r i s k " , 10

name = " ES" , a r g u m e nt s = l i s t ( p = 0 , 9 5 ) , 11

e n a b l e d = TRUE) 12

ObjCVaRBudget <- add . o b j e t i v o ( c o n s t r a i n t e s = ObjCVaR , 13

t y p e = " r i s k _ budge t " , 14

name = " ES" , max_ p r i s k = 0 . 2 , 15

a r g u me n t o s = l i s t ( p = 0 , 9 5 ) , 16

e n a b l e d = TRUE) 17

SolCVaRBudget <- o p t i m i z e . p o r t f o l i o ( R = R , 18

c o n s t r a i n t e s = ObjCVaRBudget , 19
o p t i m i z a r _ método = " DEoptim " , 20
i t e r m a x = 50 , 21

s e a r c h _ s i z a = 20000 , 22

t r a c e = TRUE) 23

WCVaRBudget <- SolCVaRBudget$ pe sos 24

CVaRBudget <- ES ( R , w e i g h t s = WCVaRBudget , p = 0 . 9 5 , 25

p o r t f o l i o _ método = " componente " ) 26

## C o n c e n t r a c i ó n mínima de CVaR p o r t a l i o 27

ObjCVaRMinCon <- add . o b j e t i v o ( c o n s t r a i n t s = ObjCVaR , 28

t y p e = " r i s k _ budge t " , 29

name = " ES" , 30

min_ c o n c e n t r a t i o n = TRUE, 31

a r g u me n t o s = l i s t ( p = 0 , 9 5 ) , 32

e n a b l e d = TRUE) 33

SolCVaRMinCon < - o p t i m i z e . p o r t f o l i o ( R = R , 34

c o n s t r a i n t e s = ObjCVaRMinCon , 35
o p t i m i z a r _ método = " DEoptim " , 36
i t e r m a x = 50 , 37

s e a r c h _ s i z a = 20000 , 38

t r a c e = TRUE) 39

WCVaRMinCon < - SolCVaRMinCon$ pe sos 40

CVaRMinCon <- ES ( R , w e i g h t s = WCVaRMinCon , p = 0 . 9 5 , 41

p o r t f o l i o _ método = " componente " ) 42

## GMV P o r t f o l i o 43

WGMV <- Pesos (PGMV( R , p e r c e n t a j e = FALSE) ) 44

CVaRGMV <- ES ( R , p e s o s = WGMV, p = 0 . 9 5 , 45

p o r t f o l i o _ método = " componente " ) 46

## C a r t e r a ERC 47

WERC <- Pesos ( PERC( cov ( R) , p e r c e n t a g e = FALSE) ) 48

CVaRERC <- ES ( R , p e s o s = WERC, p = 0 . 9 5 , 49


LA DIVERSIFICACIÓN 241
RECONSIDERADA
p o r t f o l i o _ método = " componente " ) 50
242 LA DIVERSIFICACIÓN
RECONSIDERADA
Por cierto, utilizando un límite superior igual a 1∕N, se obtendría la misma solución
que en el caso de una cartera ERC. La razón es que las contribuciones marginales
al CVaR se escalan linealmente a las contribuciones marginales con respecto a la
matriz de varianza-covarianza de los rendimientos. Esta configuración de la cartera
se utiliza en la llamada a optimize.portfolio(). El optimizador se ha
seleccionado como DEoptim y como parámetros de optimización se han fijado
itermax a 50 y search_size a 20 000. Se recomienda que la relación entre
el tamaño de búsqueda y el número máximo de iteraciones supere en diez veces el
número de parámetros. El vector de pesos se extrae del objeto de lista devuelto
SolCVaRBudget y se asigna a CVaRBudget. En las líneas 24 y siguientes se
inspecciona el resultado de pesos obtenido con respecto al ES de la cartera y si la
solución encontrada cumple con el presupuesto de riesgo a la baja. Esta
información puede ser devuelta por la función ES() contenida en el paquete
PerformanceAnalytics, que se declara como una dependencia de
PortfolioAnalytics.
En el siguiente bloque de sentencias R, se define una cartera mínimamente
concentrada con respecto a las contribuciones de riesgo a la baja de sus
componentes. Aquí se ha reutilizado el objeto ObjC- VaR y la minimización de la
máxima contribución a la baja se consigue estableciendo el argumento
min_concentration en TRUE para el tipo de cartera risk_budget. El
objeto ObjCVaRMinCon contiene la especificación de una cartera MCC. La
solución a esta configuración de cartera puede -de forma similar a la optimización
anterior- determinarse llamando a optimize.portfolio(). La asignación se
asigna a WCVaRMinCon, y el riesgo a la baja, así como las contribuciones de los
conjuntos de as a él, pueden consultarse empleando la función ES(). En la última
sección del listado 11.5 se determinan las soluciones pertinentes a una estrategia de
contribución de igual riesgo y a una estrategia global de mínima varianza.
Las cuatro asignaciones de activos y las contribuciones marginales al CVaR
asociadas se resumen en el cuadro 11.3. Llama la atención la concentración de la
solución del VGM que cabe esperar con respecto al activo menos volátil, es decir,
los Bunds alemanes. Casi el 90% de la riqueza se asigna a este activo y la parte
restante se asigna aproximadamente en partes iguales a las acciones
estadounidenses y alemanas. El resto de los activos no entran en la solución GMV,
o sólo con una cantidad insignificante. La solución ERC es más equilibrada en
cuanto a la distribución de su peso, pero aún así casi dos tercios se habrían
invertido en bonos soberanos de Alemania y el Reino Unido. La cartera MCC
adopta una posición intermedia entre las soluciones GMV y ERC y la BCC es la
más parecida a una solución de ponderación equitativa. Este panorama se refleja
cualitativamente en las contribuciones porcentuales al riesgo de caída de cada una
de las carteras. Merece la pena destacar la contribución negativa de los bonos
alemanes en las asignaciones ERC, BCC y MCC. Esto se debe principalmente a la
asignación comparativamente alta a las acciones y, por lo tanto, la asignación de
bonos sirve como diversificador de riesgo para las pérdidas de cola. En el caso de
la optimización BCC, esto se forzó limitando la contribución máxima al 20%, lo
que dio lugar a una menor ponderación de los bonos alemanes. Esto puede
observarse comparando las asignaciones del BCC con las del MCC. La asignación
mínima del CVaR proporciona una asignación en la que las contribuciones al
LA DIVERSIFICACIÓN 243
RECONSIDERADA
riesgo están menos concentradas, pero el REX alemán sigue contribuyendo al
riesgo en casi un 40%, lo que supone el doble de lo permitido en la configuración
del BCC.
244 LA DIVERSIFICACIÓN
RECONSIDERADA
Cuadro 11.3 Peso y contribuciones al riesgo a la baja de las carteras
multiactivas. Activos
GMV ERC BCC MCC GMV al riesgo
PonderacionesContribuciones ERC BCC MCC
S&P 500 4.55 3.72 7.80 6.40 9.83 16.63 16.61 17.06
Russell 3000 0.00 3.59 6.20 2.20 0.00 16.80 13.74 6.15
DAX 4.69 3.47 7.60 6.80 12.19 14.34 15.93 16.76
FTSE 100 0.00 4.12 1.20 12.20 0.00 11.20 1.58 20.62
Nikkei 225 1.35 3.38 5.00 4.00 3.16 22.36 15.49 15.22
MSCI EM 0.00 2.14 5.80 3.20 0.00 14.22 17.69 12.53
Tesoro de 0.00 16.42 2.40 0.20 0.00 5.40 0.76 0.05
EE.UU.
REX alemán 88.72 42.44 3.20 21.60 74.75 -17.60 -0.32 -3.94
Gilts del Reino 0.40 15.93 60.80 38.80 0.50 5.00 18.52 8.90
Unido
Oro 0.29 4.78 0.00 4.60 -0.43 11.63 0.00 6.65

Cuadro 11.4 Medidas clave de las soluciones de cartera para


carteras multiactivas.
Medidas GMV ERC BCC MCC
Desviación estándar 0.815 1.151 1.923 1.766
ES (95%) 1.437 2.923 5.366 4.613
Ratio de diversificación 1.853 2.035 1.546 1.661
Relación de 0.417 0.110 0.183 0.133
concentración

En el cuadro 11.4 se ofrecen estadísticas resumidas a nivel de cartera para los


cuatro enfoques. Con respecto a la volatilidad de la rentabilidad de las carteras, la
asignación GMV produce el resultado más bajo y la solución BCC implica la mayor
dispersión de la rentabilidad, medida por la desviación estándar de la cartera. Esto
último se debe a la restricción presupuestaria vinculante del CVaR, que obliga a
asignar un peso menor al activo menos volátil y, por lo tanto, la riqueza retenida
tiene que asignarse a componentes más arriesgados. Este hecho se refleja en el
valor más alto del riesgo a la baja de las carteras. En este caso, la asignación MCC
produce una distribución de la riqueza menos arriesgada, seguida de las soluciones
ERC y GMV. El resultado de ERC se sitúa, con respecto a las características de
volatilidad y riesgo a la baja, entre las carteras GMV y MCC/BCC. El ratio de
diversificación es máximo para la cartera ERC y la menos diversificada es la BCC;
los órdenes se invierten para el ratio de concentración. Con respecto a esta
característica, tanto la solución ERC como la MCC ofrecen una asignación de
aproximadamente la misma concentración y la asignación según el enfoque BCC
sale ligeramente peor.
LA DIVERSIFICACIÓN 245
RECONSIDERADA
Referencias
Ardia D., Arango J., y Gómez N. 2011a Calibración de la difusión de saltos mediante Evo- lución
Diferencial. Wilmott Magazine 55, 76-79.
Ardia D., Boudt K., Carl P., Mullen K., y Peterson B. 2011b Differential Evolution (DEop-
tim) for non-convex portfolio optimization. The R Journal 3(1), 27-34.
Ardia D., Mullen K., Peterson B. y Ulrich J. 2015 DEoptim: Evolución diferencial en
R. versión 2.2-3.
Bacon C. 2004 Practical Portfolio Performance Measurement and Attribution. John Wiley
& Sons, Chichester, Reino Unido.
Beasley J. 1990 Or-library: La distribución de problemas de prueba por correo electrónico.
Journal of the Op- erational Research Society 41(11), 1069-1072.
Boudt K., Carl P., y Peterson B. 2010 Portfolio optimization with CVaR budgets.
Presentación en la Conferencia R/Finance, Katholieke Universteit Leuven y Lessius,
Chicago, IL. Boudt K., Carl P., y Peterson B. 2011 Asset allocation with conditional value-at-
risk budgets.
Informe técnico, http://ssrn.com/abstract=1885293.
Boudt K., Peterson B., y Croux C. 2007 Estimación y descomposición del riesgo a la baja
para carteras con rendimientos no normales. Documento de trabajo KBI 0730, Katholieke
Universteit Leuven, Faculty of Economics and Applied Economics, Department of
Decision Sciences and Information Management (KBI), Leuven.
Boudt K., Peterson B., y Croux C. 2008 Estimación y descomposición del riesgo a la baja
para carteras con rendimientos no normales. The Journal of Risk 11(2), 79-103.
Brest J., Greiner S., Boskovic B., Mernik M., y Zumer V. 2006 Self-adapting control pa-
rameters in differential evolution: a comparative study on numerical benchmark
problems. IEEE Transactions on Evolutionary Computation 10, 646-657.
Canakgoz N. and Beasley J. 2008 Mixed-integer programming approaches for index
tracking and enhanced indexation. European Journal of Operational Research 196, 384-
399.
Choueifaty Y. y Coignard Y. 2008 Hacia la máxima diversificación. Journal of Portfolio
Management 34(4), 40-51.
Choueifaty Y., Froidure T., y Reynier J. 2011 Propiedades de la cartera más diversificada.
Documento de trabajo, TOBAM, París.
Coles S., Heffernan J., y Tawn J. 1999 Dependence measures for extreme value analysis.
Extremos 2(4), 339-365.
Conceicao E. y Mächler M. 2015 DEoptimR: Differential Evolution Optimization in pure R.
R package version 1.0-4.
Dobric' J. y Schmid F. 2005 Nonparametric estimation of the lower tail dependence 𝜆l in
bivariate copulas. Journal of Applied Statistics 32(4), 387-407.
Eddelbüttel D. 2016 RcppDE: Global optimization by Differential Evolution in C++.
Paquete R versión 0.1.5.
Frahm G., Junker M. y Schmidt R. 2005 Estimación del coeficiente de dependencia de la
cola: Propiedades y escollos. Insurance: Mathematics and Economics 37(1), 80-100.
246 LA DIVERSIFICACIÓN
RECONSIDERADA
Heffernan J. 2000 Un directorio de coeficientes de dependencia de la cola. Extremos 3(3), 279-
290. Hirschman A. 1964 La paternidad de un índice. The American Economic Review 54(5), 761-.
Maillard S., Roncalli T. y Teiletche J. 2009 On the properties of equally-weighted risk con-
carteras de aportaciones. Documento de trabajo, SGAM Alternative Investments y Lombard
Odier
y la Universidad de París Dauphine.
Maillard S., Roncalli T., y Teiletche J. 2010 The properties of equally weighted risk contri-
bution portfolios. The Journal of Portfolio Management 36(4), 60-70.
Markowitz H. 1952 Portfolio selection. The Journal of Finance 7(1), 77-91.
Mitchell M. 1998 An Introduction to Genetic Algorithms. MIT Press, Cambridge, MA.
Mullen K., Ardia D., Gil D., Windover D., y Cline J. 2011 DEoptim: Un paquete de R para
la optimización global por evolución diferencial. Journal of Statistical Software 40(6), 1-
26.
Peterson B. y Boudt K. 2008 Component VaR for a non-normal world. Risk. Noviembre. Peterson
B. y Carl P. 2015 PortfolioAnalytics: Portfolio Analysis, Including Numerical Meth-
ods para la optimización de carteras. Paquete R versión 1.0.3636.
Pfaff B. 2015 cccp: Cone Constrained Convex Problems. Paquete R versión 0.2-4.
Price K., Storn R. y Lampinen J. 2006 Differential Evolution: A Practical Approach to
Global Optimization Natural Computing. Springer-Verlag, Nueva York.
Qian E. 2005 Carteras de paridad de riesgo: Carteras eficientes a través de la verdadera
diversificación. Libro blanco, PanAgora, Boston, MA.
Qian E. 2006 Sobre la interpretación financiera de la contribución al riesgo: Los presupuestos de
riesgo sí suman.
Journal of Investment Management 4(4), 1-11.
Qian E. 2011 Paridad de riesgo y diversificación. The Journal of Investing 20(1), 119-127.
Roncalli T. 2013 Introduction to Risk Parity and Budgeting. Chapman and Hall/CRC, Boca
Raton, FL.
Sarkar D. 2008 Lattice: Multivariate Data Visualization with R. Springer, New York.
Scaillet O. 2002 Nonparametric estimation and sensitivity analysis of expected shortfall. Math-
ematical Finance 14(1), 74-86.
Schmidt R. y Stadtmüller U. 2006 Nonparametric estimation of tail dependence. The Scan-
dinavian Journal of Statistics 33, 307-335.
Spinu F. 2013 An algorithm for computing risk parity weights SSRN. OMERS Capital Markets.
Storn R. y Ulrich J. 1997 Differential evolution-a simple and efficient heuristic for global
optimization over continuous spaces. Journal of Global Optimization 11(4), 341-359.
Zhu S., Li D. y Sun X. 2010 Selección de carteras con control del riesgo marginal. Journal of
Com- putational Finance 14(1), 1-26.
LA DIVERSIFICACIÓN 247
RECONSIDERADA

12

Carteras de riesgo óptimo

12.1 Resumen
En este capítulo se presentan métodos de optimización de carteras en los que algún
tipo de medida de riesgo y su nivel se incorporan directamente a las ponderaciones
de los instrumentos financieros. Estos enfoques pueden distinguirse de las carteras
de Markowitz en el sentido de que ahora un determinado nivel de VaR o ES no es
el resultado de una asignación eficiente de la cartera, sino un objetivo. De ahí que
el usuario pueda plantearse preguntas como: "¿Cómo deben elegirse las
ponderaciones de la cartera para que el VaR resultante del 99% sea del 3,5%?" En
Alexander y Baptista (1999, 2002, 2004, 2008), así como en De Giorgi (2002), se
ofrece una comparación exhaustiva y concisa entre el VaR medio y las carteras de
varianza media. Este enfoque ha sido investigado recientemente por Durand et al.
(2011). A la luz del Acuerdo de Basilea, estos tipos de optimización de carteras han
atraído el interés de los profesionales, porque los requisitos de adecuación del
capital pueden derivarse de este tipo de medidas de riesgo (véase Alexander y
Baptista 2002, por ejemplo). Rockafellar y Uryasev (2000, 2001) y Uryasev y
Rockafellar (1999) han analizado las optimizaciones de cartera que implican el
déficit esperado.
De forma similar, las carteras pueden optimizarse con respecto a su retirada. Este
tipo de optimización es aplicable cuando una cartera se compara con un índice de
mercado más amplio.
En las dos secciones siguientes, se presentan los enfoques de cartera media-VaR
y media-ES y se contrastan con las carteras clásicas de varianza media. En la
sección 12.4 se presentan las carteras para las que se minimiza algún tipo de
medida de reducción o de objetivo. En la sección 12.5 se presentan los paquetes R
pertinentes, y las aplicaciones de la sección 12.6 concluyen el capítulo.

Financial Risk Modelling and Portfolio Optimization with R, Second Edition. Bernhard Pfaff.
2016 John Wiley & Sons, Ltd. Publicado en 2016 por John Wiley & Sons, Ltd. Sitio
web complementario: www.pfaffikus.de

También podría gustarte