Financial Domain-Specific Language Listing
The goal of this page is to provide a comprehensive listing of financial domain-specific languages and resources. Please send additional resource suggestions to Todd Schiller.
Actulus Modeling Language (AML)
The goal of the Actulus project is to "establish a platform for definition of advanced life insurance and pension products and for efficient computations on them." Actulus is a joint effort between the the IT University of Copenhagen and Edlund A/S. The project uses QuantAlea (see below) for GPU kernel creation.
An Actuarial Programming Language for Life Insurance and Pensions. David R. Christiansen, Klaus Grue, Henning Niss, Peter Sestoft, Kirstjan S. Sigtryggsson. 2013.
Domain-specific languages and GPGPUs in life insurance and pensions. Peter Sestoft. 2015.
GPUs and DSLs for Life Insurance Modeling. Peter Sestoft. 2016.
Alea.cuBase (by QuantAlea)
Alea.cuBase is an F# framework for generating GPU kernels. It uses F# quotations for staging and composing kernels at run-time. It provides a "foundation to develop GPU aware domain speciﬁc languages."
Dynamic CUDA with F#. Dr. Daniel Egloff and Xiang Zhang. GPU Technology Conference 2013.
CPL: Chart Pattern Language
Charting Patterns on Price History. Saswat Anand, Wei-Ngan Chin and Siau-Cheng Khoo. ICFP '01: International Conference on Functional Programming. 2001.
CPL: A Language for Programming Chart Patterns. Saswat Anand. Masters Thesis. 2002.
The Art of Interpretation for Domain-Specifc Embedded Languages. Saswat Anand, Siau-Cheng Khoo, Dana N. Xu, and Ping Zhu.
DIESEL (by EDF Trading)
DIESEL is a language for representing energy derivatives to facilitate Monte Carlo pricing and analytics. The DSL consists of a combinator parser libary and algebraic data types with case classes.
Scala at EDF Trading. Implementing a Domain-Specific Language for Derivative Pricing with Scala. Lee Momtahan. Commercial Users of Functional Programming (CUFP), 2009.
EasyLanguage (by TradeStation)
EasyLanguage is a DSL for writing trading signals and strategies for the TradeStation platform.
Using Object Technology in the Financial Engineering Domain. T. Eggenschwiler and E. Gamma. OOPSLA '92: Object-Oriented Programming, Systems, Languages & Applications. 1992.
Frameworksin the Financial Engineering Domain An Experience Report. Andreas Birrer and Thomas Eggenschwiler. ECOOP '93: European Conference on Object-Oriented Programming. 1993.
Financial Industry Business Ontology (FIBO)
The Financial Industry Business Ontology is a joint effort by the Object Management Group (OMG) Financial Domain Task Force and the Enterprise Data Management (EDM) Council to provide a semantic model of financial instruments and business entities. The ontology is built using the W3C Resource Description Framework (RDF) and the OWL Web Ontology Language.
Financial Products Markup Language (FpML)
Functional Payout Framework (by Barclays Capital)
The Functional Payout Framework (FPF) uses a DSL embedded in Haskell to price and manage exotic derivatives. Trade payoffs are defined declaratively using combinators. The trade descriptions can be used to automatically generate pricing instructions (e.g., parameters for PDE-solving), human-readable TEX descriptions, and trade input forms.
Commercial Uses: Going Functional on Exotic Trades. Simon Frankau, Diomidis Spinellis, Nick Nassuphis, and Christoph Burgard. Journal of Functional Programming. Volume 19, Issue 01. 2009.
Haskell at Barclays: Exotic Tools for Exotic Trades. Tim Williams. Barclays. 2013. Slides.
Barclay’s Smart Contract Templates Team, combines the FPF with blockchain technology. In January 2016, Barclay’s was accepted to Barclay’s Accelerator program.
Hedgehog (by Palantir)
Palantir’s Hedgehog Language is a Java-based language for exploring financial data, defining metrics, and defining trading stategies.
Imandra (by Aesthetic Integration)
Imandra is a suite of language and verification tools to model and verify properties of financial exchanges and Ethereum smart contracts. Imandra uses a subset of the OCaml language excluding features such as exceptions.
Towards Imandra Contracts: Formal verification for Ethereum. Grant Passmore. 2015.
KolibriFX has a language for defining foreign exchange (FX) trading strategies for execution on their cloud trading platform.
MLFi (by LexiFi)
MLFi is the OCaml-based contract modeling language underlying LexiFi’s pricing and operations management solutions. The language is based on combinators which allow contracts and market scenarios to be easily composed and analysed:
Composing Contracts: An Adventure in Financial Engineering. Simon Peyton Jones, Jean-Marc Eber, and Julian Seward. ICFP '00: Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming, 2000.
How to Write a Financial Contract. Simon Peyton Jones and Jean-Marc Eber. 2003.
Describing, Manipulating and Pricing Financial Contracts: The MLFi Language. Jean-Marc Eber. 2005.
The Financial Crisis, a Lack of Contract Speciﬁcation Tools: What Can Finance Learn from Programming Language Design?. Jean-Marc Eber. ESOP '09: 18th European Symposium on Programming. 2009.
3rd-party blog posts and papers:
Towards Certified Management of Financial Contracts. Patrick Bahr, Jost Berthold, and Martin Elsman. NWPT '14: 26th Nordic Workshop on Programming Theory. 2014.
Adventures in financial and software engineering. Shahbaz Chaudhary. 2015.
Money is a Scala DSL for money-related operations. The language automatically performs conversions between currencies according to exchange rates specified at run-time.
Mu (by Standard Chartered Bank)
A strict variant of Haskell with other modifications (e.g., no support for recursion by default) to make it more accessible to end-user programmers.
Pragmatic Haskell. Lennart Augustsson. 2011.
Paradise (by Credit Suisse)
Paradise is a DSL embedded in Haskell for expressing computation typically modeled in Excel. Unlike calculators developed in Excel, Paradise components are reusable and retargettable (e.g., at both C# and Excel).
Pension Workbench (by Capgemini and Intentional Software)
The Capgemini Pension Workbench built with Intentional Software’s Language Workbench technology enables actuaries and pension analysts to specify and verify pension plans.
Domain Expert DSLs. Magnus Christerson and Henk Kolk. QCon London. 2008.
Quant DSL (by the Appropriate Software Foundation)
Quant DSL is Python DSL for expressing financial contracts which can be evaluated against a price process (e.g., multi-market Black-Scholes). It follows the combinator approach outlined in the original MLFi paper, Composing Contracts: An Adventure in Financial Engineering.
Rholang (by Synereo)
Rholang (Reflective, Higher-Order process Language) is a smart contract language designed for Synereo’s blockchain technology, RChain.
Risla (by MeesPierson and Capgemini)
Risla is language for describing interest rate products.
Industrial Applications of ASF+SDF. M. van den Brand, A. van Deursen, P. Klint, S. Klusener, E. van der Meulen. AMAST '96: Algebraic Methodology and Software Technology. 1996.
An Algebraic Specification of a Language for Describing Financial Products. B.R.T. Arnold, A. van Deursen, and M. Res. Workshop on Formal Methods Applications in Software Engineering Practice (co-located with ICSE’95). 1995.
Domain-Specific Languages versus Object-Oriented Frameworks: A Financial Engineering Case Study. A. van Deursen. STJA’97: Smalltalk and Java in Industry and Academia. 1997.
Little Languages: Little Maintenance? Arie Van Deursen and Paul Klint. 1998.
SciFinance (by SciComp)
SciFinance is a system embedded in Mathematica for tranforming contraints, equations, and financial descriptors into "into highly efficient simulation codes" for C/C++/CUDA.
Domain Specific Languages and the Acceleration of Computational Finance. Elaine Kant. Proceedings of the Fourth Workshop on High Performance Computational Finance (WHPCF). 2011.
SciFinance: A Program Synthesis Tool for Financial Modeling. Robert L. Akers, Ion Bica, Elaine Kant, Curt Randall, Robert L. Young. AI MAGAZINE. 2001.
StreamBase (by StreamBase Systems)
StreamBase is a Java-based graphical DSL for building event-driven high frequency trading (HFT) systems.
Complex Event Processing: DSL for High Frequency Trading. Richard Tibbetts. QCon London. 2011.
Stochastic Process Language (SPL)
Stochastic Process Language (SPL) is a language for representing stochastic processes for Monte Carlo simulations on parallel hardware.
Pricing composable contracts on the GP-GPU. Joakim Ahnfelt-Rønne and Michael Flænø Werk. 2011.
ThetaML (by Thetaris)
ThetaML is a payoff description language based on the Theta calculus notation for stochastic and sequential processes. The execution of ThetaML is based on a virtual timing model; "The values of variables at a given line of code are evaluated at the model time associated with that line of code."
Tranche is a DSL for modeling structured finance products that compiles to the Common Intermediate Language (CIL). The compiler is written in C# and is open-source.
Industry and Academic Groups
Commercial Users of Functional Programming (CUFP)
The annual Commercial Users of Functional Programming (CUFP) workshop is held in conjunction with the International Conference on Functional Programming (ICFP). The website includes videos of the talks, including some on finance:
Functional Reporting. Edward Kmett (S&P Capital IQ). 2013.
OCaml at Jane Street Capital. Yaron Minsky (Jane Street Capital). 2012.
FMD - Functional development in Excel. Lee Benfield (Barclays Capital). 2009.
Scala at EDF Trading. Implementing a Domain-Specific Language for Derivative Pricing with Scala. Lee Momtahan (EDF Trading). 2009.
Quantitative Finance in F#. Howard Mansell (Credit Suisse). 2008.
The Default Case in Haskell: Counterparty Risk Calculations at ABN AMRO Bank. Cyril Schmidt and Anne-Elisabeth Tran Qui. 2007. Talk Video.
Caml Trader: Adventures of a functional programmer on Wall Street. Yaron Minsky (Jane Street Capital). 2006.
Why Functional Programming Matters to Credit Suisse. Howard Mansell (Credit Suisse). 2006.
High Performance Computing in Financial IT (HIPERFIT)
HIPERFIT is a collaboration between the University of Copenhagen and members of the Danish financial industry. The publications page includes many papers related to domain-specific languages for finance.
Domain-Specific Languages for Finance: DSL Research in the HIPERFIT Research Center. Jost Berthold. 2011.
Object Management Group (OMG) Financial Domain Task Force
The Object Management Group (OMG) Financial Domain Task Force is an industry group aimed at helping companies manage their financial data assets. The FDTF partners with standards organizations to help develop standards; a summary of the FDTF’s activities can be found at: http://fdtf.omg.org/Standards-Applications-Consumers.pdf.
A Software Language Approach to Derivative Contracts in Finance. Jean-Marie Gaillourdet. 2006.
Domain Specific Language for Specifying Operations of a Central Counterparty. Chamin Nalinda Loku Gam Hewage. 2016.
Business Natural Languages Development in Ruby. Jay Fields. QCon. 2008.
Caml Trading. Yaron Minsky. 2012.
Compositional Speciﬁcation of Commercial Contracts. Jesper Andersen et al. International Journal on Software Tools for Technology Transfer. 2006.
F# Domain Specific Languages for Finance. Tomas Petricek. 2012.
A Generic Domain Specific Language for Financial Contracts. Anupam Mediratta. Masters Thesis. 2007
Linear Types for Cashflow Reengineering. Torben Æ Mogensen. Perspectives of System Informatics. 2003.
GPU Technology Conference 2013 Financial Track. Video recordings and slides on programming/using GPUs for financial applications.
Groovy Finance: Grid Computing and Computational Finance. Jonathan Felch. GR8Conf. 2009.
Groovy on the Trading Desk. Jonathan Felch (Volant Trading LLC). 2010.
Modeling Islamic Finance Knowledge for Contract Compliance in Islamic Banking. Aziza Mamadolimova, Norbaitiah Ambiah, and Dickson Lukose. KES’11: International Conference on Knowledge-Based and Intelligent Information and Engineering Systems. 2011.
OO Technology In Large Financial Institutions (Workshop Report). Chris Laffra. OOPSLA '95: Object-Oriented Programming systems, Languages, and Applications. 1995.