Discussion in 'Automated Trading' started by abattia, Jan 22, 2011.

  1. ”Functional programming is appropriate for applications that exhibit one or more of the following characteristics: require significant computation (compute-bound) as they can be parallelized easily, are themselves parallel in nature, can benefit from asynchronous calls, need to be provable, or require sophisticated pattern matching. This means that functional programs are not generally applicable to typical line-of-business applications that deal with objects and their state over time; however, there may be portions of those programs, e.g., portfolio basket optimization for fixed-income securities, that would benefit greatly from using functionally-based libraries. We typically see functional programming applied to image processing, machine algebra, lexing and parsing, artificial intelligence, and data mining.”

    .... from "F# Survival Guide" by John Puopolo with Sandy Squires

    What’s the view on ET regarding F#?

    Is F# important for automated trading, or is it going to be?
  2. rosy2


    if you're selling something or are a consultant then its important, but the language used doesn't make a difference as long as it's competitive.
  3. It will be important, it will not matter.

    It is a functional language, and for whatever reason outside of some very small nieches these just are not mainstream. Point. Seems people have a problem grapsing them.

    I personally, for example, dont really get my head around them, either. I love procedural / object oriented code. State machines etc.
  4. Thanks, rosy2 and NetTecture!
  5. if you come from a functional background (lisp, haskell, erlang) you will find f# intuitive when programming on .net platforms/interfaces.

    likewise if you are used to interactive programming environment like matlab/mathematica,etc..... you will also probably like f#.

    note that tradelink supports f# as a programming interface and we have users writing f# code with tradelink (in addition to c#, c++, vb, etc).
  6. Eight


    Machine trading is about asynchronous events. Your computer clock state or your code has no relationship to the market's actions iow... Openquant added event driven aspects to it's code flow years ago. Other software packages have picked up on that idea, Ninja comes to mind in that regard. They have sort of morphed the more ordinary coding process to handle the asynchronous world have they not?

    I recall trying to use flow charting to organize code and resorting to multicolored charts showing what the market did and what my script did.. all that goes away with event driven code modules...
  7. asynchronous has little to do with f# or functional languages.

    funcitional languages can support asynchronous programming or not (eg f# supports both synchronous and non synchronous).

    fyi tradelink is asynchronous
  8. Swarm


    I'm surprised that functional languages aren't more popular with quant traders since they are a much better fit than OO and Matlab.

    I use Haskell whenever I can as it is just so much faster to try out ideas than Java or C++. It also has very good numeric support so can be used for many of the same things that Matlab is used for.

    I think F# (and Haskell) will gain popularity slowly as people realise that functional programming suits this context very well, but most people are in ignorance of it at the moment. Also, there is a bit of a learning curve involved if your brain has already been cast with an OO mold as it is fundamentially different.

    The much vaunted parallelism benefits of functional programming are a bit of a myth at the moment, as support for parallelism is best in C compilers at the moment. Going forward though, pure functional languages like Haskell offer a lot of promise on massively parallel machines but we are not there yet IMHO.