SigmaField

Courses Quant Development in Modern C++

Course 9Coming later

Quant Development in Modern C++

Modern C++ for quant developers: rebuild the valuation library in C++, make it fast and tested, call it from Python, and finish with QuantLib.

  • 4 parts
  • 17 modules
  • Before you start: Financial Computing with Python; Derivatives Modelling

Coming soon

Explore the syllabus below, and start with the courses it builds on.

How each module works

  1. 1The conceptOne technique at a time
  2. 2Graded exercisesShort exercises that check your code
  3. 3Project milestoneA library that grows across the course
1

Part 1

Modern C++ basics

Coming soon
1.1ToolchainComing soon
You will learn:
Compiler, CMake, Editor, Build, Run, Debug.
You will build:
Print a payoff table
1.2Types and functionsComing soon
You will learn:
Built-in types, Expressions, Functions, Overloading.
You will build:
Compounding and annuity functions
1.3Control flowComing soon
You will learn:
Loops, Conditions, Early returns.
You will build:
Bisection for a bond yield
1.4Program structureComing soon
You will learn:
References, const, Scope, Headers, Namespaces.
You will build:
Split the solver into a library
1.5Classes and RAIIComing soon
You will learn:
Constructors, Invariants, Resource ownership.
You will build:
Option and PayOff classes
1.6The standard libraryComing soon
You will learn:
Containers, Algorithms, Iterators, Lambdas.
You will build:
A discounted cash-flow schedule
1.7Random numbers and Monte CarloComing soon
You will learn:
The <random> header, Seeding, A first pricer.
You will build:
Project 1: a vanilla Monte Carlo pricer
2

Part 2

Design for pricing code

Coming soon
2.1Inheritance and polymorphismComing soon
You will learn:
Virtual functions, Virtual copy, Smart pointers.
You will build:
A payoff hierarchy (bridge pattern)
2.2Templates and conceptsComing soon
You will learn:
Function and class templates, C++20 concepts.
You will build:
Generic root solvers
2.3Design patterns for pricingComing soon
You will learn:
Strategy, Factory, Decorator, Observer.
You will build:
Project 2: pluggable payoffs and statistics gatherers
3

Part 3

Numerics, performance and testing

Coming soon
3.1Trees and finite differencesComing soon
You will learn:
Tree engine, Crank–Nicolson.
You will build:
American options two ways
3.2Modern C++ in depthComing soon
You will learn:
Move semantics, constexpr, Ranges, std::optional, std::variant, std::expected.
You will build:
Refactor to modern idioms
3.3PerformanceComing soon
You will learn:
Cache, Profiling, Benchmarking, Threads, Parallel algorithms.
You will build:
Project 3: a parallel Monte Carlo engine
3.4Testing and toolingComing soon
You will learn:
Unit tests, Sanitizers, Static analysis, CI.
You will build:
Tests and CI for the library
4

Part 4

Python bindings and QuantLib

Coming soon
4.1Python bindingsComing soon
You will learn:
pybind11, Calling C++ from the Python courses.
You will build:
Call the pricer from a Derivatives lab
4.2A tour of QuantLibComing soon
You will learn:
Instruments, Engines, Term structures, Observers.
You will build:
Price a swap and an option
4.3Capstone: a small pricing libraryComing soon
You will learn:
Curves, Vanilla and barrier options by Monte Carlo, tree and PDE, Tested, Benchmarked, Bound to Python.
You will build:
Graded with a checklist