← Back to blog Optiver OA 1point3acres Real Questions|Trading Sequences + Allocation + Order Book Triple OA Assist 2026
Optiver

Optiver OA 1point3acres Real Questions|Trading Sequences + Allocation + Order Book Triple OA Assist 2026

2026-05-23

Optiver's 2026 spring cycle has produced a heavy stream of OA reports on 1point3acres. The three offices (Amsterdam / Chicago / Sydney) draw from a shared question bank, and Trading Sequences, Allocation, Order Book make up roughly 85% of the surface. This article maps the distribution from the last 60 days of 1point3acres posts, walks through Python solutions, and shows how our OA assist plugs in.

Optiver OA 1point3acres Snapshot (Spring 2026)

Dimension Detail
Platform HackerRank + Optiver's in-house IDE
Duration 70–90 minutes
Question count 2–3 (always 1 simulation)
Average pass rate ~38% based on 1point3acres
Grading Fully auto-judged with hidden corner cases and time-complexity caps
Cooldown 6 months, counted per office

Track 1: Trading Sequences (Sequence Simulation)

Problem

Given a per-second price array prices[], find the longest non-decreasing run whose average is ≥ the global average. This appears in nearly every recent 1point3acres post; note that the comparison is >=, not >.

Python Solution

def longest_strong_run(prices):
    if not prices:
        return 0
    avg = sum(prices) / len(prices)
    best = 0
    start = 0
    cur_sum = 0
    for i, p in enumerate(prices):
        if i > 0 and prices[i] < prices[i - 1]:
            start = i
            cur_sum = 0
        cur_sum += p
        length = i - start + 1
        if cur_sum / length >= avg and length > best:
            best = length
    return best

Complexity: O(n) time / O(1) space. Hidden cases on 1point3acres include "all descending", "all equal", and "length 1".

Track 2: Allocation (Pro-rata Distribution)

Problem

n clients submit demand demand[i] for a basket; available supply S < sum(demand). Allocate by proportion + lot rounding + leftover by timestamp round-robin.

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]
    leftover = S - sum(base)
    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 += 1
    return base

Complexity: O(n log n) — sorting on timestamps. The most common bug reported on 1point3acres is leftover not being redistributed when lot doesn't divide S.

Track 3: Order Book (Limit Matching)

Problem

Implement a minimal Limit Order Book supporting add(side, price, qty) and match(). match() settles all crossable pairs and returns [(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]:
            _, _, 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

Complexity: ~O(k log n) per match, where k is the number of fills in this round.

1point3acres Frequency Cheat Sheet

Track 60-day Frequency Core DS Common Bug
Trading Sequences ★★★★★ Sliding + avg >= not >
Allocation ★★★★★ Rounding + round-robin Lost leftover
Order Book ★★★★ Two heaps + qty map Partial fill not decremented
Max Spread ★★★ Monotonic stack Negative PnL
Quote Parsing ★★ State machine Missing field

OA Assist Playbook

What oavoservice OA assist gives you

Beyond 1point3acres

Reading posts alone is not enough — field names change and hidden cases on Optiver's grader bite harder than on LeetCode. We maintain an internal-only corner-case log with 8–12 hidden boundaries per track. That's the part you cannot copy from a thread.

Add WeChat Coding0201 for pricing and scope.


FAQ

How close are 1point3acres reports to the live exam?

Skeleton is identical. Field renames and input format tweaks are common. The biggest gap we've seen was Allocation's lot size flipping from 1 to 100 — same logic, different test fixtures.

Do all three offices share the same OA bank?

About 80% shared per 1point3acres, with the rest being local variants (Sydney leans probability, Chicago leans Order Book).

HackerRank vs Optiver's in-house platform — what's the difference?

HackerRank gives sample cases but no custom runtime; the in-house platform lets you write your own tests but enforces stricter hidden cases. Practice both.

Cooldown if I fail? Does role switching reset it?

6 months per office. Switching role family (SWE → Trading) typically goes into a different pool, so you can re-apply earlier.


Preparing for Optiver OA / VO?

oavoservice tracks Optiver / Citadel / Jane Street / IMC OA and VO surfaces continuously. Our mentors come from live market-making / prop teams and deliver question bucketing, timed simulation, in-house platform live OA assist, and behavioral scripting.

👉 Add WeChat: Coding0201 for the Optiver 1point3acres question bank and OA assist plan.


Contact

Email: [email protected]
Telegram: @OAVOProxy