О чём это.
Все нормальные расчёты (опционы, VaR, греки) либо дёргают неуправляемый C++ код, либо жрут память и GC, либо просто медленные.
Я написал свою библиотеку — QuantCore.Net. Это in-process .NET 8 ядро для финансовых вычислений. Без REST, без Python-прослоек, без боли.
Под капотом: SIMD, ArrayPool, детерминированный RNG, батч-режимы. Всё, чтобы считать сотни тысяч инструментов за миллисекунды и не ловить StopTheWorld в 3 часа ночи.
Вы пишете своих роботов на C#.
— Хотите быстро считать справедливую цену опционов или греки в реальном времени.
— Надоело дёргать Excel или самопальные функции из интернета, которые плавают на 5%.
Вы управляете портфелем и считаете риск.
— Historical VaR / ES (CVaR) за 0.4 мс на 100 000 наблюдений.
— Ни одной аллокации памяти — GC молчит.
Вы делаете factor model PnL.
— SIMD-скалярка экспозиций и факторных доходностей.
— 100 000 позиций × 32 фактора = 2.8 мс.

Большинство новых моделей, которые попытались исправить недостатки Black-Scholes-Merton не выжили. Замечательный и реалистичный инструмент ценообразования Мертона — модель jump-diffusion — редко используется по той простой причине, что она требует оценки двух дополнительных параметров, размер Пуассоновских прыжков и частоту их возникновения. Методы стохастической волатильности (см. Hull and White, 1987) были также незаслуженно отправлены на свалку библиотек в бизнес-школах, потому что требуют оценить два дополнительных параметра, волатильность волатильности и корреляцию между волатильностью и некоторым индикатором цены актива. Те же проблемы преследуют нас при попытке внедрения мощных моделей кривой доходности, такие как подход Heath-Jarrow-Morton; несмотря на настояния своих научных коллег трейдеры стремятся избегать их в пользу простого Black-Scholes-Merton, потому что они знают, как его «подкрутить».
Трейдеры не обманываются насчет формулы Black-Scholes-Merton: существование «поверхности волатильности» является одной из таких адаптаций. Они обнаружили, что предпочтительнее подстроить под реальность существующий параметр ( а именно волатильность) и сделать его функцией времени до экспирации и страйка опциона, вместо того, чтобы точно оценить новый параметр.