# ══════════════════════════════════════════════════ # 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 ===