OjAlgo

{{Infobox software

| author = Anders Peterson

| operating system = Cross-platform

| latest_release_version = v44.0

| latest_release_date = {{release date|2017|09|27}}

| genre = Library

| license = MIT License

| website = {{url|http://ojalgo.org/}}

}}

oj! Algorithms or ojAlgo, is an open source Java library for mathematics, linear algebra and optimisation. It was first released in 2003 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.

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.

Usage example

Example of singular value decomposition:

SingularValue svd = SingularValueDecomposition.make(matA);

svd.compute(matA);

MatrixStore U = svd.getQ1();

MatrixStore S = svd.getD();

MatrixStore V = svd.getQ2();

Example of matrix multiplication:

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

result.fillByMultiplying(matA, matB);

References

{{reflist|refs=

{{cite web |url=http://ojalgo.org/ |title=oj! Algorithms Project Page |work=oj! Algorithms|accessdate=July 2, 2013}}

{{cite journal|last=Takaki|first=M. |author2=Cavalcanti, D. |author3=Gheyi, R. |author4=Iyoda, J. |author5=d’Amorim, M. |author6=Prudêncio, R. B. |title=Randomized constraint solvers: a comparative study|journal=Bioinformatics|year=2010|volume=6|issue=3|pages=243–253|doi=10.1007/s11334-010-0124-1|s2cid=11050378 }}

{{cite conference|last=Vanek|first=O. |author2=Bosansky, B. |author3=Jakob, M. |author4=Pechoucek, M. |title=Transiting areas patrolled by a mobile adversary|publisher=Symposium on Computational Intelligence and Games|year=2010|pages=9–16}}

}}

Category:Java (programming language) libraries