f# in finance tour
DESCRIPTION
Talk at F# in Finance conference at Microsoft in LondonTRANSCRIPT
F# IN FINANCE TOUR Phillip TrelfordTrayport LtdF# in Finance 2013
F#UNCTIONAL LONDONERS Founded Feb 2010 600+ Members 50+ Meetups 3 Conferences Topics Finance Machine Learning Reactive Programming Functional Programming
F# GROUPS WORLDWIDE
SECTORS
Investment Banks
Hedge funds
Prop shops
Utilities
Insurance
TIME TO MARKET
We are using F# because it considerably increases speed of software development which is crucial for a
small company with limited development resources. Boston-based Financial Services Firm
EFFICIENCY
F# … to reduce the amount of code required and its simplicity when developing massive parallel computations. The
performance is phenomenal. We can now re-calculate the entire bank portfolio from scratch in less than a second
Handelsbanken
CORRECTNESS
The efficient use of functional programming throughout the R&D cycle helped make the cycle faster and more efficient. Less
time was spent on translating requirements, miscommunications etc. and more on producing a fast and accurate solution
quickly. CME Group
COMPLEXITY
We have set up a complete risk management system that combines several data sources…
When the calculation requires a proper algorithm (i.e. anything that is more complex than a simple for loop), our choice has been
F#. London-Based Asset Management Company
TRAYPORT JOULE
SPECIFICATIONS WITH TICKSPEC
CURRENCY CONVERSIONS[<Measure>] type EUR[<Measure>] type GBPlet rateEurGbp = 0.783M<GBP/EUR>
// Converts amount in EUR to GBPlet euroToPounds (eur:decimal<EUR>) = eur * rateEurGbp
OPTION PRICING let euroCallValue exercisePrice actualPrice = max (actualPrice - exercisePrice) 0.0
let euroPutValue exercisePrice actualPrice = max (exercisePrice - actualPrice) 0.0
let butterflySpread lowPrice highPrice actualPrice = (euroCallValue lowPrice actualPrice) + (euroCallValue highPrice actualPrice) - 2.0 * (euroCallValue ((lowPrice + highPrice) / 2.0) actualPrice)
R – TYPE PROVIDER
ORDERS – RECORD TYPESF#
type LimitOrder = { LimitPrice : decimal Quantity : int Side : Side }
C#
TIME IN FORCE – UNION TYPEtype TimeInForce = | GoodTillCancel | GoodForDay | GoodTillDate of DateTime
UNITS IN CELLStype UnitType =
| Empty
| Unit of string * int
| CompositeUnit of UnitType list
TRAINING Phillip TrelfordTrayport LtdF# in Finance 2013
SKILLS MATTERTraining Fast Track to F# 2 days (quarterly)
Tutorials F# Tutorials (London & NYC) 2 days (annually)
F# KOANS[<Koan>]let SquareEvenNumbersWithPipelineOperator() =(* In F#, you can use the pipeline operator to get the benefit of the parens style with the readability of the statement style. *)
let result = [0..5] |> List.filter isEven |> List.map square AssertEquality result __
TRYFSHARP.ORG - FINANCE
F# JOB DEMAND - UK
Source: IT Jobs Watch Nov 2013
Phillip TrelfordTrayport LtdF# in Finance 2013