F# in Finance - Cross Functional Amsterdam 2013

34
F# IN FINANCE Functional Amsterdam Phillip Trelford 2013

Transcript of F# in Finance - Cross Functional Amsterdam 2013

Page 1: F# in Finance - Cross Functional Amsterdam 2013

F# IN FINANCE Functional AmsterdamPhillip Trelford 2013

Page 2: F# in Finance - Cross Functional Amsterdam 2013

F#UNCTIONAL LONDONERS

600+ Members

Founded Feb 4, 2010

48 Meetings

Page 3: F# in Finance - Cross Functional Amsterdam 2013

NEW YORK CITY F# USER GROUP500+ Members

Founded Nov 10, 2010

30 Meetings

Page 4: F# in Finance - Cross Functional Amsterdam 2013

FSHARP.ORG/GROUPS

Page 5: F# in Finance - Cross Functional Amsterdam 2013

WHO, WHY, WHAT F# for Trading

Page 6: F# in Finance - Cross Functional Amsterdam 2013

WHO?

Investment Banks

Hedge funds

Prop shops

Utilities

Insurance

Page 7: F# in Finance - Cross Functional Amsterdam 2013

F# FOR PROFIT

Time to Market

Efficiency

Correctness

Complexity

Page 8: F# in Finance - Cross Functional Amsterdam 2013

TIME TO MARKET

speed development by 50 percent or more,

European IB

order of magnitude increase in productivity,

GameSys

Page 9: F# in Finance - Cross Functional Amsterdam 2013

EFFICIENCY

processes that used to require hours now take just minutes, Grange Insurance

performance is 10× better than the C++ that it replaces, Aviva

Page 10: F# in Finance - Cross Functional Amsterdam 2013

CORRECTNESS

leads to virtually bug-free code,

Fixed Income

I am still waiting for the first bug to come in,

E-On

Page 11: F# in Finance - Cross Functional Amsterdam 2013

COMPLEXITY

everything becomes simple and clear when expressed in F#, Byron Cook

Page 12: F# in Finance - Cross Functional Amsterdam 2013

SHOW ME THE MONEY F# for Trading

Page 13: F# in Finance - Cross Functional Amsterdam 2013

JOULE ENERGY TRADING SCREEN

Page 14: F# in Finance - Cross Functional Amsterdam 2013

TICKSPEC: DEBUG EXAMPLES

Page 15: F# in Finance - Cross Functional Amsterdam 2013

NUNIT

[<Test>]let ``2 + 2 should equal 4``() = 2 + 2 |> should equal 4

Page 16: F# in Finance - Cross Functional Amsterdam 2013

UNQUOTE

let [<Test>] ``2 + 2 = 4``() = test <@ 2 + 2 = 4 @>

Page 17: F# in Finance - Cross Functional Amsterdam 2013

FSCHECK

Page 18: F# in Finance - Cross Functional Amsterdam 2013

MOCKING

Page 19: F# in Finance - Cross Functional Amsterdam 2013

UNITS OF MEASURE

Page 20: F# in Finance - Cross Functional Amsterdam 2013

TYPE PROVIDERS F# in Finance

Page 21: F# in Finance - Cross Functional Amsterdam 2013

CSV TYPE PROVIDER

Page 22: F# in Finance - Cross Functional Amsterdam 2013

R – TYPE PROVIDER

Page 23: F# in Finance - Cross Functional Amsterdam 2013

TSUNAMI + FCELL = F# IN EXCEL

Page 24: F# in Finance - Cross Functional Amsterdam 2013

UNITS IN CELLStype formula =

| Neg of formula

| Exp of formula * formula

| ArithmeticOp of

formula * arithmetic * formula

| LogicalOp of

formula * logical * formula

| Num of UnitValue

| Ref of int * int

| Range of int * int * int * int

| Fun of string * formula list

Page 25: F# in Finance - Cross Functional Amsterdam 2013

WORLD BANK DATA

Page 26: F# in Finance - Cross Functional Amsterdam 2013

GARBAGE F# in Finance

Page 27: F# in Finance - Cross Functional Amsterdam 2013

.NET 4.5 GARBAGE COLLECTOR

Latency Mode Application Scenarios

Batch Command lineServer Side

Interactive LOB applications

LowLatency Trading Screens

SustainedLowLatency Financial Applications

Page 28: F# in Finance - Cross Functional Amsterdam 2013

SGEN GC / MONO

Performance Target

• Mac

• Linux

• Android

• iOS

• FreeBSD

Page 29: F# in Finance - Cross Functional Amsterdam 2013

SOLD F# in Finance

Page 30: F# in Finance - Cross Functional Amsterdam 2013

TRY IT BEFORE YOU BUY IT

Page 31: F# in Finance - Cross Functional Amsterdam 2013

BUY THE BOOK

Page 32: F# in Finance - Cross Functional Amsterdam 2013

GET THE T-SHIRT

Page 33: F# in Finance - Cross Functional Amsterdam 2013

GET A JOB

Page 34: F# in Finance - Cross Functional Amsterdam 2013

JOIN THE COMMUNITY

F# Foundation http://fsharp.org