Distributed systems · Financial simulation · 2026
Live risk numbers need a visible chain of trust.
Argus is a local educational simulator for a multi-currency equity risk platform. It follows simulated market data and trades through an event-driven system, calculates portfolio state, and exposes freshness, failure, and replay in the browser.
- Project
- Argus Risk
- Role
- Independent system architecture, backend, simulation, observability, and dashboard engineering
- Stack
- .NET 8 · Kafka / Redpanda · PostgreSQL / Marten · SignalR · Next.js

- 4
- .NET services
- 1 Hz
- risk snapshots
- 5
- position events
- 1–60×
- replay speed
01 / Follow the event
Follow a trade from event to screen.
Simulated prices, FX rates, and trades enter separate Kafka topics. The risk engine consumes them, projects position state, publishes snapshots, and persists the history needed for replay. The API then pushes each snapshot to the Next.js dashboard through SignalR.
The services communicate through events instead of a chain of direct calls. That separation makes the journey visible and lets each part be restarted or inspected independently in the local Docker environment.
- Market data
- Trade events
- Risk engine
- SignalR dashboard

02 / Preserve the why
Rebuild position state from the events that changed it.
Position changes are appended as immutable Marten events: opened, increased, decreased, reversed, or closed. Replaying those events reconstructs the position at a point in time and preserves the path that produced it.
FIFO cost basis and the risk calculations stay in pure functions with no infrastructure dependencies. The same inputs produce the same result, which makes correctness testable and replay meaningful.
- Append-only history
- FIFO cost basis
- Deterministic calculations
- Point-in-time state
03 / Design for doubt
Show when a live number is stale.
The interface pairs portfolio values with connection state, price freshness, alerts, and reconciliation. When a source stalls, the useful question is no longer only ‘what is the value?’ but ‘how old is it, what failed, and can the system recover?’
Replay, checksums, metrics, traces, and degraded states are part of the product story. Argus is deliberately a simulator, but it explores the operational questions that make real-time software believable.
- Staleness
- Reconciliation
- Circuit breaking
- Observability
What stayed with me