Northbeam Markets — product requirements
Northbeam Markets is a brokerage over a deterministic simulated market of 34 fictional tickers and the NB 100 index. Investors keep watchlists, study candlestick symbol pages, place market, limit, stop and stop-limit orders behind a trade-PIN step-up, follow open and partially filled orders, review the portfolio and FIFO realised profit, and set price alerts. Market time only moves with the Market time control.
Problem. Investors need to trust every quote, order, fill and profit figure: orders must never fill at a worse price than requested, cash reserved by working orders must not be spent twice, and realised profit must follow the oldest purchase lots.
Users
- Active investor — Place orders quickly, see exactly what they will cost and follow fills as the market moves.
- Portfolio watcher — Track watchlists, positions, allocation and alerts without placing trades.
- Tax-minded investor — Read realised profit and loss by lot, computed first-in first-out.
Goals
- Orders fill only at prices their type and limit allow.
- Buying power always equals cash minus cash reserved by working orders.
- Realised profit and loss is computed per FIFO lot and totals reconcile.
- Trading is protected by a trade PIN that locks after repeated failures.
Out of scope
- Real market data
- Real brokerage settlement
- Native mobile apps
Contents
Sign-in and trade PIN
Account sign-in and the PIN step-up required before an order is placed.
- Heading "Watchlists"; navigation lists Watchlists, Portfolio, Orders (with the count of open orders, 4 for the seeded account), Activity, Alerts
- Topbar shows "Mon 19 Oct 2026 · 10:00", "Open" and "Buying power" $4,526.70
- Empty fields: "Enter your username and password"
- Wrong credentials: "Invalid username or password" and the sign-in page stays
- "Place order" opens "Confirm trade PIN"
- Empty PIN: "Enter your 6-digit trade PIN"
- A correct PIN closes the dialog and the toast starts with "Order ORD-<n> placed"
- First wrong PIN: "Incorrect trade PIN. 2 attempts left"; second: "Incorrect trade PIN. 1 attempt left"
- Third: "Trade PIN locked after 3 incorrect attempts. Reset the demo data to unlock."
Watchlists
Named lists of tickers with live quotes.
- NB 100 index: 4,800.00, change -10.56 (-0.22%)
- Core holdings in order: NBRX $142.30 -4.10%, ORIN $88.75 +0.26%, KELP $58.40 +0.05%, HALC $76.10 +1.56%, SOLR $26.45 -4.72%, DRVN $109.90 +0.71%
- NBRX 52-week range $127.17 to $217.29
- Momentum rows: QUVA $214.60 +1.73%, TELM $63.20 +0.83%, ARCS $176.40 -0.34%, LITH $38.60 +0.89%, MRIN $61.45 -1.00%
- Direction is never shown by colour alone
- Adding QUVA appends a seventh row at $214.60 +1.73%
- Adding it again shows an error and the list keeps seven rows
- Empty input: "Enter a ticker symbol"
- Removing a row shows the toast "<SYM> removed from Core holdings"
- The first row’s "Move up" is disabled
- After navigating away and back the order and membership are unchanged
Symbol page and chart
Quote, statistics, order book and candlestick chart.
- NBRX: "Northbeam Robotics", $142.30, -$6.08, -4.10%, "Bid $142.27 · Ask $142.33", Technology, Open, 40 shares held
- NBRX: Open $144.05, Previous close $148.38, Day range $142.06 – $144.09, Volume 322,143, Average volume 4.20M, Market cap $91.07B, P/E ratio 34.5, Dividend yield —
- Best bid $142.27 (200), $142.26 (1,900), $142.25 (2,800); best ask $142.33 (1,300), $142.34 (1,500)
- Ten bid and ten ask levels
- The selected range shows as selected; returning to 1D restores intraday candles
- Both SMA toggles show pressed and two overlay lines are drawn
- Last NBRX 1D candle: O $142.42 H $142.46 L $142.26 C $142.30, Vol 13,586
Order ticket
Entering, validating and placing orders.
- 5 NBRX: Estimated price (ask) $142.33, cost $711.65, commission $0.65, total $712.30
- Review shows Buying power after $3,814.40; toast "Order ORD-1005 placed: Buy 5 NBRX"
- Topbar buying power $3,814.40; History shows ORD-1005 Filled; the NBRX position is 45 shares
- 40 QUVA: "Insufficient buying power: this order needs $8,586.65 but you have $4,526.70 available"; no review dialog
- Seeded account: Cash $11,847.35, $7,320.65 reserved by open orders, Buying power $4,526.70
- Limit $142.00 against an ask of $142.33 (10 NBRX): estimated cost $1,420.00, total $1,420.65; status Working with nothing filled
- A limit of $142.30 against the same ask also stays Working and does not fill at $142.33
- The order remains Working after the clock advances while the ask stays above the limit
- Empty or fractional quantity: "Enter a whole number of shares"
- Quantity 0: "Quantity must be a whole number between 1 and 10,000"
- Missing limit: "Enter a limit price like 142.50"; missing stop: "Enter a stop price like 138.00"
- Dollar amount below $1: "Minimum dollar order is $1.00"
- $250 of NBRX: Estimated shares 1.7564, cost $250.00, commission $0.65, total $250.65; Buying power after $4,276.05
- Market: Quantity and Order by only; Limit adds Limit price; Stop adds Stop price; Stop limit shows both
- Sell uses the labels "Estimated proceeds" and "Estimated net proceeds"
- Portfolio Margin card shows "Day trades (5 days)" as "2 of 3" before and "3 of 3" after a same-day buy and sell
- Warning: "Pattern day trader warning: you have made 3 day trades in the last 5 trading days. Another day trade may restrict your account."
- "Place order" stays disabled until "I understand the pattern day trader warning" is ticked
Open orders
Working orders, fills, cancel and modify.
- Open: ORD-1004 ORIN Sell Limit $95.00 Working; ORD-1003 HALC Buy Limit $77.00 Partially filled ("40 of 100"); ORD-1002 NBRX Sell Stop $120.00 Working; ORD-1001 KELP Buy Limit $54.00 Working
- History: ORD-999 ORIN Buy Market Filled, ORD-998 TELM Buy Limit Cancelled, ORD-997 SOLR Buy Market Filled
- +1m: clock 10:01, toast "Bought 40 HALC at $76.13 — partial fill", order shows "80 of 100"
- +1m again: toast "Bought 20 HALC at $76.23 — order filled"; the order leaves Open and the Orders count becomes 3
- History shows ORD-1003 Filled "100 of 100"
- Dialog "Cancel order?" with "Keep order" and "Cancel order"
- Toast "Order ORD-1001 cancelled"; three open orders remain
- Empty limit: "Enter a limit price like 54.00"
- Saving 96.00 on ORD-1004 shows "Order ORD-1004 modified" and the order stays Working at $96.00
- NBRX sell stop at $120.00 stays Working while NBRX trades near $142 and four open orders remain after a market tick
Portfolio
Equity, positions, margin and allocation.
- Total equity $40,496.45, Day change -$346.71 (-1.20%), Unrealised P/L +$1,288.39 (+4.71%), Cash $11,847.35, Buying power $4,526.70 ("$7,320.65 reserved by open orders")
- KELP 100 avg $55.10 last $58.40 value $5,840.00 +$330.00; NBRX 40 avg $132.41 last $142.30 value $5,692.00 +$395.50; SOLR 153.5217 avg $24.37 last $26.45 value $4,060.65 +$320.04
- Margin requirement $8,594.73, Margin excess $31,901.72, Day trades (5 days) "2 of 3", Realised P/L all time +$450.75
- Technology 27.2%, Healthcare 12.2%, Financials 14.4%, Energy 10.0%, Industrials 6.9%, Cash 29.3% (largest)
Activity and statements
Ledger of trades, deposits and dividends, with FIFO realised profit.
- Sell 30 ORIN at market: estimated price (bid) $88.73, proceeds $2,661.90, net proceeds $2,661.25
- Statements: one lot LOT-003, 30 shares at $79.20, Cost basis $2,376.00, P/L +$285.90
- Realised P/L (FIFO) rises from +$450.75 to +$736.65; 30 ORIN shares remain
- All time: Realised P/L (FIFO) +$450.75, Trades 8, Commissions $5.20, Dividends $31.25, Deposits $5,000.00
- Sales: MRIN 30 -$21.00, TELM 50 +$42.50, ARCS 20 +$346.00, TRNV 15 +$83.25
- MRIN lot LOT-014: 30 shares at $63.10, proceeds $1,872.00, basis $1,893.00, P/L -$21.00; ARCS lot LOT-015: 20 at $171.10, proceeds $3,768.00, basis $3,422.00, P/L +$346.00
- First entry: HALC buy 40 at $76.10 on Mon 19 Oct, then MRIN sell 30 at $62.40
- Trades 8 rows, Deposits 1 ("ACH deposit"), Dividends 1 ("KELP dividend $0.3125/sh"), All activity 10
Price alerts
Alerts that trigger as market time advances.
- Seeded: AL-1 NBRX above $145.00 and AL-2 KELP below $58.00, both Active, no bell badge
- At 14:00 both are still Active; at 15:00 the toast "Alert: NBRX rose above $145.00 (now $145.14)" appears, the bell shows 1, AL-1 is Triggered
- "Clear triggered" removes AL-1 and the badge
- Empty price: "Enter a price like 145.00"
- Creating KELP at or above 60.00 shows "Alert set: KELP above $60.00" and a new Active row
- Delete asks "Delete alert?" with "Keep alert" and "Delete alert"
Market time
The simulated market clock and sessions.
- +1m: 10:00 to 10:01; +1h: 10:01 to 11:01
- Play advances about one minute per second until Pause; the button then reads "Play"
- After 16:00 the label changes from "Open" to "After-hours"
Non-functional requirements
- NBRX shows -4.10% in Watchlists and on its symbol page; SOLR shows -4.72%
- Toggle reads "Switch to light theme" / "Switch to dark theme"
Glossary and rules
| Buying power | Cash minus cash reserved by working buy orders. |
|---|---|
| FIFO | First in, first out: sales consume the oldest purchase lots first. |
| Working order | An accepted order that has not filled completely and has not been cancelled. |