Financial Engineering in C++ (Computational Finance Using Advanced C++ Design Techniques)  Short Courses

In this hands-on Financial Engineering in C++ short course, you will learn the basics of option pricing and how to compute prices numerically via Monte Carlo techniques and binomial trees. You will build on prior knowledge of C/C++ syntax and object-oriented concepts (classes, encapsulation, inheritance and virtual functions), using the latter to refactor and extend your code. You will also learn how to take advantage of design patterns such as bridge, decorator and factory.

Course Information

Start DateStart TimeDurationCostCourse CodeApply
Tuesday 4 October 2011 18:30 - 20:30 10 weekly classes £640.00 CE2509 Course Full
Tuesday 24 April 2012 18:30 - 20:30 10 weekly classes £640.00 CE2509 Course Full

Tutor Info

Colin Turfus received a Ph.D. in applied mathematics from the University of Cambridge. In a varied career he has published research papers on turbulent diffusion, headed a university maths department in S. Korea and worked in the mobile software industry as a C++ and Java software consultant. More recently he has been working in the finance industry as a financial engineer, currently with Dresdner Kleinwort.

Eligibility

Prior knowledge required:

  • ability to implement object-oriented concepts in C++ at a 'schoolbook' level (professional experience in C++  not required)
  • strong mathematical skills
  • knowledge of financial engineering is not expected

You are expected to be able to answer these questions before enrolling onto the course:

  • What is the significance of a method being virtual in C++?
  • What is the distinction between an interface and a class in C++?
  • What is meant by encapsulation and what support do C++ classes provide to enable it? In particular, what are the various ways the keyword "const" supports encapsulation?
  • If A is a user-defined class, what different results will be achieved by (i) A a = b; (ii) A a(b); and (iii) A& a(b);?
  • What is a template and why are they useful in C++ programming?
  • What are some of the advantages and disadvantages of inheritance in C++?
  • Explain the difference between passing by value and passing by reference in function arguments and return values. In what circumstances would you use each?What is the general solution of dy/dx = 1/x ?
  • If g(t) = f(x(t), t), give an expression for g'(t) in tems of f and its partial derivatives.
  • What is the probability distribution function of a normal variable with mean 0 and variance 1?
  • Prove that its integral over the real line is exactly 1.
  • State the Central Limit theorem.
  • If I toss a fair coin three times and get one point for each head and two for each tail, what is the expected value of the product of the three scores?
  • If X and Y are independent random variables, what can you say about Cov(X,Y)? What bounds does Cov(X,Y) satisfy if X and Y are not independent?

English Requirements

Applicants must be proficient in written and spoken English.

What will I learn?

  • Mathematical foundations of options and derivative pricing: types of options; Black-Scholes framework; normal and lognormal stochastic processes; calculation of expectation values; risk-neutral measure.
  • Monte Carlo computer modeling: limits of analytic solution techniques; random number generation; Box-Muller technique for generating normal variables; vanilla European option pricing; error estimation.
  • Pricing with binomial trees: 2-phase forward-backward time-stepping; impact of early exercise.
  • Product structure = software design: modularising financial products (underlying asset, payoff rules, exercise conditions and pricing engine); exotic products.
  • Object Oriented Programming: core concepts (encapsulation, inheritance, polymorphism); discussion of benefits; OO Design v. re-factoring legacy code.
  • Different exercise conditions: American, European or Bermudan? encapsulation and keeping implementation details private.
  • Exotic payoffs: inheritance hierarchy for payoff classes; polymorphism and virtual functions.
  • Other patterns: proxy, visitor, builder & decorator (as time allows).

By the end of the course, you will be able to:

  • Demonstrate knowledge of issues relating to programming financial applications
  • Develop applications in  C++ using processes and techniques commonly found in financial engineering
  • Apply object-oriented methods to produce a reusable framework for computing applications
  • Relate development objectives to other requirements such as security, performance and robustness

Teaching and Assessment

Electronic copies of the lecture notes are provided at the start of the course.

Example questions with worked solutions are provided to allow students to solidify their understanding of core concepts. C++ class designs are provided in the lecture notes to illustrate good practice in the design/structure of pricing modules. A number of optional projects are proposed requiring students to implement full and extended designs as described in class and to utilise the software to perform real pricing tasks.

Recommended Reading

Hull, J. (2005) Options, Futures and Other Derivatives, Prentice Hall.
Baxter, M. and Rennie, A. (1996) Financial Calculus: An Introduction to Derivative Pricing, Cambridge University Press.
Joshi M. (2004) C++ Design Patterns and Derivatives Pricing, Cambridge University Press

Application Deadline: