Блог им. ArhipovVladimir

PhiFlow: Инкрементальные вычисления для финансовых приложений — пересчёт рисков за миллисекунды вместо минут

PhiFlow: Инкрементальные вычисления для финансовых приложений — пересчёт рисков за миллисекунды вместо минут

Привет, коллеги!

Хочу поделиться историей о том, как мы столкнулись с типичной проблемой в количественных финансах и что из этого вышло.

Проблема, знакомая каждому, кто строил риск-модели

Представьте: у вас портфель из тысяч инструментов. Вы считаете Value-at-Risk (VaR), ожидаемые потери (Expected Shortfall), греки для опционов, скоринговые модели. Данные обновляются постоянно — новые цены, ставки, волатильности.

Как это обычно работает?

  • Либо вы пересчитываете всё с нуля каждый раз (дорого, медленно, особенно если инструментов много)

  • Либо вы строите сложные триггеры и кэши, которые потом отлаживаете месяцами

В обоих случаях вы либо жертвуете скоростью, либо тратите уйму времени разработчиков.

Как мы пытались решить эту проблему

Мы начали с простого вопроса: «А что, если пересчитывать только то, что реально изменилось?»

Звучит очевидно, но реализация оказалась нетривиальной. Когда у вас многослойная модель (например: цены → греки по инструментам → агрегация по секторам → портфельные метрики → общебанковские лимиты), одно изменение в цене может затронуть десятки тысяч зависимых значений.

Мы перепробовали разные подходы:

  • Самописные кэши с инвалидацией — получили спагетти-код

  • Потоковые движки вроде Apache Flink — мощно, но тяжеловесно и не оптимизировано под иерархии

  • Реляционные БД с материализованными представлениями — медленно для real-time

Что получилось в итоге

В результате родился PhiFlow — библиотека для .NET, которая делает ровно одну вещь, но делает её хорошо: инкрементально пересчитывает иерархические модели и даёт мгновенные ответы на аналитические запросы.

Как это работает (без сложной математики)

Представьте, что ваша риск-модель — это многослойная сеть. Когда меняется цена одного инструмента, PhiFlow определяет минимальную область влияния этого изменения (конус влияния) и пересчитывает только те узлы, которые действительно зависят от этого инструмента.

Остальная часть модели остаётся нетронутой.

А теперь самое интересное — цифры

Мы прогнали библиотеку через бенчмарки на реальных сценариях. Вот что получилось:

 
Сценарий Обычный подход (полный пересчёт) PhiFlow (инкрементальный) Ускорение
1 изменение, сложные вычисления (KWork=50) 10.7 секунды 0.195 секунды 55x
4 изменения, сложные вычисления 10.8 секунды 0.75 секунды 14x
1 изменение, лёгкие вычисления (KWork=10) 1.8 секунды 0.035 секунды 51x
Запросы Top-K (50 наибольших значений) 1.74 секунды 0.034 секунды 51x
Подсчёт количества элементов > порога 1.83 секунды 0.035 секунды 52x

Другими словами: то, что раньше занимало секунды или десятки секунд, теперь занимает миллисекунды.

Где это может пригодиться трейдерам и аналитикам

1. Управление рисками в реальном времени

Представьте, что вы мониторите VaR портфеля. Каждое изменение цены требует пересчёта. С PhiFlow это происходит мгновенно, а не раз в минуту.

Сценарий:

  • Слой 0: цены инструментов, ставки, волатильности

  • Слой 1: греки по каждому инструменту

  • Слой 2: агрегация по секторам (например, нефтегаз, финансы)

  • Слой 3: портфельные метрики (VaR, ES)

  • Слой 4: контроль лимитов и алерты

При изменении цены фьючерса на Brent обновляются только:

  • сам инструмент (слой 0)

  • его греки (слой 1)

  • сектор «нефтегаз» (слой 2)

  • портфельные метрики (слой 3)

  • проверка лимитов (слой 4)

Всё остальное (финансовый сектор, технологический и т.д.) не трогается.

2. Алгоритмическая торговля

Вы строите торговые сигналы на основе иерархии: тики → свечи → признаки → сигналы → решения.

Каждый новый тик запускает пересчёт. С PhiFlow это происходит достаточно быстро, чтобы использовать в HFT-системах с субмиллисекундными задержками.

3. Скоринговые модели и антифрод

Транзакция → пользователь → счёт → кластер → флаг риска.

При поступлении новой транзакции вы мгновенно получаете обновлённый риск-скор и можете принимать решение «пропустить/блокировать» в реальном времени.

4. Бэктестинг и симуляции

Запускаете Монте-Карло? Отлично. Каждая симуляция меняет входные параметры. Вместо полного пересчёта каждой симуляции с нуля, PhiFlow обновляет только то, что изменилось относительно предыдущей итерации.

Почему это лучше, чем писать самому?

Мы тоже начинали с попытки написать свой велосипед. Быстро поняли, что:

  • Корректность — легко ошибиться в логике инвалидации и получить неконсистентные данные

  • Производительность — наивная реализация может оказаться медленнее полного пересчёта

  • Индексация запросов — если вы ещё и хотите быстро отвечать на вопросы вроде «сколько элементов превысило порог», нужно строить индексы и поддерживать их в актуальном состоянии

PhiFlow даёт готовое, проверенное решение с гарантированной корректностью.

Технические детали для интересующихся
  • Дискретный домен: все значения в ограниченном диапазоне (0..N-1) — это позволяет использовать точные структуры данных, а не вероятностные

  • Fenwick tree (дерево Фенвика) для быстрых подсчётов количества элементов больше порога

  • Гистограммы для Top-K запросов (сумма K наибольших значений)

  • Интервальное представление затронутых узлов — оптимально для кэша процессора

  • Никаких аллокаций на горячем пути — подходит для 24/7 сервисов с высокими требованиями к стабильности задержек

Как это попробовать

Библиотека доступна на NuGet:

bash
dotnet add package PhiFlow

Есть бесплатная Community-версия для разработки и тестирования. Этого достаточно, чтобы поиграться и понять, подходит ли подход под ваши задачи.

Для продакшна — коммерческая лицензия от $500/мес (Startup) до enterprise-тарифов.


Буду рад обратной связи и идеям! Если хотите покопаться в коде или задать вопросы — пишите в телеграм @vipvodu.


PhiFlow — инкрементальные вычисления для финансовых приложений. Пересчёт рисков за миллисекунды вместо минут.

424
21 комментарий

Добрый день! 

Есть ли где‑то в открытом доступе (или может здесь добавите) отработанные примеры использования этой библиотеки с наглядной демонстрацией возможностей? Интересно посмотреть живые кейсы и выгоду применения, чтобы не «ковырять» всё с нуля и лучше понять, в каких задачах это может пригодиться.

avatar
Op_Man💰, да, залью примеры на днях
Op_Man💰, github.com/likeslines-maker/PhiFlow/tree/main/AdvantageDemo

Там один файл. Он делает живое сравнение:

Как обычно делают (полный пересчёт всего подряд)

Как делают «продвинутые» (с индексами, но всё равно пересчёт)

Как делает PhiFlow (инкрементально)

И главное — он показывает цифры и контрольные суммы: ускорение в 14 раз, но ответы ТОЧНО такие же. Никакого читерства.
Что будет видно после запуска (чтобы сразу понять)

Типичная картина на компе будет такая:

Обычный подход: 58 мс на шаг

PhiFlow: 4 мс на шаг

Разница в 14 раз. Жизненные сценарии, где это реальные деньги:

В финансах:

Банк с портфелем $10 млрд считает риски 15 минут → за это время рынок может уйти на 0.5% = $50 млн потенциального убытка. PhiFlow сделает это за 2 секунды.

В играх:

Игрок ждёт ответ 5 секунд («а что если построить тут?») → теряет интерес и не донатит. С PhiFlow ответ мгновенный → конверсия в покупку растёт.

В рекламе:

RTB-аукцион: кто быстрее обновил бюджет, тот не слил деньги впустую. Экономия 30% бюджета.
Архипов Владимир, спасибо за подробный ответ. Посмотрю!
avatar
Чел, ты просто задайся вопросов. Вот если ты так легко и просто через ИИ делаешь порты с Питона, как думаешь, нужна ли другим в эпоху вайбкодинга библиотека по математике? Опционы-дериваты. Ты действительно думаешь что твоя библиотека да пусть даже за 1 доллар будет кому-то нужна когда не то что обучение, а готовый торгующий код вайбится за пол часа?

Я тебя не упрекаю за попытку оседлать коммерцию через вайбкодинг. Но попробуй подумать на перед. Один ли ты знаешь про вайбкодинг. А если не один, насколько твоя библиотека в целом уместа в мире вайбкодинга.
avatar
Просто трейдер, попробуйте сделайте такое вайбом… посмотрите какие конкуренты есть — и какая у них производительность, в сравнении с этим решением и сколько стоят конкуренты
Архипов Владимир, попробуйте взглянить на ситуации с другой стороны — а нужно ли делать аналог. Вайб кодинг решает вопросы здесь и сейчас. Без попытки монстроузных проектов. Захотел свой блэк шолз — получи. Захотел свой контанго — получи. Никакой даже самый динамично развивающийся проект не сможет даже близко сравнивать с адаптивным кодом. Тем более по скорости. Скорость это всегда заточенное под собственную архитектуру решение. А не что там какая-то одна из библиотек очень быстро матрицу транспонирует.
avatar
Просто трейдер, ну вот захотите себе такое решение — и попробуйте сделать вайбкодингом… вы в вайбе уйдёте в чёрную дыру
Архипов Владимир, если вы вдруг не поняли, то все текущие вопросы рисерча анализа тестирование и запуска стратегий я делаю на вайбе. И поверьте, прирост стал колоссальный за счет масштабируемости усилий.

По началу были то что вы описали. Это по началу. Потому пришел опыт и понимание, как использовать. Или модели стали умнее. Я не знаю, мне хочется думать что я поумнел, а не модели.
avatar
Просто трейдер, это не решение для обывателя простого, где достаточно вайбкодинга
Архипов Владимир, вы про компании? Еще больше вас разочарую. Компаниям проще свое разработать, чем иметь зависимость от программиста-энтузиаста.
avatar
Просто трейдер, я вам наверное секрет не открою, если скажу, что большинство компаний зависят от публичных решений
Архипов Владимир, не от таких которые создаются одиночками. Может конечно какой-то из программистов подключит библиотеку, созданную Кулибиным. Но это будет 99% бесплатная опен сорс библиотека. Вы такое предоставляете? )) Вот и то то же.

Ладно, я вам дал пищу для ума. Вы её отказываетесь принять. Мне искренне вас жаль, что вы потратили столько времени на то, что обесценивается развитием технологий. Я за развитие, но мне жаль пустата трата усилий. Впрочем, чтобы вам было не так грусно, посмотрите на тулзу ОсЭнджин. Создатель там потратил куда больше ваших усилий, и даже они обнулились ИИ.
avatar
Просто трейдер, вы сравниваете не сравниваемое, дело не в коде, а в совершенно в новом подходе, которого ещё не было ранее, это как раз то, чего вайбкодингом не добиться, чего не сделать просто дав задание программисту, это надо изобрести, а не закодить
Архипов Владимир, собственно про новизну не понял. Что нового в том, чтобы пересчитывать только то, что изменилоcь? 
В самой примитивной форме это реализовано, например, в экселе. У Вас компот из разнородных объектов. Как тики в акциях связаны с кредитным скорингом. На уровне банковского казначейства? Ну так там и надо сводить.  Ощущение такое, что сначала свалили все в одну кучу, а потом разработали способ в ней барахтаться. 
avatar
Архипов Владимир, я вам объективную реальностью со стороны показываю. Вы сделали что-то. Покупают? Нет. Иначе бы за вас здесь девочка на зарплате писала, и даже не комментарии не отвечала.

Можете дальше удлинять бессмысленную позицию. Маржин кол наступит, когда придет понимание — годы слиты в унитаз, и сделано то, что агенты делают как семечки. И да, в вашей библиотеке судя по описанию в этом блоге я не нашел абсолютно никакого ноухау. Вся ценность (была) чтобы это не делать еще раз. Но теперь эту задачу решает агент. Верите вы в ИИ или нет — это не важно. Вам уровень продаж покажет насколько вы правы, или насколько вы ошибаетесь. Посморите на историю ОсЭнджин. Автор столько лет угробил на не понятно что. И что по итогу? Зарабатывает обучением программированию. Мог бы сразу пойти в учители, сохранив себе 10 лет жизни как он утверждает. Вам наглядный пример фейл-бизнеса. А вы упорно хотите пойти тем же путем. Идите, ваше право. Мне то что вас останавливать. Я даже больше не буду вам писать в блоге, чтобы не вредить вашим потенциальным покупателям (если таковые есть на этом полу-мертвом сайте).
avatar
Просто трейдер, очень похоже, что вы вообще не понимаете сути библиотеки и что она делает и как
Мне кажется, что вот так сходу продать свой велосипед без документации, кейсов и отзывов — людям, съевшим собаку на строительстве собственных, будет затруднительно. Кому надо, должен уметь сам реализовывать онлнайн алгоритмы, а не дивиться цифрам бессмысленного сравнения между постоянным перебором массивов и немудренной хитростью хранить то, что можно не пересчитывать.
avatar

Вы строите торговые сигналы на основе иерархии: тики → свечи → признаки → сигналы → решения.

Каждый новый тик запускает пересчёт. С PhiFlow это происходит достаточно быстро, чтобы использовать в HFT-системах с субмиллисекундными задержками.

 Вот это да!
Оказывается существуют HFT алгоритмы, которые сначала строят свечи с субмилисекундными задержками! Никогда бы не подумал…
avatar

Читайте на SMART-LAB:
Фото
На чьих обязательствах держится рынок облигаций
Российский долговой рынок вырос на 20% за прошлый год. Доля облигаций в портфелях частных инвесторов увеличилась до максимума с конца 2020...
Фото
«Ренессанс страхование» запускает сервис проверки юридической чистоты сделок с недвижимостью с гарантией выплаты компенсации
«Ренессанс страхование» вывел на рынок сервис, объединяющий юридическую экспертизу документов при покупке недвижимости и страховую защиту...
Фото
Женский инвестпортфель. Как россиянки зарабатывают на фондовом рынке в 2026 году?
Главное: В 2025 году самыми успешными инвесторами на российском рынке стали женщины По сравнению с мужчинами женщины обычно более...
Фото
Нефтяной срез: выпуск №8. Перекрытие Ормузского пролива + рост цен на нефть против слабых отчетов за 4-й квартал 2025 и 1-й квартал 2026? Ищем лучших в все еще слабом секторе
Продолжаю выпускать рубрику — Нефтяной срез.  Цель: отслеживать важные бенчмарки в нефтяной отрасли, чтобы понимать куда дует ветер.  Прошлый пост:...

теги блога Архипов Владимир

....все тэги



UPDONW
Новый дизайн