Skip to content

Repository files navigation

30 Days to Quant Development

Building Modern C++ Systems From Scratch

Story

This repo captures a 30-day, hands-on preparation plan for becoming a quant developer. It bridges algorithmic problem solving (ICPC-style) with production systems engineering: low-level C++ performance, concurrency, networked systems, and a final mini trading system. The goal is to produce public, well-documented proof-of-work that recruiters and teams can evaluate quickly.

Why this repo

  • Signal: demonstrates practical systems & quant skills beyond algorithmic puzzles.
  • Audience: ICPC competitors, systems engineers, quant devs, recruiters.
  • Value: public proof-of-work, daily notes, benchmarked improvements, and a clean story for LinkedIn/GitHub.

How to use

  • Each day has a folder with three files: task.md, reading.md, and practice.cpp (or language-appropriate code). Follow the day's task.md, read reading.md, implement or study practice.cpp, run tests/benchmarks, and write a short lessons.md entry.
  • Clone the repo, build the small examples with CMake, run unit tests and microbenchmarks in benchmarks/.

Quick start (macOS / Linux)

git clone <repo-url>
cd 30-days-quant-dev
mkdir build && cd build
cmake ..
make -j
./bin/struct_sizes

Repository structure

  • README.md — this file (story, usage, plan)
  • CONTRIBUTING.md — how to contribute
  • CMakeLists.txt — top-level build
  • src/ — example source code and helpers
  • week1-modern-cpp/ through week4-trading-systems/ — day-by-day stubs
  • resources/ — recommended readings and links
  • benchmarks/ — harnesses and scripts
  • notes/ — collected lessons and writeups
  • final-outcome/ — integrated mini trading system and report

Weekly plan & daywise overview

Week 1 — Modern C++ Foundations (Days 1–7)

  • Day 01: Memory layout — task.md, reading.md, practice.cpp
  • Day 02: RAII — implement FileWrapper
  • Day 03: Move semantics — small String class
  • Day 04: Smart pointers — simplified unique_ptr
  • Day 05: Templates — Vector<T>
  • Day 06: Lambdas — event dispatcher
  • Day 07: Mini project — small STL-like library

Week 2 — Concurrency (Days 8–14)

  • Day 08: std::thread basics
  • Day 09: Mutexes & lock_guard
  • Day 10: Condition variables
  • Day 11: BlockingQueue<T>
  • Day 12: ThreadPool
  • Day 13: Atomics & CAS
  • Day 14: Mini project — scheduler + benchmark

Week 3 — Networking & Systems (Days 15–21)

  • Day 15: TCP sockets — echo server
  • Day 16: Serialization & endianness
  • Day 17: Event loops (poll/epoll)
  • Day 18: Fake exchange publisher
  • Day 19: Feed handler
  • Day 20: Profiling & cache analysis
  • Day 21: Mini project — feed simulator

Week 4 — Trading Systems (Days 22–30)

  • Day 22: Market microstructure
  • Day 23: OrderBook (add/cancel/modify)
  • Day 24: Matching engine (price-time)
  • Day 25: Risk checks
  • Day 26: Exchange connector
  • Day 27: Strategy framework
  • Day 28: Simple strategy (market making)
  • Day 29: Benchmarking
  • Day 30: Final project — integrate components and write report

Daily file conventions

Each day folder contains:

  • task.md — the problem and deliverables for the day
  • reading.md — curated reading list and notes
  • practice.cpp — starter or reference code (compile-ready)
  • lessons.md — short template for recording benchmarks and tradeoffs

Contributing

Please read CONTRIBUTING.md before submitting work. Keep PRs small and focused (one day or one component at a time). Include tests and benchmarks for performance-related changes.

Licensing

This project uses the MIT license (or choose another OSI-approved license).

Next steps

  • If this layout looks good, I'll create the folders and day stubs plus a working Day 01 example and a small CMake build. Open to adjustments on language (C++17 vs C++20) and benchmark tooling.

About

Anyone who have basic algo and c++ knowledge can follow this repo to practice for quant trading development.

Resources

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages