Блог им. 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 — инкрементальные вычисления для финансовых приложений. Пересчёт рисков за миллисекунды вместо минут.


Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.

458
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:
Фото
Страховой рынок по итогам 2026 года может увеличиться на 5–7% г/г и достигнуть 4,2 трлн руб.
Хотели поделиться свежим обзором «Эксперт РА». По мнению аналитиков, сборы российских страховых компаний по итогам 2026 года могут увеличиться...
Фото
✍️ Про внеочередное собрание и годовое заседание общего собрания акционеров Positive Technologies
Друзья, подводим итоги внеочередного собрания акционеров, которое состоялось 6 мая, и рассказываем про годовое собрание, которое пройдет 19 мая....
Фото
📊 Выручка МГКЛ — 18 млрд ₽ за 4 месяца 2026 года (х3,4 г/г)
Группа «МГКЛ» объявила предварительные операционные результаты за январь–апрель 2026 года. ✨ По итогам первых четырёх месяцев: 💰...
Фото
Сети. Кто сейчас самый дешевый? Сводный пост по сетевым компаниям по отчетам РСБУ за Q1 26г.
Введение Россети Центр Россети Ленэнерго Россети Московский регион Россети Волга Сводные таблицы Введение Все...

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

....все тэги



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