# ══════════════════════════════════════════════════ # T16 · Caso práctico Financiero — IBEX 35 (Decision Desk) # Abre primero mSeriesTemporales.Rproj en RStudio # ══════════════════════════════════════════════════ library(tidyverse) library(fracdiff) library(pracma) library(rugarch) pausa <- function(msg = "\n [Pulsa ENTER para continuar...]") { if (interactive()) { cat(msg); invisible(readline()) } } local_whittle <- function(x, m) { n <- length(x) x <- x - mean(x) per <- (Mod(fft(x))^2) / (2 * pi * n) lambda <- 2 * pi * (1:m) / n Ilam <- per[2:(m + 1)] objetivo <- function(d) { Gd <- mean(lambda^(2 * d) * Ilam) log(Gd) - 2 * d * mean(log(lambda)) } opt <- optimize(objetivo, interval = c(-0.5, 1.5)) list(d = opt$minimum, m = m) } # ── 1. CARGA Y VALOR ABSOLUTO DEL RENDIMIENTO ───── source("scripts/deskR.R") ret_ibex <- desk_returns("_IBEX", type = "log") r <- ret_ibex$return absr <- abs(r) pausa("\n [Datos cargados. Pulsa ENTER...]") # ── 2. EXPONENTE DE HURST ───────────────────────── hurst_res <- hurstexp(absr, display = FALSE) cat(sprintf("Hurst R/S simple: %.3f | corregido: %.3f\n", hurst_res$Hs, hurst_res$Hal)) pausa() # ── 3. GPH, WHITTLE Y ARFIMA ─────────────────────── gph_res <- fdGPH(absr) m_bw <- floor(length(absr)^0.65) lw_res <- local_whittle(absr, m_bw) fit_arfima <- fracdiff(absr, nar = 1, nma = 1) cat(sprintf("GPH: d=%.4f (se=%.4f)\n", gph_res$d, gph_res$sd.reg)) cat(sprintf("Whittle: d=%.4f\n", lw_res$d)) cat(sprintf("ARFIMA: d=%.4f (ar=%.4f ma=%.4f)\n", fit_arfima$d, fit_arfima$ar, fit_arfima$ma)) pausa() # ── 4. FIGARCH VS. GARCH(1,1) ───────────────────── spec_fi <- ugarchspec(variance.model = list(model = "fiGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(0, 0), include.mean = TRUE), distribution.model = "std") fit_fi <- ugarchfit(spec_fi, r, solver = "hybrid") d_figarch <- coef(fit_fi)["delta"] spec_g <- ugarchspec(variance.model = list(model = "sGARCH", garchOrder = c(1, 1)), mean.model = list(armaOrder = c(0, 0), include.mean = TRUE), distribution.model = "std") fit_g <- ugarchfit(spec_g, r, solver = "hybrid") cat(sprintf("FIGARCH: d=%.4f | AIC=%.4f\n", d_figarch, infocriteria(fit_fi)[1])) cat(sprintf("GARCH(1,1): alpha+beta=%.4f | AIC=%.4f\n", sum(coef(fit_g)[c("alpha1", "beta1")]), infocriteria(fit_g)[1])) cat("\nCinco metodos independientes (Hurst, GPH, Whittle, ARFIMA, FIGARCH) coinciden en d~0.44:\n") cat("evidencia solida de memoria larga genuina en la volatilidad del IBEX 35.\n") # === FIN Caso Práctico Financiero — Tema 16 (IBEX 35, memoria larga) ===