Kim Lawlor
All Case Studies
Trading SystemsInteraction DesignFintechDesign Systems

Trade Experience / Order Entry System

Five connected trading surfaces designed from the ground up: the account you trade from, two ways to build an order, and the two places you live with it afterwards.

Scope

Five surfaces, one workflow.

The ticket is the part people picture, but it is one step. A trader picks an account, builds an order either one at a time or a dozen at once, watches what happens to it, and lives with the position that comes out the other end. I designed each of these surfaces and the decisions that had to hold across them.

Account contextAccountsWhich account, what it holds, what it can afford. Every surface below opens with it, and a paper account has to behave like a real one without pretending to be one.
Trade TicketOne order at a time, with room for the instrument to get complicated. Equity, options, then multi-leg strategies priced as a single instruction.
Line TraderThe opposite shape. A grid where each row is a whole order ticket, so many simple orders are built at once, selected in groups and sent together. It has its own case study.
OrdersWhat was sent and what it is doing now. Working, partly filled, cancelled, and for a multi-leg order, what each leg did on its own.
PositionsWhat you are left holding. Shares, single options and whole strategies in one table, each needing different actions.

Two entry points, not a queue: the ticket and the panel are alternatives, chosen by whether the hard part is the instrument or the volume. Both land in the same Orders list.

The problem

The product needed a trading experience that could meet institutional expectations, but trading was never one screen. The account, ticket, Orders and Positions are the same transaction at different moments, so designing them independently would create conflicting rules and states. The real problem was making the system agree across equity, options and multi-leg instruments.

Outcome

Shipped as one connected system across QSWeb, and helped secure new bank clients.

Role
Senior Product Designer
Year
2021–2026
Status
Live
What I owned
Product definitionUX architectureInteraction designUI designDesign systemsResponsive designDeveloper handoffDesign QA

Designed with the product teams that owned each surface, and carried through build and design QA with engineering and QA.

System at a glance
5
Connected surfaces
Accounts, the trade ticket, Line Trader, orders and positions.
3
Instrument types in one ticket
Equity, options, and multi-leg strategies priced as one instruction.
8
Legs a single order can carry
A rolled Iron Condor closes four contracts and opens four more.
7
Responsive snap points
Six drawn up front, and one the build found between 1024 and 1280.
Key decisions
  1. 01One ticket, however complex the instrument
  2. 02Keep Orders flat, even when the order has a tree inside it
  3. 03Four kinds of holding in one table, without pretending they are the same
01

One ticket, however complex the instrument

An equity order is a symbol and a quantity. An options order adds an expiry, a strike and a side. A multi-leg strategy is up to eight contracts priced together and sent as one instruction. The ticket absorbs all three rather than forking into separate experiences: one structure, the same fields in the same order, growing as the instrument grows. Fast trade and Line Trader are built on the same model.

Progression, steps 1 to 3

The ticket grew as the instruments did.

It did not start at eight legs. Each step kept the shape of the one before it and added only what the new instrument genuinely needs, because a trader moving from shares to options should not have to learn a new screen.

01Equity
SideSymbolQty
BuyMSFT100
Limit$42,000.00
  • Side, symbol, quantity
  • Order type and duration
  • One estimated cost
02Options
SideContractQty
Buy To OpenMSFT 20 JUN 430 C2
Limit$1,240.00
  • Expiry, strike and call or put
  • Open or close, not just buy or sell
  • A quote panel worth the space it takes
03Multi-leg
SideContractQty
Sell To OpenMSFT 20 JUN 430 C2
Buy To OpenMSFT 20 JUN 445 C2
Bear Call$96.00 credit
  • Two legs, one instruction
  • A strategy above the legs that drives them
  • One net price, which can be a credit

Step three is where the design cost sits. Up to that point a ticket priced one thing. A multi-leg order prices the whole set, so the total stops being a sum of rows and starts being the thing the trader is deciding on. Step four is the same ticket taken as far as it goes.

Progression, step 4

Eight legs, one order.

The far end of the same ticket. Rolling an Iron Condor means closing four open contracts and opening four replacements, so the ticket has to hold all eight, price them together, and submit them as a single instruction. Nothing new is introduced here: it is step three at the size it has to survive.

Strategy:Iron CondorAction:OpenCloseRoll
OptionOrder Type:Buy To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:430.00Type:CallPut
OptionOrder Type:Sell To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:445.00Type:CallPut
OptionOrder Type:Sell To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:470.00Type:CallPut
OptionOrder Type:Buy To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:485.00Type:CallPut
OptionOrder Type:Buy To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:420.00Type:CallPut
OptionOrder Type:Sell To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:435.00Type:CallPut
OptionOrder Type:Sell To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:480.00Type:CallPut
OptionOrder Type:Buy To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:495.00Type:CallPut
Strategy:Iron CondorAction:OpenCloseRoll
Option
Order Type:Buy To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:430.00Type:CallPut
Option
Order Type:Sell To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:445.00Type:CallPut
Option
Order Type:Buy To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:420.00Type:CallPut

+5 more legs

Estimated total$145.00Credit
Trade-off

A ticket sized for its hardest case carries structure a plain equity order never needs. The alternative was a set of tickets that each had to be learned, and maintained, on its own.

02

Keep Orders flat, even when the order has a tree inside it

Orders is a list you scan. A multi-leg order breaks that: it is a parent with up to eight legs, and those legs carry real meaning. Turning Orders into a tree would charge every ordinary order for the few that need the structure. Instead a multi-leg order expands in place into its legs, with a narrower column set, because a leg is not a small order and should not be dressed as one.

Orders

A flat list with a tree inside it.

Orders is a long scannable table and almost every row is one order. A multi-leg order is not. It is one thing the trader submitted and several things the market answered separately, and both facts have to be true in the same list.

Trade Account, MarginWorking6 ordersFilled today11 orders
ActionSymbolTypeStatusQtyOutstandingLastOrder id
BuyNVDAMarketWorking200200$182.40B181207
MultiMSFT 21 MAR 370 / 357 Bear CallLimitPartly filled53$2.90R1Q1912
LegSideContractFilledLastOrder id
1stBuyMSFT 21 MAR 370.00 CALL5 of 5$12.00R1Q1912
2ndSellMSFT 21 MAR 357.00 CALL2 of 5$9.10R1Q1912
SellTSLALimitFilled50$247.50R191215
The problemLegs are not small orders

Giving each leg a full row would have doubled the list and implied things that are not true. A leg has no status, order type or order id of its own. It only has a fill.

The decisionExpand in place, with fewer columns

The parent keeps the order columns. The legs get their own header and only the four that mean anything to a leg, aligned under the parent's so the fills read down one column.

The costTwo column sets to maintain

A second header inside a table is a thing to keep aligned forever. It buys a list that still scans in one column while telling the truth about partial fills.

Trade-off

Leg detail sits one interaction away rather than in view at rest. The list stays scannable, which is the thing Orders exists to do.

03

Four kinds of holding in one table, without pretending they are the same

Positions carries shares, single options, covered positions and spreads. They share a surface but not a grammar: what you can do to a covered call is not what you can do to a hundred shares. Positions groups by what the holding is, so each kind keeps its own identity and its own actions instead of being flattened into one generic row.

Positions

Four kinds of holding, one table.

Shares, a single option, a covered call and a two leg spread are all positions and none of them are the same thing. They are named differently and the sensible next action is different for each, so the table groups them and lets each group keep its own identity.

GroupHow the row is identifiedWhat you can do with it
Long securitiesShares
MSFTA symbol is the whole identity.
BuySellYou can add to it or reduce it.
Long calls and putsOne contract
MSFT 21 MAR 425.00 CALLExpiry, strike and type all matter.
CopyCloseCopy reuses the terms. Close exits.
Covered calls and putsContract against shares
MSFT 28 MAR 440 Covered CallThe strategy names what it is doing.
CopyCloseTied to a holding, so it is never alone.
Spreads and combosTwo contracts, one position
MSFT 21 MAR 400 / 405 Bear CallTwo strikes, one line.
CopyCloseYou cannot buy more of it, only close it.

A single flat list would have needed one generic row that described none of them well and offered actions that did not always apply. Grouping costs a heading per section and buys rows that say what they actually are.

Trade-off

One uniform table would have been less to build and less to learn. It would also have offered the wrong actions on the wrong holdings.

Shipped

A trading system rather than a set of screens.

Delivered a complete set of trade tools, including tickets, modules, and contextual actions integrated into QSWeb. The system was used to support institutional requirements and helped secure new bank clients, including BMO and Scotia. Established a scalable design system and interaction model that continues to be reused across products and platforms.

Across devices

The same order, wherever it is opened.

One instruction, the same fields in the same order. On a trading desk a leg is a line. On a phone it is a block. The layout re-forms; the model underneath does not.

Strategy:Iron CondorAction:OpenCloseRoll
OptionOrder Type:Buy To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:430.00Type:CallPut
OptionOrder Type:Sell To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:445.00Type:CallPut
OptionOrder Type:Sell To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:470.00Type:CallPut
OptionOrder Type:Buy To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:485.00Type:CallPut
OptionOrder Type:Buy To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:420.00Type:CallPut
Estimated Total:$145.00CreditPreview
1280–1920Every field on one line, scanned left to right.
Strategy:Iron CondorAction:OpenCloseRoll
Option
Order Type:Buy To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:430.00Type:CallPut
Option
Order Type:Sell To CloseQuantity:−2+Expiry Date:21 Mar 2025Strike Price:445.00Type:CallPut
Option
Order Type:Buy To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:420.00Type:CallPut

+5 more legs

Estimated Total:$145.00CreditPreview
390The leg becomes its own block, its action lifted into the header.
Deep dives

More detail behind the decisions above.

Why Roll was the hard case

Every other ticket action resolves to one direction applied to everything. Roll is the single exception, and that exception is what forced the ticket action and the leg order types to stay answerable to each other.

Interaction logic

Roll is two positions in one order.

Open and Close apply a single direction across every leg. Roll is the only action that holds both at once, so the ticket-level action and each leg's own order type have to stay reconciled in both directions.

Changing one leg updates the ticket action; changing the ticket action rewrites every leg. Neither can drift out of step with the other.

Strategy:Iron CondorAction:OpenCloseRoll
Existing position4 legs close
Buy To CloseSell To Close
Replacement position4 legs open
Buy To OpenSell To Open

Two ways to build an order

The ticket is one way in. The multi-order panel is the other, built around scope so an incomplete order cannot be selected and a bulk action can never act on something that will fail. It has since grown into its own module.

The order still has a life after submission

Ticket work usually stops at submit. What comes after it is where a trader finds out whether the order did what they meant, so the confirmed state had to keep reporting rather than just congratulating.

Review to confirmation

Designed through to done.

Eight legs collapse into one decision: what the order does, what it costs, and whether to send it. Submitting resolves into a confirmed state that still reports what was placed.

Order previewMSFT
StrategyIron Condor
ActionRoll
Legs8 (4 closing, 4 opening)
Order typeLimit, good through 20 Jun 2025
Estimated total$145.00Credit
ModifySubmit
Order submitted
Reference584117203
Legs accepted8 of 8
Net credit$145.00 USD
Start new order

Six widths, and the one the build found

Every surface was drawn at six widths from 390 to 1920. The build surfaced a seventh between 1024 and 1280, which was applied across every surface rather than patched into the one that exposed it.

Responsive

One leg, three layouts.

The same leg, carrying the same six decisions, re-forms as width is lost. Only the layout changes, never the order of the fields.

Desktop1920–1280

Every field on one line, scanned left to right.

OptionOrder Type:Sell To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:435.00Type:CallPut
Compact1024–768

The row wraps to a second line. Field order is unchanged and controls keep full size.

OptionOrder Type:Sell To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:435.00Type:CallPut
Mobile568–390

The leg becomes its own block, with the row action moved to its header.

Option
Order Type:Sell To OpenQuantity:−2+Expiry Date:20 Jun 2025Strike Price:435.00Type:CallPut

Implementation

The breakpoint that came from the build.

The ladder started as the usual set. It gained one more once the tickets were being built, and that one came from a developer, not from a design review.

01Early direction

Six widths from 390 to 1920, each a layout I had drawn and signed off. The gap between 1024 and 1280 looked like a safe stretch of the same design.

02What the build found

It was not. In that gap the ticket body and the quote panel were both above their minimums individually and too wide together, so real windows landed in a range no drawing covered.

03What changed

A seventh snap point at 1192, drawn for every surface rather than patched into one. It is in the equity ticket, the options ticket and the holdings table, because a breakpoint that only some screens know about is worse than the gap it fixed.

Window at 1100
Ticket bodymin 760
Quote panelmin 380
BeforeEach is above its own minimum. Together they need 1140 and the panel is pushed past the edge.
Window at 1100
Ticket bodyfull width
Quote panelmoves under the ticket
After 1192Below the new snap point the panel stops being a column. Nothing is squeezed and nothing is cut off.
The highlighted rung is the one that was added after the designs were already being built. Every surface got it, not just the ticket that found it.

The same pass produced the quote panel that collapses below 568 rather than shrinking, for the same reason: two things that each still fit are not the same as two things that fit together.

The signals that had to hold everywhere

Two colours for buy and sell. Status as a chip in the same column on every surface. A link mark for a row that is part of something larger. Themes standardized to Dark, Light and CVD across all four products rather than decided per screen.

System

Decided once, then used everywhere.

These surfaces were built over about a year, in different sprints, sometimes for different client builds. Four decisions had to mean the same thing in all of them, because a trader moving between screens should not have to relearn what a colour or a mark is telling them.

Buy and sell keep the same two colours
BuySellBuy To OpenSell To Close
The wording gets longer as instruments get more specific. The colour stays fixed, so the direction of a row reads before the words do.
One mark for a row that is part of something
Leg 2 of 8Bear Call
Used in Orders and Positions. The mark says this row is not alone, and the strategy chip names the thing it belongs to.
Status is a chip in the same column
DraftSubmittedWorkingRejected
Before submission the column carries whether a row is ready. After it, the same column carries what the market is doing with it.
Every surface opens with the account
Individual AccountBuying power$412,905.40
Same selector, same balance strip, same behaviour when the figures outgrow the width. Which account, and what it can afford, before anything else is read.

Related Projects