---
title: "Aprendizaje automático (Lenguaje R | Python)"
description: "Le mostraremos cómo se puede utilizar lenguaje R y Python para desarrollar el aprendizaje automático y tecnologías de modelado de operaciones."
url: https://www.quantifiedmodels.com/es/lenguaje-r-aprendizaje-automatico/
date: 2022-09-06
modified: 2023-05-05
author: "Quantified Models"
image: https://www.quantifiedmodels.com/wp-content/uploads/2022/09/BLOG-IG-Quantitied-Models-3.png
categories: ["Lenguaje R", "Python"]
tags: ["aprendizaje automático", "backtest", "código", "dinero", "herramienta", "lenguaje R", "matriz", "mercado", "Murray Ruggiero", "poda", "trader", "trading"]
type: post
lang: es
---

# Aprendizaje automático (Lenguaje R | Python)

## Aprendizaje automático (Lenguaje R | Python)

A pesar de tener unos años de haber sido publicado la información contenida nos parece excelente y nos puede ayudar a aclarar el terreno que estamos pisando cuando negociamos en el mercado financiero, la orden del día son las máquinas es por ello que el mercado a veces parece más errático que nunca pero la realidad es que las operaciones son tan rápidas debido a la presencia de los sistemas automatizados que da esa impresión pero al final la oferta y la demanda es la que manda, el artículo fue traducido por nuestro equipo de trabajo, a continuación la transcripción, esperamos la disfrute tanto como nosotros:

Durante el año pasado hemos escrito varias historias sobre el uso del aprendizaje automático para el trading. Desarrollar programas de trading con inteligencia artificial no es fácil, no solo porque es un trabajo duro desarrollar algo predictivo sino también por las limitadas herramientas dentro de las mejores plataformas de trading para el aprendizaje automático.

Otros lenguajes de programación disponen de herramientas para la pronosticación de series temporales y el aprendizaje automático. Los dos principales son el lenguaje R y Python. R no tiene una buena interfaz para desarrollar y probar los sistemas de trading de la manera que los traders desearían, aunque hay muchas bibliotecas que intentan permitir el backtesting de los sistemas de trading y la elaboración de gráficos de los datos del mercado. El backtesting en Python es algo mejor, también tiene muchas bibliotecas de aprendizaje automático, pero no tiene tan buenas bibliotecas de predicción estadística como tiene R.

Una solución para esto es que varias plataformas de negociación han añadido una interfaz para R, nativa del lenguaje, de modo que siempre se puede pasar la información a través de archivos. Una de estas empresas con una interfaz nativa de R es la plataforma InfoReach. Otra es la versión TradersStudio Turbo 2017. Esto se puede conseguir mediante un complemento.

En los próximos artículos le mostraremos cómo se puede utilizar R para desarrollar el aprendizaje automático y las tecnologías de modelado de operaciones, y utilizarlas para hacer backtest y operar con sistemas de trading.

## El final de los operadores promedio

En 2015, el fondo de cobertura de 165.000 millones de dólares de Ray Dalio, Bridgewater Associates, puso en marcha una unidad de inteligencia artificial con seis personas. Este equipo está dirigido por David Ferrucci, que se incorporó a Bridgewater a finales de 2012 tras dirigir a los ingenieros de International Business Machines (IBM) que desarrollaron Watson, el ordenador que venció a los jugadores humanos en «Jeopardy». Esta nueva unidad de Bridgewater dispondrá de grandes recursos para aplicar a los mercados la tecnología de predicción, que se adapta a las condiciones cambiantes del mercado; es un nuevo paradigma que podría suponer el fin del trader promedio.
El desarrollo de sistemas adaptativos y de aprendizaje automático para los sistemas de negociación es muy caro por dos razones. En primer lugar, es necesario desarrollar el código del método de aprendizaje automático, como ocurre con los algoritmos de redes neuronales, los algoritmos de ondículas y los algoritmos de aprendizaje profundo. Este software requiere habilidades matemáticas y de programación de alto nivel para ser escrito. Desarrollar un complemento para Excel o TradeStation con un algoritmo a partir de publicaciones científicas podría llevar varios meses de desarrollo utilizando mentes de clase mundial. Sólo el algoritmo podría costar hasta 100.000 dólares en su desarrollo y podría no funcionar para usted. Lo ideal sería tener una colección de docenas de herramientas que costarían millones. Este enfoque para grandes fondos de cobertura como Bridgewater es ideal porque le permite una mejor integración entre los algoritmos de aprendizaje y las señales de negociación.

Las empresas de inversión cuantitativa, como Two Sigma Investments, de 24.000 millones de dólares, y Renaissance Technologies, de 25.000 millones de dólares, están contratando cada vez más programadores e ingenieros para ampliar sus plantillas de inteligencia artificial. El aprendizaje automático ofrece a los fondos de cobertura una ventaja competitiva en los mercados en los que la negociación se ha visto perjudicada por la riqueza de los precios de los activos, según Gustavo Dolfino, director general de la empresa de contratación WhiteRock Group. dice Dolfino: «El aprendizaje automático es la nueva ola de inversión para los próximos 20 años y los jugadores inteligentes se están centrando en él».

La otra habilidad costosa que se necesita es la del ingeniero de conocimiento con experiencia en el mercado y el trading. Tienen que utilizar las herramientas y entender los algoritmos, pero no al nivel de los desarrolladores que han desarrollado el código.

El coste de la creación de algoritmos retrasó la investigación. Por eso R se ha vuelto tan valioso. R tiene miles de bibliotecas construidas con código abierto por una comunidad de desarrolladores. Si una empresa tuviera que desarrollar estas bibliotecas, le costaría decenas de millones de dólares, pero con R puede aprovecharlas y sólo tiene que preocuparse de la ingeniería del conocimiento y el desarrollo del sistema.
El lenguaje de programación R es ahora uno de los lenguajes de programación más populares para el aprendizaje automático y el trading.

R ofrece bibliotecas de aprendizaje automático, análisis estadístico, análisis fractal y de ondículas, procesamiento del lenguaje natural y mucho más. R requiere de una curva de aprendizaje, pero si se tienen en cuenta las herramientas avanzadas en términos de modelado que puede realizar, merece la pena. El backtesting en R es muy primitivo. Debido a esto, el mejor uso de R para los traders es hacer análisis que ayuden al desarrollo del sistema o la salida. La salida producida por sus estudios de mercado realizados en R puede ser utilizada como datos de entrada en una estrategia. Algunas plataformas de negociación pueden utilizar R-Scripts. Actualmente tenemos R disponible para TradersStudio como un complemento. En el momento de escribir esto está en beta con un lanzamiento en el año 2017.

Estas son fuentes gratuitas para aprender R. También hay muchos cursos de pago para aprender R y servicios a buen precio con un montón de buenos cursos sobre R y aprendizaje automático en DataCamp.

## Herramientas de traders para todos

Ahora todos podemos utilizar las herramientas de trading que emplean los principales fondos de cobertura utilizando R y también hasta cierto punto Python, aunque R tiene la mejor interfaz con los programas externos lo que permite una mejor integración entre las estrategias de negociación y la inteligencia. Estas herramientas van desde las más modernas de análisis de series temporales, como los modelos híbridos Arima/Garch, pasando por las ondículas y los métodos de aprendizaje automático, hasta una serie de algoritmos de redes neuronales, inducción de reglas y algoritmos evolutivos, desde la programación genética hasta la tecnología de enjambre. Además, existen herramientas de modelización de la teoría del caos y la teoría de los juegos, así como modelos de Markov ocultos.

Incluso las herramientas avanzadas de modelado de series temporales pueden llevar el trading a donde no ha llegado antes. TradersStudio ha desarrollado un sistema híbrido Arima/Garch. Este modelo predice el cierre del S&P 500 para el día siguiente menos el cierre del día actual. Esto está bien porque los futuros se negocian después de las 16:00 horas y el SPY tiene liquidez hasta las 18:00 horas aproximadamente, por lo que es posible obtener una señal sobre el cierre y realizar una operación un minuto o dos después. Las predicciones en bruto obtuvieron beneficios en más de 2.800 puntos, lo que demuestra que este tipo de tecnología es importante y valiosa para los operadores. He aquí cómo los métodos de aprendizaje automático que construyen un árbol recursivo pueden utilizarse en el trading.

## El dinero crece en los árboles

La partición recursiva es un método estadístico para el análisis multivariable. La partición recursiva crea un árbol de decisión que trata de clasificar correctamente a los miembros de la población dividiéndola en subpoblaciones basadas en varias variables independientes dicotómicas. El proceso se denomina recursivo porque cada subpoblación puede dividirse a su vez un número indefinido de veces.
Los métodos de partición recursiva se han desarrollado desde la década de 1980. Entre los métodos de partición recursiva más conocidos están el algoritmo ID3 de Ross Quinlan y sus sucesores, C4.5 y C5.0, y los árboles de clasificación y regresión. Los métodos de aprendizaje conjunto, como los bosques aleatorios, ayudan a superar el problema habitual de estos métodos (su vulnerabilidad al sobreajuste de los datos) al emplear diferentes algoritmos y combinar sus resultados de alguna manera.

Una variación es la partición recursiva lineal de Cox. Estos métodos pueden utilizarse para elegir valores basándose en fundamentos y juzgar si un valor está sobrevalorado, correctamente valorado o infravalorado (sólo utilizaremos valores infravalorados).

Estos métodos también se pueden utilizar para predecir los rendimientos del mercado en el siguiente periodo en variables categóricas, como por ejemplo: gran ascenso, alza, estabilidad, caída y gran descenso. Veamos un ejemplo sencillo. El objetivo no es dar el santo grial, sino mostrarle cómo puede empezar a construir estos modelos usted mismo. R es un gran lenguaje para el preprocesamiento de datos, pero requiere una comprensión más profunda de los tipos de datos de R. Por ejemplo, algunas librerías usan Matrices, Data Frames mientras que otras usan xts que está basado en la librería zoo y necesitas pasar el tipo correcto. Hay funciones para hacer esta conversión sobre la marcha. Otra opción si no eres un experto en R es hacer tu preproceso en TradersStudio o TradeStation ya que nos sentimos más confirmados haciendo el procesamiento de datos en esas plataformas y sabemos cómo llamar a todos los indicadores que necesitamos así como escribir los nuevos que se nos ocurran. Crearemos un archivo CSV que cargaremos en R y probaremos estos algoritmos de árbol.

Nos facilitaremos la vida y utilizaremos el terminal de impresión de TradersStudio para dar salida a los datos. A continuación, guardaremos el terminal de impresión en un archivo. Haremos nuestro análisis con datos semanales del S&P 500. Utilizaremos los beneficios del S&P 500, el Dow Transports y el S&P Dividends además de los datos de precios del S&P 500. Nuestro objetivo es predecir la variación del S&P 500 una semana en el futuro. Lo haremos mediante el Árbol de regresión utilizando la Biblioteca RPart en R. Originalmente predecimos la dirección del S&P 500 utilizando una serie de entradas. Fallamos mucho. El árbol podía resolver cualquier división que añadiera información a la división de la clase de salida. La clave en el desarrollo de estos algoritmos de árbol es definir inteligentemente la variable de predicción.

El problema es el ruido. La predicción de la dirección de un día es muy ruidosa y podemos tener operaciones de «whipsaw», que costarían deslizamientos y comisiones adicionales. Realmente no queremos cambiar de posición cuando el mercado puede moverse ligeramente en nuestra contra y también queremos filtrar el ruido. Estos factores se contrarrestan con el beneficio. De este modo, deberíamos probar nuestro objetivo como si lo conociéramos perfectamente para ver la rentabilidad que hubiera tenido. Hemos optado por utilizar el siguiente objetivo.

```cpp
If (ForClose-Average(ForClose,3,0)>=0) Or
(ForClose-Average(ForClose,3,0) >= -.1*Average(ForRange,3,0) And Perfect[1]=1)
Then Perfect=1

If (ForClose-Average(ForClose,3,0)
