AlgoQuant

AlgoQuant is a collection of trading-bot building tools. It is an actively developed and ever more comprehensive library of code for building systems for algorithmic trading in all aspects. You can use it to build systems for backtesting, trading strategy generation, data analysis, research, and actual order execution. Out of the box, AlgoQuant is an indispensable and a very powerful tool for quantitative trading research because it is backed by an extensive math library (SuanShu). You are able to very quickly prototype very complicated quantitative strategies by reusing the AlgoQuant components. Among other things that AlgoQuant does are in-sample calibration and optimization, out-of-sample backtesting, performance analysis and strategy generation. Unified Mathematical Analysis and Modeling Library AlgoQuant differentiates itself from other trading system by focusing on quantitative trading strategy research (not execution). (However, there is nothing to prevent you from replacing our mock market with a real market execution/brokerage API.) Built on SuanShu, you can do all the data analysis and sophisticated mathematics based strategies all in Java, without the need to resort to external math software like Excel, R, or Matlab. Additionally, AlgoQuant comes with some well established models published in academic journal papers. Uniqueness Numerical Method Inc. has a unique way of doing backtest. In general, backtest using historical data alone is not a sufficient justification of a quantitative trading strategy. Historical backtest tells only how much money we could have made in the past. What we really want to know is how much money we may make in the future. The future P&L is a random variable. Therefore, in addition to reporting the historical P&L, a proper...

BASIC

The BASIC package of SuanShu has the following list of features. calculus functions linear algebra basic optimization pseudo random number generators basic statistics stochastic differential equation curve fitting & interpolation geometry a parallelization framework...

Calculus

finite difference differentiation using Ridders’ method derivaties of functions for: Beta Beta Regularized Erf Gamma Gaussian multivariate differentiation: (bordered) Hessian gradient Jacobian Riemann integration Riemann integration using substitution rules: Double-Exponential rule Exponential rule Power law singularity Map to the Standard interval integration using Romberg’s method integration using Newton-Cotes formula Simpson’s rule Trapezoidal rule Midpoint rule integration using Gaussian quadrature Legendre polynomials Chebyshev polynomials Laguerre polynomials Hermite...

Coding an AlgoQuant Strategy

There have been a number of questions on how to create a quantitative trading strategy using AlgoQuant. This is a brief introduction to the process, which will hopefully answer all questions you my have. Basic knowledge of the Java programming language is required, although you do not need to be an expert to follow this tutorial. Sources of Inspiration Of course you will need an idea of the type of strategy you want to develop. There are a number of popular (such as Moving Averages and Pairs Trading) and some more exotic strategies already included in AlgoQuant. You can use them as a template and build your own ideas on top of them for rapid prototyping. If you don’t want to use any of the built in strategies you can of course develop your own from scratch, in which case you may still find existing strategies useful as a code base or as examples if you are ever unsure about how something is done. Implementing a Strategy Once you have an idea for a strategy, coding it up is very straightforward. During a simulation in AlgoQuant a strategy object gets notified if an event (such as a price update) occurs, so that it can then carry out an action if desired. The strategy only has to deal with the type of event it has subscribed to and hence the amount of boilerplate code you have to write is minimal. We define a strategy by implementing the Strategy interface. To subscribe to updates of a certain kind, all you need to do is to implement DepthHandler interface. If any of...

Core Team Members

Our team consists of experts in both mathematics and computer science. We have PhDs and professors from world-renowned universities. Our core team member profiles can be found below. Dr. Haksun Li Dr. Ken Yiu Dr. Kevin Sun Prof. Yau Chun Yip...