August 1, 2019

Расчет оптимального ределегирования в @MinterInfoBot

Часто меня спрашивают по какой формуле рассчитываются параметры оптимального ределегирования в @MinterInfoBot. Обычно я отвечаю в общих чертах и не вдаюсь в подробности. Но чтобы все было предельно ясно, я решил описать в деталях алгоритм расчета.

Общий принцип заключается в том, чтобы перебрать возможные значения периодов ределегирования и рассчитать для каждого из них прибыль с учетом всех нюансов. Период с максимальной прибылью и будет считаться оптимальным. Хочу подчеркнуть, что изначально мы находим оптимальный период, а уже из него - сумму ределегирования.

При расчете минимальный период ределегирования равен 10 минутам, т.к. примерно с такой частотой происходит пересчет делегированных средств в сети. По этой же причине шаг между периодами тоже равен 10 минутам. Т.е. мы будем производить расчет для 10, 20, 30 и т.д. минут.

Максимальный период до недавнего времени был 24 часа. Это было обусловлено большой скоростью уменьшения награды. Другими словами, пока вы копите, другие делегируют, награда уменьшается, ваш оптимальный период ределегирования увеличивается, вы продолжаете копить дальше и так по кругу. При маленьком стейке выгодно было делегировать раз в сутки, потому что завтра доходность будет сильно меньше.

На текущий момент максимальный период ределегирования при расчете ограничен 30 днями, т.к. копить реварды больше месяца кажется бессмысленным.

Именно в связи с изменением максимального периода у некоторых пользователей недавно изменились расчеты. Не переживайте, информация стала только точнее.

На вход для расчета поступает всего 2 параметра:

  • Размер награды в BIP за последнюю минуту. Этот параметр пользователь вводит сам при использовании команды /d, либо данные рассчитываются автоматически в других сервисах бота. Эту информацию можно найти на вкладке REWARDS в эксплорере или в других источниках. Если вы делегировали в несколько нод и/или несколько монет, то все награды начисленные за одну минуту нужно просуммировать.
  • Награда за 1 делегированный BIP в минуту. Она нам понадобится, чтобы учесть ределегированные средства. Этот параметр рассчитывается автоматически раз в 10 минут и отображается в боте по команде /status. За этим параметром интересно наблюдать изо дня в день, видя как он постепенно тает. Этот параметр не учитывает комиссию валидаторов, т.к. она у всех разная, но в нем отражена комиссия DAO и разработчиков (суммарно 20%).

Для примера представим что наша награда в минуту равна 1 BIP. А награда за 1 делегированный BIP в минуту - 0,000005 BIP (на момент написания статьи фактическое значение больше, но для ровных чисел возьмем это).


Итак, считаем прибыль, если бы мы делегировали каждые 10 минут.

За первые 10 минут мы получили бы награду:
1 BIP * 10 минут = 10 BIP
С учётом комиссии мы делегируем:
10 BIP - 0,2 BIP = 9,8 BIP
Записываем в общую прибыль:
9,8 BIP
Рассчитаем награду в минуту для следующего периода:
1 BIP + 9,8*0,000005 = 1,000049,
где 1 BIP - это текущая награда в минуту,
0,000005 - награда за 1 делегированный BIP в минуту, которая рассчитывается автоматически,
9,8*0,000005 - изменение награды в минуту, которое произошло в результате ределегирования 9,8 BIP

За вторые 10 минут мы получили бы награду:
1,000049 BIP * 10 минут = 10,00049 BIP
С учётом комиссии мы делегируем:
10,00049 BIP - 0,2 BIP = 9,80049 BIP
Записываем в общую прибыль:
9,8 BIP + 9,80049 BIP = 19,60049 BIP
Рассчитаем награду в минуту для следующего периода:
1,000049 BIP + 9,80049*0,000005 = 1,00009800245 BIP

За третьи 10 минут мы получили бы награду:
1,00009800245 BIP * 10 минут = 10,0009800245 BIP
С учётом комиссии мы делегируем:
10,0009800245 BIP - 0,2 BIP = 9,8009800245 BIP
Записываем в общую прибыль:
19,60049 BIP + 9,8009800245 BIP = 29,4014700245 BIP
Рассчитаем награду в минуту для следующего периода:
1,00009800245 BIP + 9,8009800245*0,000005 = 1,0001470073501225 BIP

И так далее. Т.к. мы ограничили максимальный период ределегирования 30 днями, то продолжаем расчет как будто мы делегируем все 30 дней. В итоге мы получаем, что за 30 дней общая прибыль будет равна 47254,752748705 BIP.

Здесь есть несколько нюансов:

  • Естественно, в течение 30 дней награда за 1 делегированный BIP в минуту сильно уменьшится, но она уменьшится при ределегировании и раз в 10 минут и раз в день, поэтому мы пренебрегаем этим. Общая награда за 30 дней будет не соответствовать действительности, но она нам нужна только для сравнения с другими периодами.
  • Расчет составлен так, как будто пересчет делегированных средств в сети происходит сразу же после того, как мы ределегируем очередную сумму. В реальности это не так. Пересчет в сети может произойти и через секунду и через 9 минут 59 секунд после того как мы ределегировали очередную сумму. В последнем случае следующие 9 минут 59 секунд начисление награды будет происходить как будто мы ничего только что не делегировали.
  • Если мы рассчитываем общую прибыль для периода, который не делится на 43200 минут (30 дней) без остатка, то нужно в последней итерации вместо рассчитываемого периода взять оставшееся количество минут. Например, если мы рассчитываем прибыль для периода 70 минут, то остаток в последней итерации составит 10 минут. И в расчетах последней итерации вместо 70 минут будет использоваться 10 минут.
  • Комиссия может быть больше 0,2 BIP. Но это редкость и в расчет не берем.

Рассчитав прибыль за 30 дней для всех периодов с шагом в 10 минут получим следующие данные:

  • 10 минут - 47254,752748705 BIP
  • 20 минут - 47735.617260053 BIP
  • 30 минут - 47895.012029309 BIP
  • 40 минут - 47974.039435461 BIP
  • 50 минут - 48020.919954298 BIP
  • 60 минут - 48051.727077741 BIP
  • 70 минут - 48073.179872377 BIP
  • 80 минут - 48089.231376301 BIP
  • 90 минут - 48101.286382038 BIP
  • 100 минут - 48110.662568948 BIP
  • 110 минут - 48118.043432761 BIP
  • 120 минут - 48124.057401558 BIP
  • 130 минут - 48128.773012973 BIP
  • 140 минут - 48132.789339383 BIP
  • 150 минут - 48136.113627921 BIP
  • 160 минут - 48138.793105246 BIP
  • 170 минут - 48140.832749213 BIP
  • 180 минут - 48142.812891462 BIP
  • 190 минут - 48144.193890587 BIP
  • 200 минут - 48145.493605578 BIP
  • 210 минут - 48146.422123755 BIP
  • 220 минут - 48147.107961881 BIP
  • 230 минут - 48147.757022755 BIP
  • 240 минут - 48148.177274801 BIP
  • 250 минут - 48148.437547759 BIP
  • 260 минут - 48148.450391945 BIP
  • 270 минут - 48148.628337526 BIP
  • 280 минут - 48148.472956579 BIP
  • 290 минут - 48148.418092643 BIP
  • 300 минут - 48148.187295058 BIP
  • 310 минут - 48147.825921439 BIP
  • 320 минут - 48147.521676453 BIP
  • 330 минут - 48147.107347445 BIP
  • 340 минут - 48146.451651129 BIP
  • 350 минут - 48146.072001715 BIP
  • 360 минут - 48145.521865073 BIP
  • 370 минут - 48144.938336827 BIP
  • 380 минут - 48144.291541224 BIP
  • 390 минут - 48143.609605324 BIP
  • 400 минут - 48142.853863796 BIP
  • 410 минут - 48142.099296739 BIP
  • 420 минут - 48141.367316213 BIP
  • 430 минут - 48140.562147099 BIP
  • 440 минут - 48139.625831904 BIP
  • 450 минут - 48138.851296378 BIP
  • 460 минут - 48138.015733428 BIP
  • 470 минут - 48137.127497414 BIP
  • 480 минут - 48136.18301745 BIP
  • 490 минут - 48135.191497617 BIP
  • 500 минут - 48134.380955518 BIP
  • 1 день - 48021.78475367 BIP
  • ...
  • 7 дней - 46976.822160455 BIP
  • ...
  • 43110 минут - 43218.99941 BIP
  • 43120 минут - 43216.84792 BIP
  • 43130 минут - 43214.69543 BIP
  • 43140 минут - 43212.54194 BIP
  • 43150 минут - 43210.38745 BIP
  • 43160 минут - 43208.23196 BIP
  • 43170 минут - 43206.07547 BIP
  • 43180 минут - 43203.91798 BIP
  • 43190 минут - 43201.75949 BIP
  • 30 дней - 43199.8 BIP

Максимальная прибыль 48148.628337526 BIP за 30 дней будет получена при ределегировании раз в 270 минут. Также можно заметить следующие особенности:

  • Минимальная прибыль будет получена, если делегировать один раз по истечении 30 дней. Фактически это вариант когда мы не делегируем.
  • Частое делегирование, например, раз в 10 минут, тоже далеко от максимума.
  • Прибыли с периодами от 220 до 330 минут довольно близки друг к другу, поэтому если вы делегируете чуть раньше или чуть позже, и как следствие чуть меньше или чуть больше, то потери будут минимальными.

Чтобы определить оптимальную сумму ределегирования нужно получившийся период умножить на размер награды в минуту: 270 минут * 1 BIP = 270 BIP
Суточная прибыль рассчитывается также с учетом комиссий и без учета уменьшения награды за 1 делегированный BIP в минуту. В том числе из-за последнего фактора расчетная суточная прибыль всегда будет немного выше фактического значения.

Теперь вы знаете как именно считаются параметры оптимального ределегирования и от чего они зависят.


Описанные выше расчеты используются в следующих сервисах бота:

  • Команда /d - расчет оптимальных параметров ределегирования на основе награды в минуту, введенной пользователем.
  • Команда /re - прогноз доходности на основе делегированного стейка, введенного пользователем. Здесь параметры оптимального ределегирования выведены в качестве дополнительной информации. Нужно понимать, что в этом случае в расчете не учтены комиссии валидаторов, поэтому его точность немного ниже, чем при использовании команды /d.
  • Также информацию об оптимальном ределегировании можно получить в рамках информации об адресе, которую можно получить просто отправив адрес боту. В этом случае вам не нужно вручную считать вашу награду за последнюю минуту. Зная ваш адрес бот сделает это сам, просуммировав награды со всех делегированных монет во всех валидаторов за последнюю минуту. Этот способ наиболее простой и точный, т.к. не везде можно получить данные о наградах с нужной точностью. А бот получает данные прямо из сети. К тому же вы можете добавить свой адрес в избранное и всегда иметь к нему доступ по команде /my.
  • Команда /alert - подписка на уведомления о том, что баланс BIP достиг суммы оптимального ределегирования. В этом случае бот также берет данные из сети и уведомляет, когда пора ределегировать средства. Первые 7 дней подписка на каждый адрес бесплатна. Далее 50 MINTERINFO (≈2,5 BIP) за 7 дней подписки на каждый адрес. Сервис будет полезен не только тем, кто делегирует вручную, но и тем, кто использует автоделегаторы. В случае если ваш автоделегатор перестанет работать, от бота вы узнаете, что ваш баланс стал больше, чем обычно.

Спасибо, что дочитали до конца)