← All roles

FPGA

FPGA — Software Engineer

Applications open

Build the software infrastructure and reference implementations that support the team's FPGA system. You will work primarily in C++ and Python while learning how software algorithms and trading logic are translated into hardware. This role is intended for strong programmers who are actively interested in moving closer to FPGA development and low-latency systems.

What you'll do

Arm: FPGA · Places: 1 per team · Team size: 5

About QTE

Queen's Tower Exchange is a financial-markets simulation for Imperial College London students. The FPGA Trading Project develops low-latency electronic trading systems across three teams: Exchange, Market Making and Market Taking.

The FPGA Trading Project consists of three teams — Exchange, Market Making and Market Taking — with five students in each team. Each team will have 1 Team Lead, 3 FPGA Engineers and 1 Software Engineer.

Applicants will be placed into teams based on their interests, technical strengths and where they are likely to contribute most effectively. Previous quantitative-finance or trading experience is not required. Applications are open to students from all disciplines, excluding first-year undergraduates.

Responsibilities

  • Develop software components using C++ and Python.
  • Build reference implementations of algorithms and system behaviour.
  • Develop testing, simulation and debugging tools for the FPGA system.
  • Work with market data and software representations of order books, matching logic or trading strategies depending on team allocation.
  • Build tools for data replay, analysis and FPGA/software comparison.
  • Help validate FPGA outputs against software reference models.
  • Work closely with FPGA Engineers to translate software functionality into hardware.
  • Learn SystemVerilog/Verilog and contribute increasingly to hardware-focused development as the project progresses.
  • Support system integration and communicate technical problems clearly within the team.

What success looks like

Clear, reliable software that helps the team design, test and validate its FPGA implementation. The Software Engineer should become increasingly comfortable working close to the hardware, while providing strong reference models, testing tools and software infrastructure that improve the quality of the overall system.

Prerequisite knowledge

  • Experience programming in C++ and Python.
  • Strong software-engineering and problem-solving skills.
  • Ability to learn unfamiliar technologies quickly.
  • A genuine interest in hardware, FPGA development and low-latency systems.
  • Willingness to learn SystemVerilog/Verilog during the project.
  • Good communication and teamwork skills.
  • A genuine interest in quantitative finance, electronic trading and financial markets.
  • Ability to commit consistently to the project.

Previous SystemVerilog/Verilog experience, an industrial internship, UROP or quantitative-finance internship is not required.

Useful, but not required

Experience with algorithms, data structures, high-performance C++, networking, simulation, financial market data, order books, embedded systems or hardware-related projects.

What you'll be taught

Much of your learning will take place through project training, technical guidance and working directly alongside the FPGA Engineers.

  • How electronic trading systems, market data and order books work.
  • How QTE's Exchange, Market Making and Market Taking systems interact.
  • How C++ and Python reference models are used to design and verify FPGA systems.
  • The fundamentals of SystemVerilog/Verilog and FPGA development.
  • How software algorithms are translated into low-latency hardware architectures.
  • How hardware and software components are tested and integrated.