El trading algorítmico, es el proceso de intermediar entre la oferta y demanda de determinados bienes basado en reglas , a estas reglas se les llama algoritmos. Estas reglas pueden estar automatizadas en diferentes grados y deben generar al menos señales de venta o de compra de activos financieros.
¿ por qué invertir en sistemas de trading ?
La mejor fórmula de inversión financiera es aquella que maximiza rendimientos y minimiza riesgos. Cualquier sistema de trading algoritmico debe al menos perservar la inflación para así proteger el patrimonio de los inversores.
Un buen sistema de trading nos va a permitir obtener un mejor rendimiento que comprar un indice y mantener. Este es nuestro primer sistema de trading. Podemos ver que la regla es muy sencilla y lo mejor de todo es que podemos testar dicho sistema.
Vamos a proceder a validar este sistema en el SP500. Primero lo que hacemos es cargar las librerías necesarias, en este caso pandas, numpy y matplotlib.
import pandas as pd | |
import numpy as np | |
from matplotlib import pyplot as plt | |
plt.style.use('seaborn-whitegrid') |
ETL de un sistema de trading
Es necesario la carga de los datos que alimentan nuestro sistema. Para ello utilizamos librerías como yfinance. Para ello descargamos los datos diarios del SP500.
# Descargamos los datos desde yahoo finance | |
import yfinance as yf | |
# en sector tickers declaramos el código a descargar | |
sector_tickers=['^GSPC'] | |
start='2000-01-01' | |
for tickers in sector_tickers: | |
print ('Descargando los datos desde Yahoo para %s '%(sector_tickers)) | |
#spy = DataReader(tickers, 'yahoo', '2001-01-01') | |
spy = yf.download([tickers], start) | |
#print spy.tail() | |
for item in ['Open', 'High', 'Low']: | |
spy[item] = spy[item] * spy['Adj Close'] / spy['Close'] | |
spy.rename(columns={'Open': 'open', 'High': 'high', 'Low': 'low','Adj Close': 'close', 'Volume': 'volume'}, inplace=True) | |
spy.drop(['Close'],axis=1, inplace=True) | |
print ('Extracción de datos finanlizada') | |
#spy.index=spy.index.tz_localize('UTC') |
El siguiente paso es realizar los cáculos para nuestros indicadores. En este caso no realizamos ninguno
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
# Lista de indicadores
df.ta.indicators()
# Lista de indicadores | |
df.ta.indicators() |
Reglas de un sistema de trading
Solamente tenemos una regla que es comprar al principio de la serie y mantener
Validar un sistema de trading
Como tenemos 21 años de historia en el sp500, podemos hacer dos tramos, uno de test ( 2000-2018) y otro de validación (2019-2021)
Validar el sistema de trading implica que podamos mantener las reglas en el tramo test frente al validación.
Dentro de la validación debemos tener en cuenta el perfomance del sistema, para ello utilizamos la librería quantstats.
Si creemos que nuestro sistema tiene poder predictivo entonces validamos el sistema y lo pasaremos a producción.
0 Comentarios