Cómo aplicar Pandas TA a un Dataframe con Groupby
Tengo un dataframe que contiene datos de acciones y está agrupado por acciones (ver imagen adjunta como ejemplo), el índice es cada minuto de datos para cada acción y la segunda columna es el símbolo de la acción.
Estoy tratando de aplicar indicadores de ‘Pandas TA’ al dataframe usando groupby para que los datos de cada acción se traten por separado y también se utilice la multiprocesamiento incorporada de Pandas TA. Tengo un archivo principal de backtesting que llama a esta función para agregar indicadores a los datos sin procesar (los datos sin procesar son Apertura, Máximo, Mínimo, Cierre, Volumen), pero este código solo devuelve un dataframe en blanco.
import pandas_ta as ta
def simple_strategy(df):
CustomStrategy = ta.Strategy(
name="Momo and Volatility",
description="SMA 50,200, BBANDS, RSI, MACD and Volume SMA 20",
ta=[
{"kind": "sma", "length": 20},
{"kind": "sma", "length": 60},
{"kind": "bbands", "length": 20},
]
)
df = df.groupby(['symbol']).apply(lambda x:
df.ta.strategy(CustomStrategy) ).reset_index(0,drop=True)
print(df)
Esta es parte de mi programa principal que llama a la función anterior para aplicar indicadores al dataframe.
import numpy as np
import pandas as pd
from alpaca_trade_api.rest import REST, TimeFrame
import os
from datetime import datetime, timedelta, date
import time
import pandas_ta as ta
from strategies import simple_strategy
if __name__ == '__main__':
stocks = ['TSLA', 'AAPL', 'V', 'MSFT', 'TQQQ', 'SQQQ', 'ARKK', 'TLRY', 'XELA']
start = "2021-06-01"
end = "2021-12-22"
# Recuperar dataframe sin procesar****************************************************
total_data = access_dataframe(start, end, stocks, dates)
# Aplicar indicadores al dataframe *************************************
total_data = simple_strategy(total_data)
Cualquier solución para aplicar ‘Pandas TA’ a un dataframe usando groupby sería muy apreciada.
davy.ai
Para aplicar los indicadores de Pandas TA a un dataframe agrupado por acciones, puedes usar el método
groupby
para agrupar los datos por símbolo y luego aplicar el métodota
de Pandas TA a cada grupo por separado.En tu código, has definido la función
simple_strategy
para definir una estrategia personalizada para los indicadores que deseas aplicar, pero hay un error en la declaracióngroupby
.Para solucionarlo, puedes modificar la función
simple_strategy
para aplicar los indicadores a cada grupo por separado y luego combinar los resultados. Aquí tienes una versión actualizada del código:En tu programa principal, puedes llamar a esta función en los datos sin procesar para aplicar los indicadores a cada acción por separado:
Ten en cuenta que también deberás importar el módulo
pd
para combinar los resultados en un solo dataframe.