Universidad Nacional Hermilio Valdizán
Facultad de Economía
Econometría - MSc. Jeel Cueva Huanuco - Perú
El presente estudio analiza el exceso de retorno de un activo financiero en función de los factores de riesgo del modelo de tres factores de Fama y French (mercado, tamaño y valor) para el período analizado, utilizando datos diarios con un total de 2263 observaciones. Se emplea información proveniente de bases de datos financieras y se especifica un modelo de regresión lineal múltiple estimado mediante Mínimos Cuadrados Ordinarios (MCO), bajo los supuestos del Modelo Clásico de Regresión Lineal (MCRL).
Los resultados indican que el factor de mercado ejerce un efecto positivo y estadísticamente significativo sobre el exceso de retorno, con un coeficiente estimado de 0.531970 (p < 0.05). Asimismo, los factores tamaño (β = 0.391136) y valor (β = 0.262286) también resultan significativos al 5%. El modelo es globalmente significativo (PF = 0; p < 0.05) y presenta un coeficiente de determinación R² = 0.0638, lo que sugiere que los factores sistemáticos explican parcialmente la variabilidad del retorno.
Los tests de diagnóstico revelan ausencia de autocorrelación y multicolinealidad, aunque se detecta heterocedasticidad y posible mala especificación funcional. Se concluye que el riesgo sistemático constituye el principal determinante del rendimiento del activo, con implicaciones relevantes para la gestión de portafolios y la valoración de activos financieros.
Palabras clave: modelo Fama–French, exceso de retorno, Mínimos Cuadrados Ordinarios, factores de riesgo, econometría financiera. Clasificación JEL: C13, C22, G12
This study analyzes the excess return of a financial asset as a function of the Fama and French three-factor model (market, size, and value) using daily data with 2,263 observations. The model is estimated through Ordinary Least Squares (OLS) under the assumptions of the Classical Linear Regression Model.
The results show that the market factor has a positive and statistically significant effect on excess returns, with an estimated coefficient of 0.531970 (p < 0.05). The size (β = 0.391136) and value (β = 0.262286) factors are also statistically significant at the 5% level. The model is globally significant (F = 51.32; p < 0.05) and reports an R² of 0.0638, indicating that systematic risk factors partially explain return variability.
Diagnostic tests confirm the absence of serial correlation and multicollinearity, although heteroskedasticity and potential functional misspecification are detected. The findings suggest that systematic risk exposure is the primary determinant of asset returns, with direct implications for portfolio management and asset pricing strategies.
Keywords: Fama–French model, excess return, Ordinary Least Squares, risk factors, financial econometrics. JEL Classification: C13, C22, G12
El mercado de capitales cumple un papel fundamental en la asignación eficiente de recursos y en la determinación del costo del capital en las economías modernas. En mercados emergentes como el peruano, la dinámica de los precios accionarios refleja tanto factores macroeconómicos como características propias de las empresas. En este contexto, el análisis de los determinantes del rendimiento accionario adquiere especial relevancia para inversionistas, analistas financieros y responsables de política económica vinculados al desarrollo del mercado financiero.
Tradicionalmente, el Modelo de Valoración de Activos de Capital (CAPM) ha sido utilizado para explicar el rendimiento esperado de los activos financieros a partir del riesgo sistemático. Sin embargo, la evidencia empírica internacional ha mostrado que el CAPM resulta insuficiente para capturar completamente las variaciones observadas en los retornos accionarios. En respuesta a estas limitaciones, Eugene Fama y Kenneth French propusieron un modelo multifactorial que incorpora, además del factor de mercado, el efecto tamaño (SMB) y el efecto valor (HML), ampliando la capacidad explicativa del modelo tradicional.
En el caso del mercado peruano, y específicamente en la Bolsa de Valores de Lima, existe escasa evidencia empírica que evalúe la aplicabilidad del modelo Fama–French utilizando datos diarios y centrados en empresas representativas del sector minero. La Compañía de Minas Buenaventura constituye un caso de estudio relevante debido a su importancia dentro del sector extractivo y su exposición a factores globales como el precio de los metales y la dinámica del mercado internacional de capitales. Este vacío en la literatura motiva el presente estudio.
Objetivo General: Estimar la relación entre el rendimiento diario de la acción de Compañía de Minas Buenaventura y los factores del modelo Fama–French de tres factores durante el periodo 2016–2024, a fin de evaluar la capacidad explicativa del modelo en el contexto del mercado accionario peruano.
Objetivos Específicos:
Verificar la estacionariedad de las series de retornos mediante pruebas de raíz unitaria.
Estimar los parámetros del modelo Fama–French y evaluar su significancia estadística individual y conjunta.
Realizar el diagnóstico econométrico completo del modelo, verificando los supuestos del Modelo Clásico de Regresión Lineal.
Hipótesis de Investigación (H₁): Existe una relación estadísticamente significativa entre el exceso de retorno de la acción de Buenaventura y los factores de mercado, tamaño y valor durante el periodo 2016–2024.
Hipótesis Nula (H₀): Los factores del modelo Fama–French no explican significativamente el exceso de retorno de la acción de Buenaventura en el periodo analizado.
4.1 Fundamentación teórica del modelo Fama–French
El Modelo de Valoración de Activos de Capital (CAPM) establece que el rendimiento esperado de un activo financiero depende exclusivamente de su riesgo sistemático, medido a través del coeficiente beta respecto al mercado. Sin embargo, diversos estudios empíricos evidenciaron anomalías que el CAPM no lograba explicar adecuadamente, particularmente el efecto tamaño y el efecto valor.
En respuesta a estas limitaciones, Eugene Fama y Kenneth French desarrollaron el modelo de tres factores, el cual amplía el CAPM incorporando dos variables adicionales: el factor tamaño (Small Minus Big, SMB) y el factor valor (High Minus Low, HML). Este modelo sostiene que los rendimientos accionarios no solo compensan el riesgo de mercado, sino también características estructurales relacionadas con el tamaño de la empresa y su relación valor–precio.
El modelo Fama–French de tres factores se expresa de la siguiente manera:
𝑅 𝑖 𝑡 − 𝑅 𝑓 𝑡 = 𝛼 + 𝛽 1 ( 𝑅 𝑚 𝑡 − 𝑅 𝑓 𝑡 ) + 𝛽 2 𝑆 𝑀 𝐵 𝑡 + 𝛽 3 𝐻 𝑀 𝐿 𝑡 + 𝜀 𝑡
Donde:
\(R_{it}\) : Rendimiento del activo \(i\) en el periodo \(t\)
\(R_{ft}\) : Tasa libre de riesgo
\((R_{mt} - R_{ft})\) : Prima por riesgo del mercado
\(SMB_t\) : Factor tamaño (empresas pequeñas menos empresas grandes)
\(HML_t\) : Factor valor (empresas con alto ratio book-to-market menos bajo)
\(\alpha\) : Término constante (rendimiento anormal)
\(\beta_k\) : Sensibilidades del activo a cada factor
\(\varepsilon_t\) : Término de error aleatorio
En este contexto, los coeficientes \(\beta_1\), \(\beta_2\) y \(\beta_3\) miden la exposición sistemática del activo a cada uno de los factores de riesgo.
4.2 Supuestos del Modelo Clásico de Regresión Lineal (MCRL)
La estimación del modelo se realizará mediante el método de Mínimos Cuadrados Ordinarios (MCO), bajo los siguientes supuestos:
Linealidad en los parámetros El modelo es lineal en los coeficientes \(\beta\).
Muestra aleatoria Las observaciones diarias son independientes e idénticamente distribuidas.
No multicolinealidad perfecta Las variables explicativas no presentan combinación lineal exacta.
Esperanza condicional nula del error \(E(\varepsilon_t | X_t) = 0\).
Homoscedasticidad \(Var(\varepsilon_t | X_t) = \sigma^2\) constante.
No autocorrelación serial \(Cov(\varepsilon_t, \varepsilon_{t-j}) = 0\) para \(j \neq 0\).
Normalidad del término de error (para inferencia exacta) \(\varepsilon_t \sim N(0, \sigma^2)\).
4.3 Propiedades del estimador MCO
Bajo los supuestos del MCRL, el estimador de Mínimos Cuadrados Ordinarios posee las siguientes propiedades:
Insesgado: \(E(\hat{\beta}) = \beta\)
Eficiente: Tiene la mínima varianza entre los estimadores lineales insesgados (Teorema de Gauss–Markov).
Consistente: \(\hat{\beta} \rightarrow \beta\) cuando \(n \rightarrow \infty\).
Asintóticamente normal: Permite realizar inferencia estadística.
En consecuencia, el estimador MCO es considerado BLUE (Best Linear Unbiased Estimator).
4.4 Interpretación económica de los parámetros
\(\beta_1 > 0\): La acción presenta exposición positiva al riesgo sistemático del mercado.
\(\beta_1 > 1\): Activo agresivo.
\(\beta_1 < 1\): Activo defensivo.
\(\beta_2 > 0\): La empresa se comporta como una firma pequeña (prima por tamaño).
\(\beta_3 > 0\): La empresa presenta características de valor (alto book-to-market).
\(\alpha \neq 0\): Existencia de rendimiento anormal no explicado por los factores sistemáticos.
5.1 Estudios internacionales
[Fama y French, 1993] analizaron la relación entre los rendimientos accionarios y los factores de riesgo mercado, tamaño (SMB) y book-to-market (HML) en Estados Unidos para el periodo 1963–1991, utilizando un modelo de regresión multifactorial estimado por mínimos cuadrados ordinarios. Los resultados evidenciaron que los factores tamaño y valor presentan coeficientes estadísticamente significativos al 1%, mejorando sustancialmente la capacidad explicativa del CAPM. Este antecedente sustenta la presente investigación en cuanto a la elección del modelo Fama–French como marco teórico principal.
[Fama y French, 1996] analizaron la relación entre diversas anomalías financieras y los tres factores del modelo en el mercado estadounidense durante 1963–1993, utilizando regresiones de series de tiempo y corte transversal. Los resultados evidenciaron que el modelo de tres factores explica de manera estadísticamente significativa (al 1%) múltiples patrones de retornos que el CAPM no logra capturar. Este antecedente sustenta la presente investigación en cuanto a la robustez empírica del modelo multifactorial.
[Carhart, 1997] analizó la relación entre el rendimiento de fondos mutuos y cuatro factores de riesgo (mercado, tamaño, valor y momentum) en Estados Unidos para el periodo 1962–1993, utilizando un modelo multifactorial ampliado. Los resultados evidenciaron que el factor momentum es estadísticamente significativo al 1%, incrementando el poder explicativo del modelo. Este antecedente sustenta la presente investigación en cuanto a la superioridad empírica de modelos multifactoriales frente al CAPM simple.
5.2 Estudios nacionales
[Cajahuaringa et al., 2021] analizaron y compararon modelos de predicción de retornos accionarios aplicados al mercado de capitales peruano (Bolsa de Valores de Lima) para el periodo 2010–2019, incluyendo CAPM, el modelo Fama & French de tres factores y el modelo Reward Beta. Utilizando procedimientos econométricos de Fama–MacBeth y formación de portafolios, los resultados evidenciaron que el modelo Fama–French presenta mejores resultados estadísticos para el mercado peruano. Este antecedente sustenta la elección metodológica en cuanto a la pertinencia del modelo de tres factores en mercados emergentes como Perú.
[Girón Perleche, 2024] aplicó una extensión del modelo Fama & French con prima de iliquidez al mercado de valores peruano para datos de empresas que cotizan en la Bolsa de Valores de Lima entre 2012 y 2022. Este trabajo utiliza metodología multifactorial para estimar el costo de capital incorporando características del mercado local (incluyendo iliquidez). Los resultados evidencian que factores adicionales pueden capturar riesgos relevantes en mercados emergentes, lo que sustenta la pertinencia de modelos multifactoriales ajustados al contexto peruano.
6.1 Fuente y descripción de los datos
Los datos utilizados en la presente investigación corresponden a precios de cierre ajustados diarios de la empresa Compañía de Minas Buenaventura, empresa minera que cotiza en la Bolsa de Valores de Lima.
Los precios serán obtenidos desde la plataforma financiera Yahoo Finance mediante la librería quantmod en R.
Los factores del modelo Fama–French (Mkt-RF, SMB y HML) serán descargados desde la base de datos oficial publicada por Kenneth French, disponible en su Data Library.
La tasa libre de riesgo (RF) será tomada de la misma base de datos de Fama–French.
6.2 Periodo de análisis y frecuencia de los datos
El periodo de análisis comprende enero de 2016 hasta diciembre de 2024.
La frecuencia de los datos es diaria, lo que permite capturar dinámicas de corto plazo y mayor volatilidad en los rendimientos accionarios.
El uso de datos diarios permite estimaciones más precisas del riesgo sistemático y de los factores de tamaño y valor en comparación con datos mensuales.
6.3 Definición operacional de variables
| VARIABLE | DESCRIPCIÓN COMPLETA | FUENTE | UNIDAD | TIPO |
|---|---|---|---|---|
| Y (dep.) | Exceso de retorno diario de la acción de la Compañía de Minas Buenaventura (Rᵢₜ − Rfₜ). Corresponde al rendimiento logarítmico diario menos la tasa libre de riesgo. | Yahoo Finance (precios históricos) y Data Library de Kenneth French | Porcentaje diario (%) | Endógena |
| X₁ | Prima de mercado (Mkt − Rf). Diferencia entre el rendimiento del portafolio de mercado y la tasa libre de riesgo. | Data Library de Kenneth French | Porcentaje diario (%) | Exógena |
| X₂ | SMB (Small Minus Big). Diferencia entre rendimientos de empresas de pequeña y gran capitalización bursátil. | Data Library de Kenneth French | Porcentaje diario (%) | Exógena |
| X₃ | HML (High Minus Low). Diferencia entre rendimientos de empresas con alto y bajo ratio book-to-market. | Data Library de Kenneth French | Porcentaje diario (%) | Exógena |
6.4 Especificación econométrica completa del modelo
El modelo Fama–French de tres factores se especifica en términos del exceso de retorno del activo, de la siguiente forma:
( 𝑅 𝑖 𝑡 − 𝑅 𝑓 𝑡 ) = 𝛼 + 𝛽 1 ( 𝑅 𝑚 𝑡 − 𝑅 𝑓 𝑡 ) + 𝛽 2 𝑆 𝑀 𝐵 𝑡 + 𝛽 3 𝐻 𝑀 𝐿 𝑡 + 𝜀 𝑡
Donde:
\(R_{it}\) : rendimiento logarítmico diario de la acción de Compañía de Minas Buenaventura
\(R_{ft}\) : tasa libre de riesgo diaria
\((R_{mt} - R_{ft})\) : prima por riesgo del mercado
\(SMB_t\) : factor tamaño (Small Minus Big)
\(HML_t\) : factor valor (High Minus Low)
\(\alpha\) : rendimiento anormal no explicado por los factores sistemáticos
\(\beta_k\) : coeficientes de sensibilidad del activo a cada factor de riesgo
\(\varepsilon_t\) : término de error aleatorio
El término dependiente \((R_{it} - R_{ft})\) representa el exceso de retorno diario, lo que permite analizar el rendimiento ajustado por riesgo en coherencia con la teoría de valoración de activos.
El modelo será estimado mediante Mínimos Cuadrados Ordinarios (MCO), incorporando errores estándar robustos tipo Newey–West para corregir posibles problemas de heterocedasticidad y autocorrelación propios de datos financieros diarios.
6.5 Método de estimación y software utilizado
El modelo será estimado mediante el método de Mínimos Cuadrados Ordinarios (MCO).
El análisis econométrico se desarrollará utilizando el software R (versión 4.X.X) y el entorno RStudio, empleando librerías como:
quantmod
PerformanceAnalytics
tidyverse
lmtest
tseries
La estimación permitirá obtener coeficientes beta, errores estándar, estadísticos t y el R² ajustado.
6.6 Tests de diagnóstico y justificación
Para validar los supuestos del modelo se aplicarán los siguientes tests:
Prueba de Durbin–Watson Para detectar autocorrelación de primer orden en los residuos.
Prueba de Breusch–Pagan Para evaluar la presencia de heterocedasticidad.
Prueba de Jarque–Bera Para verificar la normalidad de los residuos.
Análisis de multicolinealidad (VIF) Para evaluar posibles correlaciones altas entre factores.
La aplicación de estos tests permite garantizar la validez estadística de los estimadores y la confiabilidad de las inferencias realizadas.
## =========================================================
## PASO 1: DESCARGA DE PRECIOS – BUENAVENTURA
## =========================================================
library(quantmod)## Cargando paquete requerido: xts
## Cargando paquete requerido: zoo
##
## Adjuntando el paquete: 'zoo'
## The following objects are masked from 'package:base':
##
## as.Date, as.Date.numeric
## Cargando paquete requerido: TTR
## Registered S3 method overwritten by 'quantmod':
## method from
## as.zoo.data.frame zoo
# Descargar datos desde Yahoo Finance
getSymbols("BVN",
src = "yahoo",
from = "2016-01-01",
to = "2024-12-31")## [1] "BVN"
## BVN.Open BVN.High BVN.Low BVN.Close BVN.Volume BVN.Adjusted
## 2016-01-04 4.34 4.58 4.32 4.42 1797600 4.157072
## 2016-01-05 4.44 4.56 4.43 4.44 1026800 4.175882
## 2016-01-06 4.51 4.55 4.28 4.34 1025500 4.081831
## 2016-01-07 4.34 4.41 4.18 4.31 2033200 4.053616
## 2016-01-08 4.20 4.27 4.13 4.23 1531100 3.978374
## 2016-01-11 4.22 4.29 3.98 4.11 1090300 3.865512
## =========================================================
## PASO 2: CÁLCULO DE RETORNOS LOGARÍTMICOS
## =========================================================
# Precio de cierre ajustado
precio_bvn <- Ad(BVN)
# Retornos logarítmicos diarios
retorno_bvn <- dailyReturn(precio_bvn, type = "log")
# Cambiar nombre columna
colnames(retorno_bvn) <- "Retorno_BVN"
head(retorno_bvn)## Retorno_BVN
## 2016-01-04 0.000000000
## 2016-01-05 0.004514564
## 2016-01-06 -0.022780020
## 2016-01-07 -0.006936206
## 2016-01-08 -0.018736020
## 2016-01-11 -0.028779136
## ===========================================
## PASO 3: DESCARGA FACTORES FAMA-FRENCH
## ===========================================
# Crear archivo temporal
temp <- tempfile()
# Descargar archivo ZIP
download.file(
"https://mba.tuck.dartmouth.edu/pages/faculty/ken.french/ftp/F-F_Research_Data_Factors_daily_CSV.zip",
temp,
mode = "wb"
)
# Descomprimir
unzip(temp, exdir = tempdir())
# Buscar archivo CSV dentro del zip
archivo <- list.files(tempdir(),
pattern = "F-F_Research_Data_Factors_daily",
full.names = TRUE)
# Leer archivo (saltando encabezados)
ff_data <- read.csv(archivo, skip = 3)
# Eliminar filas vacías
ff_data <- ff_data[ff_data[,1] != "", ]
# Renombrar primera columna
colnames(ff_data)[1] <- "Date"
# Convertir fecha
ff_data$Date <- as.Date(as.character(ff_data$Date), format = "%Y%m%d")
# Convertir columnas numéricas y dividir entre 100
for(i in 2:5){
ff_data[,i] <- as.numeric(ff_data[,i]) / 100
}
# Ver primeras filas
head(ff_data)## =========================================================
## PASO 4: FILTRAR PERIODO 2016–2024
## =========================================================
ff_data <- ff_data[
ff_data$Date >= as.Date("2016-01-01") &
ff_data$Date <= as.Date("2024-12-31"),
]
head(ff_data)## =========================================================
## PASO 5: CONSTRUCCIÓN DE BASE FINAL
## =========================================================
# Convertir retornos BVN a data frame
retornos_df <- data.frame(
Date = index(retorno_bvn),
Retorno_BVN = coredata(retorno_bvn)
)
# Unir retornos con factores Fama-French
datos_finales <- merge(retornos_df, ff_data, by = "Date")
# Crear exceso de retorno
datos_finales$Exceso_Retorno <-
datos_finales$Retorno_BVN - datos_finales$RF
# Renombrar columna mercado (por si tiene guion)
colnames(datos_finales)[colnames(datos_finales) == "Mkt.RF"] <- "Mkt_RF"
# Verificar estructura final
str(datos_finales)## 'data.frame': 2263 obs. of 7 variables:
## $ Date : Date, format: "2016-01-04" "2016-01-05" ...
## $ Retorno_BVN : num 0 0.00451 -0.02278 -0.00694 -0.01874 ...
## $ Mkt_RF : num -0.0159 0.0013 -0.0134 -0.0244 -0.0111 -0.0006 0.0072 -0.0266 0.0165 -0.0213 ...
## $ SMB : num -0.0087 -0.0018 -0.0013 -0.0029 -0.0049 -0.0064 -0.0042 -0.0073 0.0002 0.004 ...
## $ HML : num 0.0052 0 0.0001 0.0008 -0.0003 0.004 -0.0078 0.008 -0.0041 -0.0022 ...
## $ RF : num 0 0 0 0 0 0 0 0 0 0 ...
## $ Exceso_Retorno: num 0 0.00451 -0.02278 -0.00694 -0.01874 ...
## [1] 2263
ls()
7.1 Estadística descriptiva de todas las variables
# Seleccionar solo columnas numéricas automáticamente
datos_modelo <- datos_finales[sapply(datos_finales, is.numeric)]
# Eliminar NA
datos_modelo <- na.omit(datos_modelo)
# Cargar librería
library(moments)
# Estadísticos descriptivos
estadisticos <- data.frame(
Media = sapply(datos_modelo, mean),
Desv_Estandar = sapply(datos_modelo, sd),
Minimo = sapply(datos_modelo, min),
Maximo = sapply(datos_modelo, max),
Asimetria = sapply(datos_modelo, skewness),
Curtosis = sapply(datos_modelo, kurtosis)
)
estadisticos7.2 Análisis de correlaciones entre variables
## Retorno_BVN Mkt_RF SMB HML RF
## Retorno_BVN 1.000000000 0.22230158 0.13685689 0.06992725 -0.004179624
## Mkt_RF 0.222301581 1.00000000 0.23148054 -0.06372098 -0.012195480
## SMB 0.136856892 0.23148054 1.00000000 0.01610230 -0.024512664
## HML 0.069927252 -0.06372098 0.01610230 1.00000000 -0.035816815
## RF -0.004179624 -0.01219548 -0.02451266 -0.03581681 1.000000000
## Exceso_Retorno 0.999996392 0.22233104 0.13692071 0.07002243 -0.006865933
## Exceso_Retorno
## Retorno_BVN 0.999996392
## Mkt_RF 0.222331044
## SMB 0.136920712
## HML 0.070022431
## RF -0.006865933
## Exceso_Retorno 1.000000000
7.3 Verificación de estacionariedad (series temporales: tests ADF y PP)
## =========================================================
## 7.3 TEST ADF
## =========================================================
library(tseries)
adf.test(datos_modelo$Exceso_Retorno)## Warning in adf.test(datos_modelo$Exceso_Retorno): p-value smaller than printed
## p-value
##
## Augmented Dickey-Fuller Test
##
## data: datos_modelo$Exceso_Retorno
## Dickey-Fuller = -12.857, Lag order = 13, p-value = 0.01
## alternative hypothesis: stationary
## Warning in adf.test(datos_modelo$Mkt_RF): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: datos_modelo$Mkt_RF
## Dickey-Fuller = -12.87, Lag order = 13, p-value = 0.01
## alternative hypothesis: stationary
## Warning in adf.test(datos_modelo$SMB): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: datos_modelo$SMB
## Dickey-Fuller = -12.562, Lag order = 13, p-value = 0.01
## alternative hypothesis: stationary
## Warning in adf.test(datos_modelo$HML): p-value smaller than printed p-value
##
## Augmented Dickey-Fuller Test
##
## data: datos_modelo$HML
## Dickey-Fuller = -12.235, Lag order = 13, p-value = 0.01
## alternative hypothesis: stationary
## =========================================================
## TEST PHILLIPS-PERRON
## =========================================================
pp.test(datos_modelo$Exceso_Retorno)## Warning in pp.test(datos_modelo$Exceso_Retorno): p-value smaller than printed
## p-value
##
## Phillips-Perron Unit Root Test
##
## data: datos_modelo$Exceso_Retorno
## Dickey-Fuller Z(alpha) = -2296.3, Truncation lag parameter = 8, p-value
## = 0.01
## alternative hypothesis: stationary
## Warning in pp.test(datos_modelo$Mkt_RF): p-value smaller than printed p-value
##
## Phillips-Perron Unit Root Test
##
## data: datos_modelo$Mkt_RF
## Dickey-Fuller Z(alpha) = -2616.3, Truncation lag parameter = 8, p-value
## = 0.01
## alternative hypothesis: stationary
## Warning in pp.test(datos_modelo$SMB): p-value smaller than printed p-value
##
## Phillips-Perron Unit Root Test
##
## data: datos_modelo$SMB
## Dickey-Fuller Z(alpha) = -2307.4, Truncation lag parameter = 8, p-value
## = 0.01
## alternative hypothesis: stationary
## Warning in pp.test(datos_modelo$HML): p-value smaller than printed p-value
##
## Phillips-Perron Unit Root Test
##
## data: datos_modelo$HML
## Dickey-Fuller Z(alpha) = -2063.8, Truncation lag parameter = 8, p-value
## = 0.01
## alternative hypothesis: stationary
Los tests ADF y Phillips–Perron rechazan la hipótesis nula de raíz unitaria al 5%, indicando que todas las series son estacionarias, como es esperado para retornos financieros diarios.
7.4 Estimación del modelo econométrico (tabla de resultados formateada)
# Estimación MCO
modelo_ff <- lm(Exceso_Retorno ~ Mkt_RF + SMB + HML,
data = datos_finales)
summary(modelo_ff)##
## Call:
## lm(formula = Exceso_Retorno ~ Mkt_RF + SMB + HML, data = datos_finales)
##
## Residuals:
## Min 1Q Median 3Q Max
## -0.210625 -0.015691 -0.000294 0.014741 0.227186
##
## Coefficients:
## Estimate Std. Error t value Pr(>|t|)
## (Intercept) 0.0001364 0.0006114 0.223 0.824
## Mkt_RF 0.5319695 0.0538393 9.881 < 2e-16 ***
## SMB 0.3911365 0.0934536 4.185 2.96e-05 ***
## HML 0.2622863 0.0654263 4.009 6.30e-05 ***
## ---
## Signif. codes: 0 '***' 0.001 '**' 0.01 '*' 0.05 '.' 0.1 ' ' 1
##
## Residual standard error: 0.02905 on 2259 degrees of freedom
## Multiple R-squared: 0.06381, Adjusted R-squared: 0.06256
## F-statistic: 51.32 on 3 and 2259 DF, p-value: < 2.2e-16
library(knitr)
# Estimar modelo
modelo_ff <- lm(Exceso_Retorno ~ Mkt_RF + SMB + HML,
data = datos_finales)
resumen <- summary(modelo_ff)
coef <- resumen$coefficients
# Crear tabla base con coeficientes
tabla_final <- data.frame(
"Variable Explicativa" = c("Intercepto (β0)",
"Mkt_RF (β1)",
"SMB (β2)",
"HML (β3)",
"R²",
"R² Ajustado",
"F-estadístico",
"p-value F",
"n"),
Coeficiente = c(round(coef[1,1],6),
round(coef[2,1],6),
round(coef[3,1],6),
round(coef[4,1],6),
round(resumen$r.squared,4),
round(resumen$adj.r.squared,4),
round(resumen$fstatistic[1],2),
round(pf(resumen$fstatistic[1],
resumen$fstatistic[2],
resumen$fstatistic[3],
lower.tail = FALSE),4),
nrow(datos_finales)),
"Error Std." = c(round(coef[1,2],6),
round(coef[2,2],6),
round(coef[3,2],6),
round(coef[4,2],6),
"", "", "", "", ""),
"t-valor" = c(round(coef[1,3],3),
round(coef[2,3],3),
round(coef[3,3],3),
round(coef[4,3],3),
"", "", "", "", ""),
"Pr(>|t|)" = c(round(coef[1,4],4),
round(coef[2,4],4),
round(coef[3,4],4),
round(coef[4,4],4),
"", "", "", "", "")
)
kable(tabla_final, align = "c")| Variable.Explicativa | Coeficiente | Error.Std. | t.valor | Pr…t.. |
|---|---|---|---|---|
| Intercepto (β0) | 0.000136 | 0.000611 | 0.223 | 0.8235 |
| Mkt_RF (β1) | 0.531970 | 0.053839 | 9.881 | 0 |
| SMB (β2) | 0.391136 | 0.093454 | 4.185 | 0 |
| HML (β3) | 0.262286 | 0.065426 | 4.009 | 1e-04 |
| R² | 0.063800 | |||
| R² Ajustado | 0.062600 | |||
| F-estadístico | 51.320000 | |||
| p-value F | 0.000000 | |||
| n | 2263.000000 |
7.5 Interpretación económica de cada coeficiente estimado
β₁ = [valor]: 0.532
Por cada incremento de una unidad en el factor de mercado (Mkt.RF), manteniendo constantes las demás variables (ceteris paribus), el exceso de retorno (ER) de BVN aumenta en 0.532 puntos porcentuales.
β₂ = [valor]: 0.391
Por cada incremento de una unidad en el factor tamaño (SMB), manteniendo constantes las demás variables, el exceso de retorno de BVN aumenta en 0.391 puntos porcentuales.
β₃ = [valor]: 0.262
Por cada incremento de una unidad en el factor valor (HML), manteniendo constantes las demás variables, el exceso de retorno de BVN aumenta en 0.262 puntos porcentuales.
7.6 Análisis de significancia individual (prueba t) y conjunta (prueba F)
Intercepto (β₀)
p-value = 0.8235
0.8235 > 0.05 : El intercepto no es estadísticamente significativo al 5%.
Mkt_RF (β₁)
p-value = 0.0000
0.0000 < 0.05 : El coeficiente es estadísticamente significativo al 5%.
SMB (β₂)
p-value = 0.0000
< 0.05: El factor tamaño es significativo al 5%.
HML (β₃)
p-value = 0.0001
0.0001 < 0.05: El factor value es estadísticamente significativo al 5%.
7.7 Interpretación del R² y R² ajustado
El R² = 0.0638 indica que el 6.38% de la variabilidad del exceso de retorno de BVN es explicado por los factores de mercado, tamaño y valor.
El R² ajustado = 0.0626 confirma la baja pero estadísticamente significativa capacidad explicativa del modelo.
7.8 Gráficos: serie temporal, dispersión, residuos vs. ajustados
7.8 Gráficos: serie temporal, dispersión, residuos vs. ajustados
GRAFICO DE SERIE TEMPORAL
plot(datos_finales$Date,
datos_finales$Exceso_Retorno,
type = "l",
col = "blue",
main = "Serie Temporal del Exceso de Retorno",
xlab = "Fecha",
ylab = "Exceso de Retorno")
abline(h = 0, col = "red", lty = 2)Interpretación:
La serie temporal del exceso de retorno muestra un comportamiento fluctuante alrededor de cero, sin tendencia determinística aparente, lo cual es consistente con la naturaleza estacionaria de los retornos financieros diarios.
Se observan episodios de alta volatilidad concentrados en determinados periodos, lo que refleja la presencia de clustering de volatilidad típico en mercados financieros.
La ausencia de una tendencia persistente confirma los resultados obtenidos en los tests de raíz unitaria, donde se verificó que la serie es estacionaria en niveles.
GRAFICO DE DISPERSIÓN (EXC. RETORNOS VS MERCADO)
plot(datos_finales$Mkt_RF,
datos_finales$Exceso_Retorno,
main = "Dispersión: Exceso de Retorno vs Factor Mercado",
xlab = "Mkt_RF",
ylab = "Exceso de Retorno",
pch = 16,
col = "darkgreen")
abline(lm(Exceso_Retorno ~ Mkt_RF, data = datos_finales),
col = "red",
lwd = 2)Interpretación:
El gráfico de dispersión evidencia una relación lineal positiva entre el exceso de retorno del activo y el factor de mercado (Mkt_RF).
La pendiente positiva de la recta de regresión confirma el coeficiente estimado (β₁ = 0.531970), indicando que el activo responde de manera directa a las variaciones del mercado.
La dispersión relativamente concentrada alrededor de la recta sugiere que el factor de mercado explica una fracción relevante, aunque no total, de la variabilidad del retorno.
GRAFICO DE RESIDUOS VS AJUSTADOS
plot(modelo_ff$fitted.values,
modelo_ff$residuals,
main = "Residuos vs Valores Ajustados",
xlab = "Valores Ajustados",
ylab = "Residuos",
pch = 16,
col = "purple")
abline(h = 0, col = "red", lwd = 2)Interpretación:
El gráfico de residuos frente a los valores ajustados muestra una distribución aproximadamente aleatoria alrededor de cero, sin patrones sistemáticos evidentes.
La ausencia de estructura definida sugiere que la especificación lineal del modelo es adecuada.
No se observan patrones claros de heterocedasticidad severa, aunque pueden existir leves variaciones en la dispersión propias de datos financieros diarios.
## Cargando paquete requerido: carData
# TEST 1: Normalidad (Jarque-Bera)
jb <- jarque.bera.test(residuals(modelo_ff))
# TEST 2: Homocedasticidad (Breusch-Pagan)
bp <- bptest(modelo_ff)
# TEST 3: Autocorrelación (Breusch-Godfrey, 2 rezagos)
bg <- bgtest(modelo_ff, order = 2)
# TEST 4: VIF
vif_val <- car::vif(modelo_ff)
# TEST 5: RESET Ramsey
reset <- resettest(modelo_ff, power = 2:3, type = "fitted")
jb##
## Jarque Bera Test
##
## data: residuals(modelo_ff)
## X-squared = 3478.6, df = 2, p-value < 2.2e-16
##
## studentized Breusch-Pagan test
##
## data: modelo_ff
## BP = 36.231, df = 3, p-value = 6.692e-08
##
## Breusch-Godfrey test for serial correlation of order up to 2
##
## data: modelo_ff
## LM test = 3.5579, df = 2, p-value = 0.1688
## Mkt_RF SMB HML
## 1.061722 1.057685 1.005092
##
## RESET test
##
## data: modelo_ff
## RESET = 10.42, df1 = 2, df2 = 2257, p-value = 3.128e-05
library(knitr)
tabla_diagnostico <- data.frame(
"TEST APLICADO" = c("Jarque-Bera",
"Breusch-Pagan",
"Breusch-Godfrey",
"VIF máximo",
"RESET Ramsey"),
"ESTADÍSTICO" = c(
paste0("JB = ", round(jb$statistic,2)),
paste0("BP = ", round(bp$statistic,2)),
paste0("LM = ", round(bg$statistic,2)),
round(max(vif_val),2),
paste0("F = ", round(reset$statistic,2))
),
"p-value" = c(
round(jb$p.value,4),
round(bp$p.value,4),
round(bg$p.value,4),
"-",
round(reset$p.value,4)
),
"DECISIÓN" = c(
ifelse(jb$p.value > 0.05, "No rechazar H0", "Rechazar H0"),
ifelse(bp$p.value > 0.05, "No rechazar H0", "Rechazar H0"),
ifelse(bg$p.value > 0.05, "No rechazar H0", "Rechazar H0"),
ifelse(max(vif_val) < 10, "VIF < 10", "VIF > 10"),
ifelse(reset$p.value > 0.05, "No rechazar H0", "Rechazar H0")
),
"CONCLUSIÓN" = c(
ifelse(jb$p.value > 0.05, "Normalidad ✓", "No normalidad ✗"),
ifelse(bp$p.value > 0.05, "Homocedasticidad ✓", "Heterocedasticidad ✗"),
ifelse(bg$p.value > 0.05, "No autocorrelación ✓", "Autocorrelación ✗"),
ifelse(max(vif_val) < 10, "No multicolinealidad ✓", "Multicolinealidad ✗"),
ifelse(reset$p.value > 0.05, "Bien especificado ✓", "Mala especificación ✗")
)
)
kable(tabla_diagnostico, align = "c")| TEST.APLICADO | ESTADÍSTICO | p.value | DECISIÓN | CONCLUSIÓN |
|---|---|---|---|---|
| Jarque-Bera | JB = 3478.56 | 0 | Rechazar H0 | No normalidad ✗ |
| Breusch-Pagan | BP = 36.23 | 0 | Rechazar H0 | Heterocedasticidad ✗ |
| Breusch-Godfrey | LM = 3.56 | 0.1688 | No rechazar H0 | No autocorrelación ✓ |
| VIF máximo | 1.06 | - | VIF < 10 | No multicolinealidad ✓ |
| RESET Ramsey | F = 10.42 | 0 | Rechazar H0 | Mala especificación ✗ |
Interpretaciones
TEST 1: Normalidad — Jarque-Bera
JB = 3478.57
p-value = 0.0000 : El test de Jarque-Bera indica que los residuos no siguen una distribución normal. El estadístico elevado (3478.57) y el p-value prácticamente cero muestran evidencia contundente contra la normalidad.
TEST 2: Homocedasticidad — Breusch-Pagan
BP = 36.23
p-value = 0.0000 : Existe evidencia estadísticamente significativa de heterocedasticidad en el modelo. La varianza de los errores no es constante.
TEST 3: Autocorrelación — Breusch-Godfrey (2 rezagos)
LM = 3.56
p-value = 0.1688 : El supuesto de independencia serial de los errores se cumple razonablemente en el modelo estimado.
TEST 4: Multicolinealidad — VIF
VIF máximo = 1.06 : Dado que el VIF máximo es 1.06 (muy cercano a 1), no existe evidencia de multicolinealidad entre las variables explicativas.
TEST 5: RESET de Ramsey
F = 10.42
p-value = 0.0000 : Aunque el modelo es globalmente significativo, podría beneficiarse de una especificación más flexible o de la inclusión de variables adicionales.
Conclusión 1 — Objetivo Específico 1 (Estacionariedad)
Los tests ADF y Phillips–Perron confirmaron que todas las series analizadas son estacionarias en niveles al 5% de significancia. En consecuencia, no presentan raíz unitaria y pueden ser utilizadas directamente en estimaciones por Mínimos Cuadrados Ordinarios sin necesidad de diferenciación adicional. Este resultado es consistente con la teoría financiera, dado que los retornos financieros diarios suelen comportarse como procesos estacionarios alrededor de una media constante.
Conclusión 2 — Objetivo Específico 2 (Estimación y significancia)
La estimación del modelo Fama-French de tres factores muestra que:
El factor de mercado (β₁ = 0.531970) es positivo y altamente significativo (p < 0.05).
El factor tamaño (β₂ = 0.391136) es positivo y significativo.
El factor valor (β₃ = 0.262286) es positivo y significativo.
El intercepto no es estadísticamente significativo.
Estos resultados indican que el exceso de retorno del activo está explicado principalmente por la exposición al riesgo sistemático del mercado y, en menor medida, por los factores tamaño y valor.
El modelo es globalmente significativo (PF = 0; p < 0.05), lo que confirma que los factores explicativos poseen poder conjunto para explicar el comportamiento del retorno.
Conclusión 3 — Objetivo Específico 3 (Diagnóstico)
El análisis de diagnóstico revela que:
No existe autocorrelación serial.
No hay problemas de multicolinealidad (VIF máximo = 1.06).
Se detecta heterocedasticidad.
Los residuos no siguen distribución normal.
El test RESET sugiere posible mala especificación funcional.
Por lo tanto, aunque el modelo es estadísticamente válido en términos generales, presenta limitaciones relacionadas con la varianza no constante y posibles omisiones de variables.
Conclusión General (Objetivo General)
El análisis econométrico confirma que el factor de mercado ejerce un efecto positivo y estadísticamente significativo sobre el exceso de retorno del activo analizado durante el período estudiado, con un coeficiente estimado de 0.531970. Este resultado es consistente con la teoría del modelo de tres factores de Fama y French, que sostiene que los retornos esperados están determinados por la exposición a factores sistemáticos de riesgo.
El modelo explica aproximadamente el 6.38% de la variabilidad del exceso de retorno, siendo globalmente significativo (PF = 0, p < 0.05). No obstante, la presencia de heterocedasticidad y posible mala especificación sugiere que el comportamiento de los retornos podría estar influenciado por factores adicionales no incluidos en el modelo.
En términos económicos, los resultados evidencian que el activo presenta una sensibilidad moderada al riesgo de mercado y exposición positiva a los factores tamaño y valor.
Recomendaciones
Se recomienda que los inversionistas y gestores de portafolio consideren la exposición al riesgo sistemático del mercado como el principal determinante del rendimiento del activo analizado. Asimismo, deben incorporar modelos con estimadores robustos para corregir problemas de heterocedasticidad, mejorando la precisión en la toma de decisiones financieras.
Futuras investigaciones podrían ampliar el modelo incorporando factores adicionales, como el factor momentum o variables macroeconómicas, así como evaluar modelos no lineales o con volatilidad condicional (GARCH) para capturar mejor la dinámica de los retornos financieros.
Limitaciones del estudio
El presente estudio presenta las siguientes limitaciones:
El análisis se basa únicamente en datos diarios del período seleccionado.
El modelo considera solo tres factores de riesgo.
Se detectó heterocedasticidad y posible mala especificación funcional.
El R² relativamente bajo indica que una parte importante de la variabilidad no es explicada por el modelo.
Fama, E. F., & French, K. R. (1993). Common risk factors in the returns on stocks and bonds. Journal of Financial Economics, 33(1), 3–56. https://doi.org/10.1016/0304-405X(93)90023-5
Fama, E. F., & French, K. R. (1996). Multifactor explanations of asset pricing anomalies. The Journal of Finance, 51(1), 55–84. https://doi.org/10.1111/j.1540-6261.1996.tb05202.x
Carhart, M. M. (1997). On persistence in mutual fund performance. The Journal of Finance, 52(1), 57–82. https://doi.org/10.1111/j.1540-6261.1997.tb03808.x
Dickey, D. A., & Fuller, W. A. (1979). Distribution of the estimators for autoregressive time series with a unit root. Journal of the American Statistical Association, 74(366), 427–431. https://doi.org/10.1080/01621459.1979.10482531
Breusch, T. S., & Pagan, A. R. (1979). A simple test for heteroscedasticity and random coefficient variation. Econometrica, 47(5), 1287–1294. https://doi.org/10.2307/1911963
Jarque, C. M., & Bera, A. K. (1980). Efficient tests for normality, homoscedasticity and serial independence of regression residuals. Economics Letters, 6(3), 255–259. https://doi.org/10.1016/0165-1765(80)90024-5
Ramsey, J. B. (1969). Tests for specification errors in classical linear least-squares regression analysis. Journal of the Royal Statistical Society: Series B, 31(2), 350–371. https://www.jstor.org/stable/2984219
Godfrey, L. G. (1978). Testing against general autoregressive and moving average error models when the regressors include lagged dependent variables. Econometrica, 46(6), 1293–1301. https://doi.org/10.2307/1913829
Cajahuaringa, L., et al. (2021). Comparación de modelos de predicción de retornos accionarios en el mercado de capitales peruano (2010–2019) [Tesis de licenciatura, Pontificia Universidad Católica del Perú]. Repositorio PUCP. https://tesis.pucp.edu.pe/items/e39368c8-a5ec-48d5-a7e1-ed063b67e381
Girón Perleche, J. (2024). Modelos multifactoriales para estimar el costo de capital en el mercado de valores peruano [Tesis de licenciatura, Pontificia Universidad Católica del Perú]. Repositorio PUCP. https://repositorio.pucp.edu.pe/items/2c3a81ee-aa17-4f1a-886b-7c6e7f667134
Greene, W. H. (2018). Econometric Analysis (8th ed.). Pearson.
Gujarati, D. N., & Porter, D. C. (2010). Econometría (5.ª ed.). McGraw-Hill.
Wooldridge, J. M. (2015). Introducción a la econometría: Un enfoque moderno (5.ª ed.). Cengage Learning.
Stock, J. H., & Watson, M. W. (2020). Introduction to Econometrics (4th ed.). Pearson.