Sunday, July 25, 2010

Quantitative Finance Resource Links

TA-LIB: Technical Analysis Library
http://ta-lib.org/

http://quantlib.org/ (C++)

http://www.jquantlib.org (Java)
JQuantLib is a free, open-source and comprehensive framework for quantitative finance, offering several mathematical and statistical tools needed for financial instrument valuation, calculation of VaR, portfolio valuation, etc. JQuantLib is written in Java and is based on QuantLib, which is written in C++. QuantLib is a de-facto reference implementation for C++ world. Following the steps of its predecessor, JQuantLib aims to become a reference implementation for Java world. JQuantLib does its best efforts to mimic as close as possible the API exposed by QuantLib, offering a smooth transition path for developers and organizations aiming to adopt Java for high performance, low latency applications.

Python and R for quantitative finance
http://www.slideshare.net/lsbardel/python-and-r-for-quantitative-finance-2409526

PyCon 2010: Python in quantitative finance
http://python.mirocommunity.org/video/1531/pycon-2010-python-in-quantitat

Mathtools.net > Java > Finance and Economics
http://www.mathtools.net/Java/Finance_and_Economics/index.html


http://sourceforge.net/projects/qff/
The Quantitative Finance Framework (QFF) supports the development of software libraries in mathematical finance. The main field of applications are the pricing of derivatives and the management of financial risks.

Saturday, April 17, 2010

Math Libraries for Java

http://commons.apache.org/math/
Commons Math is a library of lightweight, self-contained mathematics and statistics components addressing the most common problems not available in the Java programming language or Commons Lang.

http://math.nist.gov/javanumerics/


http://acs.lbl.gov/~hoschek/colt/
Colt provides a set of Open Source Libraries for High Performance Scientific and Technical Computing in Java.

Saturday, August 8, 2009

Apache Math 2.0

Apache Commons Math 2.0 released.

Commons Math is made up of a small set of math/stat utilities addressing programming problems like the ones in the list below. This list is not exhaustive, it's just meant to give a feel for the kinds of things that Commons Math provides.

•Computing means, variances and other summary statistics for a list of numbers
•Fitting a line to a set of data points using linear regression
•Finding a smooth curve that passes through a collection of points (interpolation)
•Fitting a parametric model to a set of measurements using least-squares methods
•Solving equations involving real-valued functions (i.e. root-finding)
•Solving systems of linear equations
•Solving Ordinary Differential Equations
•Minimizing multi-dimensional functions
•Generating random numbers with more restrictions (e.g distribution, range) than what is possible using the JDK
•Generating random samples and/or datasets that are "like" the data in an input file
•Performing statistical significance tests
•Miscellaneous mathematical functions such as factorials, binomial coefficients and "special functions" (e.g. gamma, beta functions)

Commons Math is divided into fifteen subpackages, based on functionality provided.

1.org.apache.commons.math.stat - statistics, statistical tests
2.org.apache.commons.math.analysis - rootfinding, integration, interpolation, polynomials
3.org.apache.commons.math.random - random numbers, strings and data generation
4.org.apache.commons.math.special - special functions (Gamma, Beta)
5.org.apache.commons.math.linear - matrices, solving linear systems
6.org.apache.commons.math.util - common math/stat functions extending java.lang.Math
7.org.apache.commons.math.complex - complex numbers
8.org.apache.commons.math.distribution - probability distributions
9.org.apache.commons.math.fraction - rational numbers
10.org.apache.commons.math.transform - transform methods (Fast Fourier)
11.org.apache.commons.math.geometry - 3D geometry (vectors and rotations)
12.org.apache.commons.math.estimation - parametric estimation problems
13.org.apache.commons.math.optimization - functions minimization
14.org.apache.commons.math.ode - Ordinary Differential Equations integration
15.org.apache.commons.math.genetics - Genetic Algorithms

Wednesday, June 10, 2009

Java Algebra System (JAS) Project

The Java Algebra System (JAS) is an object oriented, type safe and multi-threaded approach to computer algebra. JAS provides a well designed software library using generic types for algebraic computations implemented in the Java programming language. The library can be used as any other Java software package or it can be used interactively or interpreted through an jython (Java Python) front end. The focus of JAS is at the moment on commutative and solvable polynomials, Groebner bases and applications. By the use of Java as implementation language JAS is 64-bit and multi-core cpu ready.

The library contains at the moment of the following packages:

edu.jas.structure:
contains interfaces for the most general algebraic structures like RingElem and RingFactory.

edu.jas.arith:
contains classes for arithmetic in the basic coefficient rings like BigRational, BigInteger or BigComplex.

edu.jas.poly:
contains classes for polynomial and solvable polynomial arithmetic like GenPolynomial, GenSolvablePolynomial and others such as AlgebraicNumber and a polynomial parser GenPolynomialTokenizer.

edu.jas.vector:
contains classes for vectors and lists of polynomials and solvable polynomials like GenVector or ModuleList.

edu.jas.gb:
contains classes for polynomial and solvable polynomial reduction, Groebner bases over fields and ideal arithmetic as well as thread parallel and distributed versions of Buchbergers algorithm like ReductionSeq, GroebnerBaseAbstract, GroebnerBaseSeq, GroebnerBaseParallel and GroebnerBaseDistributed. New are Groebner bases in polynomial rings over principal ideal domains and Euclidean domains, so called D- and E-Groebner bases, e.g. EGroebnerBaseSeq. Latest additions are Groebner bases for polynomial rings over regular rings (direct products of fields or integral domains) in RGroebnerBaseSeq and RGroebnerBasePseudoSeq.

edu.jas.gbmod:
contains classes for module Groebner bases and syzygies over polynomials and solvable polynomials like ModGroebnerBase or SolvableSyzygy.
edu.jas.application:
contains classes with applications of Groebner bases such as ideal intersections and ideal quotients implemented in Ideal or SolvableIdeal. Latest additions are comprehensive Groebner bases for polynomial rings over parameter rings in class ComprehensiveGroebnerBaseSeq.

edu.jas.ufd:
contains classes for unique factorization domains. Like the interface GreatestCommonDivisor, the abstract class GreatestCommonDivisorAbstract and various implementations, e.g. polynomial remainder sequences and modular algorithms. The package now contains factorization algorithms for univariate polynomials over several coefficient rings: modulo primes in class FactorModular, over integers in class FactorInteger, over rational numbers in class FactorRational and over algebraic numbers in class FactorAlgebraic.

edu.jas.root:
contains classes for real root computations. Like the interface RealRoots, the abstract class RealRootsAbstract and at the moment of a single implementation based on Sturm sequences RealRootsSturm. The package further contains an implementation for real algebraic numbers RealAlgebraicNumber with a corresponding factory RealAlgebraicRing.

edu.jas.ps:
contains univariate power series arithmetic in class UnivPowerSeries.

edu.jas.util:
contains further utilities for parallel and distributed computations like ThreadPool, DistThreadPool or DistHashTable (part of this package has become obsolete with JDK 1.5).