SlideShare une entreprise Scribd logo
1  sur  22
Télécharger pour lire hors ligne
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/




                          

Contenu connexe

Tendances

[study] Long Text Generation via Adversarial Training with Leaked Information
[study] Long Text Generation via Adversarial Training with Leaked Information[study] Long Text Generation via Adversarial Training with Leaked Information
[study] Long Text Generation via Adversarial Training with Leaked Information
Gyuhyeon Nam
 
IP Fabric : How to design a scalable, multi- services datacenter network ?
IP Fabric : How to design a scalable, multi- services datacenter network ?IP Fabric : How to design a scalable, multi- services datacenter network ?
IP Fabric : How to design a scalable, multi- services datacenter network ?
Scaleway
 

Tendances (20)

Essential NumPy
Essential NumPyEssential NumPy
Essential NumPy
 
Cassandra Performance Tuning Like You've Been Doing It for Ten Years
Cassandra Performance Tuning Like You've Been Doing It for Ten YearsCassandra Performance Tuning Like You've Been Doing It for Ten Years
Cassandra Performance Tuning Like You've Been Doing It for Ten Years
 
[study] Long Text Generation via Adversarial Training with Leaked Information
[study] Long Text Generation via Adversarial Training with Leaked Information[study] Long Text Generation via Adversarial Training with Leaked Information
[study] Long Text Generation via Adversarial Training with Leaked Information
 
Pandas
PandasPandas
Pandas
 
Python Tutorial | Python Tutorial for Beginners | Python Training | Edureka
Python Tutorial | Python Tutorial for Beginners | Python Training | EdurekaPython Tutorial | Python Tutorial for Beginners | Python Training | Edureka
Python Tutorial | Python Tutorial for Beginners | Python Training | Edureka
 
SaaS.pptx
SaaS.pptxSaaS.pptx
SaaS.pptx
 
Python Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | EdurekaPython Basics | Python Tutorial | Edureka
Python Basics | Python Tutorial | Edureka
 
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | EdurekaPython Course | Python Programming | Python Tutorial | Python Training | Edureka
Python Course | Python Programming | Python Tutorial | Python Training | Edureka
 
Numpy Talk at SIAM
Numpy Talk at SIAMNumpy Talk at SIAM
Numpy Talk at SIAM
 
Python Anaconda Tutorial | Edureka
Python Anaconda Tutorial | EdurekaPython Anaconda Tutorial | Edureka
Python Anaconda Tutorial | Edureka
 
RailsConf 2022 - Upgrading Rails: The Dual Boot Way
RailsConf 2022 - Upgrading Rails: The Dual Boot WayRailsConf 2022 - Upgrading Rails: The Dual Boot Way
RailsConf 2022 - Upgrading Rails: The Dual Boot Way
 
Python programming | Fundamentals of Python programming
Python programming | Fundamentals of Python programming Python programming | Fundamentals of Python programming
Python programming | Fundamentals of Python programming
 
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database clusterGrokking Techtalk #40: Consistency and Availability tradeoff in database cluster
Grokking Techtalk #40: Consistency and Availability tradeoff in database cluster
 
Python introduction
Python introductionPython introduction
Python introduction
 
05 python.pdf
05 python.pdf05 python.pdf
05 python.pdf
 
Microsoft Security Development Lifecycle
Microsoft Security Development LifecycleMicrosoft Security Development Lifecycle
Microsoft Security Development Lifecycle
 
Logic programming a ruby perspective
Logic programming a ruby perspectiveLogic programming a ruby perspective
Logic programming a ruby perspective
 
Web scraping & browser automation
Web scraping & browser automationWeb scraping & browser automation
Web scraping & browser automation
 
Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)Introduction to the basics of Python programming (part 1)
Introduction to the basics of Python programming (part 1)
 
IP Fabric : How to design a scalable, multi- services datacenter network ?
IP Fabric : How to design a scalable, multi- services datacenter network ?IP Fabric : How to design a scalable, multi- services datacenter network ?
IP Fabric : How to design a scalable, multi- services datacenter network ?
 

Similaire à Python and R for quantitative finance

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
 
Python quick guide1
Python quick guide1Python quick guide1
Python quick guide1
Kanchilug
 

Similaire à 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
 

Dernier

Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Safe Software
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Victor Rentea
 

Dernier (20)

WSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering DevelopersWSO2's API Vision: Unifying Control, Empowering Developers
WSO2's API Vision: Unifying Control, Empowering Developers
 
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWEREMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
EMPOWERMENT TECHNOLOGY GRADE 11 QUARTER 2 REVIEWER
 
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
Connector Corner: Accelerate revenue generation using UiPath API-centric busi...
 
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ..."I see eyes in my soup": How Delivery Hero implemented the safety system for ...
"I see eyes in my soup": How Delivery Hero implemented the safety system for ...
 
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
Apidays New York 2024 - The Good, the Bad and the Governed by David O'Neill, ...
 
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
Apidays New York 2024 - Accelerating FinTech Innovation by Vasa Krishnan, Fin...
 
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdfRising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
Rising Above_ Dubai Floods and the Fortitude of Dubai International Airport.pdf
 
Platformless Horizons for Digital Adaptability
Platformless Horizons for Digital AdaptabilityPlatformless Horizons for Digital Adaptability
Platformless Horizons for Digital Adaptability
 
Vector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptxVector Search -An Introduction in Oracle Database 23ai.pptx
Vector Search -An Introduction in Oracle Database 23ai.pptx
 
Boost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdfBoost Fertility New Invention Ups Success Rates.pdf
Boost Fertility New Invention Ups Success Rates.pdf
 
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
Web Form Automation for Bonterra Impact Management (fka Social Solutions Apri...
 
Corporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptxCorporate and higher education May webinar.pptx
Corporate and higher education May webinar.pptx
 
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost SavingRepurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
Repurposing LNG terminals for Hydrogen Ammonia: Feasibility and Cost Saving
 
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
 
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemkeProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
ProductAnonymous-April2024-WinProductDiscovery-MelissaKlemke
 
Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...Apidays New York 2024 - The value of a flexible API Management solution for O...
Apidays New York 2024 - The value of a flexible API Management solution for O...
 
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers:  A Deep Dive into Serverless Spatial Data and FMECloud Frontiers:  A Deep Dive into Serverless Spatial Data and FME
Cloud Frontiers: A Deep Dive into Serverless Spatial Data and FME
 
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
Modular Monolith - a Practical Alternative to Microservices @ Devoxx UK 2024
 
FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024FWD Group - Insurer Innovation Award 2024
FWD Group - Insurer Innovation Award 2024
 
MS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectorsMS Copilot expands with MS Graph connectors
MS Copilot expands with MS Graph connectors
 

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/