SlideShare ist ein Scribd-Unternehmen logo
1 von 36
Downloaden Sie, um offline zu lesen
Groovy Finance:

     Grid Computing
and Computational Finance


      Jonathan Felch
Agenda
−   Introduction: Speaker and Project
−   Motivations for Groovy in Quantitative Finance
        Business Problem
        Math / Data / Business / Languages
        Questions Regarding Groovy Performance

−   Data Grid and Dynamic Programming
        Master / Worker Model, MapReduce, and ForkJoin
        Property Listeners, Dependency Graphs, Invalidation

−   Grails: Exposing the cache to the world

−   Revolution: Distributed Computing and DSLs
Introduction

   Jonathan Felch

    −   NASDAQ Software Architect 1997-99
    −   Lehman Brothers Global e-Commerce Architect 1999-2000
    −   Venture Capital Associate @ GS / BCG JV 2000-2001
    −   Quantitative Systems @ Syntax Capital 2005-2006
    −   VP Quantitative Systems @ Credit Suisse 2006-2009
    −   Independent Work in Financial DSLs / Data Grids 2009+
Groovy Finance: A Case Study

   Started at Syntax Capital Management in 2005
    −   Capital Structure Arbitrage
    −   Almost Every Asset Class
    −   Focus on Credit Markets, Macro and Single Name

   Matured at an Investment Bank 2007-2009
    −   Groovy To The Rescue
    −   Grails and Integration
    −   Meta-Programming and A Distributed Cache
    −   Unexpected Upside: A Quant Finance DSL
Groovy Finance: Architecture

   Industrial Strength Back-End In Java

   Enterprise Software Integration
    −   Data Acquisition Focus / Logical Focus
            SOAP, JMS, JDBC, CSV files, ZIP files, delimited files
            Bloomberg, Markit Partners, OPRA, Ivy, Barra, Imagine

    −   Data Delivery Solutions
            Excel Plug-In
            Reports in HTML, PDF, CSV, JSON, XML, JMS
            DSL Console with JSyntaxPane
Agenda
−   Introduction: Speaker and Project
−   Motivations for Groovy in Quantitative Finance
        Business Problem
        Math / Data / Business / Languages
        Questions Regarding Groovy Performance

−   Data Grid and Dynamic Programming

−   Grails: Exposing the cache to the world

−   Revolution: Distributed Computing and DSLs
What is Quant Finance ?

A quant designs and implements software and
mathematical models for the pricing of
derivatives, assessment of risk, or predicting
market movements
What's The Problem: The Math
   Quant Finance Models are Wrong
    −   Even The Best Models Fail, Failure Is Expensive

   Assumption of Quantitative Finance Are Wrong
    −   Market Are Social Phenomena, Not Random Walks

   Quant Finance Models Change
    −   In Bad Times, They Change A Lot

   Coding Almost everything in C++ takes forever

   Coding Everything Else in VBA doesn't scale
What's The Problem: The Market
   Market Structures Drive Financial Data
     −   Different Calendars, Different Measures
     −   Equities and Government Auctions are Transparent
             Also options, some bonds, some preferred

     −   Exotic and Credit Markets are Illiquid, No
         Transparency
             Some of products are not really 'securities'

   Identifiers are ridiculous, don't work, unclear
     −   ISIN, CUSIP, SEDOL, Tickers, ADRs, …
     −   Observation Dates and Effective Dates
What's The Problem: The Data

   Lots of Data, Lots of Math, Lots of Products
    −   Credit Market Subset
            1500 Companies / 2500 Curves / 10 Indices & Tranches
            10,000 Liquid Bonds / 2,000 Liquid Converts / 2,000 Loans
            1500 Liquid Equities / 169 point vol surface to start

    −   Derivatives and Quant strategies have many metrics
        for each time series observation
            Securities can't be compared on price
            Relative values metrics are complex and there are many
What's The Problem: The Traders
   Great Trades Come From Half-Baked Ideas
    −   Fully Baked Ideas Have Already Been Priced In

   Traders Do Not Know What They Want

   Whatever They Think They Want, They Wanted
    It Yesterday

   Whatever They Want Today, They Will Never
    Use Again
Languages of Quant Finance
   Commonly used languages of Quant Finance
    −   C++ (The Dominant Industrial Strength Language)
    −   VBA
    −   Matlab, SAS, STATA, S, and R
    −   C#
    −   Java (Most limited to Fixed Income and Web)

   Up and Coming / Research Languages of
    Interest to Quant Finance
    −   Fortress, Scala, Groovy, Python, F#, and Erlang
JEE / Groovy Components
Why Groovy ?
   Pith, Speedy Development Cycle
    −   Made for half baked idea

   Dynamic Programming
    −   Meta-Programming, DSL Support

   Java / JEE / Enterprise
    −   Massive Ecosystem, Performance Fall back

   Community
    −   Grails, Griffon, lots of small projects
Other Tools That Helped Out
   Google Collections and MapReduce

   VisualNumeric's JSML / UJMP / Weka

   Terracotta

   JSR 166 / Fork-Join

   R Language
Groovy Performance: Overview
   JIT and Operator Overloading
    −   Number Crunching and Monte Carlo
    −   GroovyMatrix

   Smart Programming
    −   Algorithms versus Language
    −   Grid Computing
    −   Caching

   'Thought Experiments' before production code
    −   Groovy 'gets the idea right' faster than C++
Performance I: Monte Carlo
def path = { spot, rate, vol, time, draw →
  def drift = (rate – 0.5 * vol * vol) * time
  def diffusion = vol * Math.sqrt(time) * draw
  spot * Math.exp(drift + diffusion)
}
def paths = path.curry(100.0,0.05,0.15,1.0)
def strikePrices = [80, 90, 100, 110, 120]
def guassian = GroovyMatrix.createGuassian(1000,1000)
def df = Math.exp(time * -interestRate)
def size = paths.size()
strikePrices.each { strike ->
   def callOption = df * paths(guassian).collect {
        Math.max(0,it - strike)
   }.sum() / size
    def putOption = df * paths(guassian).collect {
       Math.max(0,it - strike)
    }.sum() / size
    println “1 Yr ${strike} Strike Call = ${callOption}”
    println “1 Yr ${strike} Strike Put = ${putOption}”
}
Agenda
−   Introduction: Speaker and Project
−   Motivations for Groovy in Quantitative Finance
        Business Problem
        Math / Data / Business / Languages
        Project Background 2005-2007

−   Data Grid and Dynamic Programming
        Master / Worker Model, MapReduce, and ForkJoin
        Property Listeners, Dependency Graphs, Invalidation

−   Grails: Exposing the cache to the world

−   Revolution: Distributed Computing and DSLs
Databases versus Caching
   Traditional Model: Hibernate
    −   Data Model = Database plus Cache of POJOs
            All Objects of the name class share structure
            No (Persistent) Dynamic Properties on 1st class objects
            All first class objects (query-able) lived in the database


   Our Model: All POJOs → Tuples or Nodes
    −   Tuples of same class may 'grow' existing structure
    −   Tuples do not all have to come from data
            Questions about what does and does not belong in
             database
            Query Language = Gpath / Xpath + Hibernate
            Includes dynamic properties and calculated values
Distributed Cache and
            MetaProgramming I
   Terracotta for the shared memory and
    synchronization
    −   Integration point for Hibernate and Hibernate
        Cache
    −   Integration point for Groovy Data Adapters

   All First Class Objects are decomposed from
    Java or Groovy objects to a 'Tuple'
    −   Not perfectly named, but a simple data structure
        than implements Map and List
    −   Usable with XPATH
    −   Small Set of Primitives optimized for Terracotta
Distributed Cache and
            Meta-Programming II
   Everything is a Property
    −   Data and methods
    −   Behavior follows a mathematical model
    −   Property listeners manage invalidation

   Missing Methods / Missing Properties
    −   Widely used calculations and method results stored
        as property values so avoid redundant calculation
    −   Calculated values are never stored in the database
Distributed Cache and
           Meta Programming III
   Tuple Class
    −   Much like a Groovy Class
    −   Joins objects like associations / relations in
        Hibernate
    −   Defines raw types / names / converters
    −   Defines property finders / chained finders /
        methods

   Missing Methods / Missing Properties
    − 'Missing' Events Trigger Chainable Closures
    −   Missing Events invoker 'Finders' and 'Builders'
Distributed Cache and
           Meta Programming IV
   Do We Even Want A Database ??
    −   Sometimes Accessing Data Remotely Works Just
        As Well
    −   Sometimes Pulling Data from Flat Files On
        Demand works Just As Well
    −   Sometimes Calculating from Values from old inputs
        makes more sense than persisting it (normal forms)

   'Active' Cache As a Integration Space
    −   Miss in a cache request trigger a chain of closures
Agenda
−   Speaker and Project
−   Motivations for Groovy in Quantitative Finance
        Business Problem
        Math / Data / Business / Languages
        Questions Regarding Groovy Performance

−   Data Grid and Dynamic Programming
        Master / Worker Model, MapReduce, and ForkJoin
        Property Listeners, Dependency Graphs, Invalidation

−   Grails: Exposing the cache to the world

−   Revolution: Distributed Computing and DSLs
Grails As A Integration Hub
   Controller requests arrive via JSON, XML, JMS
    −   R Language Client: JSON → Grails
    −   Excel Client: JSON → Grails Over HTTP
    −   Excel RTD: JSON → Grails over JMS
    −   SwingX Table (Real-Time) JSON → Grails via JMS
    −   SwingX Table JSON → Grails via HTTP

   Affiliated Business Units:
    −   XML Web Services from dot Not
    −   Matlab dot Net
Cache Logic: Reporting
def r = builder.reportWith(Bond.class, ”bond.cdsBasis < 0”) {
   attr {
      expression = 'bond.ticker'
      name = 'Tkr'
   }
   attr {
      expression = 'bond.coupon'
      name = 'Tkr'
   }
   attr {
      expression = 'bond.maturity'
      name = 'Tkr'
   }
   attr {
      expression = 'bond.spot?.price?.last'
      name = 'Px'
   }
   attr {
      expression = 'bond.spot?.yield?.last'
      name = 'Px'
   }
   attr {
      expression = 'bond.spot?.zspread?.last'
      name = 'Px'
   }
   attr {
      expression = 'bond.spot?.cdsBasis?.last'
      name = 'Px'
   }
}
Grails to Excel I:
                         DASL(Ticker,Exp)
Ticker /                               JAVA     ORCL     GM       IBM
Expression                             Equity   Equity   Equity   Equity
it.spot.px                             9.0      18.42    1.09     101.37

it.volSurface.find(delta : 50, expiry : 22      44       180      39
365).spot.iVol
it.cds.spot.spread                     65.31    63       23730    60

it.refBond.spot.zspread                230      55       18700    57

it.cds.spot.basis                      -164.7   8        1030     3

it.fin.mrq.netDebt                     -300     10000    28846    21000

it.fin.mrq.totalDebt /                 N/A      5.5      N/A      6.3
it.fin.mrq.ebitda
Grails to Excel II:
        DSLH(Ticker,Exp,Start,End)
Ticker /               JAVA     ORCL     GM       IBM
Expression             Equity   Equity   Equity   Equity
it.spot.px             9.0      18.42    1.09     101.37
15 May 2009            9.0      18.42    1.09     101.37
14 May 2009            9.0      18.46    1.15     101.05
13 May 2009            8.95     18.07    1.21     102.26
12 May 2009            9.05     18.38    1.15     103.94
11 May 2009            8.91     18.56    1.44     99.83
8 May 2009             8.71     18.32    1.61     101.49



   Expressions can be complex, traverse related
    objects, join disparate data sources
Grails to Excel III:
     DSLR(Report[Optional Para])

=DSLR('SUNMA')   EqyPx    CDS   Bond Basis     Debt    Leverage
JAVA Equity      9.0      63    230   -164.7   -300    N/A

ORCL Equity      18.42    63    55    8        10000   5.5

IBM Equity       101.37   60    57    3        21000   6.3
Agenda
−   Speaker and Project
−   Motivations for Groovy in Quantitative Finance
        Business Problem
        Math / Data / Business / Languages
        Questions Regarding Groovy Performance

−   Data Grid and Dynamic Programming
        Master / Worker Model, MapReduce, and ForkJoin
        Property Listeners, Dependency Graphs, Invalidation

−   Grails: Exposing the cache to the world

−   Revolution: Distributed Computing and DSLs
The Revolution I
         Technology And Finance

           IBM
PDP-11            SPARC   EMAIL   WEB   XML     GRID
            PC




    The Network Is The Computer
     −   We Can't Agree On Which End Of The Byte
         Comes First (Big Endian / Little Endian)
     −   We Can't Agree On Character Set and Line
         Delimiters (EBCIDEC, ASCII, Unicode)
     −   We Can't Agree How to Share Files
     −   We Can't Agree How To Share Code
The Future Is Multi Core
   Performance And Scalability
    −   Calculations and Queries: Once or Many ?
    −   Weak HashMaps and Distributed Cache
    −   Actors and The Erlang / Scala Metaphor
    −
   Computational Versus Data Grid
    −   Should Data Move Around The Network or Code ?
    −   Joins Across Data Stores
    −   Joins Across Computation Efforts
The Future Is Multi Core
    DASEL = DSL + Financial Ecosystem
   One DSL or Many ?
    −   Report Generation
    −   Simulation
    −   Portfolio Generating Functions

   Uses
    −   Analytic Trading
    −   Risk Analytics
    −   Opportunity Hunting / Discovery of Dislocations
Victory Means Never Having To Say ....

   Moving Code Around The Network
     −   Moving code to where the data is
     −   Not moving data to where the code is

   Security And Strength
     −   The Power Of The Virtualized Runtime

   The Future Is Multi-Core
     −   Version II of Moore's Law and the End of C++
Demo: (Time Permitting)

        Groovy Matrix

A High Performance Example of
Groovy Threads and a Math DSL
Questions and

Answers (Hopefully ?)

Weitere ähnliche Inhalte

Was ist angesagt?

Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...Codemotion
 
Inside Of Mbga Open Platform
Inside Of Mbga Open PlatformInside Of Mbga Open Platform
Inside Of Mbga Open PlatformHideo Kimura
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Ryan Cuprak
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteVMware Tanzu
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 UpdateRyan Cuprak
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Martin Toshev
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web IntegrationKazuchika Sekiya
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Simon Ritter
 
Projects Valhalla, Loom and GraalVM at virtual JavaFest 2020 in Kiev, Ukraine...
Projects Valhalla, Loom and GraalVM at virtual JavaFest 2020 in Kiev, Ukraine...Projects Valhalla, Loom and GraalVM at virtual JavaFest 2020 in Kiev, Ukraine...
Projects Valhalla, Loom and GraalVM at virtual JavaFest 2020 in Kiev, Ukraine...Vadym Kazulkin
 
Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Chris Richardson
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3Oracle
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with GradleRyan Cuprak
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Ryan Cuprak
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007lucclaes
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules uploadRyan Cuprak
 

Was ist angesagt? (19)

Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...Refactor your Java EE application using Microservices and Containers - Arun G...
Refactor your Java EE application using Microservices and Containers - Arun G...
 
Java EE 8
Java EE 8Java EE 8
Java EE 8
 
Inside Of Mbga Open Platform
Inside Of Mbga Open PlatformInside Of Mbga Open Platform
Inside Of Mbga Open Platform
 
Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)Exploring Java Heap Dumps (Oracle Code One 2018)
Exploring Java Heap Dumps (Oracle Code One 2018)
 
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache CalciteEnable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
Enable SQL/JDBC Access to Apache Geode/GemFire Using Apache Calcite
 
Java EE 8 Update
Java EE 8 UpdateJava EE 8 Update
Java EE 8 Update
 
Java 9 and Project Jigsaw
Java 9 and Project JigsawJava 9 and Project Jigsaw
Java 9 and Project Jigsaw
 
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
Modularity of the Java Platform (OSGi, Jigsaw and Penrose)
 
[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration[English version] JavaFX and Web Integration
[English version] JavaFX and Web Integration
 
Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9Modularization With Project Jigsaw in JDK 9
Modularization With Project Jigsaw in JDK 9
 
Java modularity: life after Java 9
Java modularity: life after Java 9Java modularity: life after Java 9
Java modularity: life after Java 9
 
Scala & Lift (JEEConf 2012)
Scala & Lift (JEEConf 2012)Scala & Lift (JEEConf 2012)
Scala & Lift (JEEConf 2012)
 
Projects Valhalla, Loom and GraalVM at virtual JavaFest 2020 in Kiev, Ukraine...
Projects Valhalla, Loom and GraalVM at virtual JavaFest 2020 in Kiev, Ukraine...Projects Valhalla, Loom and GraalVM at virtual JavaFest 2020 in Kiev, Ukraine...
Projects Valhalla, Loom and GraalVM at virtual JavaFest 2020 in Kiev, Ukraine...
 
Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)Developing modular, polyglot applications with Spring (SpringOne India 2012)
Developing modular, polyglot applications with Spring (SpringOne India 2012)
 
Rollin onj Rubyv3
Rollin onj Rubyv3Rollin onj Rubyv3
Rollin onj Rubyv3
 
Faster Java EE Builds with Gradle
Faster Java EE Builds with GradleFaster Java EE Builds with Gradle
Faster Java EE Builds with Gradle
 
Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]Top 50 java ee 7 best practices [con5669]
Top 50 java ee 7 best practices [con5669]
 
Google Dev Day2007
Google Dev Day2007Google Dev Day2007
Google Dev Day2007
 
Preparing for java 9 modules upload
Preparing for java 9 modules uploadPreparing for java 9 modules upload
Preparing for java 9 modules upload
 

Ähnlich wie GR8Conf 2009: Groovy in Fiance Case Study by Jonathan Felch

Groovy On The Trading Desk
Groovy On The Trading DeskGroovy On The Trading Desk
Groovy On The Trading DeskJonathan Felch
 
Bitkom Cray presentation - on HPC affecting big data analytics in FS
Bitkom Cray presentation - on HPC affecting big data analytics in FSBitkom Cray presentation - on HPC affecting big data analytics in FS
Bitkom Cray presentation - on HPC affecting big data analytics in FSPhilip Filleul
 
Architecting Agile Data Applications for Scale
Architecting Agile Data Applications for ScaleArchitecting Agile Data Applications for Scale
Architecting Agile Data Applications for ScaleDatabricks
 
Jayaram_Parida- Big Data Architect and Technical Scrum Master
Jayaram_Parida- Big Data Architect and Technical Scrum MasterJayaram_Parida- Big Data Architect and Technical Scrum Master
Jayaram_Parida- Big Data Architect and Technical Scrum MasterJayaram Parida
 
Bigdata.sunil_6+yearsExp
Bigdata.sunil_6+yearsExpBigdata.sunil_6+yearsExp
Bigdata.sunil_6+yearsExpbigdata sunil
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglotTugdual Grall
 
18Mar14 Find the Hidden Signal in Market Data Noise Webinar
18Mar14 Find the Hidden Signal in Market Data Noise Webinar 18Mar14 Find the Hidden Signal in Market Data Noise Webinar
18Mar14 Find the Hidden Signal in Market Data Noise Webinar Revolution Analytics
 
Resume quaish abuzer
Resume quaish abuzerResume quaish abuzer
Resume quaish abuzerquaish abuzer
 
BDW16 London - Deenar Toraskar, Think Reactive - Fast Data Key to Efficient C...
BDW16 London - Deenar Toraskar, Think Reactive - Fast Data Key to Efficient C...BDW16 London - Deenar Toraskar, Think Reactive - Fast Data Key to Efficient C...
BDW16 London - Deenar Toraskar, Think Reactive - Fast Data Key to Efficient C...Big Data Week
 
AGIT 2015 - Hans Viehmann: "Big Data and Smart Cities"
AGIT 2015  - Hans Viehmann: "Big Data and Smart Cities"AGIT 2015  - Hans Viehmann: "Big Data and Smart Cities"
AGIT 2015 - Hans Viehmann: "Big Data and Smart Cities"jstrobl
 
Putting Lipstick on Apache Pig at Netflix
Putting Lipstick on Apache Pig at NetflixPutting Lipstick on Apache Pig at Netflix
Putting Lipstick on Apache Pig at NetflixJeff Magnusson
 
Netflix - Pig with Lipstick by Jeff Magnusson
Netflix - Pig with Lipstick by Jeff Magnusson Netflix - Pig with Lipstick by Jeff Magnusson
Netflix - Pig with Lipstick by Jeff Magnusson Hakka Labs
 
Salesforce & SAP Integration
Salesforce & SAP IntegrationSalesforce & SAP Integration
Salesforce & SAP IntegrationRaymond Gao
 
How jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxHow jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxjKool
 
How jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxHow jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxDataStax
 
10 years of microservices at finn.no - why is that dragon still here (ndc o...
10 years of microservices at finn.no  - why is that dragon still here  (ndc o...10 years of microservices at finn.no  - why is that dragon still here  (ndc o...
10 years of microservices at finn.no - why is that dragon still here (ndc o...Henning Spjelkavik
 
Agile data lake? An oxymoron?
Agile data lake? An oxymoron?Agile data lake? An oxymoron?
Agile data lake? An oxymoron?samthemonad
 
Hadoop Master Class : A concise overview
Hadoop Master Class : A concise overviewHadoop Master Class : A concise overview
Hadoop Master Class : A concise overviewAbhishek Roy
 

Ähnlich wie GR8Conf 2009: Groovy in Fiance Case Study by Jonathan Felch (20)

Groovy On The Trading Desk
Groovy On The Trading DeskGroovy On The Trading Desk
Groovy On The Trading Desk
 
Groovy Finance
Groovy FinanceGroovy Finance
Groovy Finance
 
Bitkom Cray presentation - on HPC affecting big data analytics in FS
Bitkom Cray presentation - on HPC affecting big data analytics in FSBitkom Cray presentation - on HPC affecting big data analytics in FS
Bitkom Cray presentation - on HPC affecting big data analytics in FS
 
Architecting Agile Data Applications for Scale
Architecting Agile Data Applications for ScaleArchitecting Agile Data Applications for Scale
Architecting Agile Data Applications for Scale
 
Jayaram_Parida- Big Data Architect and Technical Scrum Master
Jayaram_Parida- Big Data Architect and Technical Scrum MasterJayaram_Parida- Big Data Architect and Technical Scrum Master
Jayaram_Parida- Big Data Architect and Technical Scrum Master
 
Bigdata.sunil_6+yearsExp
Bigdata.sunil_6+yearsExpBigdata.sunil_6+yearsExp
Bigdata.sunil_6+yearsExp
 
Proud to be polyglot
Proud to be polyglotProud to be polyglot
Proud to be polyglot
 
18Mar14 Find the Hidden Signal in Market Data Noise Webinar
18Mar14 Find the Hidden Signal in Market Data Noise Webinar 18Mar14 Find the Hidden Signal in Market Data Noise Webinar
18Mar14 Find the Hidden Signal in Market Data Noise Webinar
 
Resume quaish abuzer
Resume quaish abuzerResume quaish abuzer
Resume quaish abuzer
 
BDW16 London - Deenar Toraskar, Think Reactive - Fast Data Key to Efficient C...
BDW16 London - Deenar Toraskar, Think Reactive - Fast Data Key to Efficient C...BDW16 London - Deenar Toraskar, Think Reactive - Fast Data Key to Efficient C...
BDW16 London - Deenar Toraskar, Think Reactive - Fast Data Key to Efficient C...
 
AGIT 2015 - Hans Viehmann: "Big Data and Smart Cities"
AGIT 2015  - Hans Viehmann: "Big Data and Smart Cities"AGIT 2015  - Hans Viehmann: "Big Data and Smart Cities"
AGIT 2015 - Hans Viehmann: "Big Data and Smart Cities"
 
Lipstick On Pig
Lipstick On Pig Lipstick On Pig
Lipstick On Pig
 
Putting Lipstick on Apache Pig at Netflix
Putting Lipstick on Apache Pig at NetflixPutting Lipstick on Apache Pig at Netflix
Putting Lipstick on Apache Pig at Netflix
 
Netflix - Pig with Lipstick by Jeff Magnusson
Netflix - Pig with Lipstick by Jeff Magnusson Netflix - Pig with Lipstick by Jeff Magnusson
Netflix - Pig with Lipstick by Jeff Magnusson
 
Salesforce & SAP Integration
Salesforce & SAP IntegrationSalesforce & SAP Integration
Salesforce & SAP Integration
 
How jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxHow jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStax
 
How jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStaxHow jKool Analyzes Streaming Data in Real Time with DataStax
How jKool Analyzes Streaming Data in Real Time with DataStax
 
10 years of microservices at finn.no - why is that dragon still here (ndc o...
10 years of microservices at finn.no  - why is that dragon still here  (ndc o...10 years of microservices at finn.no  - why is that dragon still here  (ndc o...
10 years of microservices at finn.no - why is that dragon still here (ndc o...
 
Agile data lake? An oxymoron?
Agile data lake? An oxymoron?Agile data lake? An oxymoron?
Agile data lake? An oxymoron?
 
Hadoop Master Class : A concise overview
Hadoop Master Class : A concise overviewHadoop Master Class : A concise overview
Hadoop Master Class : A concise overview
 

Mehr von GR8Conf

DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your TeamGR8Conf
 
Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle GR8Conf
 
Mum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developerMum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developerGR8Conf
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with GroovyGR8Conf
 
Scraping with Geb
Scraping with GebScraping with Geb
Scraping with GebGR8Conf
 
How to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and AndroidHow to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and AndroidGR8Conf
 
Ratpack On the Docks
Ratpack On the DocksRatpack On the Docks
Ratpack On the DocksGR8Conf
 
Groovy Powered Clean Code
Groovy Powered Clean CodeGroovy Powered Clean Code
Groovy Powered Clean CodeGR8Conf
 
Cut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsCut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsGR8Conf
 
Performance tuning Grails applications
 Performance tuning Grails applications Performance tuning Grails applications
Performance tuning Grails applicationsGR8Conf
 
Ratpack and Grails 3
 Ratpack and Grails 3 Ratpack and Grails 3
Ratpack and Grails 3GR8Conf
 
Grails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloudGrails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloudGR8Conf
 
Functional testing your Grails app with GEB
Functional testing your Grails app with GEBFunctional testing your Grails app with GEB
Functional testing your Grails app with GEBGR8Conf
 
Deploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPCDeploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPCGR8Conf
 
The Grails introduction workshop
The Grails introduction workshopThe Grails introduction workshop
The Grails introduction workshopGR8Conf
 
Idiomatic spock
Idiomatic spockIdiomatic spock
Idiomatic spockGR8Conf
 
The Groovy Ecosystem Revisited
The Groovy Ecosystem RevisitedThe Groovy Ecosystem Revisited
The Groovy Ecosystem RevisitedGR8Conf
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGR8Conf
 
Integration using Apache Camel and Groovy
Integration using Apache Camel and GroovyIntegration using Apache Camel and Groovy
Integration using Apache Camel and GroovyGR8Conf
 
CRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineCRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineGR8Conf
 

Mehr von GR8Conf (20)

DevOps Enabling Your Team
DevOps Enabling Your TeamDevOps Enabling Your Team
DevOps Enabling Your Team
 
Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle Creating and testing REST contracts with Accurest Gradle
Creating and testing REST contracts with Accurest Gradle
 
Mum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developerMum, I want to be a Groovy full-stack developer
Mum, I want to be a Groovy full-stack developer
 
Metaprogramming with Groovy
Metaprogramming with GroovyMetaprogramming with Groovy
Metaprogramming with Groovy
 
Scraping with Geb
Scraping with GebScraping with Geb
Scraping with Geb
 
How to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and AndroidHow to create a conference android app with Groovy and Android
How to create a conference android app with Groovy and Android
 
Ratpack On the Docks
Ratpack On the DocksRatpack On the Docks
Ratpack On the Docks
 
Groovy Powered Clean Code
Groovy Powered Clean CodeGroovy Powered Clean Code
Groovy Powered Clean Code
 
Cut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature pluginsCut your Grails application to pieces - build feature plugins
Cut your Grails application to pieces - build feature plugins
 
Performance tuning Grails applications
 Performance tuning Grails applications Performance tuning Grails applications
Performance tuning Grails applications
 
Ratpack and Grails 3
 Ratpack and Grails 3 Ratpack and Grails 3
Ratpack and Grails 3
 
Grails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloudGrails & DevOps: continuous integration and delivery in the cloud
Grails & DevOps: continuous integration and delivery in the cloud
 
Functional testing your Grails app with GEB
Functional testing your Grails app with GEBFunctional testing your Grails app with GEB
Functional testing your Grails app with GEB
 
Deploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPCDeploying, Scaling, and Running Grails on AWS and VPC
Deploying, Scaling, and Running Grails on AWS and VPC
 
The Grails introduction workshop
The Grails introduction workshopThe Grails introduction workshop
The Grails introduction workshop
 
Idiomatic spock
Idiomatic spockIdiomatic spock
Idiomatic spock
 
The Groovy Ecosystem Revisited
The Groovy Ecosystem RevisitedThe Groovy Ecosystem Revisited
The Groovy Ecosystem Revisited
 
Groovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examplesGroovy 3 and the new Groovy Meta Object Protocol in examples
Groovy 3 and the new Groovy Meta Object Protocol in examples
 
Integration using Apache Camel and Groovy
Integration using Apache Camel and GroovyIntegration using Apache Camel and Groovy
Integration using Apache Camel and Groovy
 
CRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual MachineCRaSH the shell for the Java Virtual Machine
CRaSH the shell for the Java Virtual Machine
 

Kürzlich hochgeladen

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxLoriGlavin3
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxLoriGlavin3
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????blackmambaettijean
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Commit University
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024BookNet Canada
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfAlex Barbosa Coqueiro
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxLoriGlavin3
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxLoriGlavin3
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebUiPathCommunity
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024Lorenzo Miniero
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfLoriGlavin3
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Mark Simos
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionDilum Bandara
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024BookNet Canada
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024Stephanie Beckett
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsPixlogix Infotech
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfAddepto
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek SchlawackFwdays
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embeddingZilliz
 

Kürzlich hochgeladen (20)

The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptxThe Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
The Role of FIDO in a Cyber Secure Netherlands: FIDO Paris Seminar.pptx
 
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptxDigital Identity is Under Attack: FIDO Paris Seminar.pptx
Digital Identity is Under Attack: FIDO Paris Seminar.pptx
 
What is Artificial Intelligence?????????
What is Artificial Intelligence?????????What is Artificial Intelligence?????????
What is Artificial Intelligence?????????
 
Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!Nell’iperspazio con Rocket: il Framework Web di Rust!
Nell’iperspazio con Rocket: il Framework Web di Rust!
 
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: BNC CataList - Tech Forum 2024
 
Unraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdfUnraveling Multimodality with Large Language Models.pdf
Unraveling Multimodality with Large Language Models.pdf
 
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptxUse of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
Use of FIDO in the Payments and Identity Landscape: FIDO Paris Seminar.pptx
 
The State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptxThe State of Passkeys with FIDO Alliance.pptx
The State of Passkeys with FIDO Alliance.pptx
 
Dev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio WebDev Dives: Streamline document processing with UiPath Studio Web
Dev Dives: Streamline document processing with UiPath Studio Web
 
SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024SIP trunking in Janus @ Kamailio World 2024
SIP trunking in Janus @ Kamailio World 2024
 
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
Transcript: New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
Moving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdfMoving Beyond Passwords: FIDO Paris Seminar.pdf
Moving Beyond Passwords: FIDO Paris Seminar.pdf
 
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
Tampa BSides - Chef's Tour of Microsoft Security Adoption Framework (SAF)
 
Advanced Computer Architecture – An Introduction
Advanced Computer Architecture – An IntroductionAdvanced Computer Architecture – An Introduction
Advanced Computer Architecture – An Introduction
 
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
New from BookNet Canada for 2024: Loan Stars - Tech Forum 2024
 
What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024What's New in Teams Calling, Meetings and Devices March 2024
What's New in Teams Calling, Meetings and Devices March 2024
 
The Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and ConsThe Ultimate Guide to Choosing WordPress Pros and Cons
The Ultimate Guide to Choosing WordPress Pros and Cons
 
Gen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdfGen AI in Business - Global Trends Report 2024.pdf
Gen AI in Business - Global Trends Report 2024.pdf
 
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
"Subclassing and Composition – A Pythonic Tour of Trade-Offs", Hynek Schlawack
 
Training state-of-the-art general text embedding
Training state-of-the-art general text embeddingTraining state-of-the-art general text embedding
Training state-of-the-art general text embedding
 

GR8Conf 2009: Groovy in Fiance Case Study by Jonathan Felch

  • 1. Groovy Finance: Grid Computing and Computational Finance Jonathan Felch
  • 2. Agenda − Introduction: Speaker and Project − Motivations for Groovy in Quantitative Finance  Business Problem  Math / Data / Business / Languages  Questions Regarding Groovy Performance − Data Grid and Dynamic Programming  Master / Worker Model, MapReduce, and ForkJoin  Property Listeners, Dependency Graphs, Invalidation − Grails: Exposing the cache to the world − Revolution: Distributed Computing and DSLs
  • 3. Introduction  Jonathan Felch − NASDAQ Software Architect 1997-99 − Lehman Brothers Global e-Commerce Architect 1999-2000 − Venture Capital Associate @ GS / BCG JV 2000-2001 − Quantitative Systems @ Syntax Capital 2005-2006 − VP Quantitative Systems @ Credit Suisse 2006-2009 − Independent Work in Financial DSLs / Data Grids 2009+
  • 4. Groovy Finance: A Case Study  Started at Syntax Capital Management in 2005 − Capital Structure Arbitrage − Almost Every Asset Class − Focus on Credit Markets, Macro and Single Name  Matured at an Investment Bank 2007-2009 − Groovy To The Rescue − Grails and Integration − Meta-Programming and A Distributed Cache − Unexpected Upside: A Quant Finance DSL
  • 5. Groovy Finance: Architecture  Industrial Strength Back-End In Java  Enterprise Software Integration − Data Acquisition Focus / Logical Focus  SOAP, JMS, JDBC, CSV files, ZIP files, delimited files  Bloomberg, Markit Partners, OPRA, Ivy, Barra, Imagine − Data Delivery Solutions  Excel Plug-In  Reports in HTML, PDF, CSV, JSON, XML, JMS  DSL Console with JSyntaxPane
  • 6. Agenda − Introduction: Speaker and Project − Motivations for Groovy in Quantitative Finance  Business Problem  Math / Data / Business / Languages  Questions Regarding Groovy Performance − Data Grid and Dynamic Programming − Grails: Exposing the cache to the world − Revolution: Distributed Computing and DSLs
  • 7. What is Quant Finance ? A quant designs and implements software and mathematical models for the pricing of derivatives, assessment of risk, or predicting market movements
  • 8. What's The Problem: The Math  Quant Finance Models are Wrong − Even The Best Models Fail, Failure Is Expensive  Assumption of Quantitative Finance Are Wrong − Market Are Social Phenomena, Not Random Walks  Quant Finance Models Change − In Bad Times, They Change A Lot  Coding Almost everything in C++ takes forever  Coding Everything Else in VBA doesn't scale
  • 9. What's The Problem: The Market  Market Structures Drive Financial Data − Different Calendars, Different Measures − Equities and Government Auctions are Transparent  Also options, some bonds, some preferred − Exotic and Credit Markets are Illiquid, No Transparency  Some of products are not really 'securities'  Identifiers are ridiculous, don't work, unclear − ISIN, CUSIP, SEDOL, Tickers, ADRs, … − Observation Dates and Effective Dates
  • 10. What's The Problem: The Data  Lots of Data, Lots of Math, Lots of Products − Credit Market Subset  1500 Companies / 2500 Curves / 10 Indices & Tranches  10,000 Liquid Bonds / 2,000 Liquid Converts / 2,000 Loans  1500 Liquid Equities / 169 point vol surface to start − Derivatives and Quant strategies have many metrics for each time series observation  Securities can't be compared on price  Relative values metrics are complex and there are many
  • 11. What's The Problem: The Traders  Great Trades Come From Half-Baked Ideas − Fully Baked Ideas Have Already Been Priced In  Traders Do Not Know What They Want  Whatever They Think They Want, They Wanted It Yesterday  Whatever They Want Today, They Will Never Use Again
  • 12. Languages of Quant Finance  Commonly used languages of Quant Finance − C++ (The Dominant Industrial Strength Language) − VBA − Matlab, SAS, STATA, S, and R − C# − Java (Most limited to Fixed Income and Web)  Up and Coming / Research Languages of Interest to Quant Finance − Fortress, Scala, Groovy, Python, F#, and Erlang
  • 13. JEE / Groovy Components
  • 14. Why Groovy ?  Pith, Speedy Development Cycle − Made for half baked idea  Dynamic Programming − Meta-Programming, DSL Support  Java / JEE / Enterprise − Massive Ecosystem, Performance Fall back  Community − Grails, Griffon, lots of small projects
  • 15. Other Tools That Helped Out  Google Collections and MapReduce  VisualNumeric's JSML / UJMP / Weka  Terracotta  JSR 166 / Fork-Join  R Language
  • 16. Groovy Performance: Overview  JIT and Operator Overloading − Number Crunching and Monte Carlo − GroovyMatrix  Smart Programming − Algorithms versus Language − Grid Computing − Caching  'Thought Experiments' before production code − Groovy 'gets the idea right' faster than C++
  • 17. Performance I: Monte Carlo def path = { spot, rate, vol, time, draw → def drift = (rate – 0.5 * vol * vol) * time def diffusion = vol * Math.sqrt(time) * draw spot * Math.exp(drift + diffusion) } def paths = path.curry(100.0,0.05,0.15,1.0) def strikePrices = [80, 90, 100, 110, 120] def guassian = GroovyMatrix.createGuassian(1000,1000) def df = Math.exp(time * -interestRate) def size = paths.size() strikePrices.each { strike -> def callOption = df * paths(guassian).collect { Math.max(0,it - strike) }.sum() / size def putOption = df * paths(guassian).collect { Math.max(0,it - strike) }.sum() / size println “1 Yr ${strike} Strike Call = ${callOption}” println “1 Yr ${strike} Strike Put = ${putOption}” }
  • 18. Agenda − Introduction: Speaker and Project − Motivations for Groovy in Quantitative Finance  Business Problem  Math / Data / Business / Languages  Project Background 2005-2007 − Data Grid and Dynamic Programming  Master / Worker Model, MapReduce, and ForkJoin  Property Listeners, Dependency Graphs, Invalidation − Grails: Exposing the cache to the world − Revolution: Distributed Computing and DSLs
  • 19. Databases versus Caching  Traditional Model: Hibernate − Data Model = Database plus Cache of POJOs  All Objects of the name class share structure  No (Persistent) Dynamic Properties on 1st class objects  All first class objects (query-able) lived in the database  Our Model: All POJOs → Tuples or Nodes − Tuples of same class may 'grow' existing structure − Tuples do not all have to come from data  Questions about what does and does not belong in database  Query Language = Gpath / Xpath + Hibernate  Includes dynamic properties and calculated values
  • 20. Distributed Cache and MetaProgramming I  Terracotta for the shared memory and synchronization − Integration point for Hibernate and Hibernate Cache − Integration point for Groovy Data Adapters  All First Class Objects are decomposed from Java or Groovy objects to a 'Tuple' − Not perfectly named, but a simple data structure than implements Map and List − Usable with XPATH − Small Set of Primitives optimized for Terracotta
  • 21. Distributed Cache and Meta-Programming II  Everything is a Property − Data and methods − Behavior follows a mathematical model − Property listeners manage invalidation  Missing Methods / Missing Properties − Widely used calculations and method results stored as property values so avoid redundant calculation − Calculated values are never stored in the database
  • 22. Distributed Cache and Meta Programming III  Tuple Class − Much like a Groovy Class − Joins objects like associations / relations in Hibernate − Defines raw types / names / converters − Defines property finders / chained finders / methods  Missing Methods / Missing Properties − 'Missing' Events Trigger Chainable Closures − Missing Events invoker 'Finders' and 'Builders'
  • 23. Distributed Cache and Meta Programming IV  Do We Even Want A Database ?? − Sometimes Accessing Data Remotely Works Just As Well − Sometimes Pulling Data from Flat Files On Demand works Just As Well − Sometimes Calculating from Values from old inputs makes more sense than persisting it (normal forms)  'Active' Cache As a Integration Space − Miss in a cache request trigger a chain of closures
  • 24. Agenda − Speaker and Project − Motivations for Groovy in Quantitative Finance  Business Problem  Math / Data / Business / Languages  Questions Regarding Groovy Performance − Data Grid and Dynamic Programming  Master / Worker Model, MapReduce, and ForkJoin  Property Listeners, Dependency Graphs, Invalidation − Grails: Exposing the cache to the world − Revolution: Distributed Computing and DSLs
  • 25. Grails As A Integration Hub  Controller requests arrive via JSON, XML, JMS − R Language Client: JSON → Grails − Excel Client: JSON → Grails Over HTTP − Excel RTD: JSON → Grails over JMS − SwingX Table (Real-Time) JSON → Grails via JMS − SwingX Table JSON → Grails via HTTP  Affiliated Business Units: − XML Web Services from dot Not − Matlab dot Net
  • 26. Cache Logic: Reporting def r = builder.reportWith(Bond.class, ”bond.cdsBasis < 0”) { attr { expression = 'bond.ticker' name = 'Tkr' } attr { expression = 'bond.coupon' name = 'Tkr' } attr { expression = 'bond.maturity' name = 'Tkr' } attr { expression = 'bond.spot?.price?.last' name = 'Px' } attr { expression = 'bond.spot?.yield?.last' name = 'Px' } attr { expression = 'bond.spot?.zspread?.last' name = 'Px' } attr { expression = 'bond.spot?.cdsBasis?.last' name = 'Px' } }
  • 27. Grails to Excel I: DASL(Ticker,Exp) Ticker / JAVA ORCL GM IBM Expression Equity Equity Equity Equity it.spot.px 9.0 18.42 1.09 101.37 it.volSurface.find(delta : 50, expiry : 22 44 180 39 365).spot.iVol it.cds.spot.spread 65.31 63 23730 60 it.refBond.spot.zspread 230 55 18700 57 it.cds.spot.basis -164.7 8 1030 3 it.fin.mrq.netDebt -300 10000 28846 21000 it.fin.mrq.totalDebt / N/A 5.5 N/A 6.3 it.fin.mrq.ebitda
  • 28. Grails to Excel II: DSLH(Ticker,Exp,Start,End) Ticker / JAVA ORCL GM IBM Expression Equity Equity Equity Equity it.spot.px 9.0 18.42 1.09 101.37 15 May 2009 9.0 18.42 1.09 101.37 14 May 2009 9.0 18.46 1.15 101.05 13 May 2009 8.95 18.07 1.21 102.26 12 May 2009 9.05 18.38 1.15 103.94 11 May 2009 8.91 18.56 1.44 99.83 8 May 2009 8.71 18.32 1.61 101.49  Expressions can be complex, traverse related objects, join disparate data sources
  • 29. Grails to Excel III: DSLR(Report[Optional Para]) =DSLR('SUNMA') EqyPx CDS Bond Basis Debt Leverage JAVA Equity 9.0 63 230 -164.7 -300 N/A ORCL Equity 18.42 63 55 8 10000 5.5 IBM Equity 101.37 60 57 3 21000 6.3
  • 30. Agenda − Speaker and Project − Motivations for Groovy in Quantitative Finance  Business Problem  Math / Data / Business / Languages  Questions Regarding Groovy Performance − Data Grid and Dynamic Programming  Master / Worker Model, MapReduce, and ForkJoin  Property Listeners, Dependency Graphs, Invalidation − Grails: Exposing the cache to the world − Revolution: Distributed Computing and DSLs
  • 31. The Revolution I Technology And Finance IBM PDP-11 SPARC EMAIL WEB XML GRID PC  The Network Is The Computer − We Can't Agree On Which End Of The Byte Comes First (Big Endian / Little Endian) − We Can't Agree On Character Set and Line Delimiters (EBCIDEC, ASCII, Unicode) − We Can't Agree How to Share Files − We Can't Agree How To Share Code
  • 32. The Future Is Multi Core  Performance And Scalability − Calculations and Queries: Once or Many ? − Weak HashMaps and Distributed Cache − Actors and The Erlang / Scala Metaphor −  Computational Versus Data Grid − Should Data Move Around The Network or Code ? − Joins Across Data Stores − Joins Across Computation Efforts
  • 33. The Future Is Multi Core DASEL = DSL + Financial Ecosystem  One DSL or Many ? − Report Generation − Simulation − Portfolio Generating Functions  Uses − Analytic Trading − Risk Analytics − Opportunity Hunting / Discovery of Dislocations
  • 34. Victory Means Never Having To Say ....  Moving Code Around The Network − Moving code to where the data is − Not moving data to where the code is  Security And Strength − The Power Of The Virtualized Runtime  The Future Is Multi-Core − Version II of Moore's Law and the End of C++
  • 35. Demo: (Time Permitting) Groovy Matrix A High Performance Example of Groovy Threads and a Math DSL