polymarket-kernel 0.1.1

Ultra-low latency Polymarket logit jump-diffusion kernel with AVX-512 SoA compute path 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})
$$

## 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$ определяет нелинейную часть спреда.
- В сумме ядро балансирует вероятность исполнения и adverse selection.

Итог: это production-grade, SIMD-native ядро для котирования prediction markets с математически консистентным risk control.