
Cómo lo hacíamos antes y cómo lo hacemos ahora.
El miércoles pasado pasamos del antiguo sistema de cálculo de precios al completamente nuevo. Los resultados fueron visibles enseguida. Pero sólo para un reducido número de personas. Entonces pensamos: ¿cómo puede un usuario medio enterarse de esta actualización? Fue entonces cuando nos sentamos y decidimos compartir nuestros conocimientos.
Al principio, explicaremos el proceso de cálculo que se utilizaba antes:
1. De cada intercambiar que aparece en coinpaprika, obtuvimos los mercados de su API. Cada mercado tiene que contener 3 cosas:
Nombre del mercado, Precio con la unidad dada y el volumen de 24h. He aquí un ejemplo con el que vamos a trabajar:

2. Para cada mercado obtenido, calculamos tanto el precio como el volumen en BTC y USD. Para este cálculo, utilizamos precios calculado previamente en coinpaprika (de la iteración anterior del algoritmo). Para simplificarlo nos centraremos sólo en el cálculo de USD.
El último precio de USDT por USD fue de 1.01

3. Para cada mercado dado, calculábamos también el precio de la segunda divisa del par.
El último precio de LTC por USD fue de 44.00

4. De esta manera ya tenemos una lista completa del mercado para cualquier moneda dada, he aquí un ejemplo:
Para los mercados de la pantalla de arriba, el precio para LTC/BTC se calculó como en el paso #2 y XRP/LTC similar al paso #3 (Aquí LTC es la segunda moneda en nuestro par)
5. Después de tener muchos mercados con precios en USD es bastante fácil calcular el precio global. Es la media pagada de todos los mercados con un volumen determinado. De este cálculo, se excluyen los valores atípicos detectados o los mercados sin comisiones y transacción minería. El precio final se muestra en la página principal y puede utilizarse para la siguiente iteración del algoritmo

¿Dónde estaba el problema?
No había ninguna para 98% de la época. Pero empezaron a aparecer a medida que se producían movimientos más volátiles en el mercado. Fuimos testigos de algunas ocasiones en las que el precio del BTC era diferente al del USD en otros sitios web de listados. Por ejemplo, cuando se produjeron caídas masivas en el mercado, nuestro precio BTC/USD fue más alto que en el propio mercado o en las plataformas de los competidores.
¿Cuál era la raíz del problema?
Como se describe en los pasos #2 y #3, el precio no dependía sólo de la situación actual del mercado, sino también del precio de la última iteración del algoritmo.
"El precio anterior de USDT a USD fue de 1.01"
"El precio anterior de LTC a USD era de 44,00"
Ese algoritmo, para calcular el precio actual tenía que conocer el precio de la iteración anterior, y ese precio también se calculaba en correlación con la iteración anterior, etc... Esto provocaba la lenta reacción de nuestros precios mostrados a los movimientos volátiles del mercado.
¿Qué ha cambiado?
Nuestro intento de limitar estas dependencias consistió en determinar nuevos tipos de conversión (precios de referencia) de las monedas, que sólo tienen en cuenta el estado actual de todo el mercado.
¿Cómo lo hemos conseguido?
Tuvimos que llevar el precio de cada mercado a la unidad común, y luego establecer una media ponderada - de esta manera obtendríamos un tipo de conversión que cubriera todos los mercados. En el sitio web utilizamos principalmente precios en USD y BTC, por lo que convertiremos los precios a estas unidades. Se trata de un proceso de varias etapas, en el que en el estado inicial no sabíamos cuánto costaba una unidad de una divisa determinada. Establecemos un punto de referencia, que para nosotros es Bitcoin (los mercados de BTC para la mayoría de las divisas suelen ser los más líquidos), para el que en el estado inicial calculamos el precio en USD como el precio medio ponderado de todos los mercados de BTC / USD. Entonces podemos empezar a convertir cada mercado a precios BTC y USD:
1. En el primer paso, calculamos los precios medios de las divisas utilizando únicamente los mercados BTC y FIAT (convirtiéndolos primero a USD al tipo de cambio de https://openexchangerates.org/ y luego a BTC al tipo de cambio medio de los mercados BTC / USD) - como resultado recibimos información sobre cuánto cuesta BTC cada divisa, por término medio.
2. Ahora también sabemos cuánto cuesta cada divisa en USD, porque conocemos el conversor BTC / USD.
3. Algunas criptomonedas no tienen mercados con BTC o los mercados con BTC son la minoría de todo el volumen, lo que hace que la media calculada sea inexacta.
4. En el siguiente paso, por tanto, utilizamos todos los tipos de conversión calculados anteriormente para calcular los nuevos precios de las criptomonedas en BTC y USD. Repitiendo estos pasos varias veces tenemos datos calculados de todos los mercados simultáneamente.
Utilizando este método, el precio actual depende de estas pocas iteraciones de llevar los precios del mercado a BTC y USD en lugar de toda la cadena histórica de precios.
¿Qué le parece esta función?
Compruébelo ahora en Coinpaprika e infórmenos.
No olvide seguirnos en:
Twitter: twitter.com/coinpaprika
Facebook: facebook.com/coinpaprika
Telegrama: t.me/coinpaprika