Documentación1.0 (latest)
PáginasScreener · 22 / 29

Screener

El Screener filtra un universo de más de 10.000 acciones de EE. UU. según sus estados financieros y muestra las coincidencias en una tabla ordenable. Construye un filtro con filas de filtros sin código, o escribe un Screener Script de Python para una lógica que las filas de filtros no pueden expresar. Un filtro guardado también puede elegir los símbolos de una ejecución forward masiva o de un backtest.

Los filtros se basan solo en datos fundamentales. No hay precio en vivo ni datos de sector, así que la tabla de resultados no tiene columnas Market Cap / Last / Net Change por defecto: la descripción industry SIC hace las veces de sector. La capitalización bursátil, el valor empresarial y el precio al cierre del periodo están disponibles como campos del grupo Valuation, así que puedes filtrar por ellos o añadirlos como columnas; reflejan el cierre de cada periodo, no la cotización de hoy. Las criptomonedas quedan excluidas: no tienen estados financieros.

Debes haber iniciado sesión: los datos fundamentales se descargan de los servidores de QuantCraft.


Dónde está en la interfaz

DóndeCómo llegar
Página ScreenerBarra de navegación → Screener (justo después de Trade)
Archivo Screener ScriptIDE de QuantCraft → New File → tipo Screener Script
Objetivo de ejecución forward masivaAutoTrading o QuantCloud → nueva ejecución masiva → objetivo Screener
Símbolos de backtestIDE de QuantCraft → Run backtest → Symbol source → Screener
AgentesEl cuadro Test de un agente (Scheduler → Symbol source → Screener) y los objetivos de New Agent Bulk Run
Screener en su propia ventanaPágina Screener → el botón Pop out junto al título de la página

La página tiene dos tarjetas: Filters (con las pestañas No-Code y Python Script) y Results. Run está en el pie de filtros junto a Reset filters. El chevrón de la tarjeta Filters (Collapse filters) la pliega para dar más espacio a los resultados.

El botón Pop out junto al título abre el Screener en una ventana aparte, para que puedas mantener un filtro en un segundo monitor mientras trabajas en el IDE o en un gráfico. La ventana es la misma página (los preajustes y los Screener Scripts se comparten con la ventana principal), pero cada ventana conserva sus propios filtros y resultados, y un filtro se ejecuta en una sola ventana a la vez. Ciérrala con ← Return to main window; la aplicación no se cerrará mientras haya una ventana emergente abierta.

Cuando QuantCraft AI maneja una ventana del Screener verás "The AI is using this window" y los controles quedan bloqueados hasta que termine.


Descarga de datos fundamentales

La primera vez que usas el Screener descarga todo el corpus de datos fundamentales en tu equipo. Mientras esa caché no tenga datos, las tarjetas Filters y Results se sustituyen por una pantalla de espera con un botón Download Fundamentals.

La descarga empieza al abrirse la aplicación, no cuando abres el Screener: cuando llegas a la página suele estar ya en marcha o terminada. Pulsar Run durante una descarga nunca inicia una segunda.

  • Una primera ejecución en frío tarda minutos. Todas las siguientes tardan segundos.
  • El banner de la ejecución muestra la fase (connecting → universe → download → convert → screen), un contador de fragmentos como shard 14 of 32, un recuento de analizados/total y un botón Cancel. Una ejecución en caliente solo muestra la fase de filtrado.
  • El banner cuenta el tiempo transcurrido hacia arriba y no muestra ETA: una ejecución cuya duración varía en minutos no se puede predecir con honestidad. Al terminar obtienes un resumen como 12 matched in 3m 20s, seguido de · Fundamentals updated <time>. Si algunos símbolos no se pudieron obtener, un enlace pulsable N unavailable abre la lista.
  • Una descarga interrumpida se reanuda en la siguiente ejecución en lugar de empezar de nuevo. Cancelar a mitad de descarga es seguro: la parte sin terminar simplemente se vuelve a obtener la próxima vez.
  • Una descarga continúa aunque salgas de la página.

Con qué frecuencia se actualizan los datos

CuándoQué se descarga
Tu primerísimo filtroTodo el universo
Cualquier filtro posterior el mismo día UTCNada
El primer filtro del día siguienteSolo los símbolos cuya presentación más reciente tiene más de 62 días

62 días son aproximadamente un trimestre, así que una empresa solo se vuelve a comprobar cuando es plausible que su siguiente presentación ya esté publicada.

A la derecha del banner verás una línea como 10,384 symbols cached · 250 MB con un botón Clear cache (oculto mientras se ejecuta un filtro, desactivado mientras la IA usa la ventana). Borrar pide confirmación (Clear cache o Keep it) porque descarta una descarga de varios minutos. La caché es un dato regenerable que una desinstalación no elimina, por eso es visible y recuperable aquí.

Tras una actualización de la aplicación que cambie el formato de la caché, el siguiente filtro vuelve a descargar todo el universo una vez (ocurrió cuando se añadieron Per Share, Valuation y Scores).


Construir un filtro (No-Code)

Cada fila de filtro se lee de izquierda a derecha: Period → Field → Filter type → entrada(s) de valor. Usa + para añadir una fila y − para quitarla. El botón + pregunta si la nueva fila es de Fundamentals o de Industry.

Las filas se combinan con AND: un símbolo debe cumplir todas las filas activadas. (Un preajuste creado por la IA o importado de un archivo puede usar en cambio OR —"Any filter can match"—; Load Preset lo indica.)

La fila inicial por defecto (Quarterly / Total Revenue / % Change / 1 period back / min 0 %) es válida tal cual, así que Run funciona de inmediato. Antes de empezar una ejecución se valida cada fila activada; si alguna está incompleta recibes un aviso y un error en línea en esa fila, y la ejecución no empieza: un barrido de varios minutos no debería comenzar con una consulta inservible.

Un ejemplo práctico: Quarterly / Total Revenue / % Change / periods back 3 / min 1 / max 3 encuentra las empresas cuyos ingresos crecieron entre un 1 % y un 3 % en los últimos tres trimestres.

Tipos de filtro

Cada filtro lee el valor más reciente, salvo que se indique otra cosa.

FiltroParámetrosQué coincide
Rangemin, maxEl último valor está entre min y max, ambos incluidos. Deja un lado vacío para no acotarlo.
AbovevalueEl último valor es mayor que value.
BelowvalueEl último valor es menor que value.
Equalsvalue, toleranceEl último valor está dentro de ± tolerance de value.
Has a value—Existe el último valor. Útil con Financials Extended.
% Changeperiods back, min %, max %Variación porcentual desde n periodos atrás hasta el último. Falla si el valor inicial es cero.
Absolute Changeperiods back, min, maxDiferencia bruta (último − n atrás).
QoQ Change %min %, max %Variación porcentual frente al trimestre anterior. Solo trimestral: el selector de periodo está bloqueado.
YoY Change %min %, max %Variación porcentual frente a hace un año. El desfase es automático: 4 para trimestral, 1 para anual.
CAGR %periods back, min %, max %Tasa de crecimiento anualizada. Ambos extremos deben ser positivos.
Average over Nperiods back, min, maxMedia de los últimos N periodos. Cualquier valor ausente en la ventana hace fallar al símbolo.
Grew N in a rowperiods backEl valor aumentó en cada periodo de la ventana.
Fell N in a rowperiods backEl valor disminuyó en cada periodo de la ventana.
Above X for Nvalue, periods backCada uno de los últimos N periodos está por encima de value.
Below X for Nvalue, periods backCada uno de los últimos N periodos está por debajo de value.
Top N by fieldnFiltro de clasificación: conserva los n mejores símbolos de todo lo analizado.
Percentile rank ≥min %Filtro de clasificación: conserva los símbolos que estén en ese percentil o por encima entre todo lo analizado.

Los dos filtros de clasificación se deciden sobre toda la población, no símbolo a símbolo, así que se resuelven cuando se han analizado todos los símbolos. Un símbolo sin valor para el campo clasificado nunca puede ganar uno.

El mayor valor de periods back que puedes usar es 40.

Elegir un campo

El selector de campos admite búsqueda y agrupa los campos en este orden:

Ratios → Valuation → Scores → Per Share → Income Statement → Balance Sheet → Cash Flow → Financials Extended → Earnings History

Los ratios van primero porque son los más relevantes para un screener y ya están normalizados por unidades. Las entradas de valor siguen la unidad del campo: $, %, días, acciones, importes por acción, recuentos o un número sin más, según corresponda. Consulta la Referencia de campos de datos fundamentales para ver qué contiene cada grupo.

  • Todos los grupos admiten trimestral y anual, salvo Earnings History, que es solo trimestral, y los campos CAGR (revenueCagr3y, revenueCagr5y, …), que son solo anuales y desaparecen del selector trimestral. Cambiar el periodo borra el campo si no existe para el nuevo periodo.
  • "Periods back" cuenta filas dentro del periodo que elegiste. Trimestral + 3 significa tres trimestres; anual + 3 significa tres ejercicios fiscales. No se mezclan.
  • Los múltiplos de Valuation son de los últimos doce meses incluso en una fila trimestral.
  • Los campos de Financials Extended varían según el símbolo. Solo aparecen en el selector cuando se ha descargado la caché de datos fundamentales y se marcan como "varies by symbol". Un filtro sobre un campo que una empresa no informa simplemente hace fallar a esa empresa: combínalo con Has a value cuando importe.
  • Los cierres de periodo con fecha futura se ignoran, así que "último" nunca es un periodo que aún no ha ocurrido.
  • No filtrables: Company Info, Earnings Trend, Earnings Annual, TTM, la valoración más reciente (a fecha de hoy), la procedencia de las métricas, los componentes de las puntuaciones Piotroski / Beneish y claves de texto o sí/no como priceBasis o approximate. O no llevan un periodo de informe que comparar, o no son números.

Campos retirados. Se retiraron ocho campos antiguos de Financials Extended porque ahora existen versiones mejores: ebitda, ebitdaMargin, enterpriseValue, priceToEarnings, priceToBook, priceToSales, evToEbitda, evToRevenue. Un filtro guardado que usara alguno pierde esa fila (o columna) al cargarse: reconstrúyelo desde el grupo Valuation, que calcula estos valores sobre los últimos doce meses, así que difieren de los antiguos. (ratios.debtToEquity se ha renombrado simplemente a ratios.debtToEquityRatio y sigue cargando.)

Filas de Industry

Una fila Industry sustituye los controles de campo/tipo/valor por una selección múltiple de industrias; un símbolo pasa si su industria es una de las elegidas. Debe seleccionarse al menos una industria. La lista se construye con los datos que realmente has descargado.


Modo Python Script

Elige Python Script cuando una pila de comparaciones unidas por AND no basta: aritmética con varios campos, lógica condicional o tu propia puntuación de clasificación.

Crea el archivo en el IDE de QuantCraft con New File → Screener Script; llega con una plantilla funcional. Cualquier archivo .py de tu espacio de trabajo que defina un filter() de nivel superior también cumple. La pestaña Python Script del Screener los lista (etiquetados con la ruta de carpeta, para distinguir archivos de carpetas distintas) y muestra una vista previa del seleccionado. El resto de tus archivos del espacio de trabajo se envían con la ejecución, así que tu script puede importar tus propios módulos auxiliares.

def filter(fundamentals, symbol): q = fundamentals["incomeStatement"]["quarterly"] if len(q) < 4: return {"result": False} latest, year_ago = q[-1]["totalRevenue"], q[-4]["totalRevenue"] if latest is None or not year_ago: return {"result": False} growth = (latest - year_ago) / abs(year_ago) return {"result": growth > 0.10, "value": growth} def rank(value, symbol): return min(max(value, 0), 1) * 100

filter(fundamentals, symbol) se llama una vez por ticker y debe devolver un dict con un "result" booleano. "value" es opcional y es lo que quieras llevar a la clasificación. Un script que lanza una excepción, devuelve un simple True o devuelve un dict sin "result" booleano cuenta como sin coincidencia solo para ese ticker: un ticker malo nunca aborta la ejecución.

rank(value, symbol) es opcional y solo se ejecuta para los tickers que coincidieron. Devuelve un número real: sirve cualquier escala (0-1, 1-10, 0-100), y más alto siempre significa mejor. Rellena la columna ordenable Rank, que aparece solo en el modo Python Script. Un rank() que falla no desmarca la fila; la fila conserva su coincidencia y su rango se muestra como —, ordenado al final.

El argumento symbol es opcional en ambas funciones: las versiones antiguas de un solo argumento filter(fundamentals) y rank(value) siguen funcionando.

El argumento fundamentals

{ "symbol": "AAPL", "entityName": "Apple Inc.", "sicDescription": "ELECTRONIC COMPUTERS", "balanceSheet": {"quarterly": [...], "yearly": [...]}, "incomeStatement": {"quarterly": [...], "yearly": [...]}, "cashFlow": {"quarterly": [...], "yearly": [...]}, "ratios": {"quarterly": [...], "yearly": [...]}, "perShare": {"quarterly": [...], "yearly": [...]}, "valuation": {"quarterly": [...], "yearly": [...]}, "scores": {"quarterly": [...], "yearly": [...]}, "financialsExtended": {"quarterly": [...], "yearly": [...]}, "earnings": {"history": [...]}, }

A un script no llega nada "a fecha de la subida": ttm, valuation.latest, metricsInputs y metricsHealth no llevan periodo, y un filtro compara periodos entre símbolos. Los múltiplos de valuation son de los últimos doce meses incluso en una fila trimestral, y un múltiplo None junto a un rendimiento con signo significa un denominador no positivo, no un dato ausente.

  • Los valores son números o None, nunca cadenas como "1234.00". Las claves que no son números se omiten por completo: beforeAfterMarket, reportDate y currency en earnings.history, los desgloses piotroskiComponents / beneishComponents en scores, y los indicadores de texto como priceBasis / approximate en valuation.
  • Las filas van de la más antigua a la más reciente, así que rows[-1] es el último periodo. Cada fila lleva una date (el cierre de su periodo).
  • Obtienes como máximo los 12 trimestres más recientes y los 6 años más recientes, lo que limita hasta dónde puede mirar atrás un script.

Todo lo que tu script imprima con print() se captura y lo muestra el botón Output logs junto a Run, también en ejecuciones fallidas, para que veas lo que se imprimió justo antes de un fallo. El búfer guarda 200.000 caracteres y descarta lo más antiguo a partir de ahí. Una ejecución no-code no borra los registros de la última ejecución de script.

Run se bloquea con un aviso si no hay script seleccionado o si el archivo seleccionado no tiene filter().


Resultados

Cada fila muestra una estrella y un botón de gráfico, Rank (solo en modo Python Script), Symbol, Company, Industry y As of, además de una columna por cada fila de filtro con el valor que coincidió (modo No-Code) y los campos extra que añadas.

"As of" es el cierre de periodo más reciente usado para ese símbolo: el periodo fiscal con el que se evaluaron realmente tus filtros. Nunca es un periodo futuro.

ControlQué hace
Encabezado de columnaOrdena toda la tabla, no solo la página. Los valores vacíos siempre van al final, en ambas direcciones.
Selector de columnasAñade o reordena columnas de resultados. Nunca vuelve a ejecutar el filtro: un campo realmente nuevo solo obtiene esa columna para las filas en pantalla.
Cuadro de búsquedaFiltra las filas que ya tienes.
Tradable onlyOculta los símbolos que no están en las listas de símbolos negociables de la cuenta de tu bróker.
EstrellaAñade el símbolo a una lista de seguimiento. Los símbolos marcados aparecen como chips sobre la tabla y persisten entre sesiones.
Símbolo (clic)Abre un cuadro de detalle de datos fundamentales del símbolo, con una pestaña Factor Exposure.
Botón de gráficoAbre un gráfico de Trade para ese símbolo en una ventana emergente (solo símbolos negociables).

Las coincidencias aparecen todas a la vez cuando termina la ejecución, así que la tabla permanece vacía mientras un filtro está en curso: sigue el progreso en el banner.

Los resultados no se guardan. Recargar la aplicación borra la tabla a propósito, ya que un resultado obsoleto es peor que ninguno. Tus filtros, columnas, símbolos marcados, pestaña activa y script seleccionado sí se recuerdan.


Preajustes

Un preajuste es una instantánea con nombre de tus filas de filtro, su unión y tus columnas de resultados.

BotónQué hace
Save PresetPone nombre y guarda el filtro actual. Desactivado hasta que cambies algo respecto al valor por defecto; elegir solo columnas no cuenta.
Load PresetExplora los preajustes guardados, mostrando la descripción de cada uno, si sus filtros se unen con AND ("All filters must match") o con OR ("Any filter can match"), y un resumen en lenguaje llano de sus filtros.
Update {name}Sustituye el preajuste que cargaste, en lugar de crear uno nuevo. Save Preset se convierte en esto cuando editas un preajuste cargado.
Reset filtersBorra el vínculo con el preajuste cargado, así que el botón vuelve a ser Save Preset.

Dentro de Load Preset también puedes:

  • Delete preset: lo elimina tras una confirmación.
  • Export preset: lo guarda como un archivo JSON que puedes compartir o respaldar.
  • Import preset: carga un preajuste desde un archivo JSON así.

Usar un filtro para elegir símbolos

Ejecuciones forward masivas

En la pestaña Targets del cuadro New Run, elige el ámbito Screener. La ejecución opera lo que coincida con un preajuste guardado o un Screener Script, volviendo a filtrar cada Refresh interval (days) mientras está activa. Include tickers with open positions mantiene una posición en la rotación después de que deje de coincidir. Los objetivos Screener son solo de acciones. Con Use fundamentals activado, cada símbolo del filtro actual recibe automáticamente sus datos fundamentales, y el conjunto sigue cada nuevo filtrado.

En QuantCloud el ejecutor mantiene su propia copia de los datos fundamentales que necesita el filtro. La primera ejecución del screener en un ejecutor nuevo lo descarga todo, lo que tarda un rato; después solo se actualiza una vez al día. El ejecutor usa tu inicio de sesión para descargar y no puede renovarlo por sí mismo, así que en una ejecución de muchos días, los nuevos filtrados siguen usando los datos que ya tiene una vez caduca el inicio de sesión.

CampoNotas
Screener sourceScreener preset o Python script.
Preset / Screener scriptCuál ejecutar.
Sort column / DirectionCómo se clasifican las coincidencias del preajuste antes de aplicar el límite.
Rank directionPara scripts: qué extremo de la puntuación rank() del script tomar primero.
LimitCuántos símbolos operar. 0 toma todas las coincidencias.
Refresh interval (days)Con qué frecuencia se vuelve a ejecutar el filtro mientras la ejecución está activa. El mínimo y el valor por defecto son 1 día.
Refresh time (ET)Hora del día de cada nuevo filtrado. Por defecto 16:30 (media hora después del cierre del mercado de EE. UU.).
Include tickers with open positionsAñade símbolos en los que ya tienes posición aunque ya no coincidan, para que una ejecución en vivo nunca descarte en silencio una posición.

Por qué 16:30 ET es el valor por defecto. Incorporar un universo nuevo reinicia la ejecución, así que un nuevo filtrado a las 11:00 interrumpiría el trading en vivo. Anclarlo a una hora posterior al cierre significa que la actualización ocurre mientras no se está operando y que la nueva lista de símbolos está lista antes de que abra la siguiente sesión.

  • La hora es siempre hora de mercado (ET), cualquiera que sea tu zona horaria. El texto de ayuda bajo el campo muestra tu equivalente local, así que 16:30 ET · 21:30 your time es el mismo instante, no dos ajustes.
  • Se puede cambiar en cualquier momento. Si eliges una hora dentro de la sesión 09:30–16:00 ET aparece un aviso bajo el campo que explica que el reinicio interrumpirá el trading, pero la ejecución arranca igualmente: la decisión es tuya.
  • El intervalo y la hora funcionan juntos. 1 día a las 16:30 vuelve a filtrar cada día tras el cierre; 3 días a las 16:30 lo hace tras el cierre cada tres días.
  • Dejar el campo vacío o escribir algo que no sea HH:MM bloquea la ejecución con un error en línea.

Consulta AutoTrading y QuantCloud para ver el cuadro New Run completo.

Backtests

En la pestaña Symbol & data del cuadro Run backtest, establece Symbol source en Screener. En lugar de operar una lista fija, el backtest vuelve a ejecutar tu filtro sobre la marcha y opera lo que coincidía en ese punto de la simulación.

AjusteQué hace
Screener sourceScreener preset o Python script.
Sort column / DirectionCómo se clasifican las coincidencias del preajuste antes de aplicar el límite.
Rank directionPara scripts: qué extremo de tu puntuación rank() tomar primero.
LimitCuántos símbolos operar por reequilibrio. 0 toma todas las coincidencias.
Refresh interval (days)Con qué frecuencia se vuelve a ejecutar el filtro, en días naturales simulados. Los scripts requieren 7 días o más.
Keep tickers with an open positionMantiene un símbolo negociable después de que deje de coincidir, para poder seguir gestionando una posición abierta.

Los datos fundamentales siguen al filtro. Con Uses fundamentals activado, cada símbolo filtrado recibe automáticamente sus datos fundamentales en on_bar / on_tick; no hace falta elegirlos. Se leen de la caché del Screener, así que un símbolo que el Screener ya descargó no cuesta ninguna descarga extra. Pasa siempre symbol=symbol al leerlos; consulta Datos fundamentales.

"Keep tickers with an open position" afecta al trading, no a la valoración. Activado, un símbolo que aún mantienes sigue recibiendo barras después de salir del filtro, para que tu estrategia pueda salir de él. Desactivado, el símbolo deja de recibir callbacks y la posición simplemente permanece abierta hasta que termina el backtest. En ambos casos la posición siempre se valora al precio real del símbolo, así que tu curva de capital y tus métricas son correctas.

on_init se vuelve a disparar en cada reequilibrio. Cuando hay una fuente de símbolos de screener activa, el motor vuelve a llamar a on_init(symbols=<ticker list>) cada vez que se vuelve a ejecutar el filtro. Esto permite a tu estrategia responder a un nuevo universo sin reiniciar la simulación. Puntos clave:

  • Al empezar la ejecución, on_init se dispara dos veces seguidas: la llamada de configuración estándar (con symbols=None) seguida de inmediato por el resultado inicial del filtro.
  • Cada nueva llamada ve el estado a nivel de módulo que dejó la anterior. El estado no se restablece entre reequilibrios.
  • Las estrategias que declaran def on_init(): (sin parámetro) no se ven afectadas: los argumentos opcionales se emparejan por nombre, así que el symbols ausente simplemente se ignora.

Datos de calendario para un universo filtrado

Include calendar data funciona con una fuente de símbolos de screener. Los calendarios se cargan una vez que el filtro ha resuelto la lista completa de tickers de un reequilibrio; no hay retraso de consulta por tick. Conviene saber:

  • Los símbolos que coinciden con el filtro pero sin barras de precio (fuera del rango de fechas o excluidos de cotización antes de empezar la ejecución) no cuestan ninguna solicitud de calendario.
  • Un filtro amplio suele coincidir con símbolos que no tienen calendario en el servidor, normalmente tickers más pequeños o con menos cobertura. El registro de la ejecución informa del recuento en lugar de hacer fallar la ejecución.
  • Los calendarios se actualizan en cada reequilibrio para cubrir los tickers recién añadidos.

Los resultados aparecen en una pestaña Screener Output junto a Logs, mostrando cada reequilibrio como una fecha plegable. Haz clic en + para expandir una fecha y ver los símbolos operados en esa ventana, o usa Expand all. Como el filtro se resuelve antes de la primera barra, todo el calendario está disponible desde el principio.

Requisitos a tener en cuenta: un backtest guiado por screener necesita fechas de inicio y fin explícitas; no se admiten marcos temporales adicionales (así que get_bar devuelve None: usa los desplazamientos bar.close[i] propios de cada ticker para el historial); y Debug Test no puede usar una fuente de símbolos de screener: cambia a Selected symbols para depurar. Consulta Backtests.

Point-in-time y sesgo de supervivencia

Cada reequilibrio solo ve los informes que ya se habían presentado en esa fecha. Un filtro a 5 de mayo de 2021 no verá un trimestre que terminó en abril pero no se publicó hasta junio. La excepción es un periodo sin fecha de presentación registrada, que se admite desde el cierre del periodo: es raro, pero implica que ahí es posible una pequeña cantidad de anticipación. Eso es lo que hace honesto el resultado, y también es la razón por la que las selecciones de un backtest no coinciden con lo que obtienes al filtrar la misma fecha con los datos de hoy.

Dos cosas siguen reflejando hoy, no la fecha simulada:

  • En un feed de bróker conectado, las coincidencias se filtran a los símbolos negociables ahora mismo en tu bróker, así que una empresa excluida de cotización desde entonces se descarta incluso de un reequilibrio en el que era perfectamente negociable. Un feed de QuantCraft (B2) se salta esta comprobación.
  • El universo en caché solo contiene las empresas que el corpus de datos fundamentales aún conserva, así que una empresa excluida hace mucho no aparecerá en absoluto.

La exactitud point-in-time se aplica a los valores que lee un filtro, no a qué empresas existen en él. Ten esto en cuenta con los resultados a largo plazo.


Interpretar los resultados

No tener suficiente historial hace fallar a un símbolo: nunca pasa en silencio. Pedir "Grew 8 in a row" a una empresa con cinco trimestres de datos la excluye. Excluir en lugar de aprobar garantiza que un conjunto de resultados nunca sobrerrepresente.

Otros casos en los que un símbolo se excluye en lugar de coincidir:

  • % Change no se puede calcular a partir de un valor inicial cero.
  • CAGR % necesita que ambos extremos sean positivos.
  • Average over N falla si falta algún valor de la ventana: los nulos no se omiten.
  • Un campo que la empresa no informa la hace fallar, lo que importa sobre todo en Financials Extended.
  • Los filtros de clasificación rechazan los símbolos sin valor para el campo clasificado.

Una rareza de la clasificación: los valores empatados no comparten un rango percentil, así que dos valores idénticos pueden caer en lados opuestos de un umbral Percentile rank ≥.

Si no se puede alcanzar el servidor, obtienes un error claro en lugar de un respaldo lento y silencioso, y una ejecución que se queda callada durante 90 segundos se notifica como error en lugar de colgarse.


Véase también

  • AutoTrading: ejecuciones forward masivas, incluido el ámbito de objetivo Screener
  • QuantCloud: ejecutores en la nube con tareas masivas guiadas por el Screener
  • Backtests: usar un filtro como fuente de símbolos del backtest
  • Datos fundamentales: leer datos fundamentales dentro de los callbacks de estrategia, y la referencia de campos
  • QuantCraft AI: dejar que la IA construya y ejecute filtros por ti
  • Factores Fama-French: los datos de factores detrás de la pestaña Factor Exposure del cuadro de detalle
24 min de lecturaSugerir una edición ↗
Screener — Documentación (1.0 (latest)) | QuantCraft