Об этом проекте

OpenPit — это рабочее пространство для встраиваемых компонентов предторгового риск-контроля, предназначенных для алгоритмических и электронных торговых систем. Прежде чем ордер достигнет торговой площадки, он проходит через детерминированный риск-конвейер, который может отклонить запросы, зарезервировать состояние и позже учесть результаты постторговой обработки в той же системе контроля. Движок работает в памяти и является детерминированным; он предназначен для встраивания в более крупную торговую систему, а не для её замены. Он предоставляет ряд встроенных политик, включая проверки достаточности средств для спотовых операций, валидацию ордеров, ограничение частоты, лимиты размера ордера (защита от «толстых пальцев») и kill switch по P&L. Пользовательские политики можно реализовать на Go, Python, JavaScript, C++ или Rust. Ключевые возможности включают группы счетов для ветвления политик, блокировку счетов, drop copy для записи исполненных ордеров, корректировки счетов и сверку баланса, поддержку рыночных данных, динамическую перенастройку активных политик, а также асинхронный движок с очередями на уровне счетов в Go и C++. Контракты хранения и потоковой обработки выбираются один раз при создании движка. OpenPit предлагает SDK для нескольких языков: Rust (крейт `openpit`), Go (модуль `go.openpit.dev/openpit`), Python (пакет `openpit`), JavaScript/TypeScript (пакет `@openpit/engine`, сборка WebAssembly), C++ (header-only пакет CMake для C++17) и C (через C ABI). Все SDK предоставляют один и тот же конвейер в идиомах соответствующего языка. До релиза 1.0 OpenPit следует ослабленному семантическому версионированию, при котором минорные релизы могут вносить ломающие изменения API. Проект включает подробную документацию в своей вики, сгенерированные справочники API и сквозные примеры. Поддерживаются сборка и тестирование в POSIX-системах и Windows, с подробными инструкциями для каждой языковой привязки.