В этой статье я дам открытый исходный код для расчета средневзвешенной по объему рыночной цены пары (VWAMPP) для всех криптовалют. Код непрерывно получает цены со всех бирж и вычисляет среднюю, при этом цена с каждой биржи взвешивается по ее объему. Это альтернатива с открытым исходным кодом таким веб-сайтам, как coinmarketcap. Вы можете скачать код из NpmJS.

Давайте начнем с простого вопроса:
Какова истинная цена биткоина или любой другой криптовалюты?
Ответ:
Это зависит от того, у кого вы спрашиваете: биткоин в настоящее время торгуется на сотнях бирж по всему миру. Каждая биржа сообщает разную цену. По факту люди зарабатывают деньги на этой разнице цен – процесс, называемый арбитражем.
Так какая же из всех этих цен является истинной ценой биткоина? Давайте возьмем простой пример:
Предположим, что есть только две биржи, которые сообщают цену BTC в долларах США:
- Биржа 1 называет цену $10,000
- Биржа 2 называет цену $12,000
Какая из них является истинной ценой?
Как вариант, можно вывести среднее значение двух цен, то есть $11,000. Проблема этого подхода заключается в том, что на бирже 1 может быть всего несколько сделок, а на бирже 2 – миллионы сделок. Поэтому лучше всего ориентироваться на биржу, которая имеет больше сделок (или больше трафика).
Количество криптовалюты, торгуемой на бирже, называется объемом.
Нам интереснее биржа с бОльшим объемом.
Итак, предположим:
- Биржа 1 сообщает о цене в $ 10,000 с ежедневным объемом $1 млдр.
- Биржа 2 сообщает о цене в $12,000 с ежедневным объемом $ 99 млрд.
Теперь средневзвешенная по объему цена в долларах США будет равна:

Средневзвешенная по объему цена рыночной пары

Биржи обычно сообщают цену рыночной пары, например: BTC/USD = 10,000 – это означает, что каждый BTC стоит 10,000 долларов США.
Валюта, которая используется в качестве ориентира, называется котируемой валютой, а валюта, для которой выводится биржевая стоимость, называется базовой валютой. В этом примере BTC является базовой валютой, а USD – котируемой.
Кроме того, биржи сообщают объем для каждой рыночной пары.
Средневзвешенная по объему цена рыночной пары (VWAMPP) – это среднее значение цен рыночной пары со всех бирж, где каждая цена рыночной пары взвешивается по ее объему.
CoinMarketCap.com и еще ... coinGecko.com являются одними из ведущих веб-сайтов, сообщающих средневзвешенную по объему цену для каждой монеты, которая высчитывается на сотнях бирж.
Все немного сложнее

VWAMPP – это отличный подход к расчету справедливой цены для каждой криптовалюты, но проблема заключается в том, что не каждая биржа сообщает цену криптовалюты непосредственно в долларах США (USD).
Валютные пары с иностранными фиатными валютами

Предположим, что в нашем примере две биржи сообщают следующее:
- Биржа 1: BTC/USD= 10,000. Ежедневный объем = 3 млрд.
- Биржа 2: BTC/EUR= 8,000. Ежедневный объем = 1 млрд.
Какова цена VWAMPP?
Поскольку первая пара дана в USD, а вторая – в EUR, мы должны сперва перевести цену и объем Биржи 2 из EUR в USD, прежде чем рассчитывать среднюю по объему цену.
Предположим, что EUR/USD составляет 1.2, т. е. каждый EUR составляет 1.2 USD. Тогда мы можем написать:
- Биржа 1: BTC/USD= 10,000. Ежедневный объем = 3 млрд.
- Биржа 2: BTC/EUR= 8,000*1.2. Ежедневный объем = 1*1.2 млрд.

Таким образом, VWAMPP для BTC составляет $9,886.71.
Валютные пары с другими криптовалютами

Аналогичным образом, вместо того, чтобы сообщать цену в долларах США, биржи могут сообщать цену одной криптовалюты относительно другой криптовалюты.
Предположим, что наши воображаемые биржи сообщают следующее:
- Биржа 1: BTC/USD= 10,000. Ежедневный объем = 3 млрд.
- Биржа 2: ETH/BTC= 0.02. Ежедневный объем = 5 млн.
Какова VWAMPP в USD?
Нам нужно выяснить две вещи:
1. BTC/USD на Бирже 2
Биржа 2 только сообщает, что цена ETH равна 0,02 BTC. Но то, что нам нужно, это цена BTC в долларах США на Бирже 2.
Чтобы получить BTC/USD, мы можем написать:

Это означает, что если бы мы знали ETH/USD, мы могли бы рассчитать BTC/USD следующим образом:

Предполагая, что мы ведем учет всех цен на криптовалюты и в последних расчетах у нас VWAMPP для пары ETH/USD составляет 204, мы можем написать:

2. Объем на Бирже 2
Поскольку Биржа 2 дает сведения для пары ETH/BTC, сообщаемая единица объема в 1 млрд дается в ETH. Для того, чтобы рассчитать объем в долларах США, мы снова должны использовать последнюю цену VWAMPP для ETH/USD наших последних расчетов. Если принять это значение равным 204, то объем на Бирже 2 составит 5 млн. * 204 ≈ 1 млрд.
Теперь мы можем переписать наши исходные данные следующим образом:
- Биржа 1: BTC/USD= 10,000. Ежедневный объем = 3 млрд.
- Биржа 2: BTC/USD= 10,200. Ежедневный объем = 1 млрд.
Таким обрзом, новая цена VWAMPP для BTC/USD составляет:

Резкие отклонения значений

По той или иной причине цена криптовалюты на одной бирже может существенно отличаться от цены на других биржах.
Желательно игнорировать такую биржу при расчетах VWAMPP.
Аномальная цена - это
Цена, которая «выходит за рамки» (намного меньше или больше, чем) большинство других цен.
Для этого сначала надо рассчитать среднее значение для всех бирж, а затем исключить цены, которые значительно отклоняются от среднего значения.
Мы можем определить, что «выход за рамки» будет больше, чем 1 - 5 стандартных отклонений от среднего значения.
Зачем вычислять VWAMPP самостоятельно?
Я уже упоминал, что CoinMarketCap.com и coinGecko.com занимаются расчетом цены VWAMPP для всех криптовалют, так с чего вдруг вам вычислять ее самостоятельно?
- Их API не является и не гарантирован быть бесплатным, особенно для коммерческого использования.
- Иногда при выборе рыночных пар и того, какие биржи следует учитывать при расчете VWAMPP, в некоторой степени замешана политика.
- Вы можете настроить и исключить определенные биржи или рыночные пары из своего расчета. Вы также можете делать более быстрые расчеты VWAMPP.
Как следует выполнять расчет?
Для криптовалюты C нам нужно иметь данные всех пар, включающих C (либо в качестве котируемой валюты, либо в качестве базовой), на всех биржах, представляющих интерес в нашей базе данных. Как только мы получим эти данные, мы можем перебрать все эти пары, преобразовать их в C/USD , а затем вычислить по ним VWAMPP.
Как минимум, нам нужны следующие API-интерфейсы:
- Exchange API для получения всей информации о паре
- Forex API для конвертации в значения Forex
Для выведения цен на криптовалюты я использовал ccxt, который проделал большую работу по объединению всех API с разных бирж.
Для цен на Форекс я использовал бесплатный API от openexchangerates.org.
Критика VWAMPP
Существует несколько проблем с VWAMPP, с которыми вы, возможно, захотите ознакомиться перед использованием:
- Поскольку данные о цене поступают с разных бирж, а сбор информации со всех бирж занимает время, возникает определенная задержка между реальным значением VWAMPP и полученной с задержкой VWAMPP.
- Объем на биржах может быть неточным. Более того, говорили, что некоторые биржи намеренно искажают реальные объемы.
Применение NodeJS
Вы можете скачать NodeJS для вычисления VWAMPP отсюда. Этот код может быть запущен на простой Linux-совместимой машине и вычислить VWAMPP для любой криптовалюты.