OjAlgo

oj! Algorithms or ojAlgo, is an open source Java library for mathematics,[1][2] linear algebra and optimisation. It was first released in 2003[3] and is 100% pure Java source code and free from external dependencies. Its feature set make it particularly suitable for use within the financial domain.

OjAlgo
Original author(s)Anders Peterson
Stable release
v44.0 / September 27, 2017 (2017-09-27)
Operating systemCross-platform
TypeLibrary
LicenseMIT License
Websiteojalgo.org

Capabilities

  • Linear algebra in Java
    • "high performance" multi-threaded feature-complete linear algebra package.
  • Optimisation (mathematical programming) including LP, QP and MIP solvers.
  • Finance related code (certainly usable in other areas as well):
    • Extensive set of tools to work with time series - CalendarDateSeries, CoordinationSet & PrimitiveTimeSeries.
    • Random numbers and stochastic processes - even multi-dimensional such - and the ability to drive these to do things like Monte Carlo simulations.
    • A collection of Modern Portfolio Theory related classes - FinancePortfolio and its subclasses the Markowitz and Black-Litterman model implementations.
    • Ability to download data from Yahoo Finance and Google Finance.

It requires Java 8 since version v38. As of version 44.0, the finance specific code has been moved to its own project/module named ojAlgo-finance.[3]

Usage example

Example of singular value decomposition:

SingularValue<Double> svd = SingularValueDecomposition.make(matA);
svd.compute(matA);

MatrixStore<Double> U = svd.getQ1();
MatrixStore<Double> S = svd.getD();
MatrixStore<Double> V = svd.getQ2();

Example of matrix multiplication:

PrimitiveDenseStore result = FACTORY.makeZero(matA.getRowDim(), matB.getColDim());
result.fillByMultiplying(matA, matB);

References

  1. Takaki, M.; Cavalcanti, D.; Gheyi, R.; Iyoda, J.; d’Amorim, M.; Prudêncio, R. B. (2010). "Randomized constraint solvers: a comparative study". Bioinformatics. 6 (3): 243–253. doi:10.1007/s11334-010-0124-1.
  2. Vanek, O.; Bosansky, B.; Jakob, M.; Pechoucek, M. (2010). Transiting areas patrolled by a mobile adversary. Symposium on Computational Intelligence and Games. pp. 9–16.
  3. "oj! Algorithms Project Page". oj! Algorithms. Retrieved July 2, 2013.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.