Similar to this other question about Scala, I'm interested in knowing whether F# is used to any measurable degree in financial circles. Have there been any successful shops using it, any research on performance and viability?
Credit Suisse has publicly stated that they use F# for some valuation tasks (which tend to be very parallelizable). Here's a link to a talk abstract from a Commercial Users of Functional Programming workshop:
I'm not sure if there's a video of the talk floating around or not.
Since F# targets the .NET framework, it gives you a lot of flexibility in integrating other applications that might have been written in, say, C#.
I help organize the F#unctional Londoners Meetup group. A good number of our 450+ members work in London's finance sector. Over the past 2 years we have hosted a number of talks related to F# in trading:
- Simon Cousins on F# in the Enterprise - F# at E.ON Energy Trading
- Daniel Egloff - F# on the GPU with Alea.CUDA - developed for derivative pricing
- Adam Mlocek on GPU enabled F# numerics - includes pricing a euro option by Monte Carlo
- Tomas Petricek on F# Domain Specific Languages for Finance - including modelling and evaluating contracts
I worked for a big investment bank a few years ago that announced it was moving all quant models to F#. The goal behind the switch was that F# is a functional programming language and available on .NET, both of which were desirable qualities for this particular company. I left before they got started on the transition, so I don't know what came of it.
As for the related OCaml, Jane Street famously uses that.
There was huge buzz about F# in the City and few banks / funds tried very agressively to hire people with F# knowledge and experience in finance. For example, Luka Bolognese one of the F# authors joined Credit Suisse almost 2 years ago. Also Don Syme used to conduct visiting lectures about F# and its possible applications to finance in the City .
I work at Trayport, the leading provider of European energy trading solutions. We use F# alongside C# in our trading screen Joule. F# is used for our calculation engine, domain, high performance components and for handling concurrency.
- The calculation engine leverage's F#'s union types, pattern matching and units of measure feature.
- The domain leverages F#'s rich object orientated constructs.
- F# is particularly strong at concurrency with first class events, built-in agents, asynchronous workflows and immutability as a default.
As a statically typed .Net language F# has similar performance characteristics to C#, with additional optimizations including tail calls and inline functions. Performance of the system is comparable to the previous highly optimized C++ implementation and on some key components it is significantly faster.
F# is mainly a functional language, but it's also rich in OO features. This makes it very suitable, for example, for writing a pricing framework and at the same time make writing payoffs more straightforward. In the long run, it definitely saves a long time writing/debugging and maintaining models.
I've worked in about 10 financial institutions over my career. 6 top tier banks in the front office building low latency trading platforms. F# is rare, these places are huge so I cant say I've seen every team but where I've seen it be used (twice) the project has been dire. This was a decent overview from an experienced city recruiter.