F# and Functional Programming in Finance by Tomas Petricek

F# and Functional Programming in Finance by Tomas Petricek

Start Date: 29th June
Self-Paced Course Available Now: Take this course in your own time
Location: Globally online
This course can be taken as part of the Annual Subscription Service.


Take the 10 week online course: F# and Functional Programming in Finance with Tomas Petricek

Each lecture will appear in your members area weekly, and all webinar invites will be sent directly. You can also contact Tomas at any time with the F# forum. We can offer additional Webinars to candidates who live in different time zones.

Course Outline:

Functional-first programming in F# is an effective tool for solving complex problems that often arise in financial computing. The strong typing of F# provides important correctness guarantees and means that numeric code written in F# runs efficiently. Furthermore, a number of case-studies show that F# significantly reduces time-to-market, especially in the financial domain.

This course is a practical introduction to the F# language, functional programming and their use in the financial domain. You’ll learn about F#, fundamental functional concepts as well as libraries for numeric computing, data analysis. You’ll also become familiar with best practices for using F# tools and integrating F# with larger systems.

The course is practically focused. Throughout the course, we look at examples of time-series analysis, modelling and pricing of stock options and more. Each lecture provides a number of fun exercises that guide you through the problem. Furthermore, F# and functional programming makes you a better programmer even if you do not end up using the language immediately after the course.


The course requires no prior functional programming knowledge and is designed for both software developers and quants or actuaries. You will learn:

  • How to approach problems from the functional per­spective and capture your ideas using idiomatic F#.
  • Model a problem domain, such as stock options, using functional types and develop domain specific languages (DSLs) for processing such domains.
  • Use type providers to access data, perform inter­active data and time-series analysis on financial data using the Deedle library and create charts to visualize the results.
  • How to use F# within a larger context, including interoperability with R and best practices for the encapsulation of F# components for .NET. 

Quants Hub Programming School 10 Week Format:

Week 1, Lecture 1. Introducing F# and Functional Programming

We quickly look at the main reasons for adopting F#. Why is it becoming popular in the finance industry and what are some successful case studies? Then we introduce the fundamental F# language features such as immutability, tuples and pattern matching. 

Week 2, Lecture 2. Working with Collections and Data Structures

This lecture introduces the most important functional pattern – processing of immutable data structures using higher-order functions. We finish the processing of historical stock prices from Yahoo! Finance, calculating statistics and visualizes the result with simple charts.

Week 3, Lecture 3. Implementing Mathematical Calculations

F# makes it easy to turn mathematical equations to code. In this lecture we look at examples such as Monte-Carlo simulations, Black-Scholes equation and calculating historical volatility. You’ll learn how to avoid mistakes with units of measure, how to write efficient numerical code and how to use the rich Math.NET library.

Week 4, Webinar Week: This will cover the first 3 weeks of the course. 

Week 5, Lecture 4. Domain Specific Languages for Finance

Domain specific languages (DSLs) are an effective way of solving recurring problems. In this lecture, we build a DSL for pricing financial options and for detecting patterns in changing prices. You’ll learn how to model problem domain using functional data structures and how to build an easy to use library on top of the model.

Week 6, Lecture 5. Explorative Data and Time-Series Analysis

In this lecture we look at F# type providers and Deedle. Type providers make it easy to access data from sources including CSV and XML files, Excel, SQL databases and Web and REST services. Using Deedle we can then align multiple time-series and perform interactive analysis – such as comparing different industry sectors or calcu­lating daily returns.

Week 7, Lecture 6. F# in the Larger Context

We wrap up by looking at the ways for integrating F# in the broader context. This lecture explores how to call advanced statistical libraries using the R provider, how to use object-oriented programming to integrate with .NET and how to use F# tools and libraries for unit testing, building and documenting code.

Week 8, Webinar Week: This will cover weeks 5-7 of the course. 

Week 9, Revision week.

Week 10, Final Practical Project week.

The final project will be marked with feedback and a pass or fail will given. One retake is allowed if you fail. 

About the Presenter:

Tomas Petricek is a long-term F# enthusiast, frequent conference speaker and an author of “Real-World Fun­ctional Programming”. He is a founder of DualNotion ltd. where he provides training and consulting services.

Tomas contributed to the development of F# as a contractor at Microsoft Research, authored Try F# tutorials on financial computing and recently spent 3 months in New York, working on financial data analytics tools for F# at BlueMountain Capital. 

PRMIA Certification:

The Professional Risk Managers' International Association (PRMIA) is a non-profit professional association, governed by a Board of Directors directly elected by its global membership, of nearly 90,000 members worldwide. PRMIA is represented globally by over 65 chapters in major cities around the world, led by Regional Directors appointed by PRMIA's Board

The Programming School will be fully certified by PRMIA

CPD Certification

You will be able to receive up to 27 CPD points (9 hours of structured CPD and 18 hours of self-directed CPD) for completing this course.

The CPD Certification Service was established in 1996 as the independent CPD accreditation institution operating across industry sectors to complement the CPD policies of professional and academic bodies. The CPD Certification Service provides recognised independent CPD accreditation compatible with global CPD principles.


Other Courses:

Matlab – An Introduction for Financial Applications with Jörg Kienitz
Python for Finance with Yves J. Hilpisch: The Python Quants
Advanced C++ Design and Implementation in Quantitative Finance by Nick Webber
Mathematica / UnRisk distance learning Module with Michael Aichinger
R in Finance by Joris Meys