SlideShare uma empresa Scribd logo
1 de 22
Baixar para ler offline
Python and R for
Quantitative Finance

    An Introduction

      Luca Sbardella
     luca.sbardella@gmail.com
             @lsbardel


       LondonR - Nov 09




         
Overview
1) Putting things into context
2) Python and R
3) Examples




             
1 ­ Context


How can quantitative finance pratictioners best
leverage their expertise without reinventing the
wheel and spending lots of their precious time
writing low level code?

          opensource technologies



                   
Current Approach

✔   Extensive use of large propriety C, C++ or Java libraries.
✔   Server­side applications written in
        ✔    .Net/C# ­ Windows servers
        ✔    Java – Windows & Linux/Unix
✔   VBA/Excel on the client side :(
✔   Some web/based clients :)
✔   Limited if inexistent use of powerful opensource 
      technologies/libraries.



                           
Problems

✔   Full development cycle in low­level languages is expensive
             C++ : Python = 7 : 1
✔   Writing code already developed many times before
✔   Difficult to adjust to new technologies as they become 
     available
✔   Often libraries are deployed on the client machine
✔   Some technologies (.Net) force a decision on the platform 
     to be used (Windows)



                            
A different approach

✔   Limit low­level development to critical number­crunching 
      components
✔   Use available high­standard opensource technologies
✔   Flexible, multiplatform server­side configuration
✔   Multi­language support
✔   Abstraction when possible
✔   Remote procedure calls (RPC)




                          
A proposed solution

✔   Use of Python as main server side driver
✔   Legacy C, C++ as Python modules (Boost­Python)
✔   Interaction with other technologies
        ✔    R ­ for statistics
        ✔    Erlang/Haskell – functional programming and 
               concurrency
        ✔    q – kdb+ timeseries database (commercial)
        ✔    Javascript/flex – web GUI front­end



                              
2 ­ Python and R

✔   Combine  two  of  the  most  used  and  powerful  opensource 
    languages to create a truly dynamic application framework.
✔   Benefit from an active community of developers and a vast 
    array of ready available libraries.
✔   Seemingless integration with C/C++ libraries




                          
Python?
✔   General-purpose high-level
      programming language
✔   Named after Monty Python
✔   by Guido Van Rossum
✔   in the late 1980s.
✔   Large community




                          
Python Features

✔   Dynamically typed
✔   Multi­paradigm design
        ✔   Object Oriented
        ✔   Metaprogramming (reflection)
        ✔   Functional programming
✔   Emphasizes semplicity
✔   Extendibility via C or C++ (boost.python, Cpython)




                          
Where?

✔   Fast Prototyping
✔   Scientific programming (numpy, scipy, …)
✔   Database abstraction (pyodbc, django)
✔   RPC servers (JSON, XML, Binary, ...)
✔   Domain Specific Languages (DSP)
✔   Web servers (mod_python, twisted, ...)
✔   Web Frameworks (django, zope, ...)
✔   Glue for anything you can think of


                         
R language

✔   Open source implementation of S/SPLUS
✔   Scripting language that excels in
        ✔    data analysis
        ✔    statistics and econometric
        ✔    graphics
✔   Huge collection of statistical packages available
✔   Can be used as stand­alone server side language but not 
     ideal



                              
Using R on the server­side

✔   Use R only for what has been design for
        ✔   Statistics & Math
✔   Embed R within Python domain




                           
Installing
✔   Install Python
✔   Install R and any R library of your choice
✔   Install numpy and rpy2
✔   Launch Python and run rpy2 test


$ python

>>>   from rpy2 import tests
>>>   import unittest
>>>   tr = unittest.TextTestRunner(verbosity = 1)
>>>   tr.run(tests.suite())



                           
3 ­ Examples

1) Sharing memory and arrays
2) Small server for rolling statistics calculation
3) A timeseries DSL (Domain Specific Language). Not 
    presented.




                         
3.1 Memory and Vectors

✔   When using rpy2 Python and R domains are co­existing
✔   Python manages objects pointing to data stored and 
     administered in the R space
✔   R variables are existing within an embedded R workspace, 
      and can be accessed from Python through their python 
      object representations (Sexp and subclasses).




                         
3.1 – Memory and Vectors
import rpy2.rinterface as ri
import numpy as ny

# Create an integer array in R domain
rx = ri.SexpVector([1,2,3,4], ri.INTSXP)

# Create a local copy in Python domain
nx = ny.array(rx)

# Proxy to R vector without coping
nx_nc = ny.asarray(rx)




                            
3.2 A small server

✔   A minimalist Client­server application
✔   The Python server uses R packages to perform time­series 
     analysis on historical stock prices
✔   The server exposes a RPC­JSON interface to the client
✔   Implement one function which calculate a simple rolling 
      moving avarage




                         
Code structure
Code can be found at http://github.com

http://github.com/lsbardel/statplay/tree/master/examples/londonr1109/

    londonr1109/
       __init__.py
       roll.py
       plot.py
       server1.py
       jsonrpc/
            __init__.py
            jsonlib.py
            proxy.py
            server.py




                            
System Requirements

✔   Python 2.6 or above
✔   R 2.8 or above
✔   rpy2 and numpy (core Python­R packages)
✔   matplotlib (for plotting client)
✔   proformanceAnalytics (R package)
✔   quantmod (R package)




                           
To start the server type

$ python server1.py 8080

The server is now ready to listen to requests on port 8080

To test the server the plot.py client can be used

To plot Google moving averages with rolloing window of 60
days type

$ python plot.py GOOG 60




                            
References

✔   Python: www.python.org
✔   R: www.r­project.org
✔   rpy2: http://rpy.sourceforge.net/
✔   numpy: www.numpy.org
✔   matplotlib: http://matplotlib.sourceforge.net
✔   twisted: http://twistedmatrix.com
✔   boost: http://www.boost.org/




                          

Mais conteúdo relacionado

Mais procurados

Polynomial regression
Polynomial regressionPolynomial regression
Polynomial regressionnaveedaliabad
 
Logistic regression
Logistic regressionLogistic regression
Logistic regressionVARUN KUMAR
 
"Deep Reinforcement Learning for Optimal Order Placement in a Limit Order Boo...
"Deep Reinforcement Learning for Optimal Order Placement in a Limit Order Boo..."Deep Reinforcement Learning for Optimal Order Placement in a Limit Order Boo...
"Deep Reinforcement Learning for Optimal Order Placement in a Limit Order Boo...Quantopian
 
Logistic regression in Machine Learning
Logistic regression in Machine LearningLogistic regression in Machine Learning
Logistic regression in Machine LearningKuppusamy P
 
polynomial linear regression
polynomial linear regressionpolynomial linear regression
polynomial linear regressionAkhilesh Joshi
 
Pl python python w postgre-sql
Pl python   python w postgre-sqlPl python   python w postgre-sql
Pl python python w postgre-sqlPiotr Pałkiewicz
 
Autoregression
AutoregressionAutoregression
Autoregressionjchristo06
 
Logistic Regression.pptx
Logistic Regression.pptxLogistic Regression.pptx
Logistic Regression.pptxMuskaan194530
 
Mathematics Foundation Course for Machine Learning & AI By Eduonix
Mathematics Foundation Course for Machine Learning & AI By Eduonix Mathematics Foundation Course for Machine Learning & AI By Eduonix
Mathematics Foundation Course for Machine Learning & AI By Eduonix Nick Trott
 
Probability Density Functions
Probability Density FunctionsProbability Density Functions
Probability Density Functionsguestb86588
 
Python Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | EdurekaPython Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | EdurekaEdureka!
 
Data Analysis and Visualization using Python
Data Analysis and Visualization using PythonData Analysis and Visualization using Python
Data Analysis and Visualization using PythonChariza Pladin
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessingTony Nguyen
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Jungkyu Lee
 
Ml3 logistic regression-and_classification_error_metrics
Ml3 logistic regression-and_classification_error_metricsMl3 logistic regression-and_classification_error_metrics
Ml3 logistic regression-and_classification_error_metricsankit_ppt
 
Installing Anaconda Distribution of Python
Installing Anaconda Distribution of PythonInstalling Anaconda Distribution of Python
Installing Anaconda Distribution of PythonJatin Miglani
 

Mais procurados (20)

Contraction mapping
Contraction mappingContraction mapping
Contraction mapping
 
Polynomial regression
Polynomial regressionPolynomial regression
Polynomial regression
 
Array in C++
Array in C++Array in C++
Array in C++
 
Logistic regression
Logistic regressionLogistic regression
Logistic regression
 
"Deep Reinforcement Learning for Optimal Order Placement in a Limit Order Boo...
"Deep Reinforcement Learning for Optimal Order Placement in a Limit Order Boo..."Deep Reinforcement Learning for Optimal Order Placement in a Limit Order Boo...
"Deep Reinforcement Learning for Optimal Order Placement in a Limit Order Boo...
 
Logistic regression in Machine Learning
Logistic regression in Machine LearningLogistic regression in Machine Learning
Logistic regression in Machine Learning
 
polynomial linear regression
polynomial linear regressionpolynomial linear regression
polynomial linear regression
 
Pl python python w postgre-sql
Pl python   python w postgre-sqlPl python   python w postgre-sql
Pl python python w postgre-sql
 
Autoregression
AutoregressionAutoregression
Autoregression
 
Logistic Regression.pptx
Logistic Regression.pptxLogistic Regression.pptx
Logistic Regression.pptx
 
Mathematics Foundation Course for Machine Learning & AI By Eduonix
Mathematics Foundation Course for Machine Learning & AI By Eduonix Mathematics Foundation Course for Machine Learning & AI By Eduonix
Mathematics Foundation Course for Machine Learning & AI By Eduonix
 
Probability Density Functions
Probability Density FunctionsProbability Density Functions
Probability Density Functions
 
Python by Rj
Python by RjPython by Rj
Python by Rj
 
Python Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | EdurekaPython Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | Edureka
 
Data Analysis and Visualization using Python
Data Analysis and Visualization using PythonData Analysis and Visualization using Python
Data Analysis and Visualization using Python
 
Data preprocessing
Data preprocessingData preprocessing
Data preprocessing
 
Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어Support Vector Machine Tutorial 한국어
Support Vector Machine Tutorial 한국어
 
Ml3 logistic regression-and_classification_error_metrics
Ml3 logistic regression-and_classification_error_metricsMl3 logistic regression-and_classification_error_metrics
Ml3 logistic regression-and_classification_error_metrics
 
Installing Anaconda Distribution of Python
Installing Anaconda Distribution of PythonInstalling Anaconda Distribution of Python
Installing Anaconda Distribution of Python
 
Seaborn.pptx
Seaborn.pptxSeaborn.pptx
Seaborn.pptx
 

Semelhante a Python and R for quantitative finance

Python | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python TutorialPython | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python TutorialQA TrainingHub
 
Introduction of python programming
Introduction of python programmingIntroduction of python programming
Introduction of python programmingNitin Kumar Kashyap
 
Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaD...
Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaD...Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaD...
Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaD...ScyllaDB
 
Approaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsApproaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsRogue Wave Software
 
Python workshop
Python workshopPython workshop
Python workshopShiraz LUG
 
Streaming Data in R
Streaming Data in RStreaming Data in R
Streaming Data in RRory Winston
 
Python quick guide1
Python quick guide1Python quick guide1
Python quick guide1Kanchilug
 
Open source analytics
Open source analyticsOpen source analytics
Open source analyticsAjay Ohri
 
Cloud native IPC for Microservices Workshop @ Containerdays 2022
Cloud native IPC for Microservices Workshop @ Containerdays 2022Cloud native IPC for Microservices Workshop @ Containerdays 2022
Cloud native IPC for Microservices Workshop @ Containerdays 2022QAware GmbH
 
Ali alshehri c++_comparison between c++&python
Ali alshehri c++_comparison between c++&pythonAli alshehri c++_comparison between c++&python
Ali alshehri c++_comparison between c++&pythonAliAAAlshehri
 
An overview of data and web-application development with Python
An overview of data and web-application development with PythonAn overview of data and web-application development with Python
An overview of data and web-application development with PythonSivaranjan Goswami
 
R as supporting tool for analytics and simulation
R as supporting tool for analytics and simulationR as supporting tool for analytics and simulation
R as supporting tool for analytics and simulationAlvaro Gil
 
Python tutorial for beginners - Tib academy
Python tutorial for beginners - Tib academyPython tutorial for beginners - Tib academy
Python tutorial for beginners - Tib academyTIB Academy
 

Semelhante a Python and R for quantitative finance (20)

Python | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python TutorialPython | What is Python | History of Python | Python Tutorial
Python | What is Python | History of Python | Python Tutorial
 
Introduction of python programming
Introduction of python programmingIntroduction of python programming
Introduction of python programming
 
Go at uber
Go at uberGo at uber
Go at uber
 
Pyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdfPyhton-1a-Basics.pdf
Pyhton-1a-Basics.pdf
 
Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaD...
Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaD...Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaD...
Scylla Summit 2022: Learning Rust the Hard Way for a Production Kafka+ScyllaD...
 
Approaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC appsApproaches to debugging mixed-language HPC apps
Approaches to debugging mixed-language HPC apps
 
Python workshop
Python workshopPython workshop
Python workshop
 
Python workshop
Python workshopPython workshop
Python workshop
 
Learn python
Learn pythonLearn python
Learn python
 
PyData Boston 2013
PyData Boston 2013PyData Boston 2013
PyData Boston 2013
 
Python Online From EasyLearning Guru
Python Online From EasyLearning GuruPython Online From EasyLearning Guru
Python Online From EasyLearning Guru
 
Streaming Data in R
Streaming Data in RStreaming Data in R
Streaming Data in R
 
Python quick guide1
Python quick guide1Python quick guide1
Python quick guide1
 
Open source analytics
Open source analyticsOpen source analytics
Open source analytics
 
Cloud native IPC for Microservices Workshop @ Containerdays 2022
Cloud native IPC for Microservices Workshop @ Containerdays 2022Cloud native IPC for Microservices Workshop @ Containerdays 2022
Cloud native IPC for Microservices Workshop @ Containerdays 2022
 
Ali alshehri c++_comparison between c++&python
Ali alshehri c++_comparison between c++&pythonAli alshehri c++_comparison between c++&python
Ali alshehri c++_comparison between c++&python
 
An overview of data and web-application development with Python
An overview of data and web-application development with PythonAn overview of data and web-application development with Python
An overview of data and web-application development with Python
 
R as supporting tool for analytics and simulation
R as supporting tool for analytics and simulationR as supporting tool for analytics and simulation
R as supporting tool for analytics and simulation
 
Introduction To Python
Introduction To PythonIntroduction To Python
Introduction To Python
 
Python tutorial for beginners - Tib academy
Python tutorial for beginners - Tib academyPython tutorial for beginners - Tib academy
Python tutorial for beginners - Tib academy
 

Último

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProduct Anonymous
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businesspanagenda
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherRemote DBA Services
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Miguel Araújo
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024Rafal Los
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024The Digital Insurer
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdflior mazor
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoffsammart93
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Principled Technologies
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsJoaquim Jorge
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesBoston Institute of Analytics
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...Martijn de Jong
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024The Digital Insurer
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024The Digital Insurer
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUK Journal
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...Neo4j
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?Igalia
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonAnna Loughnan Colquhoun
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobeapidays
 

Último (20)

TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data DiscoveryTrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
TrustArc Webinar - Unlock the Power of AI-Driven Data Discovery
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Why Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire businessWhy Teams call analytics are critical to your entire business
Why Teams call analytics are critical to your entire business
 
Strategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a FresherStrategies for Landing an Oracle DBA Job as a Fresher
Strategies for Landing an Oracle DBA Job as a Fresher
 
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
Mastering MySQL Database Architecture: Deep Dive into MySQL Shell and MySQL R...
 
The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024The 7 Things I Know About Cyber Security After 25 Years | April 2024
The 7 Things I Know About Cyber Security After 25 Years | April 2024
 
Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024Partners Life - Insurer Innovation Award 2024
Partners Life - Insurer Innovation Award 2024
 
GenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdfGenAI Risks & Security Meetup 01052024.pdf
GenAI Risks & Security Meetup 01052024.pdf
 
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot TakeoffStrategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
Strategize a Smooth Tenant-to-tenant Migration and Copilot Takeoff
 
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
Deploy with confidence: VMware Cloud Foundation 5.1 on next gen Dell PowerEdg...
 
Artificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and MythsArtificial Intelligence: Facts and Myths
Artificial Intelligence: Facts and Myths
 
HTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation StrategiesHTML Injection Attacks: Impact and Mitigation Strategies
HTML Injection Attacks: Impact and Mitigation Strategies
 
2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...2024: Domino Containers - The Next Step. News from the Domino Container commu...
2024: Domino Containers - The Next Step. News from the Domino Container commu...
 
Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024Manulife - Insurer Innovation Award 2024
Manulife - Insurer Innovation Award 2024
 
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
Bajaj Allianz Life Insurance Company - Insurer Innovation Award 2024
 
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdfUnderstanding Discord NSFW Servers A Guide for Responsible Users.pdf
Understanding Discord NSFW Servers A Guide for Responsible Users.pdf
 
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...Workshop - Best of Both Worlds_ Combine  KG and Vector search for  enhanced R...
Workshop - Best of Both Worlds_ Combine KG and Vector search for enhanced R...
 
A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?A Year of the Servo Reboot: Where Are We Now?
A Year of the Servo Reboot: Where Are We Now?
 
Data Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt RobisonData Cloud, More than a CDP by Matt Robison
Data Cloud, More than a CDP by Matt Robison
 
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, AdobeApidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
Apidays New York 2024 - Scaling API-first by Ian Reasor and Radu Cotescu, Adobe
 

Python and R for quantitative finance

  • 1. Python and R for Quantitative Finance An Introduction Luca Sbardella luca.sbardella@gmail.com @lsbardel LondonR - Nov 09    
  • 3. 1 ­ Context How can quantitative finance pratictioners best leverage their expertise without reinventing the wheel and spending lots of their precious time writing low level code? opensource technologies    
  • 4. Current Approach ✔ Extensive use of large propriety C, C++ or Java libraries. ✔ Server­side applications written in ✔ .Net/C# ­ Windows servers ✔ Java – Windows & Linux/Unix ✔ VBA/Excel on the client side :( ✔ Some web/based clients :) ✔ Limited if inexistent use of powerful opensource  technologies/libraries.    
  • 5. Problems ✔ Full development cycle in low­level languages is expensive C++ : Python = 7 : 1 ✔ Writing code already developed many times before ✔ Difficult to adjust to new technologies as they become  available ✔ Often libraries are deployed on the client machine ✔ Some technologies (.Net) force a decision on the platform  to be used (Windows)    
  • 6. A different approach ✔ Limit low­level development to critical number­crunching  components ✔ Use available high­standard opensource technologies ✔ Flexible, multiplatform server­side configuration ✔ Multi­language support ✔ Abstraction when possible ✔ Remote procedure calls (RPC)    
  • 7. A proposed solution ✔ Use of Python as main server side driver ✔ Legacy C, C++ as Python modules (Boost­Python) ✔ Interaction with other technologies ✔ R ­ for statistics ✔ Erlang/Haskell – functional programming and  concurrency ✔ q – kdb+ timeseries database (commercial) ✔ Javascript/flex – web GUI front­end    
  • 8. 2 ­ Python and R ✔ Combine  two  of  the  most  used  and  powerful  opensource  languages to create a truly dynamic application framework. ✔ Benefit from an active community of developers and a vast  array of ready available libraries. ✔ Seemingless integration with C/C++ libraries    
  • 9. Python? ✔ General-purpose high-level programming language ✔ Named after Monty Python ✔ by Guido Van Rossum ✔ in the late 1980s. ✔ Large community    
  • 10. Python Features ✔ Dynamically typed ✔ Multi­paradigm design ✔ Object Oriented ✔ Metaprogramming (reflection) ✔ Functional programming ✔ Emphasizes semplicity ✔ Extendibility via C or C++ (boost.python, Cpython)    
  • 11. Where? ✔ Fast Prototyping ✔ Scientific programming (numpy, scipy, …) ✔ Database abstraction (pyodbc, django) ✔ RPC servers (JSON, XML, Binary, ...) ✔ Domain Specific Languages (DSP) ✔ Web servers (mod_python, twisted, ...) ✔ Web Frameworks (django, zope, ...) ✔ Glue for anything you can think of    
  • 12. R language ✔ Open source implementation of S/SPLUS ✔ Scripting language that excels in ✔ data analysis ✔ statistics and econometric ✔ graphics ✔ Huge collection of statistical packages available ✔ Can be used as stand­alone server side language but not  ideal    
  • 13. Using R on the server­side ✔ Use R only for what has been design for ✔ Statistics & Math ✔ Embed R within Python domain    
  • 14. Installing ✔ Install Python ✔ Install R and any R library of your choice ✔ Install numpy and rpy2 ✔ Launch Python and run rpy2 test $ python >>> from rpy2 import tests >>> import unittest >>> tr = unittest.TextTestRunner(verbosity = 1) >>> tr.run(tests.suite())    
  • 16. 3.1 Memory and Vectors ✔ When using rpy2 Python and R domains are co­existing ✔ Python manages objects pointing to data stored and  administered in the R space ✔ R variables are existing within an embedded R workspace,  and can be accessed from Python through their python  object representations (Sexp and subclasses).    
  • 17. 3.1 – Memory and Vectors import rpy2.rinterface as ri import numpy as ny # Create an integer array in R domain rx = ri.SexpVector([1,2,3,4], ri.INTSXP) # Create a local copy in Python domain nx = ny.array(rx) # Proxy to R vector without coping nx_nc = ny.asarray(rx)    
  • 18. 3.2 A small server ✔ A minimalist Client­server application ✔ The Python server uses R packages to perform time­series  analysis on historical stock prices ✔ The server exposes a RPC­JSON interface to the client ✔ Implement one function which calculate a simple rolling  moving avarage    
  • 19. Code structure Code can be found at http://github.com http://github.com/lsbardel/statplay/tree/master/examples/londonr1109/ londonr1109/ __init__.py roll.py plot.py server1.py jsonrpc/ __init__.py jsonlib.py proxy.py server.py    
  • 20. System Requirements ✔ Python 2.6 or above ✔ R 2.8 or above ✔ rpy2 and numpy (core Python­R packages) ✔ matplotlib (for plotting client) ✔ proformanceAnalytics (R package) ✔ quantmod (R package)    
  • 21. To start the server type $ python server1.py 8080 The server is now ready to listen to requests on port 8080 To test the server the plot.py client can be used To plot Google moving averages with rolloing window of 60 days type $ python plot.py GOOG 60    
  • 22. References ✔ Python: www.python.org ✔ R: www.r­project.org ✔ rpy2: http://rpy.sourceforge.net/ ✔ numpy: www.numpy.org ✔ matplotlib: http://matplotlib.sourceforge.net ✔ twisted: http://twistedmatrix.com ✔ boost: http://www.boost.org/