Skip to content
Eugene Palchukovsky edited this page May 21, 2026 · 14 revisions

OpenPit

OpenPit is an embeddable pre-trade risk toolkit for trading systems. It evaluates orders before they leave the host application, lets the caller commit or roll back reserved state explicitly, and feeds realized outcomes back into cumulative controls.

Versioning Policy (Pre‑1.0)

Before the 1.0 release OpenPit follows a relaxed Semantic Versioning:

  • PATCH releases carry bug fixes and small internal corrections.
  • MINOR releases may introduce new features and may also change the public interface.

Breaking API changes can appear in minor releases before 1.0. Pick version constraints that tolerate API evolution during the pre-stable phase.

Examples

End-to-end runnable scenarios live in the examples directory of the main repository.

Current SDKs

Core Flow

  1. Build an engine once during application startup.
  2. Run the start stage for each order.
  3. If the start stage passes, execute request.
  4. If the main stage passes, finalize reservation (commit or rollback).
  5. Feed realized outcomes back through execution report.

What OpenPit Does Not Own

  • Order routing and venue connectivity
  • Persistence of balances, positions, or reservations
  • Market data normalization
  • P&L calculation from raw fills
  • Concurrency coordination around one shared engine instance

Wiki Map

  • Getting Started: Install the SDK and run a first end-to-end flow
  • Pre-trade Pipeline: Lifecycle, result handling, and finalization rules
  • Account Adjustments: Non-trade (NTO) adjustment model, atomic batch validation, and policy hooks
  • Policies: Start-stage and main-stage behavior, built-ins, and custom policies
  • Policy API: Custom policy hooks, language interfaces, and rollback patterns
  • Reject Codes: Standard business reject codes and their meanings
  • Threading Contract: Single-threaded-per-call execution, thread-portable sequential usage, and user data ownership contract
  • Storage: Built-in synchronization-aware key-value storage for custom policy state - selectable no-sync, full-sync, and caller-sharded policies
  • Domain Types: Public value types, meanings, sign conventions, and leverage range
  • Custom Rust Types: Manual capability traits and derive-based wrapper composition
  • Custom Go Types: Go ClientEngine and typed model composition
  • Architecture: Public integration model and current SDK surfaces

Clone this wiki locally