Book description
A practice-oriented guide to using C# to design and program pricing and trading models
In this step-by-step guide to software development for financial analysts, traders, developers and quants, the authors show both novice and experienced practitioners how to develop robust and accurate pricing models and employ them in real environments. Traders will learn how to design and implement applications for curve and surface modeling, fixed income products, hedging strategies, plain and exotic option modeling, interest rate options, structured bonds, unfunded structured products, and more. A unique mix of modern software technology and quantitative finance, this book is both timely and practical. The approach is thorough and comprehensive and the authors use a combination of C# language features, design patterns, mathematics and finance to produce efficient and maintainable software.
Designed for quant developers, traders and MSc/MFE students, each chapter has numerous exercises and the book is accompanied by a dedicated companion website, www.datasimfinancial.com
, providing all source code, alongside audio, support and discussion forums for readers to comment on the code and obtain new versions of the software.
Table of contents
- Cover
- Title Page
- Copyright
- Series
- List of Figures
- List of Tables
- Dedication
- Introduction
- Chapter 1: Global Overview of the Book
-
Chapter 2: C# Fundamentals
- 2.1 INTRODUCTION AND OBJECTIVES
- 2.2 BACKGROUND TO C#
- 2.3 VALUE TYPES, REFERENCE TYPES AND MEMORY MANAGEMENT
- 2.4 BUILT-IN DATA TYPES IN C#
- 2.5 CHARACTER AND STRING TYPES
- 2.6 OPERATORS
- 2.7 CONSOLE INPUT AND OUTPUT
- 2.8 USER-DEFINED STRUCTS
- 2.9 MINI APPLICATION: OPTION PRICING
- 2.10 SUMMARY AND CONCLUSIONS
- 2.11 EXERCISES AND PROJECTS
-
Chapter 3: Classes in C#
- 3.1 INTRODUCTION AND OBJECTIVES
- 3.2 THE STRUCTURE OF A CLASS: METHODS AND DATA
- 3.3 THE KEYWORD ‘THIS’
- 3.4 PROPERTIES
- 3.5 CLASS VARIABLES AND CLASS METHODS
- 3.6 CREATING AND USING OBJECTS IN C#
- 3.7 EXAMPLE: EUROPEAN OPTION PRICE AND SENSITIVITIES
- 3.8 ENUMERATION TYPES
- 3.9 EXTENSION METHODS
- 3.10 AN INTRODUCTION TO INHERITANCE IN C#
- 3.11 EXAMPLE: TWO-FACTOR PAYOFF HIERARCHIES AND INTERFACES
- 3.12 EXCEPTION HANDLING
- 3.13 SUMMARY AND CONCLUSIONS
- 3.14 EXERCISES AND PROJECTS
-
Chapter 4: Classes and C# Advanced Features
- 4.1 INTRODUCTION AND OBJECTIVES
- 4.2 INTERFACES
- 4.3 USING INTERFACES: VASICEK AND COX-INGERSOLL-ROSS (CIR) BOND AND OPTION PRICING
- 4.4 INTERFACES IN .NET AND SOME ADVANCED FEATURES
- 4.5 COMBINING INTERFACES, INHERITANCE AND COMPOSITION
- 4.6 INTRODUCTION TO DELEGATES AND LAMBDA FUNCTIONS
- 4.7 LAMBDA FUNCTIONS AND ANONYMOUS METHODS
- 4.8 OTHER FEATURES IN C#
- 4.9 ADVANCED .NET DELEGATES
- 4.10 THE STANDARD EVENT PATTERN IN .NET AND THE OBSERVER PATTERN
- 4.11 SUMMARY AND CONCLUSIONS
- 4.12 EXERCISES AND PROJECTS
-
Chapter 5: Data Structures and Collections
- 5.1 INTRODUCTION AND OBJECTIVES
- 5.2 ARRAYS
- 5.3 DATES, TIMES AND TIME ZONES
- 5.4 ENUMERATION AND ITERATORS
- 5.5 OBJECT-BASED COLLECTIONS AND STANDARD COLLECTION INTERFACES
- 5.6 THE LIST<T> CLASS
- 5.7 THE Hashtable<T> CLASS
- 5.8 THE Dictionary<Key, Value> CLASS
- 5.9 THE Hashset<T> CLASSES
- 5. 10 Bitarray: DYNAMICALLY SIZED BOOLEAN LISTS
- 5.11 OTHER DATA STRUCTURES
- 5.12 STRINGS AND STRINGBUILDER
- 5.13 SOME NEW FEATURES IN .NET 4.0
- 5.14 SUMMARY AND CONCLUSIONS
- 5.15 EXERCISES AND PROJECTS
-
Chapter 6: Creating User-defined Data Structures
- 6.1 INTRODUCTION AND OBJECTIVES
- 6.2 DESIGN RATIONALE AND GENERAL GUIDELINES
- 6.3 ARRAYS AND MATRICES
- 6.4 VECTORS AND NUMERIC MATRICES
- 6.5 HIGHER-DIMENSIONAL STRUCTURES
- 6.6 SETS
- 6.7 ASSOCIATIVE ARRAYS AND MATRICES
- 6.8 STANDARDISATION: INTERFACES AND CONSTRAINTS
- 6.9 USING ASSOCIATIVE ARRAYS AND MATRICES TO MODEL LOOKUP TABLES
- 6.10 TUPLES
- 6.11 SUMMARY AND CONCLUSIONS
- 6.12 EXERCISES AND PROJECTS
-
Chapter 7: An Introduction to Bonds and Bond Pricing
- 7.1 INTRODUCTION AND OBJECTIVES
- 7.2 EMBEDDED OPTIONALITY
- 7.3 THE TIME VALUE OF MONEY: FUNDAMENTALS
- 7.4 MEASURING YIELD
- 7.5 MACAULEY DURATION AND CONVEXITY
- 7.6 DATES AND DATE SCHEDULERS FOR FIXED INCOME APPLICATIONS
- 7.7 EXPORTING SCHEDULERS TO EXCEL
- 7.8 OTHER EXAMPLES
- 7.9 PRICING BONDS: AN EXTENDED DESIGN
- 7.10 SUMMARY AND CONCLUSIONS
- 7.11 EXERCISES AND PROJECTS
-
Chapter 8: Data Management and Data Lifecycle
- 8.1 INTRODUCTION AND OBJECTIVES
- 8.2 DATA LIFECYCLE IN TRADING APPLICATIONS
- 8.3 AN INTRODUCTION TO STREAMS AND I/O
- 8.4 FILE AND DIRECTORY CLASSES
- 8.5 SERIALISATION ENGINES IN .NET
- 8.6 THE BINARY SERIALISER
- 8.7 XML SERIALISATION
- 8.8 DATA LIFETIME MANAGEMENT IN FINANCIAL AND TRADING APPLICATIONS
- 8.9 SUMMARY AND CONCLUSIONS
- 8.10 EXERCISES AND PROJECTS
-
Chapter 9: Binomial Method, Design Patterns and Excel Output
- 9.1 INTRODUCTION AND OBJECTIVES
- 9.2 DESIGN OF BINOMIAL METHOD
- 9.3 DESIGN PATTERNS AND CLASSES
- 9.4 EARLY EXERCISE FEATURES
- 9.5 COMPUTING HEDGE SENSITIVITIES
- 9.6 MULTI-DIMENSIONAL BINOMIAL METHOD
- 9.7 IMPROVING PERFORMANCE USING PADé RATIONAL APPROXIMANTS
- 9.8 SUMMARY AND CONCLUSIONS
- 9.9 PROJECTS AND EXERCISES
-
Chapter 10: Advanced Lattices and Finite Difference Methods
- 10.1 INTRODUCTION AND OBJECTIVES
- 10.2 TRINOMIAL MODEL OF THE ASSET PRICE AND ITS C# IMPLEMENTATION
- 10.3 STABILITY AND CONVERGENCE OF THE TRINOMIAL METHOD
- 10.4 THE BLACK-SCHOLES PARTIAL DIFFERENTIAL EQUATION AND EXPLICIT SCHEMES
- 10.5 IMPLEMENTING EXPLICIT SCHEMES IN C#
- 10.6 STABILITY OF THE EXPLICIT FINITE DIFFERENCE SCHEME
- 10.7 AN INTRODUCTION TO THE ALTERNATING DIRECTION EXPLICIT METHOD (ADE)
- 10.8 IMPLEMENTING ADE FOR THE BLACK-SCHOLES PDE
- 10.9 TESTING THE ADE METHOD
- 10.10 ADVANTAGES OF THE ADE METHOD
- 10.11 SUMMARY AND CONCLUSIONS
- 10.12 APPENDIX: ADE NUMERICAL EXPERIMENTS
- 10.13 EXERCISES AND PROJECTS
-
Chapter 11: Interoperability: Namespaces, Assemblies and C++/CLI
- 11.1 INTRODUCTION AND OBJECTIVES
- 11.2 NAMESPACES
- 11.3 AN INTRODUCTION TO ASSEMBLIES
- 11.4 REFLECTION AND METADATA
- 11.5 C# AND NATIVE C++ INTEROPERABILITY: HOW IS THAT POSSIBLE?
- 11.6 USING C# FROM C++
- 11.7 CODE GENERATION USING THE REFLECTION API
- 11.8 APPLICATION DOMAINS
- 11.9 SUMMARY AND CONCLUSIONS
- 11.10 EXERCISES AND PROJECTS
-
Chapter 12: Bond Pricing: Design, Implementation and Excel Interfacing
- 12.1 INTRODUCTION AND OBJECTIVES
- 12.2 HIGH-LEVEL DESIGN OF BOND PRICING PROBLEM
- 12.3 BOND SCHEDULING
- 12.4 BOND FUNCTIONALITY AND CLASS HIERARCHIES
- 12.5 CALCULATING PRICE, YIELD AND DISCOUNT FACTORS: MATHTOOLS
- 12.6 DATA PRESENTATION AND EXCEL INTEROP
- 12.7 BOND DATA MANAGEMENT
- 12.8 USING THE EXCEL FILES
- 12.9 SUMMARY AND CONCLUSIONS
- 12.10 EXERCISES AND PROJECTS
-
Chapter 13: Interpolation Methods in Interest Rate Applications
- 13.1 INTRODUCTION AND OBJECTIVES
- 13.2 INTERPOLATION AND CURVE BUILDING: BASIC FORMULA FOR INTERPOLATOR TESTS
- 13.3 TYPES OF CURVE SHAPE
- 13.4 AN OVERVIEW OF INTERPOLATORS
- 13.5 BACKGROUND TO INTERPOLATION
- 13.6 APPROXIMATION OF FUNCTION DERIVATIVES
- 13.7 LINEAR AND CUBIC SPLINE INTERPOLATION
- 13.8 POSITIVITY-PRESERVING CUBIC INTERPOLATIONS: DOUGHERTY/HYMAN AND HUSSEIN
- 13.9 THE AKIMA METHOD
- 13.10 HAGAN-WEST APPROACH
- 13.11 GLOBAL INTERPOLATION
- 13.12 BILINEAR INTERPOLATION
- 13.13 SOME GENERAL GUIDELINES, HINTS AND TIPS
- 13.14 USING THE INTERPOLATORS AND TEST EXAMPLES
- 13.15 SUMMARY AND CONCLUSIONS
- 13.16 EXERCISES AND PROJECTS
-
Chapter 14: Short Term Interest Rate (STIR) Futures and Options
- 14.1 INTRODUCTION AND OBJECTIVES
- 14.2 AN OVERVIEW OF CASH MONEY MARKETS
- 14.3 SOURCES OF RISK IN MONEY MARKET TRANSACTIONS
- 14.4 REFERENCE RATE AND FIXINGS
- 14.5 STIR FUTURES
- 14.6 PRICING STIR OPTIONS
- 14.7 GENERATING INTERNATIONAL MONETARY MARKET (IMM) DATES
- 14.8 LIST STIR FUTURES AND STIR FUTURES OPTIONS
- 14.9 PUTTING IT ALL TOGETHER: STIR VERSUS OTC FROM A TRADER'S PERSPECTIVE
- 14.10 SUMMARY AND CONCLUSIONS
- 14.11 EXERCISES AND PROJECTS
-
Chapter 15: Single-curve Building
- 15.1 INTRODUCTION AND OBJECTIVES
- 15.2 STARTING DEFINITIONS AND OVERVIEW OF CURVE BUILDING PROCESS
- 15.3 BUILDING BLOCKS
- 15.4 INTRODUCTION TO INTEREST RATE SWAP
- 15.5 THE CURVE CONSTRUCTION MECHANISM
- 15.6 CODE DESIGN AND IMPLEMENTATION
- 15.7 CONSOLE EXAMPLES
- 15.8 SUMMARY AND CONCLUSIONS
- 15.9 EXERCISES AND PROJECTS
- 15.10 APPENDIX: TYPES OF SWAPS
-
Chapter 16: Multi-curve Building
- 16.1 INTRODUCTION AND OBJECTIVES
- 16.2 THE CONSEQUENCES OF THE CRISIS ON INTEREST RATE DERIVATIVES VALUATION
- 16.3 IMPACT OF USING OIS DISCOUNTING
- 16.4 THE BOOTSTRAPPING PROCESS USING TWO CURVES: DESCRIPTION OF THE MECHANISM
- 16.5 SENSITIVITIES
- 16.6 HOW TO ORGANISE THE CODE: A POSSIBLE SOLUTION
- 16.7 PUTTING IT TOGETHER, WORKING EXAMPLES
- 16.8 SUMMARY AND CONCLUSIONS
- 16.9 EXERCISES AND PROJECTS
- 16.10 APPENDIX: PAR ASSET SWAP SPREAD AND ZERO VOLATILITY SPREAD
-
Chapter 17: Swaption, Cap and Floor
- 17.1 INTRODUCTION AND OBJECTIVES: A CLOSED FORMULA WORLD
- 17.2 DESCRIPTION OF INSTRUMENTS AND FORMULAE
- 17.3 MULTI-CURVE FRAMEWORK ON CAP, FLOOR AND SWAPTION
- 17.4 BOOTSTRAPPING VOLATILITY FOR CAP AND FLOOR
- 17.5 HOW TO ORGANISE THE CODE IN C#: A POSSIBLE SOLUTION
- 17.6 CONSOLE AND EXCEL WORKING EXAMPLES
- 17.7 SUMMARY AND CONCLUSIONS
- 17.8 EXERCISE AND DISCUSSION
-
Chapter 18: Software Architectures and Patterns for Pricing Applications
- 18.1 INTRODUCTION AND OBJECTIVES
- 18.2 AN OVERVIEW OF THE GOF PATTERN
- 18.3 CREATIONAL PATTERNS
- 18.4 BUILDER PATTERN
- 18.5 STRUCTURAL PATTERNS
- 18.6 BEHAVIOURAL PATTERNS
- 18.7 BUILDER APPLICATION EXAMPLE: CALIBRATION ALGORITHMS FOR CAP AND FLOOR
- 18.8 A PDE/FDM PATTERNS-BASED FRAMEWORK FOR EQUITY OPTIONS
- 18.9 USING DELEGATES TO IMPLEMENT BEHAVIOURAL DESIGN PATTERNS
- 18.10 A SYSTEM DESIGN FOR MONTE CARLO APPLICATIONS
- 18.11 DYNAMIC PROGRAMMING IN .NET
- 18.12 SUMMARY AND CONCLUSIONS
- 18.13 EXERCISES AND PROJECTS
-
Chapter 19: LINQ (Language Integrated Query) and Fixed Income Applications
- 19.1 INTRODUCTION AND OBJECTIVES
- 19.2 SCOPE OF CHAPTER AND PREREQUISITES
- 19.3 LINQ QUERY OPERATORS
- 19.4 LINQ QUERIES AND INITIAL EXAMPLES
- 19.5 ADVANCED QUERIES
- 19.6 A NUMERICAL EXAMPLE
- 19.7 JOIN AND GROUPJOIN
- 19.8 EXAMPLES IN FIXED INCOME APPLICATIONS
- 19.9 LINQ AND EXCEL INTEROPERABILITY
- 19.10 SUMMARY AND CONCLUSIONS
- 19.11 EXERCISES AND PROJECTS
-
Chapter 20: Introduction to C# and Excel Integration
- 20.1 INTRODUCTION AND OBJECTIVES
- 20.2 EXCEL OBJECT MODEL
- 20.3 USING COM TECHNOLOGY IN .NET
- 20.4 PRIMARY INTEROP ASSEMBLIES (PIA)
- 20.5 STANDALONE APPLICATIONS
- 20.6 TYPES OF EXCEL ADD-INS
- 20.7 THE IDTExtensibility2 INTERFACE AND COM/.NET INTEROPERABILITY
- 20.8 DATA VISUALISATION IN EXCEL
- 20.9 CONCLUSION AND SUMMARY
- 20.10 EXERCISES AND PROJECTS
-
Chapter 21: Excel Automation Add-ins
- 21.1 INTRODUCTION AND OBJECTIVES
- 21.2 COM OVERVIEW
- 21.3 CREATING AUTOMATION ADD-INS: THE STEPS
- 21.4 EXAMPLE: CREATING A CALCULATOR, VERSION 1
- 21.5 EXAMPLE: CREATING A CALCULATOR, VERSION 2
- 21.6 VERSIONING
- 21.7 WORKING WITH RANGES
- 21.8 VOLATILE METHODS
- 21.9 OPTIONAL PARAMETERS
- 21.10 USING VBA WITH AUTOMATION ADD-INS
- 21.11 SUMMARY AND CONCLUSIONS
- 21.12 EXERCISES AND PROJECTS
-
Chapter 22: C# and Excel Integration COM Add-ins
- 22.1 INTRODUCTION AND OBJECTIVES
- 22.2 PREPARATIONS FOR COM ADD-INS
- 22.3 THE INTERFACE IDTExtensibility2
- 22.4 CREATING COM ADD-INS: THE STEPS
- 22.5 UTILITY CODE AND CLASSES
- 22.6 USING WINDOWS FORMS
- 22.7 EXAMPLE: CREATING A COM ADD-IN
- 22.8 DEBUGGING AND TROUBLESHOOTING
- 22.9 AN INTRODUCTION TO EXCEL-DNA
- 22.10 EXCEL COM INTEROPERABILITY AND RATE MULTI-CURVE
- 22.11 CONCLUSION AND SUMMARY
- 22.12 EXERCISES AND PROJECTS
-
Chapter 23: Real-time Data (RTD) Server
- 23.1 INTRODUCTION AND OBJECTIVES
- 23.2 REAL-TIME DATA IN EXCEL: OVERVIEW
- 23.3 REAL-TIME DATA FUNCTION
- 23.4 EXAMPLE
- 23.5 THE TOPIC CLASS AND DATA
- 23.6 CREATING AN RTD SERVER
- 23.7 USING THE RTD SERVER
- 23.8 TESTING AND TROUBLESHOOTING THE RTD SERVER
- 23.9 CONCLUSION AND SUMMARY
- 23.10 EXERCISES AND PROJECTS
-
Chapter 24: Introduction to Multi-threading in C#
- 24.1 INTRODUCTION AND OBJECTIVES
- 24.2 PROCESSES
- 24.3 USING Processstartinfo TO REDIRECT PROCESS I/O
- 24.4 AN INTRODUCTION TO THREADS IN C#
- 24.5 PASSING DATA TO A THREAD AND BETWEEN THREADS
- 24.6 THREAD STATES AND THREAD LIFECYCLE
- 24.7 THREAD PRIORITY
- 24.8 THREAD POOLING
- 24.9 ATOMIC OPERATIONS AND THE Interlocked CLASS
- 24.10 EXCEPTION HANDLING
- 24.11 MULTI-THREADED DATA STRUCTURES
- 24.12 A SIMPLE EXAMPLE OF TRADITIONAL MULTI-THREADING
- 24.13 SUMMARY AND CONCLUSIONS
- 24.14 EXERCISES AND PROJECTS
-
Chapter 25: Advanced Multi-threading in C#
- 25.1 INTRODUCTION AND OBJECTIVES
- 25.2 THREAD SAFETY
- 25.3 LOCKING MECHANISMS FOR OBJECTS AND CLASSES
- 25.4 MUTEX AND SEMAPHORE
- 25.5 NOTIFICATION AND SIGNALLING
- 25.6 ASYNCHRONOUS DELEGATES
- 25.7 SYNCHRONISING COLLECTIONS
- 25.8 TIMERS
- 25.9 FOREGROUND AND BACKGROUND THREADS
- 25.10 EXECUTING OPERATIONS ON SEPARATE THREADS: THE BackgroundWorker CLASS
- 25.11 PARALLEL PROGRAMMING IN .NET
- 25.12 TASK PARALLEL LIBRARY (TPL)
- 25.13 CONCURRENT DATA STRUCTURES
- 25.14 EXCEPTION HANDLING
- 25.15 SHIFTING CURVES
- 25.16 SUMMARY AND CONCLUSIONS
- 25.17 EXERCISES AND PROJECTS
-
Chapter 26: Creating Multi-threaded and Parallel Applications for Computational Finance
- 26.1 INTRODUCTION AND OBJECTIVES
- 26.2 MULTI-THREADED AND PARALLEL APPLICATIONS FOR COMPUTATIONAL FINANCE
- 26.3 FORK AND JOIN PATTERN
- 26.4 GEOMETRIC DECOMPOSITION
- 26.5 SHARED DATA AND READER/WRITER LOCKS: MULTIPLE READERS AND MULTIPLE WRITERS
- 26.6 MONTE CARLO OPTION PRICING AND THE PRODUCER–CONSUMER PATTERN
- 26.7 THE StopWatch CLASS
- 26.8 GARBAGE COLLECTION AND DISPOSAL
- 26.9 SUMMARY AND CONCLUSIONS
- 26.10 EXERCISES AND PROJECTS
-
Appendix 1: Object-oriented Fundamentals
- A1.1 INTRODUCTION AND OBJECTIVES
- A1.2 OBJECT-ORIENTED PARADIGM
- A1.3 GENERIC PROGRAMMING
- A1.4 PROCEDURAL PROGRAMMING
- A1.5 STRUCTURAL RELATIONSHIPS
- A1.6 AN INTRODUCTION TO CONCEPT MODELLING
- A1.7 CATEGORISATION AND CONCEPT LEVELS
- A1.8 WHOLE–PART PATTERN
- A1.9 MESSAGE-PASSING CONCEPT VERSUS PROCEDURAL PROGRAMMING
- Appendix 2: Nonlinear Least-squares Minimisation
-
Appendix 3: The Mathematical Background to the Alternating Direction Explicit (ADE) Method
- A3.1 INTRODUCTION AND OBJECTIVES
- A3.2 BACKGROUND TO ADE
- A3.3 SCOPING THE PROBLEM: ONE-FACTOR PROBLEMS
- A3.4 AN EXAMPLE: ONE-FACTOR BLACK-SCHOLES PDE
- A3.5 BOUNDARY CONDITIONS
- A3.6 EXAMPLE: BOUNDARY CONDITIONS FOR THE ONE-FACTOR BLACK-SCHOLES PDE
- A3.7 MOTIVATING THE ADE METHOD
- A3.8 THE ADE METHOD EXPOSED
- A3.9 THE CONVECTION TERM
- A3.10 OTHER KINDS OF BOUNDARY CONDITIONS
- A3.11 NONLINEAR PROBLEMS
- A3.12 ADE FOR PDEs IN CONSERVATIVE FORM
- A3.13 NUMERICAL RESULTS AND GUIDELINES
- A3.14 THE STEPS TO USE WHEN IMPLEMENTING ADE
- A3.15 SUMMARY AND CONCLUSIONS
- A3.16 EXERCISES AND PROJECTS
- Appendix 4: Cap, Floor and Swaption Using Excel-DNA
- Bibliography
- Web References
- Index
Product information
- Title: C# for Financial Markets
- Author(s):
- Release date: March 2013
- Publisher(s): Wiley
- ISBN: 9780470030080
You might also like
book
The Capital Markets
The Capital Markets: evolution of the financial ecosystem is the new standard providing practical text book …
book
The Option Trader’s Hedge Fund: A Business Framework for Trading Equity and Index Options
In this book, a hedge fund manager and an option trading coach show you how to …
book
Treasury Markets and Operations
An in-depth look at how banks and other financial institutions manage treasury operations Created for banking …
book
Practical C++20 Financial Programming: Problem Solving for Quantitative Finance, Financial Engineering, Business, and Economics
Apply C++ to programming problems in the financial industry using this hands-on book, updated for C++20. …