Hostname: page-component-797576ffbb-bqjwj Total loading time: 0 Render date: 2023-12-01T12:58:25.506Z Has data issue: false Feature Flags: { "corePageComponentGetUserInfoFromSharedSession": true, "coreDisableEcommerce": false, "useRatesEcommerce": true } hasContentIssue false

Commercial uses: Going functional on exotic trades

Published online by Cambridge University Press:  01 January 2009

Barclays Capital, 5 The North Colonnade, London E14 4BB, UK (e-mail:
Athens University of Economics and Business, Patision 76, GR 104 34, Athens, Greece (e-mail:
Barclays Capital, 5 The North Colonnade, London E14 4BB, UK (e-mail:,
Barclays Capital, 5 The North Colonnade, London E14 4BB, UK (e-mail:,
Rights & Permissions [Opens in a new window]


Core share and HTML view are not possible as this article does not have html content. However, as you have access to this content, a full PDF is available via the ‘Save PDF’ action button.

The Functional Payout Framework (fpf) is a Haskell application that uses an embedded domain-specific functional language to represent and process exotic financial derivatives. Whereas scripting languages for pricing exotic derivatives are common in banking, fpf uses multiple interpretations to not only price such trades, but also to analyse the scripts to provide lifecycle support and more. This paper discusses fpf in relation to the wider trading workflow and our experiences in using a functional language in such a system as both an implementation language and a domain-specific language.

Copyright © Cambridge University Press 2008


Anand, S., Chin, W.-N. & Khoo, S.-C. (2001) Charting patterns on price history. In ICFP '01: Proceedings of the Sixth ACM SIGPLAN International Conference on Functional Programming. New York: ACM, pp. 134145.Google Scholar
Arnold, B. R. T., van Deursen, A. & Res, M. (1995) An algebraic specification of a language for describing financial products. In ICSE-17 Workshop on Formal Methods Application in Software Engineering, Seattle, WA, Wirsing, M. (ed.), IEEE, New York, pp. 613.Google Scholar
Cardelli, L. & Davies, R. (1997) Service combinators for web computing. In USENIX Conference on Domain-Specific Languages. Berkeley, CA: USENIX Association, pp. 19.Google Scholar
Claessen, K. & Hughes, J. (2000) QuickCheck: A lightweight tool for random testing of Haskell programs. ACM SIGPLAN Not. 35 (9), 268279.Google Scholar
Claessen, K. & Sands, D. (1999) Observable sharing for functional circuit description. In Proceedings of Asian Computer Science Conference, Phuket Thailand. Lecture Notes in Computer Science. Springer Verlag, Berlin, Germany.Google Scholar
van Deursen, A. (1997) Domain-specific languages versus object-oriented frameworks: A financial engineering case study. In STJA'97: Smalltalk and {J}ava in Industry and Academia, Erfurt, Germany, Ilmenau Technical University, pp. 3539.Google Scholar
Eggenschwiler, T. & Gamma, E. (1992) ET++SwapsManager: Using object technology in the financial engineering domain. In OOPSLA '92: Conference Proceedings on Object-Oriented Programming Systems, Languages, and Applications. ACM, New York, pp. 166177.Google Scholar
Elliott, C., Finne, S. & de Moor, O. (2003) Compiling embedded languages. J. Funct. Prog. 13 (2). Updated version of paper by the same name that appeared in SAIG '00 proceedings.Google Scholar
Feldman, S. I. (1979) Make—a program for maintaining computer programs. Softw. Pract. Exp. 9 (4), 255265.Google Scholar
Finne, S., Leijen, D., Meijer, E. & Peyton Jones, S. (1999) Calling Hell from Heaven and Heaven from Hell. In ICFP '99: Proceedings of the Fourth ACM SIGPLAN International Conference on Functional Programming. Paris, France, ACM Press, New York, pp. 114125.Google Scholar
Gill, A. & Runciman, C. (2007) Haskell program coverage. In Haskell '07: Proceedings of the ACM SIGPLAN Workshop on Haskell Workshop. New York: ACM, pp. 112.Google Scholar
Grabmüller, M. (2006) Monad Transformers Step by Step. Draft paper. Available online Scholar
Hudak, P. (1996) Building domain-specific embedded languages. ACM Comput. Surv. 28 (4es), 196.Google Scholar
Hudak, P., Hughes, J., Peyton Jones, S. & Wadler, P. (2007) A history of Haskell: Being lazy with class. In HOPL III: Proceedings of the Third ACM SIGPLAN Conference on History of Programming Languages. San Diago, CA, ACM, 12-112-55 ACM Press: New York, NY, USA, pp. 12-1–12-55.Google Scholar
Hull, J. C. (2005) Options, Futures and Other Derivatives. 6th ed.Upper Saddle River, NJ: Prentice Hall.Google Scholar
Kramer, D. (1999) API documentation from source code comments: A case study of Javadoc. In SIGDOC '99: Proceedings of the 17th Annual International Conference on Computer Documentation. New York: ACM, pp. 147153.Google Scholar
Lämmel, R. & Peyton Jones, S. (2003) Scrap your boilerplate: A practical approach to generic programming. In TLDI 2003: Proceedings of the ACM SIGPLAN Workshop on Types in Language Design and Implementation. ACM Press, New York.Google Scholar
LexiFi. LexiFi Platform. Last accessed September 2007.Google Scholar
Marlow, S. (2002) Haddock, a Haskell documentation tool. In Proceedings of the ACM SIGPLAN Workshop on Haskell. ACM Press, New York.Google Scholar
Mernik, M., Heering, J. & Sloane, A. M. (2005) When and how to develop domain-specific languages. ACM Comput. Surv. 37 (4), 316344.Google Scholar
MLFi. (2004) Structuring, Pricing, and Processing Complex Financial Products with MLFi. Available online Last accessed January 2007.Google Scholar
Peyton Jones, S. & Eber, J.-M. (2003) How to write a financial contract. In The Fun of Programming, Gibbons, J. & de Moor, O. (eds.), Palgrave Macmillan.Google Scholar
Peyton Jones, S., Eber, J.-M. & Seward, J. (2000) Composing contracts: An adventure in financial engineering (functional pearl). In ICFP '00: Proceedings of the Fifth ACM SIGPLAN International Conference on Functional Programming. New York: ACM, pp. 280292.Google Scholar
Peyton Jones, S., Marlow, S. & Elliott, C. (1999) Stretching the storage manager: Weak pointers and stable names in Haskell. In Implementation of Functional Languages. Springer Verleg, Berlin, pp. 3758.Google Scholar
Roundy, D. (2005) Darcs: Distributed version management in Haskell. In Haskell '05: Proceedings of the 2005 ACM SIGPLAN Workshop on Haskell. ACM Press, New York, pp. 14.Google Scholar
Sansom, P. M. & Peyton Jones, S. (1995) Time and space profiling for non-strict, higher-order functional languages. In POPL '95: Proceedings of the 22nd ACM SIGPLAN-SIGACT Symposium on Principles of Programming Languages. New York: ACM, pp. 355366.Google Scholar
Spinellis, D. (1993) Implementing Haskell: Language implementation as a tool building exercise. Struct. Prog. 14, 3748.Google Scholar
Spinellis, D. (2001) Notable design patterns for domain specific languages. J. Syst. Softw. 56 (1), 9199.Google Scholar
The Bank for International Settlements. (2007) BIS Quarterly Review. Available online Last accessed September 2007.Google Scholar
van Deursen, A. & Klint, P. (1998) Little languages: Little maintenance. J. Softw. Maintenance 10 (2), 7592.Google Scholar
van Rossum, G. & Drake, F. L. Jr., (eds). (2006) An Introduction to Python. Network Theory, Bristol, UK.Google Scholar
Wall, L. & Schwartz, R. L. (1990) Programming Perl. Sebastopol, CA: O'Reilly and Associates.Google Scholar
Wolfram, S. (2003) The Mathematica Book. 5th ed.Wolfram Media. Champaign, IL.Google Scholar
Submit a response


No Discussions have been published for this article.