← Back to Projects

Project

Real-Time Risk Engine

Pre-trade risk evaluation with position limits, circuit breakers, fat-finger detection. gRPC, sub-µs latency.

  • Go
  • gRPC
  • Circuit Breakers

Problem

Trading venues need pre-trade risk checks under 1 microsecond. Off-the-shelf solutions cost millions or add unacceptable latency.

Solution

Go-based risk engine with in-memory state, ordered rule evaluation, and three-state circuit breakers per account. Fail-closed semantics.

Architecture

gRPC service. Rules: validation → duplicate → circuit breaker → fat finger → notional → position. First rejection stops.

Implementation

func (cb *CircuitBreaker) Evaluate(order *Order) *RejectReason {
    switch cb.states[order.AccountID] {
    case CircuitClosed:
        return nil
    case CircuitOpen:
        if time.Since(cb.openSince[order.AccountID]) > cb.maxOpenDuration {
            cb.states[order.AccountID] = CircuitHalfOpen
            return nil
        }
        return &RejectReason{Code: RejectCodeCircuitBreakerOpen}
    }
    return nil
}

Vision

Open-source risk engine. Production-grade, sub-microsecond, formally verified risk invariants.

View on GitHub