NVIDIA / NVIDIA/cuopt-examples

Add High-Frequency Trading Market-Making Example

Open
#150 0 comments 0 reactions 2 assignees View on GitHub

@Iroy30 is already working on this.

Since Jun 3, 2026.

Dominant language
Jupyter Notebook
Stars
468
Forks
87
PR merge metrics
No merged PRs in 30d

Description

Contribution Proposal: High-Frequency Trading Market-Making Example

Hi NVIDIA cuOpt team,

I would like to propose adding a new example to cuopt-examples: a high-frequency trading market-making optimization example that demonstrates how GPU-accelerated optimization can enable real-time decision-making in financial systems.

Proposed Example

High-Frequency Trading Market-Making with Non-Linear Optimization

This example demonstrates real-time quote optimization for 50+ cryptocurrency trading pairs. The goal is to optimize bid/ask spread, inventory skew, and notional size under a strict real-time budget.

The key point of the example is not only that GPU is faster, but that the CPU baseline cannot meet the real-time requirement, while GPU acceleration makes the workflow feasible.

Problem Description

A market-maker continuously posts buy and sell quotes. For a realistic high-frequency trading system, the optimizer needs to:

  • Update quotes roughly 10 times per second
  • Optimize across 50+ trading pairs
  • Account for fill probability, transaction costs, slippage, and inventory risk
  • Solve within a tight optimization budget of approximately 50ms per cycle

The optimization problem includes 150 decision variables:

  • Spread per pair
  • Skew per pair
  • Notional size per pair

The objective includes non-linear terms such as:

  • Fill probability: P(fill) = exp(-k * spread)
  • Slippage cost: cost = alpha * (size / depth)^2
  • Inventory risk: lambda * volatility * abs(position) * abs(skew)
Why This Example Is Useful

This example would show a real-world use case where GPU acceleration is required for the application to be practical.

Current benchmark from the CPU baseline:

  • CPU baseline using scipy.optimize: approximately 200–300ms per solve
  • Real-time target: less than 50ms
  • CPU result: about 5x over budget
  • Expected GPU/cuOpt target: approximately 7ms
  • Expected speedup: about 35x

This makes the example a strong “CPU cannot do this in real time, GPU makes it possible” demonstration.

What Would Be Included

The contribution can include:

  • A complete Python implementation
  • CPU baseline using SciPy/SLSQP
  • cuOpt-based implementation or adapter
  • Sample data generation, so no API keys or proprietary market data are required
  • A README with setup and running instructions
  • Optional Streamlit dashboard for visualizing solve-time performance
  • Benchmarking output comparing CPU timing, budget violations, and expected GPU timing
Educational Value

This example would be useful for:

  • Financial engineers and quantitative developers
  • Operations research practitioners
  • Students learning optimization in finance
  • Developers evaluating cuOpt for real-time decision systems

It demonstrates:

  1. A realistic financial optimization workflow
  2. Non-linear optimization concepts
  3. Performance benchmarking
  4. Real-time decision constraints
  5. Why GPU acceleration matters for latency-sensitive applications

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.