Course Syllabus: FINM 32900, Summer 2026#

FINM 32900, Full Stack Quantitative Finance

Summary#

Course Description “Full Stack Quantitative Finance” is a hands-on course centered on a core set of fundamental tools common across financial computing and data science. That is, this course examines elements of the analytical pipeline, from data extraction and cleaning to exploratory analysis, visualization, and modeling, and finally, publication and deployment. It does so with the aim of teaching the tools and principles behind creating reproducible and scalable workflows, including build automation, dependency management, unit testing, the command-line environment, shell scripting, Git for version control, and GitHub for team collaboration. These skills are taught through case studies, each of which will additionally give students practical experience with key financial data sets and sources such as CRSP and Compustat for pricing and financials, bond transactions from FINRA TRACE, options data from OptionMetrics, Treasury auction data from TreasuryDirect, textual data from EDGAR, and high-frequency trade and quote data from NYSE. Prior experience at an intermediate level with Python and the PyData stack is assumed.

This is an online course, taught live over Zoom. Because we meet remotely, we put extra emphasis on class participation and on getting to know your classmates. Networking with your peers is one of the most valuable parts of the university experience—both for learning and for your career—so this term the course is built around live, interactive components. The two main vehicles for this are the final-project proposal presentations (where you present your project plan to the class and give and receive live feedback from your classmates) and the collaborative Midterm Report (a single economic report that the whole class builds together). Attendance at the proposal presentations is taken via Zoom.

  • Class: Thursdays, 6 - 9 PM CT, online via Zoom. The Zoom link is posted on Canvas. Classes will be recorded.

  • Lecturer: Jeremy Bejarano, jbejarano@uchicago.edu

  • Instructor Office Hours: By appointment over Zoom (link on Canvas). You can also schedule a 1-on-1 consultation using the booking link posted on Canvas.

  • Teaching Assistant:

    • Jared Szajkowski, jszajkowski@uchicago.edu

    • Note: Students are strongly encouraged to post questions on the discussion page of the class GitHub repository (see below) rather than emailing, so that the whole class can benefit from the answers.

  • TA Office Hours:

    • Virtual (Zoom): Time TBD. See the Canvas calendar for the schedule and the Zoom link.

  • Textbook: The text for the course will be published incrementally here: https://finm-32900.github.io/

  • Website: Canvas will be used for grades and for publishing Zoom links only. Homework and notes will be posted on the course textbook above. All code related to the course, including the code that generates the textbook and the code for the homework assignments will be posted in GitHub repos within the finm-32900 organization here: finm-32900. Questions and other discussion should be posted on the GitHub discussion page here: orgs/finm-32900#discussions Class-related discussions should be posted here as well.

  • In-class examples: Many lectures are accompanied by small, runnable code examples collected in a companion repository, the in-class examples repo: finm-32900/inclass_examples. We use this repository throughout the course—individual textbook chapters link to the relevant subfolders (for example, software_environments/, pydoit/, env_vars/, sphinx/, and unit_tests/). Clone it and follow along during class.

Assignments#

  • Assignments are distributed and collected through GitHub Classroom. Check GitHub Classroom for the due date for each assignment. Each assignment is typically distributed on the day of the lecture and due roughly a week and a half later.

  • Assignments are automatically graded via the autograder on GitHub Classroom and solutions will be released shortly after. This means that the due date is strict. Late assignments will not be accepted.

  • Each student is to individually submit their assignment (unless otherwise specified). Students are encouraged to work in groups, but students are not allowed to copy each other’s code. Each student must write their own solutions individually.

  • After assignments are graded, solutions will be posted in separate GitHub repos, found under the finm-32900 GitHub organization page here: finm-32900

No Exams#

This course has no exams—no midterm exam and no final exam. In their place:

  • The Midterm Report (a collaborative, class-wide economic report) takes the place of a midterm. See Midterm Report.

  • The final project, presented and orally defended at the end of the quarter, takes the place of a final.

Final Project#

In lieu of a final exam, students will be organized into groups of 2 (pairs) and will each complete a course project. The final project this term is structured around three separate milestones:

  1. Instructor consultation — each group schedules a 1-on-1 meeting with the instructor (at least one week before their proposal presentation) to get individual feedback on their plan.

  2. Proposal presentation — each group presents their project plan to the class (in an assigned week, roughly weeks 5–8), advertising the data sources and the reusable “product” they intend to build. Classmates ask questions and submit feedback surveys.

  3. Final project presentation — in week 10, each group presents the completed project and each member is individually quizzed in an oral defense of both their analysis and the tools used to build it.

See the Final Project Instructions and Rubric and the Proposal Presentation Rubric for full details.

Assessment#

Grades will be based on the following components:

Component

Weight

Coding Assignments

25%

Final Project

30%

Proposal Presentation

20%

Midterm Report

10%

Proposal Attendance & Feedback

10%

Participation

5%

  • Coding Assignments (25%) are submitted individually and graded using GitHub’s automated testing tools (the GitHub Classroom autograder runs as a CI/CD workflow). Because you can re-run the autograder until your code passes, the assignments are best thought of as teaching vehicles—the grade primarily reflects whether you did the work to complete them.

  • Final Project (30%) is completed in groups of 2. Students choose their project from among the options provided at the beginning of the quarter. It is graded not only on how well it accomplishes the assigned data cleaning and analysis task, but primarily on whether (1) the steps to reproduce it are fully automated and well documented, (2) the code is written in a clean and reusable fashion, and (3) the results are presented clearly and convincingly. At the week-10 presentation, each group member is individually quizzed in an oral defense—you will be asked to defend your analysis and design choices and to demonstrate that you can actually run and modify the project (e.g., managing the conda environment, running the pipeline, using SSH).

  • Proposal Presentation (20%) is graded on the ambition of your project and on how useful and interesting your classmates judge your proposed “product” to be, informed by the peer-feedback surveys.

  • Midterm Report (10%) is your individual contribution (one figure and one paragraph) to the collaborative class economic report.

  • Proposal Attendance & Feedback (10%) requires that, for every proposal presentation, you both attend (Zoom attendance is taken) and submit the peer-feedback survey. Both are required to earn the points, and there are no allowed misses—attending and giving feedback to your classmates is an expected part of this course.

  • Participation (5%) depends on the positive impact you have on the class. This includes participating in in-class discussions and/or answering questions on the class GitHub page (or on Canvas). Students are in no way penalized for giving wrong answers in these discussions, nor is there any penalty for asking for help—asking for help is often the best way to learn!

Schedule#

The course runs for ten weeks. There are 9 weeks of lectures (Thursdays, starting June 18, 2026), followed by final project presentations in week 10. The lecture schedule follows the ordering of the chapters listed in the GitHub book found here: https://finm-32900.github.io/. Each week is its own chapter and the agenda is listed in the first sub-section of the chapter.

Other key milestones (exact dates to be announced on Canvas and GitHub Classroom):

  • Midterm Report contributions are due mid-quarter. See Midterm Report.

  • Proposal presentations take place in class, roughly weeks 5–8.

  • Final project presentations take place in week 10.

HW Due Dates#

Assignments are distributed and collected through GitHub Classroom. Check GitHub Classroom for each assignment’s due date.

References#

I will provide the lecture notes that we will use in class here: https://finm-32900.github.io/. As a prerequisite, you should have some prior familiarity with Python and the PyData stack (e.g., Numpy, Scipy, Pandas, Matplotlib). The following references may serve as useful refreshers:

A significant portion of this course is inspired by “The Missing Semester of Your CS Education”, a short course taught in the Computer Science department at MIT. I’ll rely on the material shown there for portions of this course.

Software to be used in class#

Lectures will feature live programming exercises in class, so students should have a WiFi-enabled laptop to bring to class.

Before the first class, please make sure to install the required software and sign up for the required services. Students will need to install the following software on their laptop. Each of these pieces of software are free:

Students should also sign up for an account with the following websites. We will use free versions of each of these services:

Quick Start#

To quickest way to run code in this repo is to use the following steps. First, you must have the conda
package manager installed (e.g., via Anaconda). Second, you must have TexLive (or another LaTeX distribution) installed on your computer and available in your path. You can do this by downloading and installing it from here (windows and mac installers). Having done these things, open a terminal and navigate to the root directory of the project and create a conda environment using the following command:

conda create -n finm python=3.12
conda activate finm

and then install the dependencies with pip

pip install -r requirements.txt

Finally, you can then run

doit

And that’s it! The landing page of the textbook website will be available at ./_build/html/index.html.