Архипов Владимир
Архипов Владимир личный блог
12 февраля 2026, 07:23

🚀 QuantCore.Net: .NET-библиотека для количественных расчётов. 100 000 опционов в секунду и zero-alloc

О чём это.
Все нормальные расчёты (опционы, VaR, греки) либо дёргают неуправляемый C++ код, либо жрут память и GC, либо просто медленные.

Я написал свою библиотеку — QuantCore.Net. Это in-process .NET 8 ядро для финансовых вычислений. Без REST, без Python-прослоек, без боли.

Под капотом: SIMD, ArrayPool, детерминированный RNG, батч-режимы. Всё, чтобы считать сотни тысяч инструментов за миллисекунды и не ловить StopTheWorld в 3 часа ночи.


📊 Для кого это вообще?
  1. Вы пишете своих роботов на C#.
    — Хотите быстро считать справедливую цену опционов или греки в реальном времени.
    — Надоело дёргать Excel или самопальные функции из интернета, которые плавают на 5%.

  2. Вы управляете портфелем и считаете риск.
    — Historical VaR / ES (CVaR) за 0.4 мс на 100 000 наблюдений.
    — Ни одной аллокации памяти — GC молчит.

  3. Вы делаете factor model PnL.
    — SIMD-скалярка экспозиций и факторных доходностей.
    — 100 000 позиций × 32 фактора = 2.8 мс.

  4. Вы просто устали от QuantLib.
    QuantLib — это великий монстр. Но подключать его в .NET проект — тот ещё квест.
    QuantCore.Net — managed, ставится через dotnet add package.


⚡ Цифры, ради которых всё затевалось

Процессор: Intel i5-11400F, .NET 8, BenchmarkDotNet.

 
Операция Размер пачки Время Пропускная способность
Black–Scholes Price (батч) 100 000 5.1 мс 19.5 млн опционов/сек
Black–Scholes Greeks (батч) 100 000 10.4 мс 9.6 млн опционов/сек
Monte Carlo GBM (антитетик) 10 000 траекторий 0.26 мс 38 млн траекторий/сек
Historical VaR 99% 100 000 0.44 мс zero alloc
Factor PnL SIMD (32 фактора) 100 000 2.77 мс AVX2/SSE

📌 Zero allocations — после прогрева нет ни одного объекта в Gen 1/Gen 2. Никогда.


🧩 Что внутри сейчас (MVP, но всё работает)

1. Ценообразование и греки

  • Black–Scholes–Merton (европейские, дивидендная доходность).

  • Одиночный вызов: ~40 наносекунд (чувствителен к JIT, но кому это важно, когда есть батч).

  • PriceBatch, GreeksBatch — аллокаций нет, выходной массив вы даёте сами.

2. Монте-Карло

  • Европейский GBM с антитетическими переменными.

  • Генератор XorShift128Plus — детерминированный, сидируете один раз — получаете повторяемые результаты.

  • Для бэктестов и отладки — идеально.

3. Риск-метрики

  • Historical Value-at-Risk.

  • Expected Shortfall (CVaR).

  • Два режима: мутирующий входной массив и non-mutating (через ArrayPool, копия не создаётся, если не надо).

4. Факторные модели

  • FactorModelPnlFast.ComputePnL() — SIMD dot product через SlidingRank.FastOps.

  • Экспозиции × доходности факторов. Никаких for-циклов.

5. Статистика one-pass

  • Среднее, дисперсия, skewness, kurtosis.

  • Хранить выборку не нужно — обновляется инкрементально.


💰 Сколько стоит и почему не бесплатно?

QuantCore.Net — коммерческая библиотека.
Но я не пытаюсь окупить яхту.

🔹 Оценка / некоммерческое использованиебесплатно.
Никаких таймеров, ватермарок, урезанных функций. Просто работает.

🔹 Старт$299/мес.
1 организация, до 2 продакшен-сервисов.

🔹 Профессиональный$1499/мес.
До 10 разработчиков, до 10 сервисов.

🔹 Enterprise$4999/мес.
Безлимит в рамках одной организации.

📌 Нужна перпетуальная лицензия или revenue-share? — пишите, договоримся.


❓ Почему не взять готовое?

Math.NET — отличная библиотека… для университетских лаб.
Греки? Батч-ценообразование? Нет.

QuantLib — стандарт де-факто. Но:

  • Это C++, вам нужен wrapper.

  • Wrapper ломается при смене версии.

  • Deployment в контейнере — боль.

Писать самому — можно.
Я тоже так делал 10 лет. Но потом ты проводишь 2 недели, отлаживая численную устойчивость при страйк = 0.001 * S.

QuantCore.Net закрывает 80% повседневных задач проп-шопа или хедж-фонда.
Он не умеет экзотику вроде барьеров или азиатских опционов.
Он умеет считать быстро, детерминированно и без GC то, что нужно каждый день.


🧪 Как попробовать?bash
dotnet add package QuantCore.Net

Одна функция — одна строка:

csharp
using QuantCore.Net.Pricing;

double[] prices = new double[100_000];
BlackScholes.PriceBatch(
    OptionType.Call,
    s: spotPrices,
    k: strikes,
    r: 0.03,
    q: 0.01,
    sigma: vols,
    t: expiries,
    outPrice: prices
);

19.5 миллионов опционов в секунду.
Ни одной аллокации.
Ни одного extern-вызова.


🔮 Какие перспективы это открывает для трейдера / разработчика?
  1. Вы перестаёте экономить на спичках.
    Раньше вы могли позволить себе посчитать Greeks только для десятка позиций — иначе лаг.
    Теперь считайте все. Каждый тик. Без тормозов.

  2. Вы можете гонять Monte Carlo прямо в онлайне.
    10 000 траекторий за 0.26 мс — это не бэктест, это риал-тайм оценка.
    Хотите переоценивать VaR каждые 5 секунд? Легко.

  3. Вы пишете роботов на C# — и не чувствуете боли.
    Никаких мостов в Python, никаких DLL из прошлого десятилетия.
    Один стек, один язык, отлаживается F12.

  4. Вы перестаёте бояться GC.
    В 24/7 системах сборка мусора — это внезапный лаг.
    QuantCore.Net не создаёт мусор. Вообще.

  5. Вы получаете инженерную базу.
    Это не чёрный ящик. Вы видите код, вы можете его форкнуть, вы можете его отлаживать.
    Я не прячу реализацию за obfuscation. Это честный .NET.


📎 Ссылки и контакты
9 Комментариев
  • Denis
    12 февраля 2026, 09:54
    19.5 миллионов опционов в секунду.

    На следующий новый год загадаю деду морозу, чтобы на нашей бирже появилась хотя бы сотая доля от этих 19.5 млн опционов — уже был бы праздник.
  • Aleksandr Chernikov
    12 февраля 2026, 10:31
    Давать ссылку на приватный гитхаб это интересно придумано
  • Sprite
    Вчера в 09:11

    В 24/7 системах сборка мусора — это внезапный лаг.
    QuantCore.Net не создаёт мусор. Вообще.



    Это не чёрный ящик. Вы видите код, вы можете его форкнуть, вы можете его отлаживать. Я не прячу реализацию за obfuscation. Это честный .NET.


    Посмотрел, это и правда здорово, что вы не спрятали код и желающие могут посмотреть как писать на C# без GC. Но тут непонятно что лицензируется, если всё видно. Саппорт?

    PS А мусор с вашей либой мы и сами создадим! )

  • algodsp
    Вчера в 23:50

    Подскажите, пожалуйста, а где можно посмотреть исходный код, в приведённой ссылке на репозиторий не увидел реализации ядра, только примеры использования.

    Спасибо.

Активные форумы
Что сейчас обсуждают

Старый дизайн
Старый
дизайн