One engine.
Backtest, paper, live.
Manja is a personal algorithmic trading desk for Indian markets. An event-sourced Rust engine runs research and production through the same loop — broker-agnostic by design, compliance-gated by default.
This is the desk. Touch it.
A working slice of the live terminal — dummy portfolio, dummy strategies, dummy trades, dummy market. The real desk runs behind sign-in.
| Date | Symbol | Action | Qty | Price |
|---|
| Date | Symbol | Held | P/L | Return |
|---|
Research is production.
The engine doesn't know which mode it's in. Only the adapters change.
An engine, not a notebook.
One engine. Backtest and live are the same code.
For a backtest it reads historical bars and fills orders against a simulator. To go live you point it at a live feed and a real broker. The loop between those two ends never changes. One feed reaches every strategy at once, and their orders pass the risk manager before the broker sees them.
Restart-safe by design
Every order, fill, and risk change is written to an append-only log. If the process dies, it replays the log and comes back in the same state it was in. Memory holds nothing you can't rebuild.
Costs priced in
Every simulated fill is charged brokerage, STT, exchange fees, and stamp duty. A backtest that skips these will happily show you a profit that costs would have wiped out.
Risk & sizing in the loop
Position sizes scale with volatility and the cash a strategy actually has. The kill switch and hard limits live inside the engine, so a strategy can stop itself the moment it breaches. No dashboard in the loop.
Compliance-ready
Order rate is capped in code at the regulatory limit, right where orders leave the system. Compliance is built into that boundary, not bolted on afterward.
Running in production
Strategies trade forward every session on live market data. It's the same engine that ran the backtests, now in production.
The desk letter
One mail when something ships — a strategy goes live, a phase lands, a post-mortem gets written. No noise.