Optiver's Amsterdam / Chicago / Sydney SWE roles remain open through the 2026 spring cycle, and OA is still issued via either HackerRank or an in-house IDE. Based on the latest 90 days of 1point3acres posts, three problem lines dominate: Order Book matching, Trading Sequences simulation, and Allocation. Each line pairs one core algorithm with a layer of business logic. Below we rank by real-question density and outline the OA assistance path.
Optiver SWE OA Snapshot
| Dimension | Detail |
|---|---|
| Platform | HackerRank / In-house IDE |
| Duration | 70–90 minutes |
| Questions | 2–3 (one is always a simulation) |
| Difficulty | LC Medium with one Hard-level corner-case task |
| Grading | Auto-graded with hidden corner cases |
| Pass rate | ~65% of recent 1point3acres posters who AC all three advance |
Problem 1: Order Book Matching
Description
Build a minimal Limit Order Book supporting add(side, price, qty) and match(). Every match() clears all crossable orders and returns a fill log [(buy_id, sell_id, price, qty), ...].
Python Solution
import heapq
from collections import defaultdict
class OrderBook:
def __init__(self):
self.buys = []
self.sells = []
self.qty = defaultdict(int)
self.ts = 0
def add(self, side, price, qty, oid):
self.ts += 1
self.qty[oid] = qty
if side == 'B':
heapq.heappush(self.buys, (-price, self.ts, oid))
else:
heapq.heappush(self.sells, (price, self.ts, oid))
def match(self):
fills = []
while self.buys and self.sells and -self.buys[0][0] >= self.sells[0][0]:
bp, _, bid = self.buys[0]
sp, _, sid = self.sells[0]
q = min(self.qty[bid], self.qty[sid])
fills.append((bid, sid, sp, q))
self.qty[bid] -= q
self.qty[sid] -= q
if self.qty[bid] == 0:
heapq.heappop(self.buys)
if self.qty[sid] == 0:
heapq.heappop(self.sells)
return fills
Time complexity: O(k log n) per match, where k is the number of fills produced.
Problem 2: Trading Sequences
Description
Given prices[] of per-second trades, find the longest non-decreasing run whose mean is at least the global mean.
Python Solution
def longest_strong_run(prices):
if not prices:
return 0
avg = sum(prices) / len(prices)
best = cur_len = 0
cur_sum = 0
start = 0
for i, p in enumerate(prices):
if i > 0 and prices[i] < prices[i - 1]:
start = i
cur_sum = 0
cur_sum += p
cur_len = i - start + 1
if cur_sum / cur_len >= avg and cur_len > best:
best = cur_len
return best
Time complexity: O(n). The >= (not >) trips up many candidates.
Problem 3: Allocation
Description
n clients submit demand quantities. Available supply S is less than total demand. Allocate by proportional share, round to lot, distribute leftovers by timestamp order.
Python Solution
def pro_rata_allocate(demands, ts, S, lot=1):
n = len(demands)
total = sum(demands)
base = [(d * S) // total // lot * lot for d in demands]
used = sum(base)
leftover = S - used
order = sorted(range(n), key=lambda i: ts[i])
i = 0
while leftover >= lot and i < n:
idx = order[i]
if base[idx] < demands[idx]:
base[idx] += lot
leftover -= lot
i = (i + 1) % n if leftover >= lot else i + 1
return base
Time complexity: O(n log n), bounded by the sort.
1point3acres High-Frequency Cheat Sheet
| Problem Type | 90-day Frequency | Core Pattern |
|---|---|---|
| Order Book matching | ★★★★★ | Two heaps + qty map |
| Trading Sequences | ★★★★ | Monotonic run + mean check |
| Pro-rata Allocation | ★★★★ | Floor + round-robin leftover |
| Spread maximization | ★★★ | Monotonic stack / two pointers |
| Quote feed parsing | ★★ | Regex + state machine |
OA Assistance Path
oavoservice OA Assistance
For Optiver SWE OA's auto-grading + hidden corner-case style, oavoservice OA assistance offers:
- Topic bucketing: 30-day 1point3acres Optiver posts split into Order Book / Trading / Allocation buckets, each with 5 variants
- Timed mock: mentor delivers timed sets at real 70-minute pace; immediate corner-case debrief
- Same-day OA support: low-latency reasoning sanity-check during the live OA, especially for rule-heavy Allocation problems
- VO bridge: graduate to VO assistance with the same mentor
For pricing and packages, message WeChat Coding0201.
From Random Grinding to Passing Optiver OA
We were glad to help this cohort pass the Optiver SWE OA. Many candidates told us that grinding 1point3acres posts solo wasn't efficient — question text rotates, and Optiver weighs corner cases heavier than raw LC Medium counts.
If you're prepping Optiver, Citadel, Jane Street, or IMC quant SWE OA on HackerRank or in-house platforms and feel directionless, contact oavoservice. We tailor topic bucketing, timed mocks, and same-day OA reasoning support to your gaps.
FAQ
How does Optiver SWE OA difficulty compare to LeetCode?
Mostly LC Medium, but every set ends with a Hard-tier corner-case simulation needing both algorithm and business logic in 70–90 minutes.
Are OA banks consistent across cities?
Amsterdam, Chicago, and Sydney share ~80% of the bank with mild localization. Recent 1point3acres reports show the Order Book question identical across all three.
In-house IDE vs HackerRank — what's different?
The in-house IDE allows custom tests but hides stricter cases; HackerRank exposes sample cases but no custom environment. Practice both.
What's the cooldown if I fail?
Typically 6 months, with regional offices counted separately. A role swap (e.g. SWE → Trading) usually resets the bucket.
Preparing Optiver SWE OA / VO?
oavoservice tracks Optiver / Citadel / Jane Street / IMC OA + VO question banks. Mentors come from front-line market-making and prop-trading teams and provide topic bucketing, timed mocks, in-house IDE realtime assistance, and behavioral scripts.
👉 Add WeChat: Coding0201 — grab the Optiver OA assistance pack.
Contact
Email: [email protected]
Telegram: @OAVOProxy