5.4 Mejores prácticas

5.4.1 Juicio experto y validación: ejemplos reales y buenas prácticas

En el contexto de la cuantificación de riesgos operacionales, tecnológicos y cibernéticos, el juicio experto juega un rol central cuando los datos históricos son escasos o inexistentes. A continuación, se presentan ejemplos reales, referencias y aplicaciones en R.

a) NIST: combinación de juicio experto y Monte Carlo

Según el informe NIST IR 8286A, el juicio experto se utiliza para estimar rangos de impacto (por ejemplo: entre USD 1.7M y USD 2.4M), que luego se modelan mediante simulación Monte Carlo.

Supuestos del experto:

  • Pérdida mínima: 1.7 millones

  • Pérdida máxima: 2.4 millones

  • Estimación más probable: 2.0 millones

Se puede utilizar una distribución triangular:

library(mc2d)

set.seed(123)
sev <- rtriang(10000, min = 1.7e6, mode = 2.0e6, max = 2.4e6)
summary(sev)
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
## 1703704 1930450 2023807 2031886 2131952 2395948

Ahora, simulamos la pérdida total con una frecuencia asumida de Poisson (media de 1 evento/año):

simular_perdidas <- function(n_sim = 10000, d_freq = "poisson", param_freq = list(lambda = 1),
                             d_sev = "triangular", param_sev = list(min = 1.7e6, mode = 2e6, max = 2.4e6)) {
  library(mc2d)
  perdidas <- numeric(n_sim)

  for (i in 1:n_sim) {
    n_eventos <- rpois(1, param_freq$lambda)
    if (n_eventos > 0) {
      perdidas_evento <- rtriang(n_eventos, param_sev$min, param_sev$mode, param_sev$max)
      perdidas[i] <- sum(perdidas_evento)
    }
  }

  return(perdidas)
}

losses <- simular_perdidas()
summary(losses)
##     Min.  1st Qu.   Median     Mean  3rd Qu.     Max. 
##        0        0  1972588  2015161  3780279 12395746
quantile(losses, probs = c(0.95, 0.99))
##     95%     99% 
## 6092903 8132812

b) Estudios actuariales (CAS / SOA)

El paper de la Casualty Actuarial Society destaca que cuando hay sobredispersión en frecuencia, se prefiere la distribución binomial negativa (Negative Binomial).

La sobredispersión ocurre cuando la varianza de la frecuencia de eventos es mayor que la media. Esto viola la suposición de la distribución Poisson, donde media y varianza son iguales.

Supuestos:

  • Media: 3 eventos/año

  • Varianza: 10

library(MASS)

size <- 3^2 / (10 - 3)
prob <- size / (size + 3)

n_eventos <- rnbinom(10000, size = size, prob = prob)
mean(n_eventos); var(n_eventos)
## [1] 3.002
## [1] 10.10641

Si asumimos una severidad lognormal:

simular_perdidas_nb <- function(n_sim = 10000, size, prob, meanlog, sdlog) {
  perdidas <- numeric(n_sim)

  for (i in 1:n_sim) {
    n_eventos <- rnbinom(1, size = size, prob = prob)
    if (n_eventos > 0) {
      perdidas_evento <- rlnorm(n_eventos, meanlog, sdlog)
      perdidas[i] <- sum(perdidas_evento)
    }
  }

  return(perdidas)
}

losses_nb <- simular_perdidas_nb(size = size, prob = prob, meanlog = 14, sdlog = 1.1)
summary(losses_nb)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
##         0    398467   3375332   6738095   9384894 128844109
quantile(losses_nb, probs = c(0.95, 0.99))
##      95%      99% 
## 24997745 42020852

c) FAIR Framework

El enfoque FAIR (Factor Analysis of Information Risk) recomienda usar juicio experto para estimar los parámetros de frecuencia y severidad.

Ejemplo:

  • Frecuencia: 0.8 eventos/año (Poisson)

  • Severidad estimada: 80% < USD 1M, 10% > USD 30M

Nota que el experto no da directamente una distribución, sino cuantiles clave.

Se hacen preguntas tipo:

  • ¿Cual sería la pérdida de 1 en 5 años?
  • ¿Cual sería la pérdida de 1 en 10 años?
  • ¿Cual sería la pérdida de 1 en 100 años?,
  • etc

Se ajusta una distribución lognormal para representar esta asimetría:

meanlog <- log(1e6) # para que el 80% de las pérdidas estén bajo 1M
sdlog <- 1.5 # una desviación alta, para tener cola pesada exp(1.5) = 4.481689 (millones)

sev_fair <- rlnorm(10000, meanlog, sdlog)
quantile(sev_fair, probs = c(0.8, 0.9, 0.99))
##      80%      90%      99% 
##  3331123  6407597 30242920

Simulación de pérdidas:

simular_perdidas_fair <- function(n_sim = 10000, lambda = 0.8, meanlog, sdlog) {
  perdidas <- numeric(n_sim)

  for (i in 1:n_sim) {
    n_eventos <- rpois(1, lambda)
    if (n_eventos > 0) {
      perdidas_evento <- rlnorm(n_eventos, meanlog, sdlog)
      perdidas[i] <- sum(perdidas_evento)
    }
  }

  return(perdidas)
}

losses_fair <- simular_perdidas_fair(meanlog = meanlog, sdlog = sdlog)
summary(losses_fair)
##      Min.   1st Qu.    Median      Mean   3rd Qu.      Max. 
##         0         0    198446   2569859   2033800 232722533
quantile(losses_fair, probs = c(0.95, 0.99))
##      95%      99% 
## 11865069 33144030

d) Validación y gobernanza

En todos los casos anteriores, el juicio experto debe ser acompañado de un proceso formal de validación:

  • Extracción de información estructurada de expertos

  • Validación cruzada de estimaciones

  • Pruebas de sensibilidad

  • Documentación de supuestos

Estas prácticas son recomendadas por actuaries.org.uk.

La cuantificación de riesgos no financieros requiere tanto evidencia empírica como juicio experto. El uso de distribuciones bien parametrizadas, validadas por simulación y gobernadas de forma transparente para lograr resultados robustos y defendibles.