Banking software · Rust in progress

Rishu Ranjan

10 years · .NET banking systems · React

Rishu brings ten years of software engineering experience, including banking work with .NET and frontend work with React. His Rust order-book project turns familiar financial concepts into a concrete systems design problem.

The page presents the intended system, with implementation status kept explicit: one FIFO price level exists today; the complete order book and matching path are planned next.

Career context

A decade across enterprise software and banking systems

Rishu's career has moved from .NET development and production support into senior engineering, R&D, and full-stack banking work. Across those roles, he has built features, handled live-system issues, supported junior developers, and modernized long-running applications.

  1. Trading systems

    Contributed to front-office FX derivatives software, including performance improvements, deployment workflows, environment setup, and issue resolution.

  2. Banking modernization

    Delivered two greenfield applications and helped migrate five legacy systems using .NET 8, React, Kafka, and EF Core.

  3. Architecture and compliance

    Applied Domain-Driven Design and Clean Architecture while contributing to a global compliance program.

  4. Earlier engineering work

    Worked across .NET, SQL, production support, R&D, multi-factor authentication, chatbot integration, and developer mentoring.

Why an order book

Make familiar banking concepts visible in Rust

Rishu's day-to-day background is in banking software, with years of experience across .NET systems and React applications. The order book shifts that experience toward a smaller, lower-level problem where data layout, ownership, and ordering rules are part of the application design.

The goal is a portfolio artifact that makes the transition concrete. Readers can follow how one order moves from input, into a price level, through matching, and into a result. The project has started with the queue at one price before expanding to the full book.

10 years
Software engineering
.NET
Banking systems experience
React
Frontend experience
In progress
Rust order book
The design challenge

Preserve price and time priority in one model

An order book needs two ordering rules at once: choose the best price first, then serve orders at that price in arrival order. The data model must make both rules clear as orders enter, match, and leave the book.

Rust ownership makes those transitions concrete. Price indexes own levels; each level owns its queue of orders. That gives the matching loop a tractable path through the book.

Target architecture · planned

From incoming order to trade result

This is the intended design shape. It describes project scope, not features already shipped.

  1. 01

    Order input

    Use repeatable CSV or test inputs to exercise the matching rules.

  2. 02

    Price index

    Organize bid and ask levels by price for best-price selection.

  3. 03

    FIFO level

    Queue orders at each price with VecDeque and preserve arrival order.

  4. 04

    Match and cancel

    Cross eligible orders, record match results, and handle cancellation.

Implemented so far

FIFO queue at one price

The current Level uses VecDeque for orders at a single price. The bid and ask indexes, full matching loop, cancellation, benchmarks, and concurrency work remain planned.

Correctness plan · future work

Prove the ordering rules before measuring speed

The order book will be easier to reason about if each rule has a small, repeatable example. A deterministic test set can cover selecting the best price, keeping FIFO order at equal prices, matching only when prices cross, leaving non-crossing orders in the book, and removing a cancelled order.

Once these behaviors are defined, benchmarks can measure the actual implementation. Concurrency is a later question: first establish whether the book needs parallel work at all, then compare the added coordination cost against a simple single-owner matching loop.

  1. Best price

    Select the highest eligible bid or lowest eligible ask first.

  2. FIFO

    Preserve arrival order among orders at the same price.

  3. Crossing

    Match only when incoming and resting prices satisfy the crossing rule.

  4. Cancel

    Remove the selected order without disturbing its neighbors.

[ Data model ]

Separate price priority from time priority

A price-ordered map can select the best bid or ask, while a VecDeque inside each level preserves FIFO order for orders at that price. Each structure handles one part of price-time priority.

The FIFO level is implemented. The full bid/ask indexes and their interaction with matching are still part of the target design, so the page separates the current data structure from the planned order book. A BTreeMap is a natural fit for ordered prices, while VecDeque keeps arrival order local to one price.

[ Matching rules ]

Make each transition observable and repeatable

The next system behavior is to match an incoming order against the best opposite price, retain FIFO order at each level, and represent cancellations explicitly.

Repeatable input cases can establish correctness before optimization: best-price selection, FIFO within a level, a crossing order, a non-crossing order, and cancellation. Benchmarks and concurrency are later exploration, not current results.

The journey

One clear path through the build

Drag to explore · Select a milestone to read the full story

More client journeys

See another path into Rust

Ready to Land a $80k+ Rust Job in the US or Europe?