by Yves Hilpisch
List of Tables xi
List of Figures xiii
Preface xvii
CHAPTER 1 A Quick Tour 1
1.1 Market-Based Valuation 1
1.2 Structure of the Book 2
1.3 Why Python? 3
1.4 Further Reading 4
PART ONE The Market
CHAPTER 2 What is Market-Based Valuation? 9
2.1 Options and their Value 9
2.2 Vanilla vs. Exotic Instruments 13
2.3 Risks Affecting Equity Derivatives 14
2.3.1 Market Risks 14
2.3.2 Other Risks 15
2.4 Hedging 16
2.5 Market-Based Valuation as a Process 17
CHAPTER 3 Market Stylized Facts 19
3.1 Introduction 19
3.2 Volatility, Correlation and Co. 19
3.3 Normal Returns as the Benchmark Case 21
3.4 Indices and Stocks 25
3.4.1 Stylized Facts 25
3.4.2 DAX Index Returns 26
3.5 Option Markets 30
3.5.1 Bid/Ask Spreads 31
3.5.2 Implied Volatility Surface 31
3.6 Short Rates 33
3.7 Conclusions 36
3.8 Python Scripts 37
3.8.1 GBM Analysis 37
3.8.2 DAX Analysis 40
3.8.3 BSM Implied Volatilities 41
3.8.4 EURO STOXX 50 Implied Volatilities 43
3.8.5 Euribor Analysis 45
PART TWO Theoretical Valuation
CHAPTER 4 Risk-Neutral Valuation 49
4.1 Introduction 49
4.2 Discrete-Time Uncertainty 50
4.3 Discrete Market Model 54
4.3.1 Primitives 54
4.3.2 Basic Definitions 55
4.4 Central Results in Discrete Time 57
4.5 Continuous-Time Case 61
4.6 Conclusions 66
4.7 Proofs 66
4.7.1 Proof of Lemma 1 66
4.7.2 Proof of Proposition 1 67
4.7.3 Proof of Theorem 1 68
CHAPTER 5 Complete Market Models 71
5.1 Introduction 71
5.2 Black-Scholes-Merton Model 72
5.2.1 Market Model 72
5.2.2 The Fundamental PDE 72
5.2.3 European Options 74
5.3 Greeks in the BSM Model 76
5.4 Cox-Ross-Rubinstein Model 81
5.5 Conclustions 84
5.6 Proofs and Python Scripts 84
5.6.1 Itˆo’s Lemma 84
5.6.2 Script for BSM Option Valuation 85
5.6.3 Script for BSM Call Greeks 88
5.6.4 Script for CRR Option Valuation 92
CHAPTER 6 Fourier-Based Option Pricing 95
6.1 Introduction 95
6.2 The Pricing Problem 96
6.3 Fourier Transforms 97
6.4 Fourier-Based Option Pricing 98
6.4.1 Lewis (2001) Approach 98
6.4.2 Carr-Madan (1999) Approach 101
6.5 Numerical Evaluation 103
6.5.1 Fourier Series 103
6.5.2 Fast Fourier Transform 105
6.6 Applications 107
6.6.1 Black-Scholes-Merton (1973) Model 107
6.6.2 Merton (1976) Model 108
6.6.3 Discrete Market Model 110
6.7 Conclusions 114
6.8 Python Scripts 114
6.8.1 BSM Call Valuation via Fourier Approach 114
6.8.2 Fourier Series 119
6.8.3 Roots of Unity 120
6.8.4 Convolution 121
6.8.5 Module with Parameters 122
6.8.6 Call Value by Convolution 123
6.8.7 Option Pricing by Convolution 123
6.8.8 Option Pricing by DFT 124
6.8.9 Speed Test of DFT 125
CHAPTER 7 Valuation of American Options by Simulation 127
7.1 Introduction 127
7.2 Financial Model 128
7.3 American Option Valuation 128
7.3.1 Problem Formulations 128
7.3.2 Valuation Algorithms 130
7.4 Numerical Results 132
7.4.1 American Put Option 132
7.4.2 American Short Condor Spread 135
7.5 Conclusions 136
7.6 Python Scripts 137
7.6.1 Binomial Valuation 137
7.6.2 Monte Carlo Valuation with LSM 139
7.6.3 Primal and Dual LSM Algorithms 140
PART THREE Market-Based Valuation
CHAPTER 8 A First Example of Market-Based Valuation 147
8.1 Introduction 147
8.2 Market Model 147
8.3 Valuation 148
8.4 Calibration 149
8.5 Simulation 149
8.6 Conclusions 155
8.7 Python Scripts 155
8.7.1 Valuation by Numerical Integration 155
8.7.2 Valuation by FFT 157
8.7.3 Calibration to Three Maturities 160
8.7.4 Calibration to Short Maturity 163
8.7.5 Valuation by MCS 165
CHAPTER 9 General Model Framework 169
9.1 Introduction 169
9.2 The Framework 169
9.3 Features of the Framework 170
9.4 Zero-Coupon Bond Valuation 172
9.5 European Option Valuation 173
9.5.1 PDE Approach 173
9.5.2 Transform Methods 175
9.5.3 Monte Carlo Simulation 176
9.6 Conclusions 177
9.7 Proofs and Python Scripts 177
9.7.1 Itˆo’s Lemma 177
9.7.2 Python Script for Bond Valuation 178
9.7.3 Python Script for European Call Valuation 180
CHAPTER 10 Monte Carlo Simulation 187
10.1 Introduction 187
10.2 Valuation of Zero-Coupon Bonds 188
10.3 Valuation of European Options 192
10.4 Valuation of American Options 196
10.4.1 Numerical Results 198
10.4.2 Higher Accuracy vs. Lower Speed 201
10.5 Conclusions 203
10.6 Python Scripts 204
10.6.1 General Zero-Coupon Bond Valuation 204
10.6.2 CIR85 Simulation and Valuation 205
10.6.3 Automated Valuation of European Options by Monte Carlo Simulation 209
10.6.4 Automated Valuation of American Put Options by Monte Carlo Simulation 215
CHAPTER 11 Model Calibration 223
11.1 Introduction 223
11.2 General Considerations 223
11.2.1 Why Calibration at All? 224
11.2.2 Which Role Do Different Model Components Play? 226
11.2.3 What Objective Function? 227
11.2.4 What Market Data? 228
11.2.5 What Optimization Algorithm? 229
11.3 Calibration of Short Rate Component 230
11.3.1 Theoretical Foundations 230
11.3.2 Calibration to Euribor Rates 231
11.4 Calibration of Equity Component 233
11.4.1 Valuation via Fourier Transform Method 235
11.4.2 Calibration to EURO STOXX 50 Option Quotes 236
11.4.3 Calibration of H93 Model 236
11.4.4 Calibration of Jump Component 237
11.4.5 Complete Calibration of BCC97 Model 239
11.4.6 Calibration to Implied Volatilities 240
11.5 Conclusions 243
11.6 Python Scripts for Cox-Ingersoll-Ross Model 243
11.6.1 Calibration of CIR85 243
11.6.2 Calibration of H93 Stochastic Volatility Model 248
11.6.3 Comparison of Implied Volatilities 251
11.6.4 Calibration of Jump-Diffusion Part of BCC97 252
11.6.5 Calibration of Complete Model of BCC97 256
11.6.6 Calibration of BCC97 Model to Implied Volatilities 258
CHAPTER 12 Simulation and Valuation in the General Model Framework 263
12.1 Introduction 263
12.2 Simulation of BCC97 Model 263
12.3 Valuation of Equity Options 266
12.3.1 European Options 266
12.3.2 American Options 268
12.4 Conclusions 268
12.5 Python Scripts 269
12.5.1 Simulating the BCC97 Model 269
12.5.2 Valuation of European Call Options by MCS 274
12.5.3 Valuation of American Call Options by MCS 275
CHAPTER 13 Dynamic Hedging 279
13.1 Introduction 279
13.2 Hedging Study for BSM Model 280
13.3 Hedging Study for BCC97 Model 285
13.4 Conclusions 289
13.5 Python Scripts 289
13.5.1 LSM Delta Hedging in BSM (Single Path) 289
13.5.2 LSM Delta Hedging in BSM (Multiple Paths) 293
13.5.3 LSM Algorithm for American Put in BCC97 295
13.5.4 LSM Delta Hedging in BCC97 (Single Path) 300
CHAPTER 14 Executive Summary 303
APPENDIX A Python in a Nutshell 305
A.1 Python Fundamentals 305
A.1.1 Installing Python Packages 305
A.1.2 First Steps with Python 306
A.1.3 Array Operations 310
A.1.4 Random Numbers 313
A.1.5 Plotting 314
A.2 European Option Pricing 316
A.2.1 Black-Scholes-Merton Approach 316
A.2.2 Cox-Ross-Rubinstein Approach 318
A.2.3 Monte Carlo Approach 323
A.3 Selected Financial Topics 325
A.3.1 Approximation 325
A.3.2 Optimization 328
A.3.3 Numerical Integration 329
A.4 Advanced Python Topics 330
A.4.1 Classes and Objects 330
A.4.2 Basic Input-Output Operations 332
A.4.3 Interacting with Spreadsheets 334
A.5 Rapid Financial Engineering 336
Bibliography 341
Index 347