ClubEnsayos.com - Ensayos de Calidad, Tareas y Monografias
Buscar

El modelo de minimizacion de la Mean Absolute Deviation (MAD)


Enviado por   •  2 de Junio de 2023  •  Apuntes  •  3.978 Palabras (16 Páginas)  •  58 Visitas

Página 1 de 16

El modelo de minimizacion de la Mean Absolute Deviation (MAD)

ChatGPT

La minimización de la desviación absoluta media, o Mean Absolute Deviation (MAD), es un enfoque utilizado en varios campos, incluyendo análisis de datos, pronósticos de series temporales, machine learning, entre otros, para evaluar la precisión de los modelos predictivos. MAD es una medida de la dispersión de los datos, es decir, se utiliza para entender cuánto varían los puntos de datos del valor medio.

En el contexto de la optimización de modelos, la minimización de MAD a menudo implica ajustar los parámetros del modelo de tal manera que se minimice la suma total de las diferencias absolutas entre las predicciones del modelo y los valores observados reales.

Aquí hay un ejemplo simplificado de cómo se puede plantear este problema:

Supongamos que tenemos un conjunto de n observaciones (y1, y2, ..., yn) y un modelo que produce un conjunto correspondiente de predicciones (f1, f2, ..., fn). La MAD para estas observaciones y predicciones se calcula como:

MAD = (1/n) * Σ |yi - fi|

Donde:

Σ denota la suma total,

|yi - fi| es la diferencia absoluta entre la i-ésima observación y la i-ésima predicción,

n es el número total de observaciones.

El objetivo es ajustar el modelo (cambiar los parámetros, la estructura, etc.) para minimizar este valor de MAD.

Es importante tener en cuenta que, aunque MAD puede ser una métrica útil para la precisión del modelo, también tiene limitaciones. Por ejemplo, no penaliza los errores grandes tanto como otras medidas como la desviación cuadrática media (Mean Squared Error, MSE). Por lo tanto, es posible que un modelo con una MAD baja todavía pueda producir algunos errores de predicción muy grandes.

User

Escriba el modelo anterior usando CVXPY de python

ChatGPT

CVXPY es una biblioteca de Python para problemas de optimización convexa. Permite definir problemas de optimización de manera declarativa y resuelve los problemas de forma eficiente utilizando diferentes solvers de optimización.

Aquí te dejo un ejemplo simplificado de cómo podrías minimizar la Mean Absolute Deviation (MAD) utilizando CVXPY. Para este ejemplo, supongamos que tenemos algunos datos observados y un modelo simple lineal con una variable. Estamos tratando de encontrar el valor de la variable que minimiza la MAD.

python

Copy code

import cvxpy as cp

import numpy as np

# Número de observaciones

n = 100

# Generar algunos datos observados aleatoriamente

np.random.seed(1)

y_obs = np.random.randn(n)

# La variable que estamos tratando de optimizar

x = cp.Variable()

# Definir la función objetivo como la MAD

objective = cp.Minimize(cp.sum(cp.abs(y_obs - x))/n)

# Definir el problema

problem = cp.Problem(objective)

# Resolver el problema

problem.solve()

# Imprimir el valor óptimo

print("El valor óptimo de x es: ", x.value)

En este ejemplo, x es la variable de decisión que estamos tratando de encontrar. La función objetivo, definida como la suma del valor absoluto de las diferencias entre las observaciones y x dividida por n, es lo que queremos minimizar.

La línea problem.solve() resuelve el problema de optimización, encontrando el valor de x que minimiza la función objetivo.

Finalmente, imprimimos el valor óptimo de x.

Este es un modelo muy simple solo para ilustrar cómo podrías usar CVXPY para minimizar la MAD. En un problema real, es probable que tengas un modelo más complicado y múltiples variables que optimizar.

User

import numpy as np

import pandas as pd

import yfinance as yf

# warnings . filterwarnings (" ignore ")

pd. options . display . float_format ="{:.4%}". format

# Date range

start = "2018-01-01"

end = "2019-12-31"

# Tickers of assets

assets = ["AAPL", "TGT", "MO", "APA", "MMC", "JPM","DE", "MSFT", "VZ", "NI", "BA", "C"]

assets . sort ()

# Downloading data

data = yf. download (assets , start = start , end = end )

data = data .loc [: ,( "Adj Close", slice ( None ))]

data . columns = assets

# Calculating returns

Y = data [ assets ]. pct_change (). dropna ()

En el script anterior ¿Como añadir´ıa las condiciones que los pesos de los activos

deben sumar 120% y posiciones en corto maximo -30%?

ChatGPT

En el script que has proporcionado, estás descargando datos de precios de acciones y luego calculando los retornos diarios. Entiendo que ahora deseas configurar un problema de optimización en el que seleccionas los pesos de los activos de manera que los pesos sumen el 120% (lo que sugiere el uso de apalancamiento) y las posiciones en corto no excedan el -30%.

Podemos usar CVXPY para definir y resolver este problema de optimización. En este problema, los pesos de los activos son nuestras variables de decisión. La función objetivo puede ser cualquier cosa que quieras maximizar o minimizar (como la volatilidad de la cartera o el retorno esperado), pero no se menciona en tu pregunta, por lo que asumiré que estás buscando minimizar la MAD.

A continuación se muestra cómo podrías modificar tu script para incluir la definición y resolución de este problema de optimización.

python

Copy code

import cvxpy as cp

# Crear una variable para cada activo

weights = cp.Variable(len(assets))

# Definir las restricciones

constraints = [

    # Los pesos de los activos deben sumar 120%

    cp.sum(weights) == 1.2,

    # Posiciones en corto máximo -30%

    weights >= -0.3

]

# Calcular el retorno esperado utilizando los retornos históricos

expected_return = Y.mean()

...

Descargar como (para miembros actualizados)  txt (25.2 Kb)   pdf (116.9 Kb)   docx (559.1 Kb)  
Leer 15 páginas más »
Disponible sólo en Clubensayos.com