implied volatility using python’s pandas library › market › seminars › ny... · implied...

29
Experts in numerical algorithms and HPC services Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python Users Group March 6 th 2014

Upload: others

Post on 07-Jun-2020

80 views

Category:

Documents


1 download

TRANSCRIPT

Page 1: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

Experts in numerical algorithms and HPC services

Implied Volatility using Python’s Pandas Library

Brian Spector

New York Quantitative Python Users GroupMarch 6th 2014

Page 2: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

2Numerical ExcellenceCommercial in Confidence

Overview

• Introduction

• Motivation

• Python

• Pandas

• Implied Volatility

– Timings in python

– Different Volatility Curves

– Fitting data points

Page 3: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

3Numerical ExcellenceCommercial in Confidence

Numerical Algorithms Group

• Not-for-profit organization committed to research & development

• NAG provides mathematical and statistical algorithm libraries and services widely used in industry and academia

• Library code written and contributed by some of the world’s most renowned mathematicians and computer scientists

• NAG Libraries available in C, MATLAB, .NET, Fortran, Java, SMP/Multicore, Excel, Python

Page 4: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

4Numerical ExcellenceCommercial in Confidence

NAG Library Contents• Root Finding

• Summation of Series

• Quadrature

• Ordinary Differential Equations

• Partial Differential Equations

• Numerical Differentiation

• Integral Equations

• Mesh Generation

• Interpolation

• Curve and Surface Fitting

• Optimization

• Approximations of Special Functions

• Dense Linear Algebra

• Sparse Linear Algebra

• Correlation & Regression Analysis

• Multivariate Methods

• Analysis of Variance

• Random Number Generators

• Univariate Estimation

• Nonparametric Statistics

• Smoothing in Statistics

• Contingency Table Analysis

• Survival Analysis

• Time Series Analysis

• Operations Research

Page 5: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

5Numerical ExcellenceCommercial in Confidence

Motivation

• Data available from CBOE:

• https://www.cboe.com/delayedquote/QuoteTableDownload.aspx

Page 6: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

6Numerical ExcellenceCommercial in Confidence

Motivation

• Data available from CBOE:

Page 7: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

7Numerical ExcellenceCommercial in Confidence

Python

• Why use python?

– Cheap

– Easy to learn

– Powerful

Page 8: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

8Numerical ExcellenceCommercial in Confidence

Python

• Why use python?

– Cheap

– Easy to learn

– Powerful

• Why use python over R?

– “I would rather do math in a programming language than programming in a math language.”

Page 9: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

9Numerical ExcellenceCommercial in Confidence

Python

• What python has:

– Many built-in powerful packages

– OO programming

• Classes

• Base + Derived Classes

– Plotting

• What python does not have:

– Multiple constructors

– Pointers

– ???

Page 10: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

10Numerical ExcellenceCommercial in Confidence

numpy

• Has made numerical computing much easier in recent years.

• numpy matrices / arrays

• numpy.linalg

• Behind many of these functions are LAPACK + BLAS!

Page 11: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

11Numerical ExcellenceCommercial in Confidence

scipy

• Special functions (scipy.special)

• Integration (scipy.integrate)

• Optimization (scipy.optimize)

• Interpolation (scipy.interpolate)

• Fourier Transforms (scipy.fftpack)

• Signal Processing (scipy.signal)

• Linear Algebra (scipy.linalg)

• Sparse Eigenvalue Problems with ARPACK

• Compressed Sparse Graph Routines scipy.sparse.csgraph

• Spatial data structures and algorithms (scipy.spatial)

• Statistics (scipy.stats)

• Multidimensional image processing (scipy.ndimage)

Page 12: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

12Numerical ExcellenceCommercial in Confidence

nag4py

• nag4py (The NAG Library for Python)

• Built on top of NAG C Library + Documentation

• 1600 NAG functions easily accessible from python

• 15 examples programs to help users call NAG functions

from nag4py.c05 import c05ayc

from nag4py.util import NagError,Nag_Comm

Page 13: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

13Numerical ExcellenceCommercial in Confidence

pandas

• Data Analysis Package

• Many nice built in functions

• Common tools:

– Series / DataFrame

– Reading + Writing CSVs

– Indexing, missing data, reshaping

– Common time series functionality

(Examples)

Page 14: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

14Numerical ExcellenceCommercial in Confidence

Implied Volatility

• Black Scholes Formula for pricing a call/put option is a function of 6 variables:

– 𝐶 𝑆0, 𝐾, 𝑇, 𝜎, 𝑟, 𝑑 = 𝑆0𝑁 𝑑1 − 𝐾𝑒−𝑟𝑇𝑁 𝑑2

• Where

– 𝑑1,2 =1

𝜎 𝑇𝑙𝑛

𝑆

𝐾+ 𝑇 𝑟 ±

𝜎2

2

– 𝑁 𝑥 = Standard Normal CDF

Page 15: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

15Numerical ExcellenceCommercial in Confidence

Implied Volatility

• We can observe the following in the market:

• 𝐶 𝑆0, 𝐾, 𝑇, 𝜎, 𝑟, 𝑑 = 𝐶

• But what is σ?

• 𝜎𝑖𝑚𝑝 → 𝐶𝐵𝑆 𝑆0, 𝐾, 𝑇, 𝜎𝑖𝑚𝑝, 𝑟, 𝑑 = 𝑀𝑎𝑟𝑘𝑒𝑡 𝑃𝑟𝑖𝑐𝑒

Page 16: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

16Numerical ExcellenceCommercial in Confidence

Implied Volatility

• We can observe the following in the market:

• 𝐶 𝑆0, 𝐾, 𝑇, 𝜎, 𝑟, 𝑑 = 𝐶

• But what is σ?

• 𝜎𝑖𝑚𝑝 → 𝐶𝐵𝑆 𝑆0, 𝐾, 𝑇, 𝜎𝑖𝑚𝑝, 𝑟, 𝑑 = 𝑀𝑎𝑟𝑘𝑒𝑡 𝑃𝑟𝑖𝑐𝑒

• Does 𝜎𝑖𝑚𝑝exist?

Page 17: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

17Numerical ExcellenceCommercial in Confidence

Implied Volatility

• We can observe the following in the market:

• 𝐶 𝑆0, 𝐾, 𝑇, 𝜎, 𝑟, 𝑑 = 𝐶

• But what is σ?

• 𝜎𝑖𝑚𝑝 → 𝐶𝐵𝑆 𝑆0, 𝐾, 𝑇, 𝜎𝑖𝑚𝑝, 𝑟, 𝑑 = 𝑀𝑎𝑟𝑘𝑒𝑡 𝑃𝑟𝑖𝑐𝑒

• Does 𝜎𝑖𝑚𝑝exist?

– Yes

(Examples)

Page 18: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

18Numerical ExcellenceCommercial in Confidence

Implied Volatility – Different Curves?

Page 19: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

19Numerical ExcellenceCommercial in Confidence

Implied Volatility – Different Curves?

• No hyphen or letter present = CompositeA = AMEX American Stock ExchangeB = BOX Boston Stock Exchange - OptionsE = CBOE Chicago Board Options ExchangeI = BATSJ = NASDAQ OMX BXO = NASDAQ OMXP = NYSE ArcaX = PHLX Philadelphia Stock ExchangeY = C2 Exchange4 = Miami Options Exchange8 = ISE International Securities Exchange

Page 20: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

20Numerical ExcellenceCommercial in Confidence

Implied Volatility

• Reasons for skews/smiles?

– Risk Preferences

– Fat tailed distributions

Page 21: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

21Numerical ExcellenceCommercial in Confidence

Implied Volatility Timings

Method Timing

fsolve + python BSM

fsolve + NAG BSM

nag4py

NAG C

Page 22: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

22Numerical ExcellenceCommercial in Confidence

Implied Volatility Timings

Method Timing

fsolve + python BSM ~60 seconds

fsolve + NAG BSM

nag4py

NAG C

Page 23: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

23Numerical ExcellenceCommercial in Confidence

Implied Volatility Timings

Method Timing

fsolve + python BSM ~60 seconds

fsolve + NAG BSM ~10 seconds

nag4py

NAG C

Page 24: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

24Numerical ExcellenceCommercial in Confidence

Implied Volatility Timings

Method Timing

fsolve + python BSM ~60 seconds

fsolve + NAG BSM ~10 seconds

nag4py ~3 seconds

NAG C

Page 25: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

25Numerical ExcellenceCommercial in Confidence

Implied Volatility Timings

Method Timing

fsolve + python BSM ~60 seconds

fsolve + NAG BSM ~10 seconds

nag4py ~3 seconds

NAG C ~.15 seconds

Page 26: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

26Numerical ExcellenceCommercial in Confidence

Implied Volatility Timings

Method Timing

fsolve + python BSM ~60 seconds

fsolve + NAG BSM ~10 seconds

nag4py ~3 seconds

NAG C ~.15 seconds

• Derivatives?• We have the derivative, vega

•𝝏𝑪

𝝏𝝈= 𝑺 ∗ 𝑻 ∗ 𝑵′(𝒅𝟏)

Page 27: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

27Numerical ExcellenceCommercial in Confidence

Fitting Data Points

• In our script we had k = l = 3…

– What if we try different values?

Page 28: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

28Numerical ExcellenceCommercial in Confidence

Fitting Data Points

• In our script we had k = l = 3…

– What if we try different values?

• Poor results, can we do better?

• Two dimensional spline

Page 29: Implied Volatility using Python’s Pandas Library › market › seminars › ny... · Implied Volatility using Python’s Pandas Library Brian Spector New York Quantitative Python

29Numerical ExcellenceCommercial in Confidence

Thank You

Questions?

• Further reading see:

• http://pandas.pydata.org/

• http://www.nag.co.uk/python.asp

• http://blog.nag.com/2013/10/implied-volatility-using-pythons-pandas.html