Financial Numerical Recipes in C++
Total Page:16
File Type:pdf, Size:1020Kb
Financial Numerical Recipes in C++. Bernt Arne Ødegaard June 2014 5.1 The interchangeability of discount factors, spot interest rates and forward interest rates . 52 5.2 The term structure as an object . 55 5.2.1 Base class . 55 5.2.2 Flat term structure. 57 5.3 Using the currently observed term structure. 58 5.3.1 Linear Interpolation. 59 5.3.2 Interpolated term structure class. 61 Contents 5.4 Bond calculations with a general term structure and continous compounding . 64 6 The Mean Variance Frontier 67 6.1 Setup . 67 6.2 The minimum variance frontier . 69 1 On C++ and programming. 5 6.3 Calculation of frontier portfolios . 69 1.1 Compiling and linking . 5 6.4 The global minimum variance portfolio . 72 1.2 The structure of a C++ program . 6 6.5 Efficient portfolios . 72 1.2.1 Types . 6 6.6 The zero beta portfolio . 73 1.2.2 Operations . 6 6.7 Allowing for a riskless asset. 73 1.2.3 Functions and libraries . 7 6.8 Efficient sets with risk free assets. 74 1.2.4 Templates and libraries . 7 6.9 Short-sale constraints . 75 1.2.5 Flow control . 8 6.10 The Sharpe Ratio . 75 1.2.6 Input Output . 8 6.11 Equilibrium: CAPM . 76 1.2.7 Splitting up a program . 8 6.11.1 Treynor . 76 1.2.8 Namespaces . 9 6.11.2 Jensen . 76 1.3 Extending the language, the class concept. 9 6.12 Working with Mean Variance and CAPM . 76 1.3.1 date, an example class . 10 6.13 Mean variance analysis using matrix libraries . 77 1.4 Const references . 16 1.5 Other C++ concepts . 16 7 Futures algoritms. 81 7.1 Pricing of futures contract. 81 2 Matrix Tools 17 2.1 The first screen . 18 8 Binomial option pricing 82 2.2 Linear algebra . 18 8.1 Options . 82 2.2.1 Basic matrix operations . 18 8.2 Pricing . 82 2.2.2 Arithmetic Matrix Operations. 19 8.3 Multiperiod binomial pricing . 85 2.3 Solving linear equations . 22 9 Basic Option Pricing, the Black Scholes formula 89 2.4 Element by element operations . 24 9.1 The formula . 90 2.5 Function definitions . 24 9.2 Understanding the why’s of the formula . 92 2.6 m files . 24 9.2.1 The original Black Scholes analysis . 93 2.7 Flow control . 24 9.2.2 The limit of a binomial case . 93 2.8 Plotting . 24 9.2.3 The representative agent framework . 93 2.9 Libraries . 25 9.3 Partial derivatives. 93 2.10 References . 25 9.3.1 Delta . 93 3 The value of time 26 9.3.2 Other Derivatives . 94 3.1 Present value . 26 9.3.3 Implied Volatility. 96 3.2 One interest rate with annual compounding . 27 9.4 References . 98 3.2.1 Internal rate of return. 30 10 Warrants 99 3.3 Continously compounded interest . 34 10.1 Warrant value in terms of assets . 99 3.3.1 Present value . 35 10.2 Valuing warrants when observing the stock value 100 3.4 Further readings . 35 10.3 Readings . 101 4 Bond Pricing with a flat term structure 36 11 Extending the Black Scholes formula 102 4.1 Flat term structure with discrete, annual com- pounding . 37 11.1 Adjusting for payouts of the underlying. 102 4.1.1 Bond Price . 37 11.1.1 Continous Payouts from underlying. 102 4.1.2 Yield to maturity . 38 11.1.2 Dividends. 103 4.1.3 Duration . 41 11.2 American options . 104 4.1.4 Measuring bond sensitivity to interest 11.2.1 Exact american call formula when stock is rate changes . 43 paying one dividend. 105 4.2 Continously compounded interest . 47 11.3 Options on futures . 108 4.3 Further readings . 50 11.3.1 Black’s model . 108 11.4 Foreign Currency Options . 109 5 The term structure of interest rates and an object lesson 51 11.5 Perpetual puts and calls . 110 1 11.6 Readings . 111 17 Generic binomial pricing 177 17.1 Introduction . 177 12 Option pricing with binomial approximations 112 17.2 Delta calculation . 182 12.1 Introduction . 112 12.2 Pricing of options in the Black Scholes setting . 113 18 Trinomial trees 183 12.2.1 European Options . 114 18.1 Intro . 183 12.2.2 American Options . 114 18.2 Implementation . 183 12.2.3 Matlab implementation . 116 18.3 Further reading . 185 12.3 How good is the binomial approximation? . 119 19 Alternatives to the Black Scholes type option formula 186 12.3.1 Estimating partials. 120 19.1 Merton’s Jump diffusion model. 186 12.4 Adjusting for payouts for the underlying . 123 19.2 Hestons pricing formula for a stochastic volatility 12.5 Pricing options on stocks paying dividends using model . 188 a binomial approximation . 124 12.5.1 Checking for early exercise in the bino- 20 Pricing of bond options, basic models 191 mial model. 124 20.1 Black Scholes bond option pricing . 191 12.5.2 Proportional dividends. 124 20.2 Binomial bond option pricing . 193 12.5.3 Discrete dividends . 126 12.6 Option on futures . 128 21 Credit risk 195 12.7 Foreign Currency options . 130 21.1 The Merton Model . 195 12.8 References . 131 21.2 Issues in implementation . 196 13 Finite Differences 132 22 Term Structure Models 197 13.1 Explicit Finite differences . 132 22.1 The Nelson Siegel term structure approximation 198 13.2 European Options. 132 22.2 Extended Nelson Siegel models . 200 13.3 American Options. 134 22.3 Cubic spline. 202 13.4 Implicit finite differences . 137 22.4 Cox Ingersoll Ross. 205 13.5 An example matrix class . 137 22.5 Vasicek . 208 13.6 Finite Differences . 137 22.6 Readings . 210 13.7 American Options . 137 13.8 European Options . 140 23 Binomial Term Structure models 211 13.9 References . 141 23.1 The Rendleman and Bartter model . 211 23.2 Readings . 213 14 Option pricing by simulation 142 14.1 Simulating lognormally distributed random vari- 24 Interest rate trees 214 ables . 143 24.1 The movement of interest rates . 214 14.2 Pricing of European Call options . 143 24.2 Discount factors . 216 14.3 Hedge parameters . 144 24.3 Pricing bonds . 216 14.4 More general payoffs. Function prototypes . 146 24.4 Callable bond . 218 14.5 Improving the efficiency in simulation . 147 24.5 Readings . 220 14.5.1 Control variates. 147 14.5.2 Antithetic variates. 148 25 Building term structure trees using the Ho and Lee (1986) approach 221 14.6 More exotic options . 151 25.1 Intro . 221 14.7 References . 152 25.2 Building trees of term structures . 221 25.3 Ho Lee term structure class . 221 15 Pricing American Options – Approximations 153 25.4 Pricing things . 224 15.1 The Johnson (1983) approximation . 153 25.5 References . 226 15.2 An approximation to the American Put due to Geske and Johnson (1984) . 156 26 Term Structure Derivatives 227 15.3 A quadratic approximation to American prices 26.1 Vasicek bond option pricing . 227 due to Barone–Adesi and Whaley. 159 15.4 An alternative approximation to american op- 27 Date (and time) revisited - the BOOST libraries 229 tions due to Bjerksund and Stensland (1993) . 162 27.1 References . 230 15.5 Readings . 165 A Normal Distribution approximations. 231 16 Average, lookback and other exotic options 166 A.1 The normal distribution function . 231 16.1 Bermudan options . 166 A.2 The cumulative normal distribution . 232 16.2 Asian options . 169 A.3 Multivariate normal . 232 16.3 Lookback options . 170 A.4 Calculating cumulative bivariate normal proba- 16.4 Monte Carlo Pricing of options whose payoff de- bilities . 233 pend on the whole price path . 172 A.5 Simulating random normal numbers . 235 16.4.1 Generating a series of lognormally dis- A.6 Cumulative probabilities for general multivariate tributed variables . 172 distributions . 236 16.5 Control variate . 175 A.7 Implementation in C++11.