Financial Instrument Pricing Using C++.
Material type:
- text
- computer
- online resource
- 9781119170495
- 332.6/0285/5133
- HG4515.2 .D844 2018
Intro -- Financial Instrument Pricing Using C++ 2e -- Contents -- 1 A Tour of C++ and Environs -- 1.1 Introduction and Objectives -- 1.2 What is C++? -- 1.3 C++ as a Multiparadigm Programming Language -- 1.4 The Structure and Contents of this Book: Overview -- 1.5 A Tour of C++11: Black-Scholes and Environs -- 1.5.1 System Architecture -- 1.5.2 Detailed Design -- 1.5.3 Libraries and Algorithms -- 1.5.4 Configuration and Execution -- 1.6 Parallel Programming in C++ and Parallel C++ Libraries -- 1.7 Writing C++ Applications -- Where and How to Start? -- 1.8 For Whom is this Book Intended? -- 1.9 Next-Generation Design and Design Patterns in C++ -- 1.10 Some Useful Guidelines and Developer Folklore -- 1.11 About the Author -- 1.12 The Source Code and Getting the Source Code -- 2 New and Improved C++ Fundamentals -- 2.1 Introduction and Objectives -- 2.2 The C++ Smart Pointers -- 2.2.1 An Introduction to Memory Management -- 2.3 Using Smart Pointers in Code -- 2.3.1 Class std::shared_ptr -- 2.3.2 Class std::unique_ptr -- 2.3.3 std::weak_ptr -- 2.3.4 Should We Use Smart Pointers and When? -- 2.4 Extended Examples of Smart Pointers Usage -- 2.4.1 Classes with Embedded Pointers -- 2.4.2 Re-engineering Object-Oriented Design Patterns -- 2.5 Move Semantics and Rvalue References -- 2.5.1 A Quick Overview of Value Categories -- 2.5.2 Why Some Classes Need Move Semantics -- 2.5.3 Move Semantics and Performance -- 2.5.4 Move Semantics and Shared Pointers -- 2.6 Other Bits and Pieces: Usability Enhancements -- 2.6.1 Type Alias and Alias Templates -- 2.6.2 Automatic Type Deduction and the auto Specifier -- 2.6.3 Range-Based for Loops -- 2.6.4 nullptr -- 2.6.5 New Fundamental Data Types -- 2.6.6 Scoped and Strongly Typed Enumerations -- 2.6.7 The Attribute [[deprecated]] -- 2.6.8 Digit Separators -- 2.6.9 Unrestricted Unions.
2.6.10 std::variant (C++17) and boost::variant -- 2.7 Summary and Conclusions -- 2.8 Exercises and Projects -- 3 Modelling Functions in C++ -- 3.1 Introduction and Objectives -- 3.2 Analysing and Classifying Functions -- 3.2.1 An Introduction to Functional Programming -- 3.2.2 Function Closure -- 3.2.3 Currying -- 3.2.4 Partial Function Application -- 3.2.5 Lambda (Anonymous) Functions -- 3.2.6 Eager and Lazy Evaluation -- 3.2.7 Fold -- 3.2.8 Continuation -- 3.3 New Functionality in C++: std::function< -- > -- -- 3.4 New Functionality in C++: Lambda Functions and Lambda Expressions -- 3.4.1 Basic Syntax -- 3.4.2 Initial Examples -- 3.4.3 Lambda Functions and Classes: Capturing Member Data -- 3.4.4 Storing Lambda Functions -- 3.5 Callable Objects -- 3.6 Function Adapters and Binders -- 3.6.1 Binding and Function Objects -- 3.6.2 Binding and Free Functions -- 3.6.3 Binding and Subtype Polymorphism -- 3.7 Application Areas -- 3.8 An Example: STRATEGY Pattern New Style -- 3.9 Migrating from Traditional Object-Oriented Solutions: Numerical Quadrature -- 3.10 Summary and Conclusions -- 3.11 Exercises and Projects -- 4 Advanced C++ Template Programming -- 4.1 Introduction and Objectives -- 4.2 Preliminaries -- 4.2.1 Arithmetic Operators and Implicit Conversions -- 4.2.2 A Primer on Variadic Functions -- 4.2.3 Value Categories -- 4.3 decltype Specifier -- 4.3.1 Initial Examples -- 4.3.2 Extended Examples -- 4.3.3 The Auxiliary Trait std::declval -- 4.3.4 Expressions, lvalues, rvalues and xvalues -- 4.4 Life Before and After decltype -- 4.4.1 Extending the STL to Support Heterogeneous Data Types -- 4.5 std::result_of and SFINAE -- 4.6 std::enable_if -- 4.7 Boost enable_if -- 4.8 std::decay()Trait -- 4.9 A Small Application: Quantities and Units -- 4.10 Conclusions and Summary -- 4.11 Exercises and Projects -- 5 Tuples in C++ and their Applications.
5.1 Introduction and Objectives -- 5.2 An std::pair Refresher and New Extensions -- 5.3 Mathematical and Computer Science Background -- 5.4 Tuple Fundamentals and Simple Examples -- 5.5 Advanced Tuples -- 5.5.1 Tuple Nesting -- 5.5.2 Variadic Tuples -- 5.6 Using Tuples in Code -- 5.6.1 Function Return Types -- 5.6.2 Function Input Arguments -- 5.7 Other Related Libraries -- 5.7.1 Boost Tuple -- 5.7.2 Boost Fusion -- 5.8 Tuples and Run-Time Efficiency -- 5.9 Advantages and Applications of Tuples -- 5.10 Summary and Conclusions -- 5.11 Exercises and Projects -- 6 Type Traits, Advanced Lambdas and Multiparadigm Design in C++ -- 6.1 Introduction and Objectives -- 6.2 Some Building Blocks -- 6.3 C++ Type Traits -- 6.3.1 Primary Type Categories -- 6.3.2 Composite Type Categories -- 6.3.3 Type Properties -- 6.3.4 Type Relationships -- 6.3.5 'Internal Properties' of Types -- 6.3.6 Other Type Traits -- 6.4 Initial Examples of Type Traits -- 6.4.1 Simple Bridge Pattern -- 6.5 Generic Lambdas -- 6.6 How Useful will Generic Lambda Functions be in the Future? -- 6.6.1 Duck Typing and Avoiding Class Hierarchies -- 6.6.2 Something Completely Different: Homotopy Theory -- 6.7 Generalised Lambda Capture -- 6.7.1 Living Without Generalised Lambda Capture -- 6.8 Application to Stochastic Differential Equations -- 6.8.1 SDE Factories -- 6.9 Emerging Multiparadigm Design Patterns: Summary -- 6.10 Summary and Conclusions -- 6.11 Exercises and Projects -- 7 Multiparadigm Design in C++ -- 7.1 Introduction and Objectives -- 7.2 Modelling and Design -- 7.2.1 Liskov Substitution Principle -- 7.2.2 Single Responsibility Principle -- 7.2.3 An Example: Separation of Concerns for Monte Carlo Simulation -- 7.3 Low-Level C++ Design of Classes -- 7.3.1 Explicit Specifier -- 7.3.2 Deleted and Defaulted Member Functions -- 7.3.3 The constexpr Keyword.
7.3.4 The override and final Keywords -- 7.3.5 Uniform Initialisation -- 7.3.6 Initialiser Lists -- 7.3.7 Keyword noexcept -- 7.4 Shades of Polymorphism -- 7.5 Is there More to Life than Inheritance? -- 7.6 An Introduction to Object-Oriented Software Metrics -- 7.6.1 Class Size -- 7.6.2 Class Internals -- 7.6.3 Class Coupling -- 7.6.4 Class and Member Function Inheritance -- 7.7 Summary and Conclusions -- 7.8 Exercises and Projects -- 8 C++ Numerics, IEEE 754 and Boost C++ Multiprecision -- 8.1 Introduction and Objectives -- 8.1.1 Formats -- 8.1.2 Rounding Rules -- 8.1.3 Exception Handling -- 8.1.4 Extended and Extendible Precision Formats -- 8.2 Floating-Point Decomposition Functions in C++ -- 8.3 A Tour of std::numeric_limits< -- T> -- -- 8.4 An Introduction to Error Analysis -- 8.4.1 Loss of Significance -- 8.5 Example: Numerical Quadrature -- 8.6 Other Useful Mathematical Functions in C++ -- 8.7 Creating C++ Libraries -- 8.7.1 Creating Static C++ Libraries -- 8.7.2 Dynamic Link Libraries -- 8.7.3 Boost C++ DLLs -- 8.8 Summary and Conclusions -- 8.9 Exercises and Projects -- 9 An Introduction to Unified Software Design -- 9.1 Introduction and Objectives -- 9.1.1 Future Predictions and Expectations -- 9.2 Background -- 9.2.1 Jackson Problem Frames -- 9.2.2 The Hatley-Pirbhai Method -- 9.2.3 Domain Architectures -- 9.2.4 Garlan-Shaw Architecture -- 9.2.5 System and Design Patterns -- 9.3 System Scoping and Initial Decomposition -- 9.3.1 System Context Diagram -- 9.3.2 System Responsibilities and Services -- 9.3.3 Optimisation: System Context and Domain Architectures -- 9.4 Checklist and Looking Back -- 9.4.1 A Special Case: Defining the Systems Operating Environment -- 9.5 Variants of the Software Process: Policy-Based Design -- 9.5.1 Advantages and Limitations of PBD -- 9.5.2 A Defined Process for PBD.
9.6 Using Policy-Based Design for the DVM Problem -- 9.6.1 Introducing Events and Delegates -- 9.7 Advantages of Uniform Design Approach -- 9.8 Summary and Conclusions -- 9.9 Exercises and Projects -- 10 New Data Types, Containers and Algorithms in C++ and Boost C++ Libraries -- 10.1 Introduction and Objectives -- 10.2 Overview of New Features -- 10.3 C++ std::bitset< -- N> -- and Boost Dynamic Bitset Library -- 10.3.1 Boolean Operations -- 10.3.2 Type Conversions -- 10.3.3 Boost dynamic_bitset -- 10.3.4 Applications of Dynamic Bitsets -- 10.4 Chrono Library -- 10.4.1 Compile-Time Fractional Arithmetic with std::ratio< -- > -- -- 10.4.2 Duration -- 10.4.3 Timepoint and Clocks -- 10.4.4 A Simple Stopwatch -- 10.4.5 Examples and Applications -- 10.4.6 Boost Chrono Library -- 10.5 Boost Date and Time -- 10.5.1 Overview of Concepts and Functionality -- 10.5.2 Gregorian Time -- 10.5.3 Date -- 10.6 Forwards Lists and Compile-Time Arrays -- 10.6.1 std::forward_list< -- > -- -- 10.6.2 boost::array< -- > -- and std::array< -- > -- -- 10.7 Applications of Boost.Array -- 10.8 Boost uBLAS (Matrix Library) -- 10.8.1 Introduction and Objectives -- 10.8.2 BLAS (Basic Linear Algebra Subprograms) -- 10.8.3 BLAS Level 1 -- 10.8.4 BLAS Level 2 -- 10.8.5 BLAS Level 3 -- 10.9 Vectors -- 10.9.1 Dense Vectors -- 10.9.2 Creating and Accessing Dense Vectors -- 10.9.3 Special Dense Vectors -- 10.10 Matrices -- 10.10.1 Dense Matrices -- 10.10.2 Creating and Accessing Dense Matrices -- 10.10.3 Special Dense Matrices -- 10.11 Applying uBLAS: Solving Linear Systems of Equations -- 10.11.1 Conjugate Gradient Method -- 10.11.2 LU Decomposition -- 10.11.3 Cholesky Decomposition -- 10.12 Summary and Conclusions -- 10.13 Exercises and Projects -- 11 Lattice Models Fundamental Data Structures and Algorithms -- 11.1 Introduction and Objectives.
11.2 Background and Current Approaches to Lattice Modelling.
Description based on publisher supplied metadata and other sources.
Electronic reproduction. Ann Arbor, Michigan : ProQuest Ebook Central, 2024. Available via World Wide Web. Access may be limited to ProQuest Ebook Central affiliated libraries.
There are no comments on this title.