by Kevin Lano (Author), Howard Haughton (Author)
About the Author
Dr Lano has worked for over 25 years in the fields of system specification and verification. He was one of the originators of the Model-Driven Engineering (MDE) field and has been a leading advocate of improving the precision of software modelling, and in applying software engineering principles to transformation construction. In recent years he has worked on the integration of MDE and agile development.
Dr Haughton has worked in the fields of quantitative finance, risk management and credit risk since 1994. Formally at JP Morgan, Dresdner Bank, Deutsche bank, Merrill Lynch and the Commonwealth Secretariat, he is the director of Holistic Risk Solutions Ltd.
About this book
In this textbook the authors introduce the important concepts of the financial software domain, and motivate the use of an agile software engineering approach for the development of financial software. They describe the role of software in defining financial models and in computing results from these models. Practical examples from bond pricing, yield curve estimation, share price analysis and valuation of derivative securities are given to illustrate the process of financial software engineering.
Financial Software Engineering also includes a number of case studies based on typical financial engineering problems:
- Internal rate of return calculation for bonds
- Macaulay duration calculation for bonds
- Bootstrapping of interest rates
- Estimation of share price volatility
- Technical analysis of share prices
- Re-engineering Matlab to C#
- Yield curve estimation
- Derivative security pricing
- Risk analysis of CDOs
Brief contents
1 Financial Services and Markets 1
1.1 Introduction 1
1.2 Financial Markets 2
1.3 The Legal and Regulatory Context. 4
1.3.1 The Basel Standards 5
1.4 Risk Management and Portfolio Risk 6
1.5 The Curse or Value of Excel 6
1.6 Agile Development Processes 7
1.7 Big Data Analysis 8
Reference 9
2 Financial Products and Analyses. 11
2.1 Financial Engineering 11
2.2 Bonds 12
2.2.1 Discrete Versus Continuous Compounding 16
2.2.2 Yield Curves 16
2.2.3 Floating Rate and Index-Linked Bonds 18
2.3 Shares and Stocks 19
2.3.1 Share Trading Processes 19
2.4 Derivative Securities 20
2.5 Collateralised Debt Obligations 21
2.6 Essential Calculus 22
2.7 Combinatorics and Statistical Properties 23
References 28
3 Model-Based and Agile Development 29
3.1 The Software Development Lifecycle 29
3.1.1 Feasibility Analysis 30
3.1.2 Requirements Analysis 30
3.1.3 Specification 32
3.1.4 Design 32
3.1.5 Implementation 32
3.1.6 Testing 33
3.1.7 Maintenance 33
3.2 Software Modelling Using UML 33
3.2.1 Class Diagrams 35
3.2.2 Use Case Diagrams 36
3.2.3 State Machines 37
3.2.4 Interactions 37
3.2.5 Object Constraint Language (OCL) 38
3.2.6 Activity Diagrams 39
3.3 Model-Based Development (MBD) 41
3.3.1 Models and Metamodels. 41
3.3.2 Model Transformations 42
3.3.3 Domain-Specific Modelling 42
3.3.4 The State of Practice of MBD in Industry 43
3.3.5 MBD Using UML-RSDS 44
3.4 Agile Development Methods 45
3.4.1 Agile Development Techniques. 45
3.4.2 Agile Methods: Scrum 46
3.4.3 Agile Methods: Extreme Programming (XP) 48
3.4.4 Agile Methods: Kanban 48
3.4.5 Benefits and Disadvantages of Agile Development 49
3.4.6 Can Agile and MBD be Combined? 49
References 50
4 Financial System Specification Using UML 53
4.1 Class Diagrams 53
4.1.1 Classes 54
4.1.2 Attributes 54
4.1.3 Enumerated Types 55
4.1.4 Associations 55
4.1.5 Inheritance. 58
4.1.6 Operations 59
4.2 Use Case Models 62
4.3 OCL (Object Constraint Language) 63
4.4 The Financial Specification Process 67
4.5 Case Study: Estimating Internal Rate of Return (IRR) 68
4.6 Case Study: Macaulay Duration of a Bond 71
4.7 Specification Revision and Refactoring 72
Reference 75
5 Financial System Design 77
5.1 Agile Development Process 77
5.2 Optimisation 79
5.3 Case Study: Bootstrapping of Interest Rates 80
5.4 Libraries and Reuse 82
5.5 Design Quality Flaws 86
5.5.1 Technical Debt 86
5.5.2 Measuring Technical Debt 87
5.5.3 Refactoring of Code and Models 88
5.6 Design Patterns 90
5.6.1 Singleton Pattern 90
5.6.2 Observer Pattern 91
5.6.3 Iterator Pattern 94
5.6.4 Proxy Pattern 95
5.7 Software Architectures 96
5.8 QuantLib 98
5.8.1 Design Patterns in QuantLib 98
References 100
6 Trading and Analytics Technologies 101
6.1 Trading Technologies: FIX and FIXML 101
6.1.1 XML. 102
6.1.2 FIXML 103
6.1.3 FIX Engines 104
6.2 Data Analytics Technologies 105
6.2.1 Data Storage 105
6.2.2 Map/Reduce 108
6.2.3 Apache Hadoop 109
6.2.4 TensorFlow 109
6.3 Case Study: Share Price Volatility 109
6.4 Case Study: Technical Analysis of Share Prices 111
7 Software Modernisation and Re-Engineering 117
7.1 Software Modernisation. 117
7.1.1 Model-Driven Modernisation (MDM) 118
7.2 Case Study: Matlab to C# 118
7.2.1 Yield Curve Estimation 122
References 130
8 Agile Model-Based Development Approaches 131
8.1 Existing Agile MBD Approaches 131
8.2 Guidelines for Introducing Agile MBD 132
8.3 Defining and Using DSLs 134
8.3.1 DSL Example: Derivative Securities 135
References 140
9 Analysis of Financial Products: CDOs 141
9.1 Introduction 141
9.2 Preliminaries. 141
9.3 Davis and Lo Theorem 142
9.4 Expectation and Variance 145
9.5 Assuming Poisson Number of Default Events 149
9.5.1 Risk Contributions in the Poisson Model 151
9.6 Exact Distribution Moments 155
9.7 Allocating Borrowers Across Sectors 158
References 163
10 Tool Support for Financial Application Development 165
10.1 Using UML-RSDS 165
10.2 Case Study: Extended Bootstrapping 165
10.3 Code Generation 167
10.4 Creating New Code Generators 170
10.5 Defining Domain-Specific Languages (DSLs) 171
10.6 Libraries 174
Reference 175
Appendix A: Glossary. 177
Appendix B: Exercise Solutions 181
Bibliography 193
Index 195
Series: Undergraduate Topics in Computer Science
Pages: 198 pages
Publisher: Springer; 1st ed. 2019 edition (July 31, 2019)
Language: English
ISBN-10: 3030140490
ISBN-13: 978-3030140496
PDF version
EPUB version