Virtu Financial interview process
For Virtu Financial internships in quantitative trading, quantitative research and software engineering, resume screening leads to a HackerRank assessment. Coding is a core preparation priority, while the technical conversations that follow are shaped by the role.
For trading, prepare coding alongside probability and market making. For research, add statistical modelling and explaining research decisions; for engineering, prioritise algorithms and the behaviour of the systems you build.
Virtu is an electronic market maker and trading technology business. Quantitative traders manage and improve automated strategies, researchers develop models from trading data, and developers build the systems those strategies rely on.
Start with the role named in your application. The same company recruits students into quite different technical disciplines, so an effective preparation plan follows the actual job rather than a generic quant interview syllabus.
-
Application and resume review
Show the strongest evidence of mathematical reasoning, programming and independent problem solving relevant to your role. Be ready to explain one substantial project in terms of its objective, your technical choices and the result.
-
HackerRank assessment
The internship screening assessment uses HackerRank. Practise implementing algorithms, explaining complexity, inventing your own tests and checking edge cases rather than preparing only mental arithmetic.
-
Recruiter and technical conversations
Trader interview preparation should cover probability, market structure, mental calculations and motivation. Research candidates should also defend modelling choices; developers should be ready to write code and reason about efficiency.
-
Deeper team interviews
Later discussions can explore technical follow ups, projects and working through unfamiliar problems with team members. Prepare to revise a solution when an assumption changes rather than treating each question as a memorised puzzle.
The official quantitative trading internship, research internship and software engineering internship all identify a HackerRank screening step. Use those postings alongside the position you are applying for to set the right technical depth.
Virtu HackerRank online assessment
The initial technical hurdle for Virtu internships is a HackerRank online test. The Singapore trading internship explicitly names a programming test, and the research and software engineering internships also specify programming assessments.
| Applicant track | Assessment focus | Best preparation |
|---|---|---|
| Quantitative trading | Programming assessment, then mathematical and market discussions | Arrays, hash maps, simulations, clear tests and basic probability |
| Quantitative research | Programming assessment with deeper quantitative and project discussion afterwards | Algorithms, Python data processing, statistics and defensible model validation |
| Software engineering | Programming assessment followed by engineering discussions | Algorithms, data structures, complexity, debugging and relevant systems knowledge |
What to practise before the assessment
Use array scans, hash maps, sorting, intervals, heaps and simulation as your initial coding bank. Each problem should end with a correctness argument, a complexity estimate and tests for empty data, duplicate values and unusually large inputs.
For an EverythingQuant practice benchmark, solve two unfamiliar medium algorithm problems in 60 minutes, leaving the final 10 minutes to test both solutions. The time and question count here are preparation targets, not Virtu assessment specifications.
Write a correct straightforward solution before trying to optimise it. Then identify the bottleneck and explain the change using a concrete input where the first approach becomes slow.
How to check a coding solution properly
Suppose a problem asks for the largest net position after a sequence of fills. Test an empty stream, a single fill, two offsetting fills, only sales, and repeated updates that change the position multiple times.
After those cases, generate a longer random event sequence and compare your efficient implementation against a simple reference implementation. This catches mistakes that are easy to miss when only the examples supplied with a question are used.
Train with EverythingQuant Data Structures and Algorithms in PythonTechnical interviews by role
Choose the technical track closest to your application and practise explaining your reasoning aloud. All three roles reward careful problem solving, but the follow up questions reflect different responsibilities.
Quantitative trader interviews
Trader conversations combine mathematical reasoning with the practical judgement of a liquidity provider. Prepare to estimate fair value, give a bid and ask, understand who trades against your quotes and update a position when new information arrives.
Practise conditional probability, expectations, mental arithmetic and the economics of a spread. Explaining why a seemingly attractive trade can lose money after a fill is more revealing than merely calculating its midpoint.
Questions worth rehearsing
- Why might buying at your bid be bad news when informed traders are active?
- How do you adjust a quote when inventory becomes too large or a related instrument moves?
- What happens to expected profit if hedging is more expensive than the spread collected?
For practice, give yourself 90 seconds to compute an answer and another 90 seconds to explain the risk. Then have a partner change one input so that you must revise your quote without restarting the entire problem.
Quantitative researcher and strategist interviews
Research work at Virtu turns large trading datasets into models that can improve live strategies. Prepare to discuss statistical inference, model diagnostics, Python implementations and the economics of a proposed trading signal.
A research project walkthrough should explain the prediction target, available information at decision time, training and test split, transaction costs and what would invalidate the result. A small positive backtest is not persuasive until you can explain why leakage, selection bias or market impact did not create it.
Questions worth rehearsing
- How would you test a short horizon price prediction without leaking future information?
- When does a predictive signal remain unprofitable after execution costs?
- How would you detect a model that works only in one market regime?
Research eligibility needs attention to the particular office. The New York research internship targets advanced degrees with a preference for a PhD, while the Dublin researcher and strategist internship includes master level applicants.
Software engineer interviews
Virtu developers work on scalable trading systems, trading tools and infrastructure where correctness and performance matter. Prepare for live algorithms, debugging, explaining how data structures behave under load and decisions about how a system should recover from an error.
The current internship roles ask for Python and either Java or C++. Learn the language you intend to interview in deeply enough to discuss runtime, memory use, data representation and testing rather than switching languages to avoid difficult follow ups.
Questions worth rehearsing
- How would you maintain the best bid and ask as order book levels change?
- What happens when market data arrives out of order or the same event is applied twice?
- When would a heap, balanced tree or hash map be the right data structure?
For stronger interviews, prepare a project where you improved a measurable property such as throughput, tail latency, resource usage or reliability. Be able to describe the tests and tradeoffs rather than relying on a performance claim without supporting measurements.
Market making concepts Virtu candidates should know
Virtu makes two sided markets, offering prices to buy and sell while managing the risk of holding inventory. A trader can earn a spread when trades are offset, but the spread must compensate for adverse selection, hedging costs and price movements.
Understand the two sides of a quote
If a market maker quotes a bid of $99.90 and an ask of $100.10, the quoted spread is $0.20. Buying one share at the bid and later selling it at the ask produces $0.20 before costs, provided both trades execute and the market value has not moved against the position.
That last condition matters. If a market maker buys just before the fair value falls to $99.50, an initially attractive bid can become an immediate loss, even though it was below the previous midpoint.
Think about inventory before quoting again
A position that grows in one direction exposes the trading strategy to larger price moves. To encourage selling inventory, a market maker can lower its quote levels, making its ask more attractive to buyers and its bid less attractive to sellers, subject to market conditions and execution constraints.
The goal is to compare expected spread income with the extra risk created by the next fill. An interview answer improves when you specify what information would make you change the bid, the ask or the quantity.
Connect an ETF price to its underlying basket
Virtu makes markets in ETFs as well as individual securities. The value of an ETF can be compared with its underlying holdings, while the cost and feasibility of hedging the ETF exposure determine whether a price difference is actionable.
For an ETF quotation, work out the value of the shares required for one ETF unit, the side of the hedge you would trade, and the costs incurred by completing it. The worked basket exercise below shows how a visible price gap can shrink once the hedge is included.
Practise quoting and position management in EverythingQuant trading simulationsFive original Virtu preparation questions
These EverythingQuant exercises model skills relevant to Virtu's trading, research and engineering work. They are original practice questions, not representations of questions taken from an actual Virtu assessment.
1. A bid that looks cheap after a price move
A share is worth $100 if no negative news arrives and $99.40 after negative news. The probability of negative news is 25%, and your $99.70 bid fills with probability 80% after news but only 20% if the value stays at $100. Conditional on receiving a fill, what is the expected share value and profit on a 100 share purchase?
Show the worked solution
The probability of both negative news and a fill is 0.25 × 0.80 = 0.20. The probability of no negative news and a fill is 0.75 × 0.20 = 0.15, so total fill probability is 0.35.
Bayes' rule gives P(negative news given fill) = 0.20 / 0.35 = 4/7. The expected value conditional on filling is (4/7 × $99.40) + (3/7 × $100) = $99.6571 per share.
The expected marked value less the $99.70 purchase price is a loss of approximately $0.0429 per share, or $4.29 on 100 shares before fees. The key lesson is to value the position conditional on the information contained in a fill, not from the unconditional average alone.
2. Pricing an ETF against a hedge basket
In this simplified example, one ETF unit has the economic exposure of two shares of A and one share of B. You can buy A at $50.20 and B at $100.35, paying $0.03 per A share and $0.06 per B share in additional execution costs. If you sell the ETF at $201.04 and hedge 250 units immediately, what surplus remains before costs on the ETF sale?
Show the worked solution
The basket costs 2 × $50.20 + $100.35 = $200.75 per ETF unit. Buying the components incurs 2 × $0.03 + $0.06 = $0.12 in extra costs, giving a total hedge cost of $200.87.
The apparent surplus is $201.04 less $200.87, or $0.17 per unit. For 250 units that is $42.50 before ETF execution charges, further market impact and any mismatch between the ETF and hedge.
In a live market, you must also consider whether all hedge orders execute at those prices. A positive arithmetic difference is not a guaranteed profit if prices move or the exposure is imperfect.
3. A predictive signal that fails after trading costs
A model predicts that the next price move is up with probability 58%, otherwise down. Each move is worth $0.05 per share in either direction, and entering and exiting the position costs $0.012 per share in total. What is the expected profit of buying one share, and what success probability is required to break even?
Show the worked solution
The expected price movement is 0.58 × $0.05 less 0.42 × $0.05 = $0.008. After the $0.012 trading cost, the expected profit is a loss of $0.004 per share.
With success probability p, gross expectation is (2p minus 1) × $0.05. Set that equal to $0.012: 2p minus 1 = 0.24, so p = 0.62.
A model with 58% accuracy in this simplified setup is not a profitable strategy. Research candidates should also ask whether the estimate of p survives chronological testing, realistic fills and changing market conditions.
4. Which side of a market fills first?
Assume bid fills arrive as a Poisson process with average rate 3 per minute and ask fills arrive independently at rate 2 per minute. What is the probability your next fill is a purchase, and how long do you expect to wait for either side to fill?
Show the worked solution
For independent Poisson arrivals, the first event belongs to the bid process with probability 3 / (3 + 2) = 0.60. The corresponding ask probability is 0.40.
The combined event rate is 5 per minute, so the expected waiting time is 1/5 minute, or 12 seconds. If trade sizes are equal, that imbalance creates a tendency to accumulate inventory on the bid side until quoting conditions change.
The Poisson and independence assumptions define this training problem. Real fill rates react to quotes, queue position, liquidity and information.
5. Coding task: maintain the best bid and ask
You receive updates of the form (side, price_ticks, size), where side is "B" or "A". Positive size replaces the quantity at that price level and zero size deletes it. Return the best bid and ask after each update, using None for an empty side of the book.
Show the Python solution and tests
Store the current size for each active price level and use a heap to find the best price. Old heap entries can remain temporarily and are removed when they reach the top and their price is no longer active.
from heapq import heappop, heappush
def best_quotes(updates):
sizes = {"B": {}, "A": {}}
heaps = {"B": [], "A": []}
output = []
for side, price, size in updates:
levels = sizes[side]
if size > 0:
levels[price] = size
key = -price if side == "B" else price
heappush(heaps[side], key)
else:
levels.pop(price, None)
for book_side in ("B", "A"):
heap = heaps[book_side]
active = sizes[book_side]
while heap:
best = -heap[0] if book_side == "B" else heap[0]
if best in active:
break
heappop(heap)
bid = -heaps["B"][0] if heaps["B"] else None
ask = heaps["A"][0] if heaps["A"] else None
output.append((bid, ask))
return output
For updates [("B", 9999, 5), ("A", 10002, 3), ("B", 9999, 0), ("B", 9997, 8)], the results are [(9999, None), (9999, 10002), (None, 10002), (9997, 10002)]. Prices are integer ticks, avoiding floating point comparison issues in the book representation.
Each positive update adds one heap entry, and each entry is removed at most once. Across a stream of U updates, the total running time is O(U log U), with O(U) heap storage in the worst case.
For a follow up, handle sequence numbers that arrive out of order, or design a structure with bounded stale entry growth. That changes the engineering task from implementing the best quote to maintaining a correct, recoverable market data state.
How to answer Virtu interview questions
A strong answer connects a calculation or technical design to the decision a trading team must make. Explain what you know, state the missing assumption that actually matters, and show how the conclusion changes when new information arrives.
How does Virtu make money?
Virtu has a market making business that commits capital by quoting buy and sell prices, and an execution services business that helps clients trade using technology and market access. Market making seeks to earn a return from providing liquidity while managing inventory and hedging risk; execution services can earn agency commissions and technology related revenue.
A complete answer should distinguish trading as principal from executing on behalf of a client. It should also explain why higher trading volume does not automatically translate into risk free spread capture.
Why do you want to join Virtu?
Connect your genuine strengths with the role. A trader could discuss the combination of quantitative judgement, coding and immediate risk feedback, while a researcher could focus on taking a statistically sound idea from data to a working trading model.
For a developer, a convincing answer might discuss correctness, throughput and reliability in trading infrastructure. Be ready to give one specific example of how your own work demonstrates that interest.
How should you explain a project?
Start with the problem and the constraints, then describe what you implemented and why. Finish with a measured outcome, one failure you encountered, and a reasonable next improvement.
For a research project, include train and test separation and where the data was available in time. For an engineering project, include testing, performance measurement and the decisions that affected complexity or reliability.
A focused seven day preparation plan
Use the same first two days to prepare for HackerRank, then focus the remaining sessions on the work your Virtu role actually involves. These durations are EverythingQuant practice targets and can be adjusted to your preparation window.
| Day | Task | Completion check |
|---|---|---|
| 1 | Review arrays, maps and sorting for 75 minutes | Solve three short tasks and explain time and memory complexity |
| 2 | Complete a 60 minute timed coding mock | Finish two problems and write independent edge case tests |
| 3 | Study conditional probability and expected value for 60 minutes | Rework the adverse selection problem without notes |
| 4 | Practise one role specific case for 75 minutes | Trader: hedge a basket; researcher: evaluate a signal; developer: maintain quotes |
| 5 | Prepare a 10 minute technical project explanation | Defend the design, validation and one unexpected result |
| 6 | Run a 45 minute spoken mock interview | Answer aloud, test assumptions and respond to a changed parameter |
| 7 | Repeat your weakest exercise and review the job description | Produce one page of corrections and questions to ask the team |
For trader and research candidates, Probability for Quantitative Interviews provides the foundations behind the pricing and inference exercises. For engineering and coding assessments, use the data structures course and interview question library to target your remaining weaknesses.
Virtu Financial interview FAQs
Does the Virtu quantitative trading internship have a coding test?
Yes. Virtu's quantitative trading internship openings include a HackerRank test after resume screening, so trading applicants should prepare to code rather than studying only mental maths and probability.
Are probability and market making questions worth practising?
Yes. Quantitative trading interviews reward an understanding of fair values, conditional probability, price updates and managing positions after a fill. These skills also map directly to the responsibilities in Virtu's trading roles.
Do I need a PhD to apply to Virtu?
Not for every role. Student trading and software engineering openings have different requirements from advanced quantitative research positions, where master or doctoral study is often relevant and the degree requirement depends on the office and team.
Which programming language should I prepare?
For trading, build confidence in one language you can use for algorithms and simulation, such as Python. Software engineering internships emphasise Python plus Java or C++, while quantitative research roles value Python data tools and, for some positions, C or C++.
How should experienced applicants prepare?
Match your preparation to the exact desk or engineering team and be ready to explain production decisions you have made. Traders should discuss inventory and risk decisions, researchers should defend live model performance, and developers should discuss systems they have actually built and maintained.
Official roles and further reading
For applications and role requirements, start with Virtu's careers pages and the relevant opening. The following links are useful for checking the responsibilities behind each preparation track and learning how Virtu's market making business operates.
- Virtu careers and team descriptions
- Virtu market making business
- Virtu current job openings
- Quantitative trading internship, United States
- Quantitative research internship, New York
- Quantitative researcher and strategist internship, Dublin
- Software engineer internship, United States
For additional insight into technical interviews beyond the official screening stage, see a Dublin junior trader interview experience and quantitative research candidate experiences. Use the specific position you apply for to determine the final preparation priorities.