Revised Oct 15, 2015

This course introduces the use of computational methods in business and finance. Students learn to apply basic algorthims and to recognize common pitfalls.

- Upper-year students interested in the application of numerical computation to business and finance

- Fall and Winter

- Pre-requisites: (One of CS 116, 136, 138, 146); MATH 136 or 146, MATH 237 or 247, STAT 231 or 241; not open to Computer Science students
- Anti-requisites: AMATH 242/ CM 271/ CS 371, CS 370, MTE 204

For official details, see the UW calendar.

- MATLAB

- Paolo Brandimarte,
*Numerical Methods in Finance, A MATLAB-Based Introduction 2nd edition*, Wiley, 2006

At the start of the course, students should be able to

- Program in a high-level procedural programming language (e.g., CS116 or equivalent) and use control structions, such as loops and conditional statements, basic datatypes, and simple data structures, such as arrays
- Perform basic computations involving calculus derivatives (including finding maxima and minima of multivariate functions), matrices, discrete and continuous random variables, and basic statistical models

At the end of the course, students should be able to

- Explain the principles of floating-point number systems, including the concepts of chopping, rounding and machine precision; use these principles to analyze error of floating-point arithmetic
- Use the principles of polynomial interpolation to derive and apply splines with various boundary conditions
- Analyze stability and conditioning of numerical problems

- Use the built-in functions and graphing capabilities for 1D and 2D data and implement efficient code using vectorization
- Solve problems in portfolio optimization using mean-variance criteria, including the construction of efficient frontiers and computation of value-at-risk
- Implement lattice methods for computing contingent-claims valuation
- Solve nonlinear equations using iterative methods
- Implement Monte Carlo methods, generation of normally distributed random numbers

MATLAB programming objectives:

- Inexact computation, machine epsilon, stability

- Basic data types in MATLAB, use of built-in functions, graphical presentation of data, vectorization of code

- Linear, Lagrange, splines

- Mean variance criteria, the efficient frontier, optimization methods, use of quadratic programming software, stability of results with uncertain data
- Value at risk

- Lattice methods, implied volatility, the risk-neutral world

- Bisection, fixed-point iteration, Newton iteration

- Stochastic differential equations, timestepping methods, generation of normally distributed random numbers, variance reduction
- Applications to contingent claims, simulation of hedging strategies

David R. Cheriton School of Computer Science

University of Waterloo

Waterloo, Ontario, Canada N2L 3G1

Tel: 519-888-4567 x33293

Fax: 519-885-1208

Contact | Feedback: cs-webmaster@cs.uwaterloo.ca | David R. Cheriton School of Computer Science | Faculty of Mathematics