Skip to main content Accessibility help

Commercial uses: Going functional on exotic trades



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.



Hide All
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.
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.
Cardelli, L. & Davies, R. (1997) Service combinators for web computing. In USENIX Conference on Domain-Specific Languages. Berkeley, CA: USENIX Association, pp. 19.
Claessen, K. & Hughes, J. (2000) QuickCheck: A lightweight tool for random testing of Haskell programs. ACM SIGPLAN Not. 35 (9), 268279.
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.
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.
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.
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.
Feldman, S. I. (1979) Make—a program for maintaining computer programs. Softw. Pract. Exp. 9 (4), 255265.
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.
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.
Grabmüller, M. (2006) Monad Transformers Step by Step. Draft paper. Available online
Hudak, P. (1996) Building domain-specific embedded languages. ACM Comput. Surv. 28 (4es), 196.
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.
Hull, J. C. (2005) Options, Futures and Other Derivatives. 6th ed.Upper Saddle River, NJ: Prentice Hall.
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.
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.
LexiFi. LexiFi Platform. Last accessed September 2007.
Marlow, S. (2002) Haddock, a Haskell documentation tool. In Proceedings of the ACM SIGPLAN Workshop on Haskell. ACM Press, New York.
Mernik, M., Heering, J. & Sloane, A. M. (2005) When and how to develop domain-specific languages. ACM Comput. Surv. 37 (4), 316344.
MLFi. (2004) Structuring, Pricing, and Processing Complex Financial Products with MLFi. Available online Last accessed January 2007.
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.
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.
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.
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.
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.
Spinellis, D. (1993) Implementing Haskell: Language implementation as a tool building exercise. Struct. Prog. 14, 3748.
Spinellis, D. (2001) Notable design patterns for domain specific languages. J. Syst. Softw. 56 (1), 9199.
The Bank for International Settlements. (2007) BIS Quarterly Review. Available online Last accessed September 2007.
van Deursen, A. & Klint, P. (1998) Little languages: Little maintenance. J. Softw. Maintenance 10 (2), 7592.
van Rossum, G. & Drake, F. L. Jr., (eds). (2006) An Introduction to Python. Network Theory, Bristol, UK.
Wall, L. & Schwartz, R. L. (1990) Programming Perl. Sebastopol, CA: O'Reilly and Associates.
Wolfram, S. (2003) The Mathematica Book. 5th ed.Wolfram Media. Champaign, IL.

Related content

Powered by UNSILO

Commercial uses: Going functional on exotic trades



Altmetric attention score

Full text views

Total number of HTML views: 0
Total number of PDF views: 0 *
Loading metrics...

Abstract views

Total abstract views: 0 *
Loading metrics...

* Views captured on Cambridge Core between <date>. This data will be updated every 24 hours.

Usage data cannot currently be displayed.

Commercial uses: Going functional on exotic trades

Submit a response


No Discussions have been published for this article.


Reply to: Submit a response

Your details

Conflicting interests

Do you have any conflicting interests? *