The Quantitative Finance Code Library Project

From Wilmott Wiki
Jump to: navigation, search

qFin is the current working title.

Summary of the thread “open-source collab project?” on

Working paper of the thread: “Ideas about new open source quanfin project” on

Last update: 10/04/2011

Possible names for the project,

We can use different names for different layers.

Project Charter

Who is gonna to write it?


   Eschew complexity (nobody likes complexity)
   Proper specification
   Well documented from the beginning
   No OO for art
   Simple function calls deliver the necessary results: f(spot, rate, vol, strike, time)
   Lightweight classes, that is no classes with multiple of responsibilities
   Allow easy linking to proprietary libs such as MKL
   GPU friendly API (where applicable)
   Cloud computing (KISS, YAGNI)

Layered architecture

(proposed by renorm) QuanLib Light -> Rewrite of QuantLib

   First layer: computatinal and numerics only, platform independent
   Second layer: instrument pricing
   Third layer: accounting and portfolio management

Computational Libraries

Goal development of:

   Pricing and risk engine
   Collection of functions
   shared memory parallel (TBB)
   Later: distributed memory parallel (MPI)

Numerical and Algorithmic Libraries



GUI / tools

GUI's and tools are layers on top of the core libraries. GUI's are part of applications. Applications can involve data storage, visualization, data feeds.

   Excel (no GUI  planned yet (do we need GUI beyond Excel?). move to Interfaces)

Programming Language

   Projects itself to be coded in C++
   GUI: C# / VBA (for forms within Excel)
   Working and well documented code in other programming languages is acceptable. We will review and convert it into C++.

Project Hosting

   We are setting up a subversion respository at


Sandcastle Help File Builder:

Integrated Doxygen like docs + comprehensive test suite"

For user guides, tutorials etc.:latex

Using latex in Google Docs: MathJax


   (e.g. Math, uBLAS...)

BLAS/LAPACK (covered by boost?)

   CBLAS / C API for LAPACK from MKL team.



   developed by Kimosabe's?
   ... and some more.


   developed by govert:


   developed by mj:

renorm: No, LAPACK isn’t covered by Boost. uBlas is OK for small matrices. For large matrices optimized BLAS is needed (such as ATLAS). We can still use uBlas vectors and matrices as a storage. kimosabe: uBlas does not allow existing arrays of doubles to be used directly, they must be copied into uBlas containers. Also, it does not replace LAPACK. renorm: Yes, uBlas can’t work with pointers. I am going to write vector/matrix proxies that can be wrapped around C arrays. Boost Range as suggested by Poulter. Also blas.h and blas.cpp

Black-Merton-Scholes Pricer Incorporated Polter’s suggestions to use Boost policies and and Luigi’s comments about how to make low level computations more efficient. bms.h and how to use it xllbms.cpp. Feel free to use the Discussion tab if you have any feedback. I have been banned from posting on Wilmott. I wish Paul, Daniel, outrun, and Serp the best with their new endeavour. They are welcome to use anything they find useful with my open source projects.

Excel and HPC- / GPU-Computing?


Google C++ Test Framework:

Boost.Test combined with Turtle for Mocking

Platforms Mentioned




List of open source libraries