Yto4ka & Bancor
Привет, Банкор. Как насчёт того, чтобы придумаем токен, который превратит волатильность в источник прибыли? Я терпеть не могу скучные схемы, так что ты берись за цифры, а я внесу немного хаоса.
Конечно, но сначала нам нужен чёткий механизм, модель оценки рисков и точки данных, чтобы убедиться, что мы можем стабильно превращать волатильность в прибыль. Расскажи, какие у нас предположения.
Конечно. Вот структура:
**Механизм**
1. Данные о спотовой цене + индекс волатильности типа VIX в реальном времени.
2. Бот сканирует рынок на предмет неправильно оцененных «свопов волатильности» или опционов относительно спотовой цены.
3. Он фиксирует позицию по фьюрсам волатильности, затем хеджирует дельту по спотовой цене.
4. По мере роста или падения подразумеваемой волатильности позиция по волатильности движется в противоположную сторону от спотовой цены, фиксируя спред.
5. Все сделки автоматически закрываются, если проскальзывание превышает установленный порог.
**Модель рисков**
- **VaR и ожидаемые потери** на горизонте 1 день, пересчитываются каждые 5 минут.
- **Стресс-тесты**: падение спотовой цены на 2σ, скачок волатильности на 3σ, заморозка ликвидности.
- **Проверка контрагента**: 70 % объема на топ-10 DEX с двухступенчатым эскроу.
- **Буфер транзакционных издержек**: 0.3 % от стоимости сделки на каждую сторону, включено в целевой спред.
**Данные для проверки**
- Исторический дневной ряд спотовых цен токена (5-минутные интервалы).
- Дневные значения индекса подразумеваемой волатильности токена.
- Снимки глубины рынка каждую минуту для оценки проскальзывания.
- Данные о ценообразовании прошлых свопов волатильности или опционов (если доступны).
- Показатели ликвидности: средний размер сделки, спред bid-ask.
**Предположения**
- Волатильность токена в основном определяется дисбалансом спроса и предложения, а не регуляторными изменениями.
- Рынок свопов волатильности или опционов достаточно ликвиден для поддержки наших хеджей.
- Нет внезапных «черных лебедей», которые могут обнулить ликвидность в течение ночи.
- Транзакционные издержки остаются ниже 0.5 % от стоимости сделки; если они вырастут, мы останавливаем торговлю.
Если сможешь получить эти данные и мы подтвердим предположения, у нас будет рабочий прототип. Дай знать, если что-то нужно подкорректировать.
Выглядит надёжно. Сейчас начну подгружать данные за пятиминутку и информацию о волатильности, рассчитаю модель ценообразования свопов на дисперсии. Параллельно настрою цикл VaR за пятиминутку с запасом в 0,3% на транзакционные издержки. Если данных о подразумеваемой волатильности будет мало, придётся интерполировать, но это мелочи. Скажи, какие источники данных используешь для захвата книги заявок? Как только у меня будут первичные данные, запустим бэктест, чтобы убедиться, что целевые спреды выдерживают стресс-тесты, которые ты описала.
Используй три топовые DEX, где есть токен: Uniswap v3, SushiSwap и Curve (если это пара стейблкоинов). Сделай снимки глубины на 5 минут через их GraphQL-endpoints или напрямую из subgraph для каждого пула. Возьми 10 лучших уровней с каждой стороны, рассчитай средневзвешенную цену и сохрани спред. Это даст тебе достаточно информации, чтобы оценить проскальзывание и запустить цикл VaR. Когда соберешь данные, присылай результаты бэктестинга.
Я сам не могу получать данные в реальном времени и проводить бэктесты. Могу подсказать, как настроить запросы для Uniswap v3, SushiSwap и Curve’s subgraphs, или помочь с написанием скрипта для получения данных о глубине котировок и расчета VaR, если хочешь сделать это сама. Просто скажи, что тебе нужно дальше.
Хорошо, давай URL-ы подграфов и шаблоны GraphQL-запросов для каждой платформы. Я подставлю их в скрипт, который будет собирать топ-10 уровней глубины каждые пять минут и записывать взвешенную цену. Потом мы сможем подать это в цикл VaR. Только запросы сделай лаконичными, не хочу тратить время на перегруженные ответы. Погнали.
Привет, вот что удалось собрать по энпоинтам:
**Подграфы**
- Uniswap v3 – https://api.thegraph.com/subgraphs/name/uniswap/uniswap-v3
- SushiSwap – https://api.thegraph.com/subgraphs/name/sushiswap/exchange
- Curve – https://api.thegraph.com/subgraphs/name/curvefi/curve
**Шаблоны GraphQL-запросов**
---
### 1. Uniswap v3
*Получаем топ-10 уровней тиков выше и ниже текущей цены (каждый тик дает цену и ликвидность).*
```graphql
query($poolAddress: Bytes!, $ticksAbove: Int!, $ticksBelow: Int!) {
pool(id: $poolAddress) {
tickCurrentIndex
ticks(first: $ticksAbove, orderBy: tickIdx, orderDirection: asc, where: { tickIdx_gt: $tickCurrentIndex }) {
tickIdx
liquidityNet
}
ticks(first: $ticksBelow, orderBy: tickIdx, orderDirection: desc, where: { tickIdx_lt: $tickCurrentIndex }) {
tickIdx
liquidityNet
}
}
}
```
*Пример переменных:*
```json
{
"poolAddress": "0x... (адрес пула токен‑токен)",
"ticksAbove": 10,
"ticksBelow": 10
}
```
*Постобработка:*
Преобразуйте каждый `tickIdx` в цену (цена = 1.0001^tickIdx * sqrtPriceX96 / 2^96), затем взвесьте по `liquidityNet`, чтобы получить средневзвешенную цену для сторон bid и ask.
---
### 2. SushiSwap
*Резервы пула дают лучшую цену (нет глубины в подграфе). Используйте `reserve0` и `reserve1` для расчета цены, а затем подключитесь к оффчейн ордербуку, если нужно.*
```graphql
query($pairAddress: Bytes!) {
pair(id: $pairAddress) {
reserve0
reserve1
totalSupply
token0 { id }
token1 { id }
}
}
```
*Пример переменных:*
```json
{
"pairAddress": "0x... (адрес пары)"
}
```
*Постобработка:*
Цена = reserve1 / reserve0 (если token0 - базовая валюта). Для глубины нужно подключиться к контракту пула или использовать сторонний сервис; подграф этого не предоставляет.
---
### 3. Curve
*Для пула со стейблкоинами подграф перечисляет балансы каждой монеты. Лучшая цена - это соотношение балансов.*
```graphql
query($poolAddress: Bytes!) {
pool(id: $poolAddress) {
balances
coins
totalSupply
}
}
```
*Пример переменных:*
```json
{
"poolAddress": "0x... (адрес пула со стейблкоинами)"
}
```
*Постобработка:*
Возьмите `balances[i] / balances[j]` для двух интересующих монет, чтобы получить спотовую цену. Как и в случае с SushiSwap, подграф не предоставляет данные о глубине; чтобы ее получить, нужно обратиться к контракту или провайдеру глубины.
---
**Небольшой совет для твоего скрипта**
1. Отправляй каждый энпоинт с вышеуказанным запросом каждые 5 минут.
2. Для Uniswap преобразуй тики в цены и взвешивай по liquidityNet для вычисления средневзвешенной цены bid/ask.
3. Сохраняй метку времени, средневзвешенную цену bid, средневзвешенную цену ask и спред (`ask - bid`).
4. Подай эту временную последовательность в свой цикл VaR.
Вот вся необходимая информация — минимум данных, достаточно для оценки глубины и спреда. Удачи!