Un ejemplo práctico y sencillo de cómo realizar una estrategia de Pair Trading utilizando Python.
Supongamos que queremos explorar la relación entre dos acciones del sector tecnológico, Apple (AAPL) y Microsoft (MSFT), y utilizar esta relación para generar una estrategia de trading. Primero, importamos las librerías necesarias:
import yfinance as yf
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
Luego, descargamos los datos históricos de AAPL y MSFT utilizando la librería "yfinance" y los almacenamos en dos dataframes distintos:
aapl = yf.Ticker("AAPL").history(period="max")
msft = yf.Ticker("MSFT").history(period="max")
A continuación, calculamos los rendimientos diarios de cada acción utilizando el método ".pct_change()" y almacenamos estos rendimientos en dos nuevos dataframes:
aapl_returns = aapl['Close'].pct_change()
msft_returns = msft['Close'].pct_change()
Ahora, concatenamos los dos dataframes de rendimientos utilizando el método "concat" de pandas y almacenamos la información en un nuevo dataframe:
returns = pd.concat([aapl_returns, msft_returns], axis=1)
returns.columns = ['AAPL', 'MSFT']
Podemos visualizar los rendimientos diarios de cada acción mediante un gráfico de dispersión:
plt.scatter(returns['AAPL'], returns['MSFT'])
plt.xlabel('AAPL Daily Returns')
plt.ylabel('MSFT Daily Returns')
plt.show()
Podemos ver que los rendimientos diarios de AAPL y MSFT están altamente correlacionados, lo cual indica que estas dos acciones pueden ser un buen par candidato para una estrategia de Pair Trading. Para implementar la estrategia de trading, podemos utilizar varios métodos, como por ejemplo el método de 'z-score':
def z_score(series):
return (series - series.mean()) / np.std(series)
zscore_aapl = z_score(returns['AAPL'])
zscore_msft = z_score(returns['MSFT'])
spread = zscore_aapl - zscore_msft
plt.plot(spread)
plt.axhline(spread.mean(), color='black')
plt.xlabel('Time')
plt.ylabel('Spread Z-score')
plt.show()
En este caso, estamos calculando el z-score de los rendimientos diarios de AAPL y MSFT por separado y luego creando una nueva serie llamada "spread" que es simplemente la diferencia entre los dos z-scores. Podemos visualizar el comportamiento de esta serie de "spread" mediante un gráfico de línea y una línea horizontal que indica la media de la serie. Podemos observar que la serie tiende a estabilizarse alrededor de su media y que en algunos momentos presenta desviaciones significativas. Podríamos utilizar estas desviaciones para generar señales de compra y venta de las acciones, por ejemplo, comprando AAPL cuando la serie de spread se desvía por debajo de su media y vendiendo cuando se desvía por encima de su media. Esta es sólo una introducción básica a la estrategia de Pair Trading, pero espero que te haya sido útil y te haya brindado una idea de cómo utilizar Python para implementar esta estrategia.