Обменник FixedFloat: минус 26 миллионов долларов
Недавняя новость о взломе обменника fixedfloat заставила задуматься о некоторых ��спектах внутренней работы данного сервиса. Подробнее о взломе можно почитать здесь. Я лишь напомню, что было украдено более 26 миллионов долларов в крипте и меня, как специалиста давно работающего в данном бизнесе, крайне заинтересовал размер ущерба. Зачем обменнику такой объём средств? При этом у них на сайте нет никаких сторонних сервисов, кошельков и чего-либо другого, чтобы иметь на балансе 26 миллионов. Работая с обменниками, не важно свой или чужой, я всегда говорю о простой истине — средств в обменнике должно быть как можно меньше, при этом обменов как можно больше. Как совместить такие противоположные желания? Давайте немного подумаем.
Чтобы не повторяться, напомню что для работы обменников существует несколько разных схем. Подробнее описал это здесь.
Если хватает собственных средств, то оптимально менять за счёт собственной ликвидности. Тогда достигается самая высокая скорость обмена с одной стороны, но и возникает проблема курса обмена с другой стороны. Проблема курса является прямым следствием суммы обмена. Объясню точнее:
Если необходимо произвести небольшой обмен, допустим на $1000, то это легко. Такую сумму просто обменять и за счёт собственных средств и через биржу, ликвидности хватит по любой монете, и обмен, с большой долей вероятности, пройдёт по бест прайс. Но что делать, если приходится менять большие суммы? Допустим прилетела заявка на пару миллионов долларов. Как её поменять? По какой цене? Клиент, пытаясь поменять её сам, уже не получит лучшее предложение. У него будет проскальзывание, тем большее, чем менее популярна монета, более сложен обмен и большая суммы обмена. Другими словами — поменять 1000 баксов в любой монете на любую другую не проблема, поменять миллион долларов в битке на тезер тоже особо не проблема, но если тот же миллион захотим перелить из условно монеро в условно солану, то тут уже будут существенные потери.
Тогда что делать с крупными обменами? Ответ очевиден. Нужны продвинутые алгоритмы хеджирования, балансировки, проторговки и разделения одной крупной заявки на части, между разными поставщиками ликвидности. Об этом я наверное напишу статью позже, а пока лишь скажу, что здесь нужно ввести метрику эффективности обмена. С одной стороны это обмен по бест прайс, с другой — средневзвешенная цена обмена. Пока же пойдём дальше, и постараемся понять, зачем обменнику иметь на балансе 26 миллионов, и насколько это эффективно. Для этого перейдём к статистике, которая должна быть в каждом обменнике. И также сделаем существенное допущение в расчётах — для получения более точных показателей необходимо смотреть реальное распределение данных, мы же пока это проигнорируем и посчитаем что все распределения у нас равномерные. На самом деле это допущение картину сильно не испортит.
Нам нужно знать среднюю величину обменов, их количество за определённый промежуток времени, распределение обменов в этом промежутке и среднюю скорость обмена. Где взять эти значения? Как обычно, для старта подойдут цифры с известного обменника Netex24.
здесь у нас оборот $160000 и 554 обмена. Это нам даёт 160000 / 554 = $ 288 средний обмен. Честно говоря как-то маловато. Предлагаю для расчётов тогда увеличить средний обмен до 5000$ и общее количество за сутки до 5000 штук. Думаю это гораздо ближе к статистике fixedfloat.
Значит оборот составит 5000 * 5000 = $25 миллионов в сутки. Хм, цифра похожа на 26 уведённых миллионов. Может мы сразу угадали с обменами?
То есть, если мы хотим наплевать на логику и просто залить обменник деньгами для работы через собственную ликвидность, то 25 миллионов должно хватить, при наших допущениях о среднем количестве и сумме обменов. Это мы получили сумму необходимых средств, для работы через собственную ликвидность, в самом глупом варианте. На сайте fixedfloat фигурирует стоимость обмена = 0.5% Значит с каждого обмена они зарабатывают 5000 / 100 * 0,5 = $25 Пусть $3 уйдёт на комиссии сети. Итого получается $22 с каждого обмена в сутки, которых 5000 штук. т. е. 22 * 5000=$110 тысяч доход в сутки или $3.3 млн в месяц (запомним наш ежемесячный доход, он ещё пригодится). Что даёт нам 3.3 млн / 25 млн * 100 = 13.2% доходности в месяц. Круто же! Зачем думать дальше?
Всё же идём дальше и задаём новый вопрос: Сколько всего монет меняется? На бесте чуть более 50. Тогда от этого числа также оттолкнёмся и получим, что наши 5000 обменов были разделены между 50 монетами. Значит 5000 / 50 = 100 раз за сутки мы меняли каждую монету из которых 50 раз её купили и 50 раз продали. (помните что мы договорились считать все распределения равномерными?) Да, пока всё выглядит крайне идеально, но, благодаря такому простому расчёту мы сможем получить простую метрику эффективности использования собственных средств. Значит, если монеты приходят и уходят равномерно и равными объёмами, то тогда достаточно собственных средств в размере средней заявки на каждую монету. $5000 * 50 = $250 тысяч. Сумма получилась значительно меньше 25 миллионов. Если иметь такую ликвидность, то здесь доходность в месяц уже получается вот какая: 3.3 млн / 250 тысяч * 100 = 1320% в месяц. Доходность уже в 100 раз выше, а мы ещё практически и не начали думать.
Но и это ещё не всё. Мы за сутки делаем 5000 обменов, т. е. 5000 обменов за 86400 секунд, т. е. только каждые 17.28 секунд у нас появляется новый обмен. Сколько он занимает по времени? Если есть своя ликвидность, то практически нисколько, получили-отдали и всё. Это значит, что в среднем нам хватает $5000 собственной ликвидности на каждый обмен, и тогда наша задача сводиться к тому чтобы обеспечить правильный поток заявок. Нам надо сделать так, чтобы монета, которую мы должны отдать клиенту в текущем обмене, была нами получена от другого клиента в предыдущем обмене. И тогда нам для всех обменов хватит всего $5000. Доходность тут даже считать не буду.
К чему все эти расчёты? К тому чтобы показать, что обмен денег, может быть сложной алгоритмической задачей, если к ней подойти с умом. И тогда вопросы ликвидности и потери 26 миллионов будут вызывать только недоумение.
Итого, проведя такие упрощённые расчёты мы получили простую метрику эффективности использования балансовых средств. Если нам хватает для работы по нашему примеру $5000 значит наша эффективность = 100%, если нам хватает 25 миллионов, то эффективность = 0%. Истина где-то между этими цифрами.
А как вы считаете, какой баланс надо иметь среднестатистическому обменнику для эффективных обменов через собственную ликвидность?