3. Calcular el Relative Strength Rating: comparar cada acción con el mercado
Nivel 4: Screening de Acciones
Antes de poder aplicar el Trend Template hace falta un dato que no viene ya calculado en ningún sitio: el Relative Strength Rating de cada acción frente al mercado. Se calcula en dos pasos.
El primer paso es calcular, para cada acción y para el propio índice, el retorno acumulado durante el periodo que te interesa — normalmente el último año.
retorno_indice = (1 + indice["Adj Close"].pct_change()).cumprod().iloc[-1]
retorno_multiplo = {}
for ticker in tickers:
df = descargar_precios(ticker)
retorno_accion = (1 + df["Adj Close"].pct_change()).cumprod().iloc[-1]
retorno_multiplo[ticker] = round(retorno_accion / retorno_indice, 2)pct_change() calcula el retorno porcentual día a día; sumarle 1 y aplicar cumprod() (producto acumulado) da el retorno compuesto total del periodo. Dividir el retorno de la acción entre el retorno del índice da el "múltiplo de retorno": un valor de 2.0 significa que esa acción ha rendido el doble que el mercado en el mismo periodo; un valor de 0.5, la mitad.
El segundo paso convierte ese múltiplo en un percentil dentro de todo el universo de acciones, que es lo que realmente se conoce como RS Rating:
import pandas as pd
tabla = pd.DataFrame(list(retorno_multiplo.items()), columns=["Ticker", "Retorno_multiplo"])
tabla["RS_Rating"] = tabla["Retorno_multiplo"].rank(pct=True) * 100
top_30 = tabla[tabla["RS_Rating"] >= tabla["RS_Rating"].quantile(0.70)]rank(pct=True) convierte cada valor en su percentil dentro de la columna completa, en vez de en su valor absoluto — así, una acción con RS_Rating de 85 significa que ha rendido mejor que el 85% de todas las demás acciones del universo, sin importar el número exacto de su múltiplo de retorno. Multiplicar por 100 lo convierte en la escala de 0 a 100 que Minervini usa en su séptima condición.
quantile(0.70) calcula el valor que deja por debajo al 70% de los datos — filtrar por RS_Rating >= ese valor se queda, por definición, con el 30% de acciones con mejor comportamiento relativo. Es exactamente el mismo concepto de percentil que decide si una acción pasa o no la séptima condición del Trend Template.