polymarket-kernel 0.2.0

Ultra-low latency Polymarket decision-support and risk engine with AVX-512 SoA compute path, quoting kernel, analytics, and lock-free SPSC ring buffer.
# Математические заметки: Logit Jump-Diffusion ядро для Polymarket

## Концепт

В prediction markets до сих пор нет стандартного унифицированного pricing/risk-фреймворка уровня Black-Scholes для опционов.

Этот крейт реализует подход **Logit Jump-Diffusion**, описанный в:

- Shaw & Dalen (2025), *Toward Black-Scholes for Prediction Markets: A Unified Kernel and Market-Maker's Handbook*

Цель прикладная и HFT-ориентированная: стабильно и быстро строить inventory-aware bid/ask-котировки в реальном времени по большому числу рынков и давать низколатентную аналитику для принятия решений.

## Почему logit-пространство

На Polymarket цены выражены как вероятности:

$$
p \in (0,1)
$$

Считать диффузию напрямую в probability-space неудобно, потому что 0 и 1 являются жёсткими границами.

Мы переводим вероятность в log-odds (logit):

$$
x = \log\left(\frac{p}{1-p}\right), \quad p = S(x)=\frac{1}{1+e^{-x}}
$$

Теперь переменная состояния живёт на всей вещественной прямой:

$$
x \in (-\infty, +\infty)
$$

Это позволяет применять стандартный стохастический аппарат (diffusion + jumps), не упираясь постоянно в граничные ограничения.

## Локальные чувствительности в logit-координатах

Для логистического отображения $S(x)$:

$$
S'(x)=p(1-p)
$$

$$
S''(x)=p(1-p)(1-2p)
$$

Интерпретация:
- $S'(x)$ задаёт, насколько сильно движение в logit переносится в движение вероятности
- $S''(x)$ описывает кривизну/асимметрию около экстремумов (очень низкие или очень высокие вероятности)

## Слой маркет-мейкинга (logit Avellaneda-Stoikov)

Чтобы котировать в стакане, ядро адаптирует Avellaneda-Stoikov напрямую в logit-единицах.

Входы по каждому рынку:
- $x_t$: текущий logit mid
- $q_t$: текущий инвентарь
- $\sigma_b$: волатильность belief
- $\gamma$: риск-аверсия
- $\tau = T-t$: время до резолва
- $k$: параметр прихода ордеров/ликвидности

### Reservation Quote

Инвентарь сдвигает внутреннюю fair value:

$$
r_x(t)=x_t - q_t\,\gamma\,\overline{\sigma_b^2}\,(T-t)
$$

Чем больше лонг-инвентарь, тем ниже reservation quote (более агрессивная продажа), и наоборот.

### Оптимальный спред (аппроксимация)

Полный спред в logit-единицах:

$$
2\delta_x(t) \approx \gamma\,\overline{\sigma_b^2}\,(T-t) + \frac{2}{k}\log\left(1+\frac{\gamma}{k}\right)
$$

Half-spread, используемый в коде:

$$
\delta_x(t) \approx \frac{1}{2}\gamma\,\overline{\sigma_b^2}\,(T-t) + \frac{1}{k}\log\left(1+\frac{\gamma}{k}\right)
$$

Далее:

$$
x^{bid}=r_x-\delta_x, \quad x^{ask}=r_x+\delta_x
$$

$$
p^{bid}=S(x^{bid}), \quad p^{ask}=S(x^{ask})
$$

## Decision Support & Analytics

Аналитический слой расширяет те же модельные предположения на калибровку, сценарный анализ, sizing, диагностику микроструктуры и портфельную агрегацию рисков.

### 1. Калибровка Implied Belief Volatility

Из наблюдаемых рыночных котировок $(p^{bid}, p^{ask})$ считаем logit-спред:

$$
\Delta_x^{mkt} = \operatorname{logit}(p^{ask}) - \operatorname{logit}(p^{bid})
$$

В модели котирования:

$$
\Delta_x^{model}(\sigma_b) = \gamma\tau\sigma_b^2 + \frac{2}{k}\log\left(1+\frac{\gamma}{k}\right)
$$

Восстанавливаем implied $\sigma_b$ из уравнения:

$$
f(\sigma_b)=\Delta_x^{model}(\sigma_b)-\Delta_x^{mkt}=0
$$

методом Newton-Raphson в векторизованном виде:

$$
\sigma_{n+1}=\max\left(0,\,\sigma_n-\frac{f(\sigma_n)}{f'(\sigma_n)}\right),\quad f'(\sigma)=2\gamma\tau\sigma
$$

Интуиция: инвертируем наблюдаемый спред рынка в латентный уровень belief-волатильности для адаптивного risk control.

### 2. Vectorized Stress-Testing (What-If)

Для шока $\Delta p$ строим шокированную вероятность и logit-состояние:

$$
p' = \operatorname{clip}(p + \Delta p), \quad x' = \operatorname{logit}(p')
$$

Далее пересчитываем reservation и спред:

$$
r_x' = x' - q_t\gamma\sigma_b^2\tau
$$

$$
\delta_x' = \frac{1}{2}\gamma\sigma_b^2\tau + \frac{1}{k}\log\left(1+\frac{\gamma}{k}\right)
$$

и получаем новые котировки, греки и инвентарный PnL shift:

$$
\Delta \text{PnL} \approx q_t (p' - p)
$$

Интуиция: SIMD what-if карта мгновенно показывает дрейф котировок и риска под вероятностными шоками.

### 3. Adaptive Kelly / Optimal Sizing

Определяем edge относительно рынка:

$$
e = p_{user} - p_{mkt}, \quad v = p_{mkt}(1-p_{mkt})
$$

Kelly-подобный sizing-сигнал:

$$
f^* = \frac{e}{v}
$$

Далее масштабирование и ограничение по риск-бюджету и инвентарю:

$$
\text{clip}_{taker} = \operatorname{clamp}\left(f^* \cdot \frac{\text{risk\_limit}}{1+\gamma|q_t|},\,-\text{max\_clip},\,\text{max\_clip}\right)
$$

с финальными hard-bound по inventory limits; maker clips берутся как более консервативная доля taker clips.

Интуиция: перевод статистического edge в исполнимый размер позиции с учётом инвентарной выпуклости и риск-лимитов.

### 4. Микроструктура стакана (OBI/VWM Pressure)

Дисбаланс top-of-book:

$$
\operatorname{OBI} = \frac{V_b - V_a}{V_b + V_a}
$$

Volume-weighted mid proxy:

$$
\operatorname{VWM} = \frac{p^{ask}V_b + p^{bid}V_a}{V_b + V_a}
$$

Переход к logit и сигнал давления:

$$
\text{pressure} = \operatorname{OBI} + \frac{\operatorname{VWM} - \operatorname{mid}}{\operatorname{spread}}
$$

Интуиция: объединяем очередной дисбаланс и ценовой skew в быстрый направленный фактор микроструктуры.

### 5. Cross-Market Portfolio Greeks

Взвешенные экспозиции по рынкам:

$$
E_i^\Delta = q_i\Delta_i w_i, \quad E_i^\Gamma = q_i\Gamma_i w_i
$$

Без матрицы корреляций:

$$
\Delta_{net}=\sum_i E_i^\Delta, \quad \Gamma_{net}=\sum_i E_i^\Gamma
$$

С матрицей корреляций $C$:

$$
\Delta_{net}=\sum_i E_i^\Delta \sum_j C_{ij}E_j^\Delta
$$

$$
\Gamma_{net}=\sum_i E_i^\Gamma \sum_j C_{ij}E_j^\Gamma
$$

Интуиция: сжимаем кросс-рыночные экспозиции в портфельное risk-state в logit-координатах.

## HFT-детали реализации

Математическая модель реализована с приоритетом на throughput:

- **SoA layout** (`x_t[]`, `q_t[]`, `sigma_b[]`, `gamma[]`, `tau[]`, `k[]`) для contiguous memory stream
- **AVX-512 SIMD** пакетный расчёт по 8 `f64` lane в одном векторе
- **Кастомная AVX-512 аппроксимация `log1p`**, чтобы расчёт спреда оставался полностью векторным
- **Быстрая аппроксимация sigmoid** в hot path
- **Ноль аллокаций в hot path** (все буферы передаются вызывающей стороной)

Такой дизайн убирает штрафы `gather` из AoS-layout и не допускает scalar fallback в AVX-512 путях квотинга и аналитики.

## Численные guard rails

Для устойчивого продакшн-поведения:

- Входы поджимаются там, где нужно (`k >= \epsilon`, `gamma >= 0`, `tau >= 0`)
- Вероятности ограничиваются в $(\epsilon, 1-\epsilon)$, чтобы `logit` оставался конечным
- Math с минимизацией ветвлений помогает держать предсказуемую latency под нагрузкой

## Практическая интуиция

- Термин инвентарного риска расширяет/смещает котировки при росте позиции.
- Волатильность и время до резолва увеличивают risk compensation.
- Параметр прихода ордеров $k$ задаёт нелинейную часть спреда.
- Аналитический слой замыкает контур от наблюдений рынка к исполнимым sizing и портфельному риск-контролю.

Итог: это production-grade, SIMD-native движок котирования, decision-support и управления риском для prediction markets.