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
- Question bucketing: 30 days of Optiver posts on 1point3acres bucketed into Trading Sequences / Allocation / Order Book with 5 variants each
- Timed simulation: mentor runs you through real 70-minute pace, then debriefs corner cases
- Live OA assist: low-latency idea check on the in-house IDE, particularly useful for Allocation's rule-heavy surface
- VO transition: same mentor carries you into the onsite VO assist track
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