/algotrading_python

Trading strategies programmed in Python. Published on sarastem.com

Primary LanguagePython

ESTRATEGIAS DE TRADING EN PYTHON - ALGOTRADING

Por SaraSTEM

~ Programar tus estrategias en Bolsa es fácil ~

Descripción

En este repo encontrarás todas las estrategias de Trading que programo en Python, conocido como Trading Algorítmico. Están compuestas por:

  • Descarga de datos
  • Cuerpo de la estrategia
  • Backtesting

Todo esto me permite hacer Trading de forma eficiente. Opero cada día con el broker XTB, con el que puedes abrir una cuenta real grauita.

Si descargas el repo en tu ordenador, podrás testear cualquier parámetro como el producto, timeframe, capital, etc. en cualquiera de las estrategias. Para descargarlo, sigue los siguientes pasos:

Instalación previa

Primero debemos descargar "Git" y "Python3" en nuestro ordenador. Los podemos encontrar en:

Además, debemos tener un entorno de desarrollo o IDE para poder abrir los archivos escritos en Python. Yo recomiendo Visual Studio Code por su simplicidad de uso. Lo puedes descargar aquí:

Visual Studio Code

Una vez descargado todo, abrimos Visual Studio Code. Pinchamos en "Terminal"->"Nuevo terminal". Se abrirá un terminal en la parte baja donde escribiremos los siguientes comandos:

  1. Entramos en la carpeta donde vamos a alojar el proyecto, por ejemplo el escritorio, y escribimos el siguiente código:

cd Desktop

  1. Una vez dentro, clonamos el proyecto escribiendo lo siguiente:

git clone https://github.com/SaraStemTrading/algotrading_python.git

  1. Entramos en la carpeta especificada:

cd algotrading_python

  1. Una vez dentro, desplegamos un entorno virtual del siguiente modo:

python -m venv env

Si no funciona, probamos con:

python3 -m venv env

  1. Activamos el entorno virtual "env":

En Windows:

env\Scripts\activate.bat

En Mac:

source ./env/bin/activate

Nos fijaremos que estamos dentro del entorno porque aparece (env) en la línea de comandos.

  1. Por útlimo, debemos instalar las dependencias para que el algoritmo funcione correctamente. Esto lo hacemos con la ayuda del archivo "requirements.txt". Para su instalación, escribimos:

pip install -r requirements.txt

  1. Finalmente, en el explorador de la izquierda en Visual Studio Code, podemos abrir la carpeta donde hemos instalado el algoritmo (hemos usado el escritorio) para ver todos los archivos.

Parámetros de las estrategias: archivo "variables_(nombre-de-la-estrategia).env"

Una vez instalado todo lo anterior, y abierta la carpeta de la estrategia que queremos probar, vamos a reescribir el archivo .env que viene dentro, fundamental para la correcta ejecución de nuestra estrategia, ya que tendrá todos los datos iniciales necesarios. En concreto, son los siguientes parámetros:

  • product: Aquí debemos poner entre comillas el ticker del activo al que queremos aplicarle la estrategia y ver el backtesting. Tienes la lista completa en la web de Yahoo Finanzas, dentro del apartado Mercados, puedes buscar el producto que quieras: https://es.finance.yahoo.com.
  • period: Esto solo se debe rellenar para datos intradía. Aquí debemos poner entre comillas el periodo de tiempo en el que queremos que nos muestre los datos, y debe inferior a 60 días. Adjunto imagen con los periodos y timeframes disponibles: periodyf
  • interval: Aquí podremos entre comillas el timeframe que queremos para testear nuestra estrategia.
  • period_bb: Este es un ejemplo de períodos para un indicador concreto (en este caso las Bandas de Bollinger), pero debes añadir tantos períodos como indicadores tenga la estrategia, que ya viene por defecto en el documento.
  • risk_op: Aquí ponemos el riesgo por operación que queremos asumir. Se pone en tantos por uno. Yo suelo trabajar con un riesgo del 2% sobre el capital en cada operación.
  • capital: Aquí ponemos el capital con el que queremos testear nuestra estrategia.
  • commission: Poner aquí la comisión a aplicar por operación, en tantos por uno. He usado 0,2% en cada operación.
  • margin: Finalmente, ponemos el margen de apalancamiento, en tantos por uno. En mi caso he usado 1:50, es decir, 0,05.

Funcionamiento del algoritmo

Una vez rellenados los apartados anteriores, podemos ejecutar el código del algoritmo desde Visual Studio Code y valorar los resultados obtenidos, que aparecerán en el propio terminal de la plataforma. Esto lo haremos escribiendo en el terminal:

python3 (nombre-de-la-estrategia)_main.py

Nota: Recuerda que para probar otros parámetros en esta estrategia, solo debes modificar el archivo ".env"

Resultados

Los resultados de la estrategia (con los parámetros indicados en el archivo ".env"), se pueden ver en el terminal de Visual Studio Code. En concreto, se arrojarán los siguientes datos:

  • Rentabilidad (%)
  • Rentabilidad anualizada (%) -> Para poder comparar diferentes estrategias con diferentes horizontes y timeframes.
  • Número de operaciones -> Número total de operaciones realizadas por la estrategia.
  • Ratio de aciertos (%)
  • Máximo drawdown (%) -> Peor racha de pérdidas.
  • Volatilidad (%)
  • Ratio Sharpe, Ratio Sortino y Ratio Calmar -> Mejor es la estrategia cuanto mayor sean estos ratios. Serán 0 si la rentabilidad es negativa.
  • Factor de beneficio -> Mejor es la estrategia cuanto mayor sea este número. Lo ideal es superior a 1,5.
  • Calidad -> Mejor es la estrategia cuanto mayor sea este número. Lo ideal es superior a 1,6.
  • Benchmark -> Rentabilidad del benchmark en %. Lo ideal es batirlo.
  • Caída desde el pico -> Caída actual del equity en días.
  • Duración DD -> Duración en días del Drawdown. Con estos dos últimos datos es importante ver que los días son diferentes para comprobar que la estrategia no esté actualmente haciendo el Drawdown.

Notas finales

Con toda esta información, puedes hacer pruebas y valorar tus propios resultados en cuestión de segundos. Si quieres ver vídeos explicativos de cada estrategia con trading en directo, entra en mi página web.

¡Unete al Trading eficiente!

Espero que te resulte de utilidad.

PD: Toda ayuda o sugerencia con el código es bienvenida, ya que mi background es financiero y no informático 😉

SaraSTEM | Trading Algorítmico 👩🏻‍💻