Endpoint de precios de mercado: datos de precios por sesión para acciones

Un análisis detallado del nuevo endpoint de precios de mercado: campos de sesión, estado del mercado y datos normalizados a USD.

Un solo campo de precio rara vez describe la situación de una acción. Por ejemplo, a las 8:00 ET, AAPL tiene al menos tres valores que podrían considerarse su precio actual: el cierre de la sesión ordinaria anterior, el precio al que se está negociando en el premarket y el último valor de la sesión de postmarket de la tarde del día anterior. Presentados como un único número, ninguno de ellos indica en qué sesión se generó ni cuándo se fijó.

Para hacer visible esa distinción, FinImpulse cuenta ahora con una Market Price API dedicada que devuelve una instantánea del precio para un único símbolo, con el desglose completo por sesiones.

Por qué un activo puede tener más de un precio actual

En algunas bolsas, la formación de precios no se limita a una sola ventana horaria. Esta estructura es estándar en las bolsas estadounidenses, donde el día se divide en tres sesiones:

  • Premarket: de 4:00 a 9:30 ET
  • Sesión ordinaria: de 9:30 a 16:00 ET
  • Postmarket: de 16:00 a 20:00 ET

El horario ampliado atrae a menos participantes que la sesión ordinaria, de modo que basta un volumen menor para mover el precio, y un movimiento que aparece tras el cierre suele verse diferente cuando se abre la siguiente sesión ordinaria.

El cierre de la sesión ordinaria es, por tanto, el punto de referencia para la mayoría de las comparaciones. Es el valor que está detrás de los precios de cierre oficiales y de las cifras diarias que publican las bolsas, mientras que los precios del horario ampliado describen lo que ocurre a su alrededor.

Qué devuelve la Market Price API

La Market Price API (/v1/market-price) es un endpoint GET que devuelve una instantánea del precio para un único símbolo.

La respuesta se divide en dos partes. Los campos generales identifican el activo y describen su contexto: el ticker y el nombre, la divisa en la que cotiza, la capitalización bursátil, el estado del mercado y el tipo de cambio utilizado para la normalización a USD. El resto de la respuesta son datos de precios, divididos en cuatro grupos: precio actual, mercado ordinario, premarket y postmarket.

Precio actual

El precio actual es el último valor obtenido para el activo, independientemente de la sesión en la que se haya generado. Se devuelve en la divisa propia del activo y normalizado a USD, y puede reflejar un retraso de hasta una hora. El grupo también devuelve un timestamp que registra el momento en que se obtuvo el valor.

Ejemplo:

Precio del mercado ordinario

El grupo del mercado ordinario cubre la sesión principal. Durante la sesión, regular_market_price devuelve el precio en tiempo real; una vez finalizada la sesión, ese mismo campo contiene el precio de cierre. Junto a él, el grupo devuelve el precio de apertura de la sesión, el cierre anterior, el volumen, la variación absoluta y porcentual, y la hora de la última operación registrada.

Ejemplo:

Precio del premarket y precio del postmarket

Los grupos de premarket y postmarket tienen una estructura idéntica: cada uno devuelve el precio de su propia sesión, junto con la variación y la hora de la última operación registrada. Ambos se aplican a activos que cotizan en bolsas con una estructura de tres sesiones, sobre todo en las estadounidenses.

Ejemplo de los campos del premarket:

Ejemplo de los campos del postmarket:

Cómo determinar el precio activo

El endpoint de precios de mercado devuelve un campo market_state que permite interpretar el resto de la respuesta. Sus cuatro valores principales son:

  • REGULAR — la sesión ordinaria está en curso
  • PRE — el premarket está en curso
  • POST — el postmarket está en curso
  • CLOSED — ninguna sesión está activa

El campo también puede contener estados más específicos, como PREPRE, POSTPOST y OVERNIGHT.

El estado importa porque los campos de sesión conservan su último valor una vez que la sesión termina. Fuera de su propio horario, cada uno de ellos devuelve el precio de la sesión más reciente de ese tipo, y devuelve null únicamente cuando no existe ese tipo de dato. En la práctica, durante el horario de premarket y postmarket, regular_market_price devuelve el precio de cierre de la sesión completada más reciente, y regular_market_time refleja la hora de cierre de esa sesión en lugar de una operación en tiempo real.

En los ejemplos anteriores, market_state es PRE. Solo current_price y pre_market_price están en vivo y contienen el mismo valor, ya que el premercado es la sesión que generó el precio más reciente. regular_market_price devuelve el cierre de la sesión regular anterior, y post_market_price, el último valor registrado la tarde anterior.

Cómo es la respuesta para otros valores cotizados

En las bolsas sin una estructura de tres sesiones, el endpoint devuelve el precio de la sesión regular y el precio actual, mientras que los campos de premercado y posmercado devuelven null. market_state se acota en consecuencia y describe el activo mediante los estados regular y closed.

Los precios se devuelven en la divisa en la que cotiza el activo, de modo que, para estos activos, se trata de la divisa local de la bolsa. Aquí es donde usd_rate y current_price_usd entran en juego, ya que ofrecen una base común para comparar entre mercados sin un paso de conversión aparte. Para los activos que ya cotizan en dólares, usd_rate se devuelve como null.

Dónde usar la Market Price API

El endpoint de precio de mercado puede usarse en cualquier lugar donde se muestren o procesen precios en tiempo real. Por ejemplo, bloques de precios en vivo en páginas de detalle de activos, widgets y listas de seguimiento, donde el valor mostrado debe corresponder a la sesión en curso; flujos de trabajo de alertas y cribado, que necesitan distinguir un precio activo de uno arrastrado de la sesión anterior; y la monitorización entre mercados, donde los precios normalizados en USD ofrecen una base única para activos cotizados en distintas divisas.

Como todas las sesiones se devuelven en la misma respuesta, una misma petición puede cubrir la visualización, la comparación y las comprobaciones programáticas: cada una lee un campo distinto sin necesidad de una llamada adicional.