← Back to blog
HRT

HRT OA 2026 Complete Guide | Hudson River Trading CodeSignal Question Types & Strategy

2026-05-10

One-line summary: HRT OA is a 70-minute, 4-question CodeSignal assessment that emphasizes time-series processing, step functions, and high-throughput data structures. Clean O(n log n) solutions are usually enough to advance to onsite.

Hudson River Trading (HRT) is one of New York's top high-frequency market-makers. Among quant OAs, HRT's style is "engineering-heavy and practical" — it's not as math-heavy as Jane Street, nor as trading-intuition-driven as Optiver. HRT cares whether you can write clean code that handles real market-data flows.

The article below walks through HRT OA in five sections: question types, real questions, solutions, prep strategy, and FAQ.


1. HRT OA Basics

Item Detail
Platform CodeSignal
Duration 70 minutes
Questions 4 (increasing difficulty)
Languages Python / C++ / Java (Python recommended)
Format English problem statements with finance flavor (no finance knowledge required)
Pass bar 600 max, recommended ≥ 500
Invite source Campus + Referral + LinkedIn sourcing

Compared with other quant OAs: HRT does not include probability puzzles or brain teasers — every question is a LeetCode-style algorithm problem. This means LeetCode grinders have an edge.


2. Question Distribution & High-Frequency Topics

Based on the past 12 months of candidate reports:

# Difficulty Common Topics Suggested Time
Q1 Easy Simulation / strings / basic arrays 5-10 min
Q2 Medium Hashmap + sliding window 10-15 min
Q3 Medium-Hard Step function / interval merge / difference array 20-25 min
Q4 Hard Time series + heap / binary search / segment tree 25-30 min

Q3 is the biggest pitfall — many candidates write O(n²) brute force and TLE on the large test cases.


3. Real Questions and Solutions

Type 1: Step Function — Maximum Concurrent Load

Problem: Given events [(start, end, value)], where each event contributes value units of load on [start, end), find the maximum instantaneous load at any moment.

Brute force O(n × m): per-tick scan, TLE

def maxLoadBrute(events):
    timeline = [0] * 1_000_001
    for s, e, v in events:
        for t in range(s, e):
            timeline[t] += v
    return max(timeline)

Optimal O(n log n): difference array via event sweeping

def maxLoad(events):
    points = []
    for s, e, v in events:
        points.append((s, v))      # enter
        points.append((e, -v))     # leave
    points.sort()

    cur = best = 0
    for _, delta in points:
        cur += delta
        best = max(best, cur)
    return best

Key technique: Convert "intervals" into "event streams" and sweep once. HRT loves this abstraction.


Type 2: Sliding-Window Aggregation Over a Time Series

Problem: Given a stream of ticks (timestamp, price), output the maximum price in the past 5 seconds for each tick.

Optimal O(n): monotonic deque

from collections import deque

def slidingMaxPrice(ticks, window=5):
    dq = deque()
    res = []
    for t, p in ticks:
        while dq and dq[0][0] < t - window:
            dq.popleft()
        while dq and dq[-1][1] <= p:
            dq.pop()
        dq.append((t, p))
        res.append(dq[0][1])
    return res

Complexity: each element enters and leaves the deque at most once → O(n). HRT frequently rephrases LeetCode 239 with timestamps.


Type 3: Order Matching — Greedy + Priority Queue

Problem: Buys and sells arrive over time. Same-price orders match in time-priority order. Output total matched volume.

import heapq

def matchOrders(orders):
    bids, asks = [], []
    volume = 0
    for side, price, qty, t in orders:
        if side == 'B':
            while qty and asks and asks[0][0] <= price:
                ap, at, aq = heapq.heappop(asks)
                m = min(qty, aq)
                volume += m
                qty -= m
                if aq > m:
                    heapq.heappush(asks, (ap, at, aq - m))
            if qty:
                heapq.heappush(bids, (-price, t, qty))
        else:
            while qty and bids and -bids[0][0] >= price:
                bp, bt, bq = heapq.heappop(bids)
                m = min(qty, bq)
                volume += m
                qty -= m
                if bq > m:
                    heapq.heappush(bids, (bp, bt, bq - m))
            if qty:
                heapq.heappush(asks, (price, t, qty))
    return volume

Common mistakes: forgetting to push residual quantity back, or mixing up price vs. time priority.


4. Prep Strategy: From Beginner to 500+

Phase Duration Focus
Foundation 1-2 weeks LeetCode arrays / hashmaps / two pointers — 60 problems
Reinforcement 1-2 weeks Sliding window, monotonic stack/queue, heap — 30 problems
Simulation 1 week CodeSignal Industry Coding Framework — 4 mock sets
Sprint 3-5 days HRT-style step-function and order-book questions — 10 problems

Strong recommendation: practice on CodeSignal's official General Coding Framework rather than only LeetCode — its IDE lacks LeetCode's input parsing helpers.


5. FAQ — HRT OA Common Questions

Q1: What score do I need on HRT OA to advance?

Usually 500/600 is the bar. Some teams (especially SDE and Algo Dev) require 560+. Quant Researcher tracks expect a perfect score plus the bonus question.

Q2: Can I use Python? Is performance enough?

Yes. HRT test cases typically have n ≤ 10⁵, and an O(n log n) Python solution finishes in 1-2 seconds. For Q4 you should still pre-write input = sys.stdin.buffer.read().split() to speed up I/O.

Q3: Does passing OA mean automatic VO?

Not always. HRT also reviews your résumé. A high OA score with a weak résumé may still be rejected; conversely, strong résumés (top schools, ICPC, recognized internships) sometimes get fast-tracked.

Q4: Do questions repeat?

Yes. The pool is large but cyclical — variants of "max concurrency from event streams" and "order matching with cooldown" have shown up repeatedly between 2024 and 2026.

Q5: How long is the cooldown after failure?

Usually 6 months. Applications during the cooldown are auto-rejected.


6. After OA: HRT VO Process

Passing OA leads to 2-4 VO rounds, including:

  1. Coding rounds: 1-2 LeetCode Hard problems, focus on optimal complexity and code style
  2. System Design (senior only): HFT systems, order books, message buses
  3. Behavioral / Culture Fit: HRT emphasizes research and collaboration culture
  4. Onsite Lunch / Coffee Chat: not eliminating, but used for holistic evaluation

7. External Resources


🚀 Need HRT OA / VO Coaching?

If you're preparing for HRT or similar quant firms (Citadel, Jane Street, Optiver, SIG), we can help with question-type breakdowns, variant practice, and live VO support.

👉 Add WeChat: Coding0201get real questions and a 1-on-1 prep plan


Contact