-   Forums
     -   Articles and Whitepapers
     -   Downloads
     -   Courses and Events
     -   Course Registration
     -   Distance learning
     -   Courses for Universities
     -   Books
     -   Audios and Demos
     -   Testimonials

Share this page:  Tweet

Distance Learning - Computational and Quantitative Finance in C++ (modules 4 - 10) - (code DL4-10)

This course contains the modules 4-10 of the full Distance Learning course.
This course is intended for those who already have knowledge and experience of the topics discussed in the modules 1-3 of the full course.

This advanced distance learning course is for those C++ developers who wish to learn modern and state-of-the art C++ language features, de-facto standard C++ libraries and apply them to creating application. We use object-oriented, modular and generic programming techniques, design patterns and the interoperability with Excel to create efficient applications for a range of derivatives such as equity and interest rate products.

This practical, hands-on course teaches you C++ - from the fundamental to advanced level and how to use it to create flexible and robust applications in computational and quantitative finance. Some key features of the course are:

  • You can start any time. You can take the course in your own time in a period of up to 10 months.
  • You are eligible to take exams and present a small project dissertation if you wish; a graded certificate will be given to the student.
  • End of month milestones; review of all exercises, new material dispatched to the student for the coming month.
  • Students have full access to the Datasim forums, source code and other relevant documentation. In this sense we shall have a community of people working on the same problems and can help - and be helped - with all those little annoying problems that get in the way of the real work.

Click here for a video overview of this course.

Updated: March 2011

Course Contents

Module 4: Design Patterns

In this module we introduce a number of design techniques that we deploy in C++ so that our applications can be customized when requirements change (as they inevitably do). In particular, we give an overview of the famous Design Patterns (23 in total) and we apply the most important ones to examples and applications in finance.

  • What is software design?
  • Quick overview of the Unified Modeling Language (UML)
  • The Gamma ("Gang of Four" classification
  • Creational patterns: Factory, Singleton, Builder, Prototype
  • Structural patterns: Bridge, Composite, Facade, Proxy
  • Behavioural patterns I: Template method, Strategy, Observer
  • Behavioural patterns II: Visitor, Command, Mediator
  • Applying design patterns in finance: the steps
  • Project: designing and implementing FDM for Black-Scholes PDE

After having completed this module you will be able to discover and apply the most appropriate design patterns for a given problem in finance.

Module 5: Libraries and Interfacing Issues

Whereas the code in Module 4 was concerned with application logic and algorithms this module discusses a number of features and tools that allow us to develop fully-fledged applications, in particular the input, processing and output modules in an application.

  • C++ Excel integration: xll, Automation and COM Addins
  • Creating xll applications
  • Automation Addins and worksheet functions
  • COM Addins
  • Registration, activation, libraries
  • An introduction to ATL (Active Template Library)
  • Overview of the Boost library
  • Boost random number generators
  • Boost multi-array and property map libraries
  • Introduction to XML
  • DLLs and Libs
  • Calibration
  • Project: developing Excel Addins for Monte Carlo and Fixed Income Applications

After having completed this module you will be able to integrate your code with a
number of standard software environments, such as Excel, Boost and XML.

Module 6: Integration and Applications: Overview

This is the last module of the course and it is here that we create a fully-fledged application using the experience that we have gained in the first five modules. You can choose the kind of application (equity, fixed income, commodity) and the numerical technique (FDM, Monte Carlo, ...) you wish to use.

  • Analysis and system decomposition
  • Defining inter-system interfaces
  • Applying the GOF patterns
  • An introduction to multi-threading and parallel programming
  • Implementing finance applications in C++ with OpenMP
  • Testing and profiling your application
  • Integration with Excel
  • Equity, interest rate and other applications in finance
  • Monte Carlo, FDM, quadrature and lattice solutions

Module 7: The Monte Carlo Method in C++
Stochastic Differential Equations (SDE)
  • Geometric Brownian Motion (GBM)
  • CEV model
  • Stochastic volatility
Finite Difference Method for SDE
  • Euler and Milstein method for GBM
  • Predictor-corrector method
  • QE method
  • Short-rate
  • Heston
  • Jump models
Monte Carlo Engine in C++
  • Modular decomposition
  • Design of engine (Produce-consumer)
  • Random number generators
  • Parallel programming

Module 8: The Finite Difference Method in C++
Finite Difference Method (FDM)
  • One-factor models
  • Plain and barrier options
  • Early exercise features
  • The Crank Nicolson method
  • Comparing FDM with trinomial method
Alternating Direction Explicit (ADE) Method
  • Background and motivation
  • ADE for one-factor models
  • ADE for nonlinear pricing models
  • Advantages of ADE
Two-Factor Model
  • ADI and Splitting Methods
  • Craig-Sneyd method
  • Mixed derivatives and Janenko method
  • ADE for two-factor problems

Module 9: Interest Rate Models in C++
Overview of Bond and Fixed Income Pricing
  • Bond Pricing: Design, Implementation and Excel Interfacing
  • Overview of bonds and kinds of bonds
  • Bond price and bond yield
  • Convexity
  • (Macauley) duration
  • Accrued interest and dirty price
  • Day count conventions
Short-term Interest Rate Futures and Options
  • Introduction (short term interest rate futures and option description )
  • Organizing and manage futures data and code
  • Conventions for Liffe Futures
  • Pricing Option
  • Working Example: portfolio of options
Interest Rate Models
  • Vasicek, CIR, Hull-White
  • Exact solutions
  • Approximate solutions: lattice, PDE, MC
  • Calibration

Module 10: Excel Interoperability
Creating Automation Add-ins in C++
  • Guid, ProgId, ClassInterface
  • Referencing the Excel Application
  • Registering COM components
  • Loading and using Automation Add-ins
  • Versioning
  • Volatile Cells
COM Add-ins
  • Background
  • ATL projects with IDTExtensibility2 support
  • Managed and unmanaged add-ins
  • VS add-ins and shared add-ins
  • Shared Add-in Wizard
  • Extendibility projects
  • Monte Carlo Engine
  • PDE solvers
  • Integration wit boost Math Toolkit

After having completed this module you will have used C++ in combination with mathematical methods for finance to produce a working system.

Project: term (final) project

The examiners will review your project and a small exam will be given.


Ideally, we assume that the student is working in finance and is acquainted with derivatives modeling. Good knowledge of C++ is necessary.

Course Form

The course material is:

  • Workbooks, exercises and source code
  • Access to our site: forums, videos and e-mail
  • Examination at the end of the course
  • Student project (at the discretion of the student) and evaluation
  • Certificate
The books provided with this course are:
  • Finite Difference Methods in Financial Engineering: A Partial Differential Equation Approach, by Daniel J. Duffy
  • Financial Instrument Pricing using C++, by Daniel J. Duffy
  • Introduction to C++ for financial engineers, by Daniel J. Duffy
  • Monte Carlo frameworks, Building Customisable High-performance C++ Applications by Daniel Duffy & Joerg Kienitz

Duration, price, date, locations and registration

Course duration: Distance learning.
You study in your own pace. Under normal circumstances, this should take you between 1 and 1.5 years to complete.
Dates and location: (click on dates to print registration form)

Date(s) Location Price Language
Any time Distance Learning € 2945.-- ex. VAT
€ 3563.45 inc. 21% VAT

Click here to register.

This distance learning course can start at any moment. We offer company-wide discount schemes for groups.

Share this page:  Tweet