El modelo de clasificación de aprendizaje automático para mí ha demostrado ser más exitoso. He escrito a continuación un modelo de clasificador de vector de soporte simple en datos S & P500 que generó un retorno del 15% +.
Estrategia
Se proporciona un conjunto de datos de entrenamiento al algoritmo de clasificación de aprendizaje automático, cada uno de los cuales pertenece a una de las categorías. Por ejemplo, las categorías pueden ser comprar o vender una acción. El algoritmo de clasificación crea un modelo basado en los datos de entrenamiento y luego clasifica los datos de prueba en una de las categorías.
Fuente: Estrategia de clasificación de aprendizaje automático en Python
Paso 1: importa las bibliotecas
En este paso, importaremos las bibliotecas necesarias que serán necesarias para crear la estrategia.
# Bibliotecas de clasificación de aprendizaje automático
desde sklearn.svm import SVC
desde sklearn.metrics import goleador
de sklearn.metrics import precision_score
# Para manipulación de datos
importar pandas como pd
importar numpy como np
# Para trazar
importar matplotlib.pyplot como plt
importar seaborn
# Para buscar datos
de pandas_datareader importar datos como pdr
Paso 2: recuperar datos
Descargaremos los datos de S & P500 de google finance mediante pandas_datareader.
Después de eso, eliminaremos los valores faltantes de los datos y trazaremos la serie de precios de cierre de S & P500.
Df = pdr.get_data_google (‘SPY’, start = “2012-01-01”, end = “2017-10-01”)
Df = Df.dropna ()
Df.Close.plot (figsize = (10,5))
plt.ylabel (“Precio S & P500”)
plt.show ()
Paso 3: determinar la variable objetivo
La variable objetivo es la variable que predecirá el algoritmo de clasificación de aprendizaje automático. En este ejemplo, la variable objetivo es si el precio de S & P500 se cerrará o cerrará el próximo día de negociación.
Primero determinaremos la señal de negociación real utilizando la siguiente lógica: si el precio de cierre del próximo día de negociación es mayor que el precio de cierre de hoy, compraremos el índice S & P500, de lo contrario venderemos el índice S & P500. Almacenaremos +1 para la señal de compra y -1 para la señal de venta.
y = np.where (Df [‘Cerrar’]. shift (-1)> Df [‘Cerrar’], 1, -1)
Paso 4: creación de variables predictoras
La X es un conjunto de datos que contiene las variables del predictor que se utilizan para predecir la variable objetivo, ‘y’. La X consta de variables como ‘Abrir – Cerrar’ y ‘Alto – Bajo’ . Estos pueden entenderse como indicadores basados en los cuales el algoritmo predecirá el precio de la opción.
Df [‘Abrir-Cerrar’] = Df.Open – Df.Close
Df [‘High-Low’] = Df.High – Df.Low
X = Df [[” Abrir-Cerrar ‘,’ Alto-Bajo ‘]]
En la parte posterior del código, el algoritmo de clasificación de aprendizaje automático utilizará los predictores y la variable objetivo en la fase de entrenamiento para crear el modelo y luego, predecirá la variable objetivo en el conjunto de datos de prueba.
Paso 5: probar y entrenar la división del conjunto de datos
En este paso, dividiremos los datos en el conjunto de datos del tren y el conjunto de datos de prueba.
- El primer 80% de los datos se usa para capacitación y los datos restantes para pruebas
- X_train e y_train son conjuntos de datos del tren
- X_test e y_test son conjuntos de datos de prueba
split_percentage = 0.8
split = int (split_percentage * len (Df))
# Conjunto de datos del tren
X_train = X [: división]
tren_y = y [: división]
# Conjunto de datos de prueba
X_test = X [split:]
y_test = y [split:]
Paso 6: cree el modelo de clasificación de aprendizaje automático utilizando el conjunto de datos del tren
Crearemos el modelo de clasificación de aprendizaje automático basado en el conjunto de datos del tren. Este modelo se utilizará más adelante para predecir la señal comercial en el conjunto de datos de prueba.
cls = SVC (). fit (X_train, y_train)
Paso 7: la precisión del modelo de clasificación
Calcularemos la precisión del modelo de clasificación en el tren y el conjunto de datos de prueba, comparando los valores reales de la señal comercial con los valores predichos de la señal comercial. La función precision_score () se utilizará para calcular la precisión.
Sintaxis: precision_score (target_actual_value, target_predicted_value)
- target_actual_value: valores de señal correctos
- target_predicted_value: valores de señal pronosticados
precision_train = precision_score (y_train, cls.predict (X_train))
precision_test = precision_score (y_test, cls.predict (X_test))
print (‘\ nPrecisión del tren: {: .2f}%’. format (precision_train * 100))
print (‘Precisión de prueba: {: .2f}%’. format (precision_test * 100))
Una precisión de más del 50% en los datos de prueba sugiere que el modelo de clasificación es efectivo.
Paso 8: predicción
Vamos a predecir la señal (comprar o vender) para el conjunto de datos de prueba, utilizando la función cls.predict (). Luego, calcularemos los retornos de la estrategia en función de la señal predicha por el modelo en el conjunto de datos de prueba. Lo guardamos en la columna ‘Strategy_Return’ y luego, graficamos los retornos acumulativos de la estrategia.
Df [‘Predicted_Signal’] = cls.predict (X)
# Calcular las devoluciones de registro
Df [‘Retorno’] = np.log (Df.Close.shift (-1) / Df.Close) * 100
Df [‘Strategy_Return’] = Df.Return * Df.Predicted_Signal
Df.Strategy_Return.iloc [split:]. Cumsum (). Plot (figsize = (10,5))
plt.ylabel (“Estrategia Devuelve (%)”)
plt.show ()
Como se ve en el gráfico, la estrategia de clasificación de aprendizaje automático genera un retorno de alrededor del 15% en el conjunto de datos de prueba.
Fuente: Estrategia de clasificación de aprendizaje automático en Python