¿Cómo se determina el precio de un ticker?

Estoy tratando de entender cómo se determina un precio de cotización para un activo, en este caso, estoy mirando específicamente los datos de BTC de GDAX. La pregunta surgió al descargar datos históricos de BTC de GDAX y ver lo siguiente (truncado):

1516099829,11921.070000000000,0.008100000000 1516099829,11921.070000000000,0.037873260000 1516099829,11921.070000000000,0.031519050000 1516099829,11921.060000000000,0.037464080000 1516099829,11920.000000000000,0.001000000000 1516099829,11912.530000000000,0.001678900000 1516099829,11909.000000000000,0.000100990000 1516099829,11908.360000000000,0.001000000000 1516099829,11908.360000000000,0.001000000000 1516099829,11900.630000000000,0.001680580000 1516099829,11900.000000000000,1.293924550000 1516099829,11900.000000000000,0.132108480000 1516099829,11895.000000000000,0.000300000000 1516099829,11891.170000000000,0.000727720000 1516099829,11890.190000000000,1.400000000000 1516099829,11890.160000000000,0.000838510000 1516099829,11890.000000000000,0.058736000000 1516099829,11888.740000000000,0.001682260000 1516099829,11885.310000000000,0.252173310000 1516099829,11882.920000000000,0.841910000000 1516099829,11876.860000000000,0.001683950000 1516099829,11876.310000000000,0.000728620000 1516099829,11871.000000000000,0.000100990000 1516099829,11871.000000000000,0.000100990000 1516099829,11869.590000000000,0.010000000000 1516099829,11868.000000000000,0.000100990000 1516099829,11865.630000000000,0.010000000000 1516099829,11865.000000000000,0.001685630000 1516099829,11864.490000000000, 0.900000000000 1516099829,11864.480000000000,1.113098000000010000000000 1516099829,11865.000000000000,0.001685630000 1516099829,11864.490000000000,0.900000000000010000000000 1516099829,11865.000000000000,0.001685630000 1516099829,11864.490000000000,0.900000000000

Como puede ver, el precio fluctúa enormemente en un solo segundo. Entiendo que estos datos son precisos y muestran todas las órdenes ejecutadas para el segundo, pero no entiendo cómo se determina el valor del ticker para este segundo.

Me estoy saliendo de las suposiciones (posiblemente incorrectas) de que obtener el valor del ticker de su API REST una y otra vez no mostraría estas fluctuaciones salvajes por un solo segundo. Llego a esta conclusión porque ejecuté un bucle que obtiene los datos del ticker una y otra vez con solo 300 ms de retraso y el precio nunca ha cambiado en el mismo segundo. De hecho, muestra la misma marca de tiempo hasta que cambia el precio, en cuyo caso muestra la nueva marca de tiempo. Esto me lleva a creer que hay algo detrás de escena que determina el precio del ticker por segundo en función de todas las transacciones que ocurren en ese segundo.

Si ayuda, pregunto esto porque quiero hacer una prueba retrospectiva de los datos GDAX para un programa que he escrito. En mi programa, obtengo los datos de cotización para el momento actual cada dos segundos y recibo un valor de vuelta (el precio de cotización). Ahora, cuando aparece la prueba retrospectiva y 1516099829, no sé qué precio usar. Mi programa se comportará de manera muy diferente según el punto de datos que use porque los precios varían mucho.

Bienvenido al problema de la volatilidad.
Muy simple, es la última orden de mercado más reciente que tomó la orden de compra/venta más alta/más baja en el libro.

Respuestas (1)

si se suscribe al feed wss, puede ver que la mayoría de las cosas de subsegundos se abren y cancelan órdenes de límite que no afectan el precio del boleto. Solo las órdenes de mercado representan el intercambio de bitcoin. Las órdenes de mercado son tomadores de liquidez, así que obtenga una tarifa. Representan el movimiento real del mercado. Las órdenes de límite a menudo nunca se igualarán. A menudo, las órdenes de mercado solo pueden llegar cada minuto a cinco minutos en una atmósfera comercial normal. Así que el precio del teletipo es más constante. Espero que esto ayude.

gracias por la respuesta. Entonces, ¿estoy en lo correcto al entender que los datos que publiqué son solo pedidos en el libro, no necesariamente pedidos coincidentes que movieron el precio de cotización? Si es así, parece que no es posible saber cuál es el precio real del ticker en un momento dado a partir de los datos que tengo. ¿Necesitaría encontrar otro conjunto de datos que muestre el precio de cotización real por segundo si quiero realizar una prueba retrospectiva de un programa que funciona con el precio de cotización? Obtuve mis datos de api.bitcoincharts.com/v1/csv si eso ayuda.
Las órdenes de mercado nunca van en el libro, serían órdenes de límite abiertas que salen del libro, pero ¿cómo puede saber si coincidieron o simplemente se cancelaron? La mayoría de las transacciones son órdenes de apertura/cierre. Básicamente, algoritmos compitiendo por posiciones, etc. Mucho menos son los intercambios de bitcoin. Así que realmente no es tan activo como puede parecer. A veces, aunque puede acelerarse como en un repentino aumento o caída del mercado. Por lo general, estimulado por un gran llenado de pedidos de mercado.
Debe utilizar el feed websocket de gdax. Transmite la información más granular casi tan pronto como llega al mercado. El retraso depende de su ubicación física y las condiciones del mercado. También para diferentes libros de pedidos del resto de la API, especialmente lvl 3, se supone que explícitamente no debe solicitar periódicamente. En su lugar, inicie wss feed y luego obtenga book y continúe actualizando el libro con el feed usando el libro y el número de secuencia de transacción wss, algo así como pausas sangrantes para un libro hermético.
Ok, he estado verificando el precio obteniendo el valor del ticker cada 30 segundos y revisando los estados de mi pedido cada pocos segundos para ver si alguno de ellos se ha completado (Ambos REST API). Evité los sockets web porque pensé que era más de lo que necesitaba para mi programa simple, pero los investigaré más. Gracias por arrojar luz sobre lo que realmente estaba viendo con los datos sin procesar que publiqué. Tiene sentido ahora. Votaré/aceptaré cuando tenga los puntos para hacerlo.
Sí, la API de descanso es fácil, pero si puede manejar la suscripción wss de la API de descanso autenticada, debería ser más fácil.
Además, el sondeo de 30 segundos probablemente no sea un problema, pero si quiere saber cosas tan detalladas como las pide, simplemente debe usar el feed wss.
Todo depende de la fidelidad que necesites.