Máximos de 52 semanas y volumen: cómo reducir la lista de acciones a estudiar
Comprar cerca de un máximo de 52 semanas da cierto vértigo: ¿y si la supuesta ruptura termina en una caída? Añadir volumen o volumen relativo (RVOL) no permite predecir qué acción nos dejará atrapados. Lo que sí puede resolver es una decisión bastante anterior a la orden de compra.
Algunos valores están muy cerca del máximo anual, pero apenas negocian. Otros registran un volumen extraordinario y, sin embargo, cotizan lejos de ese máximo. Si solo tengo tiempo de analizar una pequeña parte, ¿por dónde empiezo?
Mi primer paso consiste en reducir el universo según la posición del precio, volver a filtrar por volumen absoluto y, solo entonces, investigar el RVOL y la liquidez de los candidatos restantes. En la interfaz que comprobé realmente apliqué dos condiciones: 52W High y Volume. La columna Relative Volume estaba visible para una siguiente revisión, pero no apliqué ni verifiqué ningún umbral numérico de RVOL en esa operación.
Un filtro sirve para distribuir el tiempo de análisis. No es una señal de compra.
Dos filtros, dos problemas distintos
El máximo de 52 semanas permite comparar el precio actual con el rango del último año. Estar cerca de esa cota puede sugerir fortaleza relativa o una tendencia interesante. No demuestra que una ruptura sea válida ni garantiza que el valor vaya a seguir subiendo.
Además, «cerca del máximo» necesita una definición. La ayuda del screener de Finviz describe máximos por periodo y filtros basados en la distancia porcentual. «A no más del 5 % del máximo» es una regla cuantificable para un ejercicio. No significa que escribir 10 en el campo 52W High de otra herramienta equivalga a estar a un 10 % del máximo.
El volumen aborda otra cuestión: la posibilidad real de negociar. Si un título opera con poca actividad, debo comprobar el diferencial entre compra y venta, la profundidad del libro de órdenes y si podría entrar o salir al precio esperado. Un gráfico atractivo no asegura una ejecución razonable.
Lo considero parte del coste de investigar. Cada acción ilíquida que permanece en la lista me obliga a dedicar tiempo a comprobar su negociabilidad. La definición de liquidez de Investor.gov se centra precisamente en vender sin causar un impacto importante en el precio. Un volumen elevado puede justificar mirar un valor, pero por sí solo no prueba que exista profundidad suficiente.
Tampoco basta con buscar mucho volumen: una caída violenta acompañada de ventas masivas genera actividad. Por eso combino los criterios como una intersección de conjuntos, no como una puntuación mágica que aumente la probabilidad de acertar.
Seis acciones inventadas: de seis a cuatro y, después, a dos
Primero, nada de cotizaciones reales. Inventé seis acciones, S1 a S6, y asigné a cada una un precio actual, un máximo de 52 semanas y un volumen diario hipotéticos.
El primer filtro conserva los precios que alcanzan al menos el 95 % de su supuesto máximo anual. El segundo exige al menos un millón de acciones de supuesto volumen. El 95 % y el millón de acciones son umbrales arbitrarios de este ejemplo, no una interpretación de las unidades o reglas de ningún screener de producción.
// Datos completamente ficticios; las unidades de volumen son ilustrativas.
const stocks = [
["S1", 96, 100, 600000],
["S2", 49, 50, 1800000],
["S3", 190, 200, 900000],
["S4", 9.8, 10, 2400000],
["S5", 80, 100, 1600000],
["S6", 60, 100, 2200000],
];
// [identificador, precio supuesto, máximo de 52 semanas supuesto, volumen supuesto]
const nearHigh = stocks.filter(([, price, high]) => price / high >= 0.95);
const candidates = nearHigh.filter(([, , , volume]) => volume >= 1000000);
console.log(stocks.length, nearHigh.length, candidates.length); // 6 4 2
console.log(candidates.map(([id]) => id)); // ["S2", "S4"]
El programa imprime 6, 4, 2. Al final quedan S2 y S4.
| Etapa | Acciones ficticias restantes | Motivo de exclusión |
|---|---|---|
| Universo inicial: 6 | S1, S2, S3, S4, S5, S6 | — |
| Al menos el 95 % del máximo: 4 | S1, S2, S3, S4 | S5 y S6 están más alejadas |
| Añadir un millón de acciones: 2 | S2, S4 | S1 y S3 no llegan al volumen exigido |
El caso que más me interesa es S3. Su precio imaginario es 190 frente a un máximo de 200: justo en el límite del 95 %. Pero mueve 900.000 acciones ficticias, 100.000 menos de las necesarias para pasar el segundo filtro. El código la elimina de inmediato. Eso no demuestra que S3 sea peor que las otras ni que carezca de interés.
El precio de un filtrado tosco es que la lista se acorta, pero también puede perder casos fronterizos. Si solo puedo revisar unas pocas gráficas, quizá acepte ese sacrificio. Si investigo anomalías de precio y volumen en acciones con poco capital flotante, colocaría S3 en otra lista, «cerca del umbral, pendiente de revisión». Los límites organizan el tiempo; no ponen notas a las empresas.
Un millón de acciones, además, no significa lo mismo para todos los precios. Como ejemplo puramente aritmético, un millón de títulos a 10 yuanes representaría unos 10 millones de yuanes de importe negociado si todos se cruzaran a ese precio; a 100 yuanes serían unos 100 millones. No son operaciones observadas, y ninguna cifra sustituye la profundidad real del mercado. Importe negociado, rotación y horquilla pueden resultar más útiles que un número fijo de títulos.
En una herramienta real, filtrar no es ordenar
En un array de JavaScript, intersectar dos condiciones es sencillo. En una interfaz real hay una trampa más mundana: creer que añadí un filtro cuando, en realidad, solo cambié el orden de una tabla.
Utilicé el screener de NuvexLens, en cuyo mantenimiento participo, para comprobar ese flujo. Lo que observé fue concreto: al añadir la segunda condición, seguía visible la etiqueta del primer filtro y el resumen de candidatos se reducía. Es más cómodo que exportar dos listas y cruzarlas a mano. No demuestra, sin embargo, que el motor interno use algún algoritmo especial.
En una observación de la vista Overview del mercado estadounidense (US) vi las columnas Volume y Relative Volume, además de la entrada de filtro 52W High. Que RVOL aparezca como columna no significa que se hubiera aplicado un valor límite de RVOL. Tampoco reproduzco aquí las cotizaciones individuales de aquella pantalla.
La comprobación de los dos filtros juntos procede de otra sesión distinta, en el mercado chino (CN). En Add New Filter añadí 52W High > 10 y después Volume > 1000000. Ambas etiquetas aparecieron a la vez y el contador de candidatos disminuyó. Eso acredita lo que mostró la interfaz en esos momentos, no un backtest histórico, una lista fija de los mismos valores ni el funcionamiento del backend. No hay que mezclar la vista US y la operación CN en una única instantánea bursátil.
Ahora, cuando reviso una selección múltiple, compruebo que se mantenga la primera etiqueta de precio; que el volumen se añada desde el editor del filtro, no desde un menú de columna; y que realmente cambie el conjunto elegible, no solo su orden.
No es una precaución inventada. Durante una comprobación abrí el menú de ordenación de la columna Volume en vez del filtro numérico. Al repetir la operación desde Add New Filter vi las dos condiciones juntas. Ordenar cambia la presentación; filtrar cambia quién cumple los requisitos. Si además varían el mercado consultado o el momento de la cotización, un contador más pequeño no demuestra que los nuevos valores formen un subconjunto de los anteriores.
Hay otra equivalencia que no debo inventar. En el código ficticio utilicé «estar a menos del 5 % del máximo». En la interfaz introduje 52W High > 10. Sin conocer de forma fiable las unidades y la semántica de ese campo, no puedo traducir ese 10 como «a menos del 10 % del máximo».
Una lista más corta no termina la investigación
Aunque S2 y S4 fueran acciones reales, no compraría ninguna solo por superar esos dos filtros. Querría saber si el volumen de hoy es alto en comparación con la actividad habitual del mismo título. El volumen absoluto es un primer corte; RVOL o una media histórica calculada sobre periodos comparables ayudan después.
De manera general, RVOL expresa el volumen actual en relación con un volumen medio de referencia. La documentación oficial de TradingView describe una metodología que utiliza las diez observaciones previas y otra comparación por la misma hora de negociación. Esa es una explicación de las fórmulas de TradingView, no una validación de la fórmula del backend del screener que inspeccioné. Tampoco he aplicado en este ejercicio un filtro RVOL > 1,5 ni he medido resultados con él.
Después queda la estructura de precios. ¿Se acerca el valor a un máximo anterior, acaba de romperlo o ya está retrocediendo tras un impulso? ¿Dónde hay resistencias? ¿Qué dicen el importe negociado, la profundidad del libro, la horquilla, un posible nivel de salida y el tamaño de posición? Dos acciones que pasaron exactamente los mismos filtros pueden exigir estudios muy diferentes.
El resultado 6 → 4 → 2 es un ejemplo ficticio y reproducible, no una prueba con mercado real. La observación de la interfaz solo confirmó las dos etiquetas de filtro visibles y el cambio en el resumen de candidatos. No prueba mejoras en la rentabilidad.
Me quedo con un orden de trabajo: filtrar primero por posición del precio, después por actividad negociada y dedicar el tiempo restante a las decisiones que sí requieren criterio humano. Un screener puede ahorrarme abrir cientos de gráficos; no puede asumir por mí la decisión final de inversión.
Contenido con fines educativos y de investigación. No constituye asesoramiento financiero.