Models and Architectures for UML Applications
A unique catalog of domain architectures offering
design solutions for real-world systems
Domain architectures describes and documents a number of recurring patterns and models which emerge in real-life software projects. A domain architecture is an archetype of a system designed to show functionality, behaviour and structure traits. It provides a top down view of a system - which has major implications for system analysts, software developers and architects. It can enable developers to borrow or learn from design solutions that have worked in the same domain, and help to predict major system requirements.
This book describes how to accommodate system requirements by integrating them with one or more instances of a domain architecture. The artifacts of this process can then be mapped to the popular POSA and GOF design patterns.
Described and documented using UML models and meta-models, and concentrating on medium to large-scale systems, the domain architectures described in this book will help software professionals to build a stable architectural framework for high-quality systems.
The five domain architectures presented are:
- Manufacturing (MAN)
- Resource Allocation Tracking (RAT)
- Management and Information Systems (MIS)
- Process Control and Real-Time (PCS)
- Interactive and Access Control Systems (ACS)
Domain Architectures is a catalog or repository of proven solutions, and is a handbook and a reference for software professionals using object-oriented technology and UML to solve real-life problems.
Domain Architectures - Models and Architecture for UML Applications
by Daniel J. Duffy
Financial Instrument Pricing using C++
One of the best languages for the development of financial engineering and instrument pricing applications is C++. It has several features that allow developers to write robust, flexible and extensible software systems. It is an ANSI/ISO standard, fully object-oriented and interfaces with many third-party applications. It has support for templates and generic programming, massive reusability using templates ('write once') and support for legacy C applications.
In this book we bring C++ to the next level by applying it to the design and implementation of classes, libraries and applications for option and derivative pricing models.
We employ modern software engineering techniques to produce industrial-strength applications:
- Using the Standard Template Library (STL) in finance
- Creating your own template classes and functions
- Reusable data structures for vectors, matrices and tensors
- Classes for numerical analysis (numerical linear algebra)
- Solving the Black-Scholes equations, exact and approximate solutions
- Implementing the Finite Difference Method in C++
- Integration with the 'Gang of Four' Design Patterns
- Interfacing with Excel (output and add-ins)
- Financial engineering and XML
- Cash flow and yield curves
Included with the book is a CD containing the source code in the Datasim Financial Toolkit that you can use directly. This will get you up to speed with your C++ applications by reusing existing classes and libraries.
'Unique... Let's all give a warm welcome to modern pricing tools'
Paul Wilmott, mathematician, author and fund manager
If you own this book, please visit the site of Egor Kraev, who did a great job in collecting and documenting issues, comments and corrections to the book.
Financial Instrument Pricing using C++
by Daniel J. Duffy
Introduction to C++ for financial engineers
An Object-oriented Approach
This book introduces the reader to the C++ programming language and how to use it to write applications in quantitative finance (QF) and related areas. No previous knowledge of C or C++ is required. - experience with VBA, Matlab or other programming language is sufficient. The book adopts an incremental approach; starting from basic principles then moving on to advanced complex techniques and then to real-life applications in financial engineering.
There are five major parts in the book:
- C++ fundamentals and object-oriented thinking in QF
- Advanced object-oriented features such as inheritance and polymorphism
- Template programming and the Standard Template Library (STL)
- An introduction to GOF design patterns and their applications in QF Applications
The kinds of applications include binomial and trinomial methods, Monte Carlo simulation, advanced trees, partial differential equations and finite difference methods.
This book contains a CD with all source code and many useful C++ classes that you can use in your own applications. Examples, test cases and applications are directly relevant to QF.
This book is the perfect companion to Daniel J. Duffy’s book Financial Instrument Pricing using C++
(Wiley 2004, 0470855096)
The object-oriented programming language C++ is the de facto standard for developing real-life applications for Quantitative Finance and Financial Engineering.
This language was designed by Dr. Bjarne Stroustup in the early 1990's and it has become one of the most popular and robust languages for many important areas such as medical systems, computer graphics, telecommunications and in application areas where performance, accuracy and interoperability issues play a key role. The general expectation is that its importance will grow in the coming years.
C++ has also become the de facto standard for quant development and analysis. Knowledge of C++ is mandatory for many openings and job positions in Quantitative Finance. This book is the first book to discuss many of the issues that you need to know in order to be able to design and implement real-world applications. We focus on a number of critical topics:
- Learing the essential syntax of C++ ('getting the fundamentals right')
- Designing and implementing generic data structures using STL
- Numerous applications (lattices, finite difference, Monte Carlo, etc)
- Libraries, design patterns (GOF, POSA) and reusable software frameworks
- Introduction to COM and C++ to Excel interoperability
Each chapter deals with one major topic. Furthermore, each chapter builds only on the results of the chapters preceding it, so that we keep the amount of forward referencing to a minimum. We discuss all the syntax that is discussed in the IT books and we apply it to QF applications.
Last, but not least, each chapter concludes with exercises and projects to test what you learned in that chapter. The exercises are based on the tactic: 'get it working, then get it right, then get it optimised'. The exercises will also help you prepare for your job interviews.
Included with the book is a CD with full source code, including working code for lattice, fininte difference and Monte Carlo methods, for one-factor and two-factor pricing models as well as an easy-to-use C++ visualization package to help you examine the output from these numerical methods.
Introduction to C++ for financial engineers
by Daniel J. Duffy
Finite difference methods in financial engineering
A Partial Differential Equation Approach
The world of quantitative finance (QF) is one of the fastest growing areas of research and its practical applications to derivatives pricing problem. Since the discovery of the famous Black-Scholes equation in the 1970's we have seen a surge in the number of models for a wide range of products such as plain and exotic options, interest rate derivatives, real options and many others. Gone are the days when it was possible to price these derivatives analytically. For most problems we must resort to some kind of approximate method.
In this book we employ partial differential equations (PDE) to describe a range of one-factor and multi-factor derivatives products such as plain European and American options, multi-asset options, Asian options, interest rate options and real options. PDE techniques allow us to create a framework for modeling complex and interesting derivatives products. Having defined the PDE problem we then approximate it using the Finite Difference Method (FDM). This method has been used for many application areas such as fluid dynamics, heat transfer, semiconductor simulation and astrophysics, to name just a few. In this book we apply the same techniques to pricing real-life derivative products. We use both traditional (or well-known) methods as well as a number of advanced schemes that are making their way into the QF literature:
- Crank-Nicolson, exponentially fitted and higher-order schemes for one-factor and multi-factor options
- Early exercise features and approximation using front-fixing, penalty and variational methods
- Modelling stochastic volatility models using Splitting methods
- Critique of ADI and Crank-Nicolson schemes; when they work and when they don't work
- Modelling jumps using Partial Integro Differential Equations (PIDE)
- Free and moving boundary value problems in QF
Included with the book is a CD containing information on how to set up FDM algorithms, how to map these algorithms to C++ as well as several working programs for one-factor and two-factor models. We also provide source code so that you can customize the applications to suit your own needs.
Finite Difference methods in Financial Enginering
by Daniel Duffy
Monte Carlo Frameworks
Building Customisable High Performance C++ Applications
This is one of the first books that describe all the steps that are needed in order to analyze, design and implement Monte Carlo applications. It discusses the financial theory as well as the mathematical and numerical background that is needed to write flexible and efficient C++ code using state-of-the art design and system patterns, object-oriented and generic programming models in combination with standard libraries and tools.
Includes a CD containing the source code for all examples. It is strongly advised that you experiment with the code by compiling it and extending it to suit your needs. Support is offered via a user forum on www.datasimfinancial.com where you can post queries and communicate with other purchasers of the book.
This book is for those professionals who design and develop models in computational finance. This book assumes that you have a working knowledge of C ++.
Download the flyer of the "Monte Carlo Frameworks" book
Monte Carlo frameworks
by Daniel Duffy
About the author
I was born in Drogheda, Ireland in 1952. My degrees are B.A. Mod (1975) in pure mathematics, MSc (1977) in the Finite Element Method and a PhD (1980) that was concerned with the discovery and application of robust Finite Difference schemes for convection-diffusion partial differential equations and problems with boundary layers. Some years later I realized that the same schemes could be used to find accurate approximations to the Black Scholes PDE and thus resolving some of the problems associated with other well-known methods. I lived and studied in Pavia (Italy) and Nijmegen (the Netherlands) for several years.
In 1980 I entered industry and worked on various projects associated with numerical analysis, software development and engineering: heat transfer and radiation applications, fluid flow, Computer Aided Design, oil and gas. At the time many of the applications were developed in Fortran and C. Most of the systems were enterprise-wide.
Founded Datasim in 1987. This is a software developer and training company and it organized the first C++ training course in the Netherlands in 1989. In the succeeding years we developed one of the first C++ libraries for CAD. Worked on an early version of a Risk system for a Dutch bank in 1992. The system used C++ and design patterns. Datasim also developed several other technical software systems in this period. Since 1999 I have been concentrating on the application of numerical and computational methods to finance. In particular, finite difference and Monte Carlo methods are important as well as C++ and C#. We work with clients to design and implement their systems. The focus is on producing robust schemes that are subsequently implemented in a programming language.
C# for Financial Markets
Daniel J. Duffy & Andrea Germani
C# is a modern object-oriented programming language
that runs under the Microsoft .NET Framework and it is suitable for the development of pricing and trading applications in quantitative finance. It has functionality to support the needs of quants and traders who develop
fixed income and computational finance applications. It is more accessible than C++ and has interfaces with other tools such as Excel, C++, F# and database systems.
C# for Financial Markets is a practice-oriented book that shows how to design and program
pricing models using the C# programming language. It is a step-by-step account of how to
develop software programs that can be used by traders in real-life situations. The reader will discover how to design and implement real finance applications including new methodologies that were developed after the crash of 2007. 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.
Some key features in the book are:
- The C# language from A to Z (version 4.0).
- C# as a language that supports the object-oriented, generic and functional programming models.
- Implementing lattice models in C#.
- Two chapters on PDE models (including an in-depth analysis of the Alternating Direction Explicit (ADE) finite difference method).
- Six major chapters on fixed income applications including the single curve and multi curve framework.
- How to create COM and Automation addins in Excel and link them to fixed income applications.
- A thorough introduction to C# multi-threading and the TPL (Task Programming Language).
- A detailed overview of LINQ (Language Integrated Query), its applications to finance and LINQ–Excel interoperability.
- Multi-language development in .NET, in particular creating mixed C#/C++ applications.
- Introduction to .NET assemblies.
Designed for quant developers, traders and MSc/MFE students, each chapter has numerous
exercises. After purchasing this book you can register at the dedicated companion website,
www.datasimfinancial.com, where all of the source code is provided, alongside forums for
readers to comment on the code and obtain new versions of the software.
About the authors
DANIEL J. DUFFY has been working with numerical methods in finance, industry and engineering since 1979. He has written four books on financial models and numerical methods
and C++ for computational finance and he has also developed a number of new schemes for this field. He is the founder of Datasim Education and has a PhD in Numerical Analysis from Trinity College, Dublin.
ANDREA GERMANI was born in Lodi, Italy in 1975, where he currently lives. After graduating
from Bocconi University in Milano, he obtained the Certificate in Quantitative Finance in London under the supervision of Paul Wilmott. Since then he has been working as a trader in some of the major Italian banks, where he gained a deep knowledge of financial markets. He also worked on valuation and pricing of equity and interest-derivatives, with a focus on the practical use of models on the trading floor. His teaching experience includes finance training courses for university students and practitioners. He is the Head of Interest Rate Derivatives Trading and Treasury in a bank.