“Things always become obvious after the fact.”

― Nassim Nicolas Taleb


Financial markets, businesses, and even every day life require us to make repeated decisions that are subject to uncertainty and that have some potential payoff or loss. How can we quantify the risk inherent to repeated decisions to ensure a positive long-term profit and avoid devastating losses? Financial markets are a prime example of an inter-connected complex system that shows anomalous statistical properties which cannot be adequately captured by standard approaches such as Modern Portfolio Theory. The course “Introduction to risk mitigation” draws on the concepts of extreme value theory, complex systems research, Bayesian modeling, and the Austrian investing approach. The course covers a range of concepts, from basic relations between compounding, skewness, and expected returns, to intermediate statistical concepts such as the stability of moments and Bayesian regime switching models, and finally to advanced investment approaches such as the optimization of options-based hedging strategies.

All these concepts are brought to life using interactive Python notebooks that the participants can run, change, and manipulate to see how changes in assumptions or parameter values affect the outcome. After finishing the course, the participants will be able to directly apply the learned approaches to their own data and extend the examples based on the specific requirements of their use case. All code examples included in the lectures are licensed under the permissive MIT license and can be readily used for personal or commercial purposes.


The course is designed for financial advisors, portfolio managers, and private investors with a technical background, as well as financial analysts, data scientists, and researchers who are interested in modeling uncertainty in complex systems.


Participants should have some coding experience in any programming language to follow the code examples. The first lecture will introduce the basics of the Python language alongside the first code examples.


This course is offered in three different formats. If you have any questions about course contents or the the course format, or if you want to book a group training, do not hesitate to contact us!


Get access to all lecture notebooks and run them directly within the browser, or download them and run them on your PC. Includes solutions to exercises as well as access to a dedicated discussion board for this course.



Online course guided by Christoph Mark, with extensive time for Q&A and support in the hands-on exercises.

  • Class size: 25 students
  • Duration: 4 days
  • Time: 7h / day



In-person or online course guided by Christoph Mark, with customized focus on specific subtopics and the option for tailored exercises that fit the interests of your team.

  • Class size: ~15 students
  • Duration: 4 days
  • Time: 7h / day

To ask for a current quote or to book a group training, please contact us and we’d be happy to help:


The course is structured into 4 lectures. Each lecture consists of an interactive Python notebook that guides the students through the content and explains the code behind all calculations and algorithms. The students can readily change the code to see how changes in parameters affect the outcome. Each lecture comes with a set of exercises that consolidate the newly acquired knowledge.

LECTURE 1: Skewness – the fallacy of the expected return

The first lecture introduces basic simulations of repeated payoffs that explain how compounding creates skewed, convex payoffs, and how expected returns can be highly misleading. Participants learn how optimizing for ending wealth automatically includes risk aversion as an objective. We further discuss skewness can arise from market regime changes, and devise a probabilistic model to quantify them. Finally, we create a robust version of the Sharpe ratio that accounts for the susceptibility of financial assets to market regime changes and is applicable to short track records.

LECTURE 2: Fat tails – the power of one data point

The second lecture discusses the probability of extreme events in financial time series, and how to properly extrapolate to yet unseen extreme events based on power-law theory. We discuss why “10-sigma” events do not really exist, how heavy tails of return distributions destabilize statistical moments and the resulting implications for popular finance models such as GARCH or Modern Portfolio Theory.

LECTURE 3: Holistic approach – how to simulate insurances and hedges

The third lecture introduces two methods to assess the performance of a portfolio that contains assets with highly non-linear payoffs, such as insurances or options. First, we discuss bootstrapping techniques and their application to portfolio optimization. Second, we introduce a backtesting method that accounts for non-linear correlations between assets and can be applied to exotic objectives, for example to specifically minimize the time spent in drawdown.

LECTURE 4: Effective risk mitigation – evaluation of idealized and options-based hedging strategies

The final lecture focuses on the application of the simulation methods, and evaluates the efficiency of idealized assets representing store-of-value, alpha strategies, and insurances. Moreover, we will test different hedging strategies based on historical data for indices, bonds, commodities, and finally learn how to construct and evaluate options-based hedging strategies.


We offer a free preview of LECTURE 2 (without exercises) so you can experience the benefits of interactive Python notebooks for learning before committing to the complete course. You can access the free lecture in three different ways, as described below:

The button below takes you to Google Colab, a free service for hosted Python notebooks that allows you to run the notebook without installing anything on your computer. The only requirement is a Google account and an active internet connection while running the lecture:

The button below takes you to a Jupyter site that runs the notebook directly within your browser, without installing any software. While this technique is still experimental, it works without an account and even when your internet connecting is interrupted, for example on the train*:

*If you experience errors trying to run the notebook this way, try opening it in an incognito tab to prevent caching.

If you want to run the lecture in a full Python environment, you can download the notebook file by clicking the button below and then open the file with your own Jupyter installation (check out the official Jupyter documentation to learn how to install it locally):

Questions about booking courses?