Discusión sobre el artículo "Predicción de una distribución condicional mediante un perceptrón multicapa (MLP)"

Artículo publicado Predicción de una distribución condicional mediante un perceptrón multicapa (MLP):

En este artículo, analizaremos un modelo de regresión basado en un perceptrón multicapa (MLP) que predice no solo la esperanza condicional, sino también la varianza condicional. En otras palabras, entrenaremos nuestra red para que prediga la distribución completa de los precios futuros basándose en el vector de características de entrada. Pero para ello tendremos que implementar nuestra propia función de pérdida.

En mercados financieros tan volátiles e inciertos como el Forex, predecir con precisión la evolución de los precios sigue siendo un reto fundamental para los operadores y los analistas. Los métodos de regresión tradicionales basados en funciones de pérdida estándar, como el error cuadrático medio (MSE) o la suma de errores al cuadrado (SSE), suelen ofrecer un rendimiento inferior al esperado. Estas funciones suponen la homocedasticidad, es decir, la constancia de la varianza de la variable objetivo, lo que rara vez se corresponde con la dinámica real de las series temporales financieras. Para modelar adecuadamente estos datos, se requiere un enfoque que tenga en cuenta la heterocedasticidad, es decir, la variación de la varianza de los incrementos de precio en función de las características de entrada.

El artículo presenta un enfoque probabilístico del problema de regresión mediante el uso de un perceptrón multicapa (MLP) para predecir la distribución gaussiana condicional de los incrementos de precio. Para ello, implementamos una función de pérdida personalizada basada en la log-verosimilitud negativa gaussiana (GaussianNLLLoss).


Autor: Evgeniy Chernish

Es fantástico, seguramente sea el primer artículo sobre el tema de la teoría de la probabilidad en el foro.

Me pregunto si se podría hacer algo parecido con otras distribuciones (por ejemplo, la gamma o la de Weibull).

Aleksey Nikolayev la de Weibull).

Sí, claro. Si la variable a predecir tiene aproximadamente esa distribución, ¿por qué no?

Para los incrementos, también se puede probar la distribución de Student en lugar de la normal.
Evgeniy Chernish #:

Sí, claro. Si la magnitud prevista tiene más o menos esa distribución, ¿por qué no?

Para los incrementos, también se puede probar la distribución de Student en lugar de la normal.

Creo que algún día probaré a aplicarlo a la altura del codo de una curva en zigzag. Allí, para el desplazamiento aleatorio, la distribución es exponencial, por lo que se necesitan distribuciones en el semieje positivo que incluyan la distribución exponencial como caso particular.

También se podría intentar incorporar un análisis de supervivencia, pero aún no he tenido tiempo de hacerlo.

Todo está bien, salvo por un detalle. Para el «indicador de previsión» debería haberse activado el parámetro PLOT_SHIFT (con las líneas proyectadas hacia el futuro), pero ahora, en lugar de la previsión, solo se muestra el «dato real» en el historial. O quizá tengamos una interpretación diferente del término «previsión».
Stanislav Korotky #:
Todo está bien, salvo por un detalle. Para el «indicador de previsión» debería haberse activado el parámetro PLOT_SHIFT (con las líneas proyectadas hacia el futuro), pero ahora, en lugar de la previsión, solo se muestra el «dato real» en el historial. O quizá tengamos diferentes interpretaciones del término «previsión».
Pero nosotros solo hacemos previsiones para un paso adelante. No hacemos previsiones para varias barras.

Por eso, lo que muestra el indicador son todas las previsiones para un paso adelante, basadas en un vector de características construido con un desplazamiento de una barra hacia atrás.

Y antes de mostrar las previsiones, se realiza un muestreo para el entrenamiento, con el que entrenamos la red.
Evgeniy Chernish #:
Pero es que solo hacemos previsiones para el siguiente paso. No hacemos previsiones para varias barras.

Por eso, lo que muestra el indicador son todas las previsiones para un paso adelante, basadas en un vector de características construido con un desplazamiento de una barra hacia atrás.

Y antes de mostrar las previsiones, se realiza un muestreo para el entrenamiento, con el que entrenamos la red.
En otras palabras, ¿mostramos en cada barra de prueba el precio de cierre previsto y su rango para esa barra que, por así decirlo, aún no existe?
Stanislav Korotky #:
En otras palabras, ¿mostramos en cada barra de prueba el precio de cierre previsto y su intervalo para una barra que, por así decirlo, aún no existe?
¿Por qué «que aún no existe»? La barra cero aún se está formando, pero ya hemos obtenido la previsión para ella al abrirse esta barra, ya que se ha formado un nuevo vector de características. Y esta previsión no cambia ni se recalcula, ya que depende de los precios pasados, y no de los precios pasados y actuales. ¿O se me escapa algo y el código mira hacia el futuro?
Evgeniy Chernish #:
¿Por qué «inexistente»? La barra cero aún se está formando, pero ya hemos obtenido la previsión para ella al abrirse esta barra, ya que se ha formado un nuevo vector de indicadores. Y este pronóstico no cambia ni se recalcula, ya que depende de los precios pasados, y no de los precios pasados y actuales. ¿O se me ha escapado algo y el código mira hacia el futuro?
Lo más probable es que no haya ninguna «visión del futuro»; me refería a otra cosa. Al parecer, el cálculo de la previsión se realiza justo al inicio de la formación de una nueva barra, es decir, de hecho, solo cuando se conoce un precio de apertura de esa «barra», por eso la he calificado, y cito, «como si no existiera».
Stanislav Korotky #:
Probablemente no se trate de una predicción del futuro; me refería a otra cosa. Por lo que parece, el cálculo de la previsión se realiza justo al inicio de la formación de una nueva barra, es decir, en realidad solo cuando se conoce un precio de apertura de esa «barra», por eso lo he calificado, y cito, «como si no existiera».
Sí, así es exactamente como está pensado.