Value At Risk – Financial Risk Management in Python

Value at Risk (VaR) is a tool for measuring a portfolio’s risk.

Value at risk (VaR) is a measure of the risk of loss for investments. It estimates how much a set of investments might lose (with a given probability), given normal market conditions, in a set time period such as a day. … For a given portfolio, time horizon, and probability p, the p VaR can be defined informally as the maximum possible loss during that time after we exclude all worse outcomes whose combined probability is at most p. This assumes mark-to-market pricing, and no trading in the portfolio.

For example, if a portfolio of stocks has a one-day 5% VaR of $1 million, that means that there is a 0.05 probability that the portfolio will fall in value by more than $1 million over a one-day period if there is no trading. Informally, a loss of $1 million or more on this portfolio is expected on 1 day out of 20 days (because of 5% probability). Read more

There are basically 3 methods for calculating the VaR [1]

  1. Historical simulation
  2. Variance-covariance approach
  3. Monte Carlo simulation

In this post, we implement the 3rd method, i.e. the Monte Carlo simulation, in Python.  More details of the methodology can be found in Ref [1].

The simulation parameters are as follows,

  • Portfolio value: $1 Million
  • Confidence interval: 95%
  • Time horizon: 1 day
  • Underlying: SPY

We utilize 5-years daily data of SPY retrieved from Yahoo Finance. The picture below shows the VaR returned by the Python program.

Risk Management in Python, Value at Risk in Python

Note that the method presented in this post is suitable for calculating the VaR in a normal market condition. More advanced approaches such as Expected Tail Loss have been developed that can better take into account the tail risk.


[1] Hull, John C. (2003). Options, Futures, and Other Derivatives. Prentice-Hall

Leave a Reply