← Back to blog Optiver SWE OA Real Questions on 1point3acres | Order Book + Allocation OA Assistance 2026
Optiver

Optiver SWE OA Real Questions on 1point3acres | Order Book + Allocation OA Assistance 2026

2026-05-23

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:

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: Coding0201grab the Optiver OA assistance pack.


Contact

Email: [email protected]
Telegram: @OAVOProxy