Details

Financial Instrument Pricing Using C++


Financial Instrument Pricing Using C++


Wiley Finance 2. Aufl.

von: Daniel J. Duffy

71,99 €

Verlag: Wiley
Format: EPUB
Veröffentl.: 05.09.2018
ISBN/EAN: 9781119170488
Sprache: englisch
Anzahl Seiten: 1168

DRM-geschütztes eBook, Sie benötigen z.B. Adobe Digital Editions und eine Adobe ID zum Lesen.

Beschreibungen

<b>An integrated guide to C++ and computational finance</b> <p>This complete guide to C++ and computational finance is a follow-up and major extension to Daniel J. Duffy's 2004 edition of <i>Financial Instrument Pricing Using C++</i>. Both C++ and computational finance have evolved and changed dramatically in the last ten years and this book documents these improvements. Duffy focuses on these developments and the advantages for the quant developer by:</p> <ul> <li>Delving into a detailed account of the new C++11 standard and its applicability to computational finance.</li> <li>Using de-facto standard libraries, such as <i>Boost</i> and <i>Eigen</i> to improve developer productivity.</li> <li>Developing multiparadigm software using the object-oriented, generic, and functional programming styles.</li> <li>Designing flexible numerical algorithms: modern numerical methods and multiparadigm design patterns.</li> <li>Providing a detailed explanation of the Finite Difference Methods through six chapters, including new developments such as ADE, Method of Lines (MOL), and Uncertain Volatility Models.</li> <li>Developing applications, from financial model to algorithmic design and code, through a coherent approach.</li> <li>Generating interoperability with Excel add-ins, C#, and C++/CLI.</li> <li>Using random number generation in C++11 and Monte Carlo simulation.</li> </ul> <p>Duffy adopted a spiral model approach while writing each chapter of <i>Financial Instrument Pricing Using C++ 2e</i>: analyse a little, design a little, and code a little. Each cycle ends with a working prototype in C++ and shows how a given algorithm or numerical method works. Additionally, each chapter contains non-trivial exercises and projects that discuss improvements and extensions to the material.</p> <p>This book is for designers and application developers in computational finance, and assumes the reader has some fundamental experience of C++ and derivatives pricing.<br /><br /></p> <p><b>HOW TO RECEIVE THE SOURCE CODE</b></p> <p><b>Once you have purchased a copy of the book please send an email to the author dduffyATdatasim.nl requesting your personal and non-transferable copy of the source code. Proof of purchase is needed. The subject of the mail should be “C++ Book Source Code Request”.  You will receive a reply with a zip file attachment.</b></p>
<p><b>CHAPTER 1 A Tour of C++ and Environs 1</b></p> <p>1.1 Introduction and Objectives 1</p> <p>1.2 What is C++? 1</p> <p>1.3 C++ as a Multiparadigm Programming Language 2</p> <p>1.4 The Structure and Contents of this Book: Overview 4</p> <p>1.5 A Tour of C++11: Black–Scholes and Environs 6</p> <p>1.6 Parallel Programming in C++ and Parallel C++ Libraries 12</p> <p>1.7 Writing C++ Applications; Where and How to Start? 14</p> <p>1.8 For whom is this Book Intended? 16</p> <p>1.9 Next-Generation Design and Design Patterns in C++ 16</p> <p>1.10 Some Useful Guidelines and Developer Folklore 17</p> <p>1.11 About the Author 18</p> <p>1.12 The Source Code and Getting the Source Code 19</p> <p><b>CHAPTER 2 New and Improved C++ Fundamentals 21</b></p> <p>2.1 Introduction and Objectives 21</p> <p>2.2 The C++ Smart Pointers 21</p> <p>2.3 Using Smart Pointers in Code 23</p> <p>2.4 Extended Examples of Smart Pointers Usage 30</p> <p>2.5 Move Semantics and Rvalue References 34</p> <p>2.6 Other Bits and Pieces: Usability Enhancements 39</p> <p>2.7 Summary and Conclusions 52</p> <p>2.8 Exercises and Projects 52</p> <p><b>CHAPTER 3 Modelling Functions in C++ 59</b></p> <p>3.1 Introduction and Objectives 59</p> <p>3.2 Analysing and Classifying Functions 60</p> <p>3.3 New Functionality in C++: std::function<> 64</p> <p>3.4 New Functionality in C++: Lambda Functions and Lambda Expressions 65</p> <p>3.5 Callable Objects 69</p> <p>3.6 Function Adapters and Binders 70</p> <p>3.7 Application Areas 75</p> <p>3.8 An Example: Strategy Pattern New Style 75</p> <p>3.9 Migrating from Traditional Object-Oriented Solutions: Numerical Quadrature 78</p> <p>3.10 Summary and Conclusions 81</p> <p>3.11 Exercises and Projects 82</p> <p><b>CHAPTER 4 Advanced C++ Template Programming 89</b></p> <p>4.1 Introduction and Objectives 89</p> <p>4.2 Preliminaries 91</p> <p>4.3 decltype Specifier 94</p> <p>4.4 Life Before and After decltype 101</p> <p>4.5 std::result_of and SFINAE 106</p> <p>4.6 std::enable_if 108</p> <p>4.7 Boost enable_if 112</p> <p>4.8 std::decay()Trait 114</p> <p>4.9 A Small Application: Quantities and Units 115</p> <p>4.10 Conclusions and Summary 118</p> <p>4.11 Exercises and Projects 118</p> <p><b>CHAPTER 5 Tuples in C++ and their Applications 123</b></p> <p>5.1 Introduction and Objectives 123</p> <p>5.2 An std:pair Refresher and New Extensions 123</p> <p>5.3 Mathematical and Computer Science Background 128</p> <p>5.4 Tuple Fundamentals and Simple Examples 130</p> <p>5.5 Advanced Tuples 130</p> <p>5.6 Using Tuples in Code 133</p> <p>5.7 Other Related Libraries 138</p> <p>5.8 Tuples and Run-Time Efficiency 140</p> <p>5.9 Advantages and Applications of Tuples 142</p> <p>5.10 Summary and Conclusions 143</p> <p>5.11 Exercises and Projects 143</p> <p><b>CHAPTER 6 Type Traits, Advanced Lambdas and Multiparadigm Design in C++ 147</b></p> <p>6.1 Introduction and Objectives 147</p> <p>6.2 Some Building Blocks 149</p> <p>6.3 C++ Type Traits 150</p> <p>6.4 Initial Examples of Type Traits 158</p> <p>6.5 Generic Lambdas 161</p> <p>6.6 How Useful will Generic Lambda Functions be in the Future? 164</p> <p>6.7 Generalised Lambda Capture 171</p> <p>6.7.1 Living Without Generalised Lambda Capture 173</p> <p>6.8 Application to Stochastic Differential Equations 174</p> <p>6.9 Emerging Multiparadigm Design Patterns: Summary 178</p> <p>6.10 Summary and Conclusions 179</p> <p>6.11 Exercises and Projects 179</p> <p><b>CHAPTER 7 Multiparadigm Design in C++ 185</b></p> <p>7.1 Introduction and Objectives 185</p> <p>7.2 Modelling and Design 185</p> <p>7.3 Low-Level C++ Design of Classes 190</p> <p>7.4 Shades of Polymorphism 199</p> <p>7.5 Is there More to Life than Inheritance? 206</p> <p>7.6 An Introduction to Object-Oriented Software Metrics 207</p> <p>7.7 Summary and Conclusions 210</p> <p>7.8 Exercises and Projects 210</p> <p><b>CHAPTER 8 C++ Numerics, IEEE 754 and Boost C++ Multiprecision 215</b></p> <p>8.1 Introduction and Objectives 215</p> <p>8.2 Floating-Point Decomposition Functions in C++ 219</p> <p>8.3 A Tour of std::numeric_limits 221</p> <p>8.4 An Introduction to Error Analysis 223</p> <p>8.5 Example: Numerical Quadrature 224</p> <p>8.6 Other Useful Mathematical Functions in C++ 228</p> <p>8.7 Creating C++ Libraries 231</p> <p>8.8 Summary and Conclusions 239</p> <p>8.9 Exercises and Projects 239</p> <p><b>CHAPTER 9 An Introduction to Unified Software Design 245</b></p> <p>9.1 Introduction and Objectives 245</p> <p>9.1.1 Future Predictions and Expectations 246</p> <p>9.2 Background 247</p> <p>9.3 System Scoping and Initial Decomposition 251</p> <p>9.4 Checklist and Looking Back 259</p> <p>9.5 Variants of the Software Process: Policy-Based Design 260</p> <p>9.6 Using Policy-Based Design for the DVM Problem 268</p> <p>9.7 Advantages of Uniform Design Approach 273</p> <p>9.8 Summary and Conclusions 274</p> <p>9.9 Exercises and Projects 275</p> <p><b>CHAPTER 10 New Data Types, Containers and Algorithms in C++ and Boost C++ Libraries 283</b></p> <p>10.1 Introduction and Objectives 283</p> <p>10.2 Overview of New Features 283</p> <p>10.3 C++ std::bitset and Boost Dynamic Bitset Library 284</p> <p>10.4 Chrono Library 288</p> <p>10.5 Boost Date and Time 301</p> <p>10.6 Forwards Lists and Compile-Time Arrays 306</p> <p>10.7 Applications of Boost.Array 311</p> <p>10.8 Boost uBLAS (Matrix Library) 313</p> <p>10.9 Vectors 316</p> <p>10.10 Matrices 318</p> <p>10.11 Applying uBLAS: Solving Linear Systems of Equations 322</p> <p>10.12 Summary and Conclusions 330</p> <p>10.13 Exercises and Projects 331</p> <p><b>CHAPTER 11 Lattice Models Fundamental Data Structures and Algorithms 333</b></p> <p>11.1 Introduction and Objectives 333</p> <p>11.2 Background and Current Approaches to Lattice Modelling 334</p> <p>11.3 New Requirements and Use Cases 335</p> <p>11.4 A New Design Approach: A Layered Approach 335</p> <p>11.5 Initial ‘101’ Examples of Option Pricing 347</p> <p>11.6 Advantages of Software Layering 349</p> <p>11.7 Improving Efficiency and Reliability 352</p> <p>11.8 Merging Lattices 355</p> <p>11.9 Summary and Conclusions 357</p> <p>11.10 Exercises and Projects 357</p> <p><b>CHAPTER 12 Lattice Models Applications to Computational Finance 367</b></p> <p>12.1 Introduction and Objectives 367</p> <p>12.2 Stress Testing the Lattice Data Structures 368</p> <p>12.3 Option Pricing Using Bernoulli Paths 372</p> <p>12.4 Binomial Model for Assets with Dividends 374</p> <p>12.5 Computing Option Sensitivities 377</p> <p>12.6 (Quick) Numerical Analysis of the Binomial Method 379</p> <p>12.7 Richardson Extrapolation with Binomial Lattices 382</p> <p>12.8 Two-Dimensional Binomial Method 382</p> <p>12.9 Trinomial Model of the Asset Price 384</p> <p>12.10 Stability and Convergence of the Trinomial Method 385</p> <p>12.11 Explicit Finite Difference Method 386</p> <p>12.12 Summary and Conclusions 389</p> <p>12.13 Exercises and Projects 389</p> <p><b>CHAPTER 13 Numerical Linear Algebra: Tridiagonal Systems and Applications 395</b></p> <p>13.1 Introduction and Objectives 395</p> <p>13.2 Solving Tridiagonal Matrix Systems 395</p> <p>13.3 The Crank-Nicolson and Theta Methods 406</p> <p>13.4 The ADE Method for the Impatient 411</p> <p>13.5 Cubic Spline Interpolation 415</p> <p>13.6 Some Handy Utilities 427</p> <p>13.7 Summary and Conclusions 428</p> <p>13.8 Exercises and Projects 429</p> <p><b>CHAPTER 14 Data Visualisation in Excel 433</b></p> <p>14.1 Introduction and Objectives 433</p> <p>14.2 The Structure of Excel-Related Objects 433</p> <p>14.3 Sanity Check: Is the Excel Infrastructure Up and Running? 435</p> <p>14.4 ExcelDriver and Matrices 437</p> <p>14.5 ExcelDriver and Vectors 444</p> <p>14.6 Path Generation for Stochastic Differential Equations 448</p> <p>14.7 Summary and Conclusions 459</p> <p>14.8 Exercises and Projects 459</p> <p>14.9 Appendix: COM Architecture Overview 463</p> <p>14.10 An Example 468</p> <p>14.11 Virtual Function Tables 471</p> <p>14.12 Differences between COM and Object-Oriented Paradigm 473</p> <p>14.13 Initialising the COM Library 474</p> <p><b>CHAPTER 15 Univariate Statistical Distributions 475</b></p> <p>15.1 Introduction, Goals and Objectives 475</p> <p>15.2 The Error Function and Its Universality 475</p> <p>15.3 One-Factor Plain Options 478</p> <p>15.4 Option Sensitivities and Surfaces 488</p> <p>15.5 Automating Data Generation 491</p> <p>15.6 Introduction to Statistical Distributions and Functions 499</p> <p>15.7 Advanced Distributions 504</p> <p>15.8 Summary and Conclusions 511</p> <p>15.9 Exercises and Projects 511</p> <p><b>CHAPTER 16 Bivariate Statistical Distributions and Two-Asset Option Pricing 515</b></p> <p>16.1 Introduction and Objectives 515</p> <p>16.2 Computing Integrals Using PDEs 516</p> <p>16.3 The Drezner Algorithm 521</p> <p>16.4 The Genz Algorithm and the West/Quantlib Implementations 521</p> <p>16.5 Abramowitz and Stegun Approximation 525</p> <p>16.6 Performance Testing 528</p> <p>16.7 Gauss–Legendre Integration 529</p> <p>16.8 Applications to Two-Asset Pricing 531</p> <p>16.9 Trivariate Normal Distribution 536</p> <p>16.10 Chooser Options 543</p> <p>16.11 Conclusions and Summary 545</p> <p>16.12 Exercises and Projects 546</p> <p><b>CHAPTER 17 STL Algorithms in Detail 551</b></p> <p>17.1 Introduction and Objectives 551</p> <p>17.2 Binders and std::bind 554</p> <p>17.3 Non-modifying Algorithms 557</p> <p>17.4 Modifying Algorithms 567</p> <p>17.5 Compile-Time Arrays 575</p> <p>17.6 Summary and Conclusions 576</p> <p>17.7 Exercises and Projects 576</p> <p>17.8 Appendix: Review of STL Containers and Complexity Analysis 583</p> <p><b>CHAPTER 18 STL Algorithms Part II 589</b></p> <p>18.1 Introduction and Objectives 589</p> <p>18.2 Mutating Algorithms 589</p> <p>18.3 Numeric Algorithms 597</p> <p>18.4 Sorting Algorithms 601</p> <p>18.5 Sorted-Range Algorithms 604</p> <p>18.5.5 Merging 608</p> <p>18.6 Auxiliary Iterator Functions 609</p> <p>18.7 Needle in a Haystack: Finding the Right STL Algorithm 612</p> <p>18.8 Applications to Computational Finance 613</p> <p>18.9 Advantages of STL Algorithms 613</p> <p>18.10 Summary and Conclusions 614</p> <p>18.11 Exercises and Projects 614</p> <p><b>CHAPTER 19 An Introduction to Optimisation and the Solution of Nonlinear Equations 617</b></p> <p>19.1 Introduction and Objectives 617</p> <p>19.2 Mathematical and Numerical Background 618</p> <p>19.3 Sequential Search Methods 619</p> <p>19.4 Solutions of Nonlinear Equations 620</p> <p>19.5 Fixed-Point Iteration 622</p> <p>19.6 Aitken’s Acceleration Process 623</p> <p>19.7 Software Framework 623</p> <p>19.8 Implied Volatility 632</p> <p>19.9 Solvers in the Boost C++ Libraries 632</p> <p>19.10 Summary and Conclusions 633</p> <p>19.11 Exercises and Projects 633</p> <p>19.12 Appendix: The Banach Fixed-Point Theorem 636</p> <p><b>CHAPTER 20 The Finite Difference Method for PDEs: Mathematical Background 641</b></p> <p>20.1 Introduction and Objectives 641</p> <p>20.2 General Convection–Diffusion–Reaction Equations and Black–Scholes PDE 641</p> <p>20.3 PDE Preprocessing 64520.3.2 Reduction of PDE to Conservative Form 646</p> <p>20.4 Maximum Principles for Parabolic PDEs 649</p> <p>20.5 The Fichera Theory 650</p> <p>20.6 Finite Difference Schemes: Properties and Requirements 654</p> <p>20.7 Example: A Linear Two-Point Boundary Value Problem 655</p> <p>20.8 Exponentially Fitted Schemes for Time-Dependent PDEs 659</p> <p>20.9 Richardson Extrapolation 663</p> <p>20.10 Summary and Conclusions 665</p> <p>20.11 Exercises and Projects 666</p> <p><b>CHAPTER 21 Software Framework for One-Factor Option Models 669</b></p> <p>21.1 Introduction and Objectives 669</p> <p>21.2 A Software Framework: Architecture and Context 669</p> <p>21.3 Modelling PDEs and Finite Difference Schemes: What is Supported? 670</p> <p>21.4 Several Versions of Alternating Direction Explicit 671</p> <p>21.5 A Software Framework: Detailed Design and Implementation 673</p> <p>21.6 C++ Code for PDE Classes 674</p> <p>21.7 C++ Code for FDM Classes 679</p> <p>21.8 Examples and Test Cases 690</p> <p>21.9 Summary and Conclusions 693</p> <p>21.10 Exercises and Projects 694</p> <p><b>CHAPTER 22 Extending the Software Framework 701</b></p> <p>22.1 Introduction and Objectives 701</p> <p>22.2 Spline Interpolation of Option Values 701</p> <p>22.3 Numerical Differentiation Foundations 704</p> <p>22.4 Numerical Greeks 710</p> <p>22.5 Constant Elasticity of Variance Model 715</p> <p>22.6 Using Software Design (GOF) Patterns 715</p> <p>22.7 Multiparadigm Design Patterns 720</p> <p>22.8 Summary and Conclusions 721</p> <p>22.9 Exercises and Projects 721</p> <p><b>CHAPTER 23A PDE Software Framework in C++11 for a Class of Path-Dependent Options 727</b></p> <p>23.1 Introduction and Objectives 727</p> <p>23.2 Modelling PDEs and Initial Boundary Value Problems in the Functional Programming Style 728</p> <p>23.3 PDE Preprocessing 731</p> <p>23.4 The Anchoring PDE 732</p> <p>23.5 ADE for Anchoring PDE 739</p> <p>23.6 Useful Utilities 746</p> <p>23.7 Accuracy and Performance 748</p> <p>23.8 Summary and Conclusions 750</p> <p>23.9 Exercises and Projects 751</p> <p><b>CHAPTER 24 Ordinary Differential Equations and their Numerical Approximation 755</b></p> <p>24.1 Introduction and Objectives 755</p> <p>24.2 What is an ODE? 755</p> <p>24.3 Classifying ODEs 756</p> <p>24.4 A Palette of Model ODEs 757</p> <p>24.5 Existence and Uniqueness Results 760</p> <p>24.6 Overview of Numerical Methods for ODEs: The Big Picture 763</p> <p>24.7 Creating ODE Solvers in C++ 770</p> <p>24.8 Summary and Conclusions 776</p> <p>24.9 Exercises and Projects 776</p> <p>24.10 Appendix 778</p> <p><b>CHAPTER 25 Advanced Ordinary Differential Equations and Method of Lines 781</b></p> <p>25.1 Introduction and Objectives 781</p> <p>25.2 An Introduction to the Boost Odeint Library 782</p> <p>25.3 Systems of Stiff and Non-stiff Equations 791</p> <p>25.4 Matrix Differential Equations 796</p> <p>25.5 The Method of Lines: What is it and what are its Advantages? 799</p> <p>25.6 Initial Foray in Computational Finance: MOL for One-Factor Black-Scholes PDE 801</p> <p>25.7 Barrier Options 806</p> <p>25.8 Using Exponential Fitting of Barrier Options 808</p> <p>25.9 Summary and Conclusions 808</p> <p>25.10 Exercises and Projects 809</p> <p><b>CHAPTER 26 Random Number Generation and Distributions 819</b></p> <p>26.1 Introduction and Objectives 819</p> <p>26.2 What is a Random Number Generator? 820</p> <p>26.3 What is a Distribution? 821</p> <p>26.4 Some Initial Examples 825</p> <p>26.5 Engines in Detail 827</p> <p>26.6 Distributions in C++: The List 830</p> <p>26.7 Back to the Future: C-Style Pseudo-Random Number Generation 831</p> <p>26.8 Cryptographic Generators 833</p> <p>26.9 Matrix Decomposition Methods 833</p> <p>26.10 Generating Random Numbers 845</p> <p>26.11 Summary and Conclusions 848</p> <p>26.12 Exercises and Projects 849</p> <p><b>CHAPTER 27 Microsoft .Net, C# and C++11 Interoperability 853</b></p> <p>27.1 Introduction and Objectives 853</p> <p>27.2 The Big Picture 854</p> <p>27.3 Types 858</p> <p>27.4 Memory Management 859</p> <p>27.5 An Introduction to Native Classes 861</p> <p>27.6 Interfaces and Abstract Classes 861</p> <p>27.7 Use Case: C++/CLI as ‘Main Language’ 862</p> <p>27.8 Use Case: Creating Proxies, Adapters and Wrappers for Legacy C++ Applications 864</p> <p>27.8.1 Alternative: SWIG (Simplified Wrapper and Interface Generator) 871</p> <p>27.9 ‘Back to the Future’ Use Case: Calling C# Code from C++11 872</p> <p>27.10 Modelling Event-Driven Applications with Delegates 876</p> <p>27.11 Use Case: Interfacing with Legacy Code 886</p> <p>27.12 Assemblies and Namespaces for C++/CLI 889</p> <p>27.13 Summary and Conclusions 895</p> <p>27.14 Exercises and Projects 896</p> <p><b>CHAPTER 28 C++ Concurrency, Part I Threads 899</b></p> <p>28.1 Introduction and Objectives 899</p> <p>28.2 Thread Fundamentals 900</p> <p>28.3 Six Ways to Create a Thread 903</p> <p>28.4 Intermezzo: Parallelising the Binomial Method 909</p> <p>28.5 Atomics 916</p> <p>28.6 Smart Pointers and the Thread-Safe Pointer Interface 924</p> <p>28.7 Thread Synchronisation 926</p> <p>28.8 When should we use Threads? 929</p> <p>28.9 Summary and Conclusions 929</p> <p>28.10 Exercises and Projects 930</p> <p><b>CHAPTER 29 C++ Concurrency, Part II Tasks 935</b></p> <p>29.1 Introduction and Objectives 935</p> <p>29.2 Finding Concurrency: Motivation 936</p> <p>29.3 Tasks and Task Decomposition 937</p> <p>29.4 Futures and Promises 941</p> <p>29.5 Shared Futures 945</p> <p>29.6 Waiting on Tasks to Complete 948</p> <p>29.7 Continuations and Futures in Boost 950</p> <p>29.8 Pure Functions 952</p> <p>29.9 Tasks versus Threads 953</p> <p>29.10 Parallel Design Patterns 953</p> <p>29.11 Summary and Conclusions 955</p> <p>29.12 Quizzes, Exercises and Projects 955</p> <p><b>CHAPTER 30 Parallel Patterns Language (PPL) 961</b></p> <p>30.1 Introduction and Objectives 961</p> <p>30.2 Parallel Algorithms 962</p> <p>30.3 Partitioning Work 967</p> <p>30.4 The Aggregation/Reduction Pattern in PPL 971</p> <p>30.5 Concurrent Containers 977</p> <p>30.6 An Introduction to the Asynchronous Agents Library and Event-Based Systems 978</p> <p>30.7 A Design Plan to Implement a Framework Using Message Passing and Other Approaches 986</p> <p>30.8 Summary and Conclusions 989</p> <p>30.9 Exercises and Projects 990</p> <p><b>CHAPTER 31 Monte Carlo Simulation, Part I 993</b></p> <p>31.1 Introduction and Objectives 993</p> <p>31.2 The Boost Parameters Library for the Impatient 995</p> <p>31.3 Monte Carlo Version 1: The Monolith Program (‘Ball of Mud’) 1000</p> <p>31.4 Policy-Based Design: Dynamic Polymorphism 1003</p> <p>31.5 Policy-Based Design Approach: CRTP and Static Polymorphism 1011</p> <p>31.6 Builders and their Subcontractors (Factory Method Pattern) 1013</p> <p>31.7 Practical Issue: Structuring the Project Directory and File Contents 1014</p> <p>31.8 Summary and Conclusions 1016</p> <p>31.9 Exercises and Projects 1017</p> <p><b>CHAPTER 32 Monte Carlo Simulation, Part II 1023</b></p> <p>32.1 Introduction and Objectives 1023</p> <p>32.2 Parallel Processing and Monte Carlo Simulation 1023</p> <p>32.3 A Family of Predictor–Corrector Schemes 1033</p> <p>32.4 An Example (CEV Model) 1038</p> <p>32.5 Implementing the Monte Carlo Method Using the Asynchronous Agents Library 1041</p> <p>32.6 Summary and Conclusions 1047</p> <p>32.7 Exercises and Projects 1050</p> <p>Appendix 1: Multiple-Precision Arithmetic 1053</p> <p>Appendix 2: Computing Implied Volatility 1075</p> <p>References 1109</p> <p>Index 1117</p>
<p><b>DANIEL J. DUFFY</b> started the company Datasim in 1987 to promote C++ as a new object-oriented language for developing applications in the roles of developer, architect and requirements analyst to help clients design and analyse software systems for Computer Aided Design (CAD), process control and hardware- software systems, logistics, holography (optical technology) and computational finance. He used a combination of top-down functional decomposition and bottom-up object-oriented programming techniques to create stable and extendible applications. Prior to Datasim, he worked on engineering and financial applications in oil and gas and semiconductor industries using a range of numerical methods (for example, the finite element method [FEM]) on mainframe and mini-computers. <p>Duffy has BA (Mod), MSc and PhD degrees in pure, numerical and applied mathematics and has been active in promoting partial differential equation (PDE) and finite difference methods (FDM) to applications in computational finance. He was responsible for the introduction of the Fractional Step ("Soviet Splitting") method and the Alternating Direction Explicit (ADE) method in computational finance. <p>He is the originator of two very popular and leading C++ online courses (both C++98 and C++11/14/17) on www.quantnet.com in cooperation with Quantnet LLC and Baruch College (CUNY), NYC. He also trains quants, developers and designers around the world. Duffy can be contacted at dduffy@datasim.nl. In his spare time, he tries to keep in shape by workouts in the dojo.
<p><b>The New Way C++ Does Computational Finance</b></br> <p>The goal of <i>Financial Instrument Pricing Using C++, Second Edition,</i> is to apply modern C++ language and design features to the creation of efficient and robust applications. This book not only documents these developments, but also highlights the advantages for the quant developer: <ul> <li>Comprehensive and detailed exposition of improved and new C++ syntax; extensive examples and application code</li> <li>Using C++11 libraries for random number generation, concurrency, STL and more</li> <li>Overhaul of object-oriented design patterns and porting them to a multiparadigm programming model</li> <li>IEEE 754 and multiprecision; interfacing C++ with .NET and C#</li> <li>Modern PDE/FDM: ADE; Soviet Splitting and Method of Lines, (Parallel) Monte Carlo and lattice methods</li> <li>Support for numerical libraries</li> <li>Machine-readable code</li> </ul> <p>Daniel Duffy used a spiral model approach in writing each chapter of this book: analyse a little, design a little, and code a little. Each cycle ends with a working prototype in C++ and shows how a given algorithm or numerical method works. Additionally, each chapter contains non-trivial exercises and projects that discuss improvements and extensions to the material. This book is for designers and application developers in computational finance, and assumes the reader has some fundamental experience of C++ and derivatives pricing.

Diese Produkte könnten Sie auch interessieren:

Mindfulness
Mindfulness
von: Gill Hasson
PDF ebook
12,99 €
Counterparty Credit Risk, Collateral and Funding
Counterparty Credit Risk, Collateral and Funding
von: Damiano Brigo, Massimo Morini, Andrea Pallavicini
EPUB ebook
69,99 €