Finance 6320: Computational Finance

Spring Semester, 2017

Course Information

Instructor Information


Course Description

This course is an introduction to numerical programming for finance. This is a very applied course by nature. Although there will often be class lectures that focus on bits of theory, they will always be followed by computational exercises that focus on implementation. The computational tools that we refer to have two dimensions: 1) the mathematical tools that form numerical analysis that are helpful for solving problems in finance, and 2) the actual implementation of said tools in a programming language. We will take a mixed language approach to financial computing focusing on the Python and C++ programming languages, though we will mention and compare other approaches. The focus will be applied in nature and will focus on “getting things done” rather than on theoretical computer science. I will not attempt to teach you all of either Python or C++, but only those parts of the languages that are helpful for computational finance (a sort of super best parts approach). We will also learn some techniques of modern software engineering that are helpful for producing reliable and reproducible research. This course will lay a foundation for a career in computational finance or advanced research in finance at the doctoral level.

Course Objectives


There is only one required textbook for this course:

I do however, suggest the following books (though they are not strictly required). I will be presenting material for class lectures based on them:

I will provide my suggested reading lists for Python, C++, and numerical methods in the Bookshelf.

Assessment and Grading

The grade that you earn in this course will be determined by your ranking in the class based on the weighted total points accumulated on class preparation and participation, a class project, and a final exam. There is no predetermined percentage of the class that will earn an A, or that will fail. If you all do excellent work, you will all earn high marks. The weights given to each part of the class are as follows:

Format and Attendance

This course is designed to be as interactive and hands-on during class sessions as possible. I will deliver lectures during a live web session that you can “attend” online by joining the web conference through your browser. Lectures will be recorded automatically for your review. Lectures will be delivered at regularly scheduled dates and times. In addition, I will meet with two smaller groups of students during mentoring sessions during regularly scheduled times. I will also be available for online and in-person office hours. My experience has been that face-to-face time with students is crucial to the learning process, but that we usually fill that time with the least effective use of that time. Instead I would like to use that time most effectively to help you learn how to solve computational problems in finance with hands-on coaching and to automate or nearly automate the more mundane material. An added benefit is that lectures will be recorded for your review. In addition, I would like to hold a few “pair programming” exercises with smaller groups of students during the semester. I will show you the technology that we will be using to accomplish this task. Attendance becomes essential in this approach. I will allow for a few missed online lectures, where you can review the recorded lecture. But the face-to-face meetings become crucial for success in this class. I will often collect a list of questions from each of you at the beginning of face time sessions, and may also give some simple quizzes on rare occasions.

Software Tools

We will be using the following programming and software resources in this class:

Topics (Subject to Change)

In both modules we will be covering numerical methods, in particular the Monte Carlo method.

Important Dates: