EM — Accra, GH
Work2026

Morgan Stanley · Oct 2024 – Jan 2026

Two hundred and fifty ways to constrain a portfolio

Portfolio optimisation for fixed income, used by credit trading desks. The problem is not rendering a form — it is that the form is a matrix of more than two hundred and fifty interdependent constraints, and a trader has to be able to reason about it under time pressure.

Role
Software Engineer
Stack
Angular · TypeScript · NgRx · RxJS · WebSockets · Spring Boot

The shape of it

CONSTRAINT SURFACE — 250+ FIELDSdurationsectorratingONE EDITfive downstream constraints re-evaluate
01

The constraint surface

250+ configurable fields, mobile-first and responsive, where the difficulty is legibility rather than layout. Fields relate to one another, and a change in one corner of the matrix has consequences elsewhere; the interface has to make those consequences visible without turning into a spreadsheet.

02

Market state as a first-class concern

Real-time status indicators across five major trading venues with regional tracking for New York, London and Hong Kong, carried over WebSockets. The purpose is narrow and important: prevent trades failing because a venue was down and nobody said so.

03

Basket lifecycle

A complete Basket Suite — ticker setup, portfolio tickerisation, interactive comparison charts, and a centralised dashboard — covering the whole lifecycle rather than a single step of it. NgRx held state predictable across several integrated codebases where the data flows are genuinely complex.

04

Tooling for the people behind the desk

An XML diff viewer with collapsible tree components and syntax highlighting, built for the support team, which removed hours of manual database searching from their day. Compliance and code-quality work ran alongside: dependency updates, linting standards, and a measurable reduction in PR review cycles across three codebases.

250+

constraint fields

5

trading venues

3

codebases

>80%

test coverage

Next

A save that stopped losing work