How to Choose Binomial Parameters - Binomial Option Pricing || Theory & Implementation in Python

Sdílet
Vložit
  • čas přidán 20. 07. 2024
  • In this video we look at pricing a European Call option using the Binomial Asset Pricing Model with four different methods to define the binomial parameters in Python.
    Here we explore four methods to choose the binomial tree parameters up-factor u, down-factor d and risk-neutral probability q. All methods attempt to approximate the risk-neutral asset dynamics as accurately as possible; this is done by matching the mean and variance of the binomial asset pricing model to the dynamics of the underlying - Geometric Brownian Motion (GBM). The Cox, Ross and Rubinstein (CRR) method assumes that the up and down factors have the same jump size while the Jarrow and Rudd (JR) method assumes the same risk-neutral probabilities.
    If the underlying binomial tree is represented in terms of the natural logarithm of asset prices (where x=ln(S)) then the risk-neutral dynamics of the black-scholes model can be used for accurate and robust approximation. Using the GBM, the log-normal distribution has constant mean and variance and hence the mean and variance is easy to match with that of the binomial tree model. The Equal Probability method (EQP) proposed exactly that, using equal probabilities with the underlying tree represented by the natural logarithm of asset prices. The Trigeorgis method (TRG) is again represented by equal jump sizes, however implemented on a binomial tree represented by the natural logarithm of asset prices.
    In this tutorial series we will be breaking down the theory described and published in Steven Shreve’s book’s Stochastic Calculus for Finance I & II. As a guide for implementing these concepts in Python, we will refer to the numerical methods and practices outlined in Les Clewlow & Chris Strickland’s book Implementing Derivatives Models.
    00:00 Intro
    02:12 Theory || Choosing u, d, q
    03:42 Theory || Jarrow Rudd (JR) & Cox, Ross & Rubinstein (CRR) methods
    04:24 Theory || Binomial Tree in terms of the natural logarithm of asset prices
    05:35 Theory || Trigeorgis (TRG) & Equal Probabilities (EQP) methods
    06:10 Python Implementation || European Call Option Pricing
    07:00 Python Implementation || Cox, Ross & Rubinstein (CRR) method
    08:44 Python Implementation || Jarrow Rudd (JR)
    10:12 Python Implementation || Equal Probabilities (EQP) method
    14:10 Python Implementation || Trigeorgis (TRG) method
    15:46 Python Implementation || Comparison of Methods
    ★ ★ Code Available on GitHub ★ ★
    GitHub: github.com/TheQuantPy
    Specific Tutorial Link: github.com/TheQuantPy/youtube...
    ★ ★ QuantPy GitHub ★ ★
    Collection of resources used on QuantPy CZcams channel. github.com/thequantpy
    ★ ★ Discord Community ★ ★
    Join a small niche community of like-minded quants on discord. / discord
    ★ ★ Support our Patreon Community ★ ★
    Get access to Jupyter Notebooks that can run in the browser without downloading python.
    / quantpy
    ★ ★ ThetaData API ★ ★
    ThetaData's API provides both realtime and historical options data for end-of-day, and intraday trades and quotes. Use coupon 'QPY1' to receive 20% off on your first month.
    www.thetadata.net/
    ★ ★ Online Quant Tutorials ★ ★
    WEBSITE: quantpy.com.au
    ★ ★ Contact Us ★ ★
    EMAIL: pythonforquants@gmail.com
    Disclaimer: All ideas, opinions, recommendations and/or forecasts, expressed or implied in this content, are for informational and educational purposes only and should not be construed as financial product advice or an inducement or instruction to invest, trade, and/or speculate in the markets. Any action or refraining from action; investments, trades, and/or speculations made in light of the ideas, opinions, and/or forecasts, expressed or implied in this content, are committed at your own risk an consequence, financial or otherwise. As an affiliate of ThetaData, QuantPy Pty Ltd is compensated for any purchases made through the link provided in this description.

Komentáře • 9

  • @markpillon7085
    @markpillon7085 Před 2 lety +1

    I'd have to make a complaint.....
    to my program at University of London. I've been working with assigned material from Benninga and Hull in their Financial Engineering program. Hull has some great theoretical material but I've been frustrated with the Excel spreadsheets with Benninga and came across your material as I was looking to move everything to Python. Felt like I was stuck in the late 90s with this material. All I can say is fantastic work, I've been impressed with every video and coding along the way. I think its fair to say that the academy is dying as they can't compete with talented people like yourself.

  • @thihavibui7645
    @thihavibui7645 Před rokem

    Hello, could you please advise why you have in your CRR code this row - S[0] = S0*d**N? I have seen more your videos regarding to binomial trees but just only for the CRR model you have it. It is necessary to write it for CRR model as I want to apply this model to value the implied volatility of an american put option? thank you in advance

  • @nononnomonohjghdgdshrsrhsjgd

    hey, can you make a video on how to use the volatility surface, once it has been obtained and on its derivation in python both once from BS model and once from binomial tree method? I was also looking for videos with constructing the option implied risk neutral distribution - it will be great if you could delve into the the topic. Can you explain as well the breeden-litzenberger formula? merci

    • @QuantPy
      @QuantPy  Před 2 lety +2

      Hi Elizabeta, just to summarise what you would like to see:
      1. Deriving the vol surface with BS model and binomial tree method,
      2. Creating/Visualising the “market observed” risk neutral distributions by using the breeden-litzenberger formula, and
      3. A real example of using the implied vol surface, perhaps using local volatility tree to price some kind of derivative.
      Hopefully I can get to these soon.

    • @nononnomonohjghdgdshrsrhsjgd
      @nononnomonohjghdgdshrsrhsjgd Před 2 lety

      @@QuantPy Thank you! Maybe i have one additional question. How do we get u and d in reality? Are they really derived using exp of time-scaled historical volatility or are there other methods to determine u and d?

    • @QuantPy
      @QuantPy  Před 2 lety +1

      Cheers, I have only mentioned the four most common methods to assign values to the up and down factors for a binomial tree model.
      However, I’m sure there are plenty of other ways to define these values, at the end of the day, all you’re doing is definitely the time scaled drift and variance!
      I’m sure there are plenty of smart ways of assigning these values. These are the ones that are most well defined in literature.

    • @nononnomonohjghdgdshrsrhsjgd
      @nononnomonohjghdgdshrsrhsjgd Před 2 lety

      @@QuantPy Cheers, I didn't know that there are videos on your channel, with methods of assigning the up and down factors. Very well!

    • @QuantPy
      @QuantPy  Před 2 lety +1

      Haha I can’t tell if you’re joking or not, the video we are commenting on is exactly that :) good luck