← Catálogo
· Capítulo 13
T13_mST_Script_HechosEstilizados.R
# ══════════════════════════════════════════════════
# T13 · Series Temporales — Hechos Estilizados de las Series Financieras
# Abre primero mSeriesTemporales.Rproj en RStudio
# ══════════════════════════════════════════════════
library(tidyverse)
library(moments)
library(tseries)
pausa <- function(msg = "\n [Pulsa ENTER para continuar...]") {
if (interactive()) { cat(msg); invisible(readline()) }
}
set.seed(2026)
# ── 1. SIMULACION: NORMAL vs. t DE STUDENT ────────
n <- 3000
r_normal <- rnorm(n, sd = 0.01)
r_t <- rt(n, df = 4) * 0.01 / sqrt(4 / 2) # escalado a varianza similar
cat(sprintf("Curtosis normal simulada: %.2f (teorica: 3)\n", kurtosis(r_normal)))
cat(sprintf("Curtosis t(4) simulada: %.2f (teorica: infinita para df<=4)\n", kurtosis(r_t)))
op <- par(mfrow = c(1, 2))
hist(r_normal, breaks = 60, main = "Normal simulada", col = "grey70")
hist(r_t, breaks = 60, main = "t(4) simulada", col = "grey70")
par(op)
pausa()
# ── 2. GAUSSIANIDAD AGREGADA (SIMULACION) ─────────
# Sumar bloques de rendimientos "diarios" para simular agregacion semanal/mensual
r_sem <- colSums(matrix(r_t[1:(floor(n/5)*5)], nrow = 5))
r_mes <- colSums(matrix(r_t[1:(floor(n/20)*20)], nrow = 20))
cat(sprintf("Curtosis: diaria=%.2f semanal=%.2f mensual=%.2f\n",
kurtosis(r_t), kurtosis(r_sem), kurtosis(r_mes)))
cat("La curtosis decae al agregar, acercandose (sin llegar del todo) a la normal.\n")
pausa()
# ── 3. CONTRASTE DE JARQUE-BERA ────────────────────
jb_normal <- jarque.bera.test(r_normal)
jb_t <- jarque.bera.test(r_t)
cat(sprintf("JB normal: stat=%.2f p=%.4f -> %s\n", jb_normal$statistic, jb_normal$p.value,
ifelse(jb_normal$p.value > 0.05, "no se rechaza normalidad (correcto)", "se rechaza (falso positivo)")))
cat(sprintf("JB t(4): stat=%.2f p=%.4f -> %s\n", jb_t$statistic, jb_t$p.value,
ifelse(jb_t$p.value < 0.05, "se rechaza normalidad (correcto)", "no se rechaza (fallo)")))
# === FIN Script T13 — Hechos Estilizados de las Series Financieras ===