FE 587 - C/C++ Programming for Financial Engineering
Description
In recent years, quantitative analysis depends increasingly on computation.
The use of computers became essential in carrying out complex financial decisions and handling vast amounts of financial data available.
For such complex information processing tasks, institutions need to develop their own proprietary software.
Yet, such software is very rarely rewritten from scratch; rather it is built using existing components and continually adapted to changing requirements.
To be competitive, a financial engineer must be sufficiently literate in computer code and software engineering concepts:
he or she must be able to understand, test, maintain and alter written code, and develop new applications based on reusable and flexible libraries.
The primary goal of this course is to provide a self contained introduction to computer programming.
Our focus will be on algorithmic aspects of computer applications currently used primarily in the financial industry,
and to prepare the student for the development of new applications.
Our treatment will be exclusively based on case studies and examples: after introducing a programming concept,
its use will be illustrated in an example relevant for financial computation.
The student will be introduced to C/C++ programming language and an integrated development environment.
The requirement will be a weekly homework that will involve writing C++ code, and the final project will also involve programming
in the same environment.
Objectives
After succesful completion of the course, the students will
Posses a working knowledge of the C/C++ programming language; be able to use an Integrated Programming environment,
Demonstrate knowledge of issues relating to programming, especially in financial applications,
Be able to develop applications in C++ using processes and techniques commonly found in financial engineering,
Be able to apply object-oriented methods to produce reusable and flexible frameworks for computing applications,
Topics
Introduction to computers, programming and algorithms
Introduction to C/C++ Integrated Development Environments (IDE): Eclipse + MinGW tools
Basic I/O, variables, simple arithmetics, conditional statements,
Data types: int, long, unsigned, float, double, char, String, bool
Declarations, Constants and Enumeration
Loops and functions, Scope, header files, break, continue, Exception handling,
Function variables: scope, visibility and lifetime Call by value/call by reference
Arrays, strings and pointers Static versus dynamic memory allocation, multidimensional arrays
Introduction to object oriented programming (OOP) Taxonomies, inheritance, modularity and reusability
Introduction to advanced data structures and classes methods and attributes, public, private and protected, This pointer,
Principles of object oriented programming Polymorphism, virtual methods, friends.
Templates, Introduction to Standard Template Library
File structures, File I/O, fstream, read, write, close
Programming Examples and Exercises
random number generation; Box-Muller technique for generating normal variables;
Options and derivative pricing:
Black-Scholes framework; Binomial tree option pricing: 2-phase forward-backward time-stepping; impact of early exercise
Calculation of expectation values via Monte Carlo techniques; Rejection and Importance Sampling;
Simulation of normal and lognormal stochastic processes
Recursive estimation of time series; The Kalman filter and smoother (tentative)
Stochastic Volatility; estimation via Sequential Monte Carlo (tentative)
Administrative
Grading; In class and take home assignments; Final Project
Total Credits
3
|