Our course finder pages contain all the most up-to-date information about the Financial Mathematics and Machine Learning MSc, including details of the programme structure, compulsory and elective modules and study options.

Click here to see the full MSc Financial Mathematics and Machine Learning programme structure.

Below is a full list of all modules which we expect to be available to students on this programme across the semesters. Please note that this list, and the contents of the individual modules, is for information only and may be subject to change.

This module covers the advanced programming techniques in C++ that are widely used by professional software engineers and quantitative analysts & developers. The most important of these techniques is object-oriented programming, embracing the concepts of encapsulation, inheritance and polymorphism. We then use these techniques to price a wide range of financial derivatives numerically, using several different pricing models and numerical methods. On completion of this module, you will have acquired the key skills needed to apply for your first role as a junior ‘quant’ or software developer in a financial institution.

Topics include:

- Advanced programming in C++: Classes and objects, dynamic memory allocation, templates, the C++ standard library, strings, container classes, smart pointers, design patterns
- Stochastic models for asset prices (GBM, local volatility, stochastic volatility, jump diffusion)
- Financial derivatives, including options on shares (e.g. European, American, digital, barrier, Asian, lookback, compound, chooser)
- Implied volatility and the construction of the volatility smile
- Fixed income and rates (bonds and yield-to-maturity, discount factor curve bootstrapping, stochastic interest rate models)
- Numerical methods (interpolation, numerical quadrature, non-linear solvers, binomial trees (Cox-Ross-Rubinstein), Monte Carlo methods, finite-difference methods for PDEs)

This module covers a number of advanced topics in the pricing and risk-management of various types of derivative securities that are of key importance in today's financial markets. In particular, the module covers models for interest rate derivatives (short-rate and forward-curve models), and looks at the multi-curve framework. It then considers credit risk management and credit derivatives (both vanilla and exotic). Finally, it also discusses credit valuation adjustment (CVA) and related concepts.

Topics include:

- Interest rate modelling (instruments, curve bootstrapping, Black's model, short-rate models, the Heath-Jarrow-Morton framework, the LIBOR market model)
- Credit risk and credit derivatives (instruments, models for default risk, bootstrapping hazard rate curves, copula models for correlation products)
- Credit risk management and valuation adjustment (general concepts, netting and collateral, CVA, models for wrong-way risk, DVA, FVA and other xVA)

This module is offered to allow you to move beyond the basic techniques of Machine Learning. Together with the initial module (Machine Learning with Python), this course will provide a comprehensive overview of Machine Learning and its mathematical foundations as well as an introduction to the current state of the art in the field.

The aim of this module is to introduce students to more advanced machine learning techniques. An emphasis will be on current techniques which are relevant for practical applications. In addition to practical programming assignments, the course will also give you an understanding of the mathematical underpinning of the techniques and the limitations of the methods which are crucial to correctly assessing their performance.

Building on the module in semester A, linear methods will be extended to non-linear settings using kernel methods. The module will also go further in depth with topics which were introduced in the first semester such as neural networks and Monte Carlo Markov Chain methods (MCMC). It will cover specific applications and provide students with an overview of the current state of the art techniques.

The project component of the MSc programme will give you the opportunity to undertake some significant and advanced study in an area of interest, under the guidance of an expert in that field. Many projects involve a substantial amount of programming and analysis. Your project will be assessed by a written dissertation (of up to 60 pages) which you will submit in early September.

Possible project topics may include:

- The application of a 3-factor HJM model for pricing inflation-linked bonds
- Credit valuation adjustment (CVA) for interest rate swaps: Investigation of wrong-way risk using Monte Carlo / OpenCL
- The Heston model and its numerical implementation on a GPU using CUDA C/C++
- Jump-diffusion models for equity prices
- The LIBOR market model for interest rate derivatives
- Option pricing using finite-difference methods on CPUs and GPUs
- Parallelism in the Alternate Direction Implicit (ADI) method for solving PDEs for stochastic volatility models
- Pricing passport options
- The pricing and risk-management of basket credit derivatives (NTDs and CDOs) using Gaussian copula models
- The SABR stochastic volatility model

This module introduces you to all of the fundamental concepts needed for your future studies in financial mathematics. After reviewing some key ideas from probability theory, we give an overview of some of the most important financial instruments, including shares, forward contracts and options. We next explain how derivative securities can be priced using the principle of no arbitrage. Various models for pricing options are then considered in detail, including the discrete-time binomial model and the continuous-time Black-Scholes model.

Topics include:

- Review of key concepts in probability theory
- Introduction to financial markets
- Pricing derivatives by no-arbitrage arguments
- Discrete-time option pricing models
- Introduction to continuous-time stochastic processes and the Black-Scholes model

This module aims to provide students with Machine Learning skills based on the Python programming language as it is currently used in industry. Some of the presented methods are regression and classification techniques (linear and logistic regression, least-square); clustering; dimensionality reduction techniques such as PCA, SVD and matrix factorisation. More advanced methods such as generalised linear models, neural networks and Bayesian inference using graphical models are also introduced. The course is self-contained in terms of the necessary mathematical tools (mostly probability) and coding techniques. At the end of the course, students will be able to formalise a ML task, choose the appropriate method in order to tackle it while being able to assess its performance, and to implement these algorithms in Python. Independently of the field, skills in Machine Learning and coding are nowadays almost mandatory in many technical careers (academia, engineering, finance, etc.). This course will provide the students with practical skills in Python for Machine Learning. A strong focus well be put on practice through exercises and projects in Python, one of the preferred language in industry.

Topics include:

- Basic probability, statistical inference and optimisation concepts
- Python coding
- Data cleaning, processing and interpretation
- Understanding of the canonical machine learning algorithms
- Scientific report writing (in Latex)

This is an introductory module on the Lebesgue theory of measure and integral with application to probability. You are expected to know the theory of Riemann integration. Measure in the line and plane, outer measure, measurable sets, Lebesgue measure, non-measurable sets. Sigma-algebras, measures, probability measures, measurable functions, random variables. Simple functions, Lebesgue integration, integration with respect to general measures. Expectation of random variables. Monotone and dominated convergence theorems, and applications. Absolute continuity and singularity, Radon-Nikodym theorem, probability densities. Possible further topics: product spaces, Fubini's theorem.

Topics include:

- Measure in the line and plane, outer measure, measurable sets, Lebesgue measure, non-measurable sets.
- Sigma-algebras, measures, probability measures, measurable functions, random variables.
- Simple functions, Lebesgue integration, integration with respect to general measures. Expectation of random variables. Monotone and dominated convergence theorems, and applications.
- Absolute continuity and singularity, Radon-Nikodym theorem, probability densities.
- Possible further topics: product spaces, Fubini's theorem.

This module will provide you with the necessary skills and techniques needed to investigate a variety of practical problems in mathematical finance. It is based on C++, the programming language of choice for many practitioners in the finance industry. You will learn about the basic concepts of the procedural part of C++ (inherited from the earlier C language), before being introduced to the fundamental ideas of object-oriented programming. The module is very ‘hands on’, with weekly sessions in the computer laboratory where you can put your theoretical knowledge into practice with a series of interesting and useful assignments.

Topics include:

- Overview of technology in finance
- Introduction to the Microsoft Visual Studio C++ development environment
- Concepts in C++ such as data types, variables, arithmetic operations and arrays
- Procedural programming, including branching statements, loops and functions
- Introduction to object-oriented programming: Objects and classes
- Examples from finance including bond pricing, histogramming historical price data, option pricing and risk management within the Black-Scholes framework

This module aims to present some advanced probabilistic concepts and demonstrate their application to stochastic modelling of real-world situations. The topics covered include renewal theory, continuous-time Markov processes and Brownian motion. In addition to exposure to proofs and theoretical material, students develop practical skills through a large number of problems and worked examples. A stochastic process is a system evolving in time in a random way. Besides being of fundamental interest to probability theory, stochastic processes have applications in diverse fields such as financial mathematics, operations research and mathematical biology. This module is an introduction to stochastic processes and related probabilistic concepts. The focus is on continuous time stochastic processes, for which time is an element of the real numbers.

Topics include:

- Renewal processes: the renewal function; limiting behaviour; current and excess life; characterisation of the Poisson process as a renewal process; the renewal rewards theorem.
- Continuous time Markov chains: description in terms of the sojourn times and jump chain; definition of the generator; the equation for the transition probability matrix in terms of the generator; use of the generator in ?nding stationary distributions.
- Brownian motion: the invariance and re?ection principles; hitting times.