Разрешение и расчет
Разрешение — это процесс определения исхода события, а расчет — процесс выплаты (или обнуления) позиций на основе этого исхода. Вместе они составляют завершающую стадию жизненного цикла каждого прогнозного рынка на Yoyo Market (далее — Yoyo).
Жизненный цикл события
Каждое событие проходит через определенный набор состояний:
new --> started --> paid
| Состояние | Описание |
|---|---|
new | Событие создано и открыто для торговли. |
started | Реальное событие началось (например, начался матч). Торговля может быть ещё открыта в зависимости от конфигурации рынка. |
paid | Все позиции рассчитаны и выплаты произведены. |
Жизненный цикл пула
Внутри события каждый пул следует собственному жизненному циклу:
active --> closed (won_side установлен) --> settled
| Состояние | Описание |
|---|---|
active | Пул активен и его рынки открыты для торговли. |
closed | Исход определен. won_side установлен. Новые сделки не принимаются. |
settled | Все позиции в этом пуле выплачены. |
Закрытие: установка исхода
Когда реальный исход известен, создатель события (или администратор) закрывает рынок, устанавливая won_side:
won_side = 0означает, что победил первый исход (например, YES в бинарном рынке).won_side = 1означает, что победил второй исход (например, NO).- Для рынков с более чем двумя исходами более высокие индексы соответствуют дополнительным исходам.
Закрытие может выполняться на разных уровнях детализации:
| Действие | Эффект |
|---|---|
| Закрыть рынок | Устанавливает исход для одного рынка внутри пула. |
| Закрыть пул | Устанавливает исход для всего пула и всех его рынков. |
| Закрыть событие | Закрывает каждый пул в событии, разрешая все рынки сразу. |
После закрытия пула вся торговля в нем немедленно прекращается.
Расчет: выплата позиций
После закрытия пула и установки won_side система рассчитывает все открытые позиции:
Правила выплат
- Держатели YES: Получают 10,000 копеек (100.00 RUB) за акцию, если исход YES побеждает. Получают 0, если YES проигрывает.
- Держатели NO: Получают 10,000 копеек (100.00 RUB) за акцию, если исход NO побеждает. Получают 0, если NO проигрывает.
Другими словами, каждая акция выигрышного исхода выплачивается по максимальной стоимости, а каждая акция проигравшего исхода становится бесполезной.
Пример
Предположим, трейдер держит 5 акций YES, купленных по средней цене $0.60 каждая:
- Если YES побеждает: Выплата = 5 акций * 100.00 RUB = 500.00 RUB
- Если YES проигрывает: Выплата = 0.00 RUB
Расчет прибыли и убытка
PnL для рассчитанной позиции вычисляется как:
PnL = settlement_payout - (amount * avg_price / 10000)
Где:
settlement_payout— общая сумма, полученная при расчете (в копейках).amount— количество удерживаемых акций.avg_price— средневзвешенная цена приобретения акций (в копейках).10000нормализует цену к базису выплаты за акцию.
Используя пример выше (5 акций YES по средней 0.60 RUB, YES побеждает):
PnL = 50000 - (5 * 6000 / 10000)
PnL = 50000 - 3000
PnL = 47000 копеек = 470.00 RUB прибыли
Если бы YES проиграл:
PnL = 0 - (5 * 6000 / 10000)
PnL = -3000 копеек = -30.00 RUB убытка
Запись ClosedPosition
При расчете система создает запись ClosedPosition для позиции каждого пользователя на разрешенном рынке. Эта запись включает:
| Поле | Описание |
|---|---|
pnl | Реализованная прибыль или убыток от позиции, в копейках. |
won_side | Индекс выигрышного исхода (0, 1 и т.д.), установленный при закрытии. |
settlement_payout | Общая полученная выплата. |
amount | Количество удерживаемых акций. |
avg_price | Средняя цена входа в позицию. |
won_side = nil
Если won_side равен nil (null) в записи ClosedPosition, это означает, что позиция была закрыта трейдером вручную до разрешения события — не через процесс расчета. В это м случае PnL отражает цену выхода трейдера, а не выплату по расчету.
Отмена события
В исключительных обстоятельствах событие может быть отменено вместо разрешения. При отмене события:
- Все открытые позиции возвращаются по первоначальной стоимости. Каждый трейдер получает обратно ровно то, что потратил на приобретение акций.
- Победитель не объявляется.
won_sideне устанавливается ни для одного пула. - Событие переходит в терминальное состояние, и дальнейшие действия невозможны.
Отмена — это защитный механизм, используемый когда событие становится недействительным (например, матч отложен на неопределенный срок, вопрос стал без ответа, или возникла проблема с целостностью данных).