Blog

Get the latest updates and news from FINCAD. Subscribe and never miss a post! 

Subscribe

Blog
Architecture Series, Part 2: Which Language?
By Russell Goyder PhD | November 21, 2012

This series addresses issues specific to domain of financial derivative valuation and risk measurement. However, before leaping into the domain itself, I'd like to cover some considerations of tools, process and architecture which are more general, applying to software systems in this and other domains.

Programming Paradigm

The overwhelming winner in this category is object-oriented programming, which has enjoyed ubiquitous success for solving software engineering problems for the last thirty years and continues to do so. It has an undeserved reputation of being complex and hard to understand. An object is simply an organized unit of data in a program that represents something in real life as closely as possible. For example, a circle object in a geometry program might have the capability to calculate and report its area, radius, diameter and circumference. It is the ability to define new types, or classes of object, so as to represent closely real-life phenomena, that gives object-oriented programming much of its power.

It is when constructs in a program mirror the essential aspects of the problem at hand, that the program solves it most effectively. In coming posts I will define crucial concepts (or abstractions) such as Product, Index and Model for the domain of derivatives valuation. In an object-oriented program, each concept can be represented in code as a class of object, able to perform relevant operations and interact with other objects in the same way that those concepts relate to each other in the real world.

Programming Language

A practical concern is the choice of computer language for the implementation of a system. A vast array of languages support object-oriented programming. In any numerical computation one of the primary requirements of an implementation language is high performance; the ability to construct a system which is able to make the most of the available hardware resources. The C++ language satisfies this requirement and has been the de facto standard for production systems in quantitative finance for many years. So much so, that while high performance is the fundamental requirement, the use of C++ itself has become a proxy for that requirement in much of the financial domain. Note that I'm talking here about core analytics libraries, not the wider systems in which they are embedded.

Modern C++ is a formidable tool that puts great power in the hands of software developers and can yield efficient and elegant solutions to programming problems. However, there are a number of pragmatic issues which must be addressed, some specific to systems implemented in C++, others more general. I'll address them, issue-by-issue, in coming posts, before moving onto the problem domain itself.

About the author
Russell Goyder PhD
Russell Goyder PhD
Director of Quantitative Research and Development | FINCAD

Russell Goyder, PhD, is the Director of Quantitative Research and Development at FINCAD. Before joining FINCAD’s quant team in 2006, he worked as a consultant at The MathWorks, solving a wide range of problems in various industries, particularly in the financial industry. In his current role, Russell manages FINCAD’s quant team and oversees the delivery of analytics functionality in FINCAD’s products, from initial research to the deployment of production code. Russell holds a PhD in Physics from the University of Cambridge.