Juan Imbet

Assistant professor of Finance, Université Paris-Dauphine, Paris

Python programming for finance

Les objectifs du cours

The aim of this class is to provide students with a set of computational skills for future positions both in the financial industry and in academia. The first part of the course provides an intermediate introduction to Python focusing on the numerical capabilities of the programming language. The second part of the course focuses on the collection, processing, and analysis of financial data. In particular, it introduces concepts of portfolio, risk management, statistics, and optimization, while teaching the students how to build a functional API to analyze and distribute data relevant for investment decisions.

Plan du cours

1. Introduction and Basic Programming: History, Variables, Control Flow, Conditional Evaluation, Arrays, Functions, Generators (3h)

2. Intermediate Programming: Numerical Python (numpy), Linear Algebra (3h)

3. Data Analysis: Dataframes (pandas), cleaning and processing data through a Financial Example. (3h)

4. Portfolio Management I: Statistics and Simulation (3h)

5. Portfolio Management II: Optimization and Heuristics (3h)

6. Web Scrapping: How to automatize data collection online through a Financial Example. (3h)

7. Data Distribution: How to build a functional API to distribute data (3h)

8. A grasp of advanced Python usage: Coding Standards, General User Interfaces, Extending Python's Functionality with C and C++ (3h)
 

Bibliographie

Mandatory literature:

  • Hilpisch, Yves, Python for Finance: Analyze Big Financial Data, 2015, O’Reilly Publishing
  • Lecture Notes and Github code of the class


Mandatory installation:
Python 3.9 and other pydata libraries from Anaconda: https://www.anaconda.com/distribution/

 

Pre-requisite:

Recommended material if the student has no experience coding: 1 hour Python beginner tutorial - See the video

Examen

Final Exam 70 % - Individual Project 20 % - Problem sets and quizzes (10%)


Recommended prior knowledge
Basic concepts of programming, statistics, linear algebra and convex optimization.