Requirements
- Strong software engineering skills in a compiled, statically typed language (Haskell, Java, C++, Scala, OCaml, Rust)
- Comfort with concurrent and multithreaded systems
- Experience designing systems where correctness and latency both matter
- Ability to reason about failure modes, edge cases, and state management
- Clear written communication: design documents, technical tradeoffs, and architectural decisions
- Own services end-to-end from design through production, including observability and operational runbooks
- Debug across application, network, and system layers without waiting for someone else to narrow the problem
- Make sound technical decisions independently in ambiguous situations
- Operate with the rigor expected when systems handle real capital in regulated markets
Nice to Have
- Trading systems path: Experience building or operating order execution, risk, margin, settlement, or market data systems, in any language. Understanding of exchange or clearing workflows, position management, or collateral systems.
- Haskell path: Production Haskell experience or deep familiarity with typed functional programming (strong type systems, effect management, property-based testing). Willingness to learn trading and clearing domain concepts.
- Linux systems proficiency: debugging, profiling, deployment
- Comfort with networked systems: TCP, binary protocols, serialization formats
- Experience with relational databases (PostgreSQL preferred)
- Familiarity with market protocols (FIX, binary protocols) or message systems (Kafka) is a plus
- Experience with matching engine or OMS internals, real-time risk and margin systems, high-throughput persistence and serialization, or reconciliation and surveillance pipelines is valuable but not required.