Home ▸ Features Tour

System Design & Testing

True Portfolio-Level Backtesting

Test your trading system on multiple securities using realistic account constraints and common portfolio equity. Trade portfolios to decrease risk/reward ratio. Find out how changing the number of simultaneous positions and using different money management affects your trading system performance.

Dynamic portfolio-level position sizing

Use current portfolio equity (sum of cash and all simultaneously opened positions value) to calculate new trade size, or use any other position sizing method by specifying dollar value or number of contracts/shares. Position size can be constant or changing trade-by-trade.

Blazing fast speed

Nasdaq 100 symbol backtest of simple MACD system, covering 10 years end-of-day data takes below one second

Multiple symbol data access

Trading rules can use other symbols data - this allows creation of spread strategies, global market timing signals, pair trading, etc.

Multiple time-frames and multiple currencies in one system

Systems can use multiple time frames at once and symbols denominated in different currencies

Scaling in/out (pyramiding) and rebalancing

You can test systems that scale and/or rebalance open positions in user-defined moments

Everything is customizable

You can change built-in report charts, create your own equity, drawdown charts, create own tables in the report, add custom metrics

Custom backtest procedure

Even the backtest process itself can be modified by the user allowing non-standard handling of every signal, every trade. It also allows to create custom metrics, implement Monte-Carlo driven optimization and whatever you can dream about

Scoring & ranking

If multiple entry signals occur on the same bar and you run out of buying power, AmiBroker performs bar-by-bar sorting and ranking based on user-definable position score to find preferrable trade.

Rotational trading

A dedicated mode for sector rotation trading algorithms using user-definable score to switch between preferred stocks/funds/sectors

Flexible built-in stops

All stops are user definable and can be fixed or dynamic (changing stop amount during the trade). Built-in stop types include maximum loss, profit target, trailing stop (incl. Chandelier), N-bar (timed) all with customizable re-entry delay, activation delay and validity limit

Lots of other goodies

There is just too many things left to mention, including

  • Mutual fund support (early redemption fee, early exit restrictions)
  • Futures mode (margin/point value support)
  • Custom commissions
  • Full trade price control (can emulate slippage) and trade delays
  • Support for constraints like round lot size, tick size, minimum trade size, maximum trade value as percent of bar volume
  • Detailed reports for all, long-only, short-only trades with 42 built-in metrics including Sharpe ratio, Ulcer Index, CAR/MDD and many others
  • Profit distribution chart, Maximum Favourable Excursion chart, Maximum Adverse Excursion chart
  • Automatic storage, maintenance and viewing of all historical tests conducted via the Report Explorer
  • Support for all intervals (daily and intraday) and all instrument classes
  • No limit on number of symbols under test (capable of handling enitre US stock universe)

Optimization & Validation

True Portfolio-Level Optimization

Optimization engine supports all portfolio backtester features listed above and allows to find the best performing parameters combination according to user-defined objective function (optimization target)

Exhaustive or Smart Optimization

You can choose Exhaustive (full-grid) optimization as well as Artificial Intelligence evolutionary optimization algorithms like PSO (Particle Swarm Optimization) and CMA-ES (Covariance Matrix Adaptation Evolutionary Strategy) that allow upto 100 optimization parameters to be used. Also available is Optimizer API that allows to add your own smart algorithms

Fast! and eye-pleasing

The Optimizer is blazing-fast (10 year EOD, 100 symbols, 100 exhaustive opt. steps takes 25 seconds). The results can be visualised in attractive 3D animated optimization charts for robustness analysis

Monte Carlo Simulation

Prepare yourself for difficult market conditions. Check worst-case scenarios and probability of ruin. Take insight into statistical properties of your trading system

Robustness testing by randomization

Verify robustness of your trading system by using random stock picks (random position score), and randomization of trade prices simulating unpredictable slippage / flash crash scenarios

Walk-Forward testing

Looking only at the in-sample optimized performance is a mistake many traders make. Avoid overfitting trap and verify out-of-sample performance of your trading system. Walk-forward testing is a procedure that does the job for you. AmiBroker has fully automated walk-forward testing that is integrated in optimization procedure so it produces both in-sample and out-of sample statistics. AmiBroker's Walk-forward features:

  • user-definable start, end, step intervals
  • anchored / non-anchored mode
  • user-definable target (objective) function
  • custom metric and Monte Carlo stat can be used as target
  • sliced in-sample / out-of-sample equity charts
  • detailed out-of-sample test report (combined from all OoS periods under test)


Object-oriented Drawing tools

All well-known tools at your disposal: trend lines, rays, parallel lines, regression channels, fibonacci retracement, expansion, Fibonacci time extensions, Fibonacci timezone, arc, gann square, gann square, cycles, circles, rectangles, text on the chart,arrows, and more

Drag-and-drop indicator creation

Just drag moving average over say RSI to create smoothed RSI. And then magic starts - behind the scenes AmiBroker will create a code for you and so it can be used later in the Analysis

Live! parameters

Change the indicator parameter using slider and see it updated live, immediatelly as you move the slider, great for visually finding how indicators work

All classic indicators included

Hundreds of well-known indicators such as: ROC, RSI, MACD, OBV, CCI, MFI, NVI, Stochastics, Ultimate oscillator, DMI, ADX, Parabolic SAR, TRIN, Advance/Decline line, Accumulation/Distribution, TRIX, Chaikin oscillator and many more

Referencing multiple symbol data in one chart

This feature allows relative performance charts, spread charts, composite charts, synthetic/artificial data charts

Chart Playback

Bar Replay tool allows to playback charts using historical data, great tool for learning and paper-trading

Symbol & Interval linking

Link multiple chart windows so if you change symbol and/or interval in one, the others change automatically

Instant switching of intervals

On-the fly time compression without need to download compressed data

Excel-like, multiple chart sheets

Create multiple sheets (or pages) each containing different charts/indicators and switch between various indicator setups instantly

All possible intervals / time compressions supported

Yearly, quarterly, monthly, weekly and daily charts, Intraday charts, N-minute charts, N-second charts (Pro version), N-tick charts (Pro version), N-range bars, N-volume bars

Multi-monitor support

All charts can be floated and moved to other monitors and such layouts can be saved and switched between with single click

Layers and overlays, Z-order support

Multiple charts, indicators, drawing tools can be placed on user-definable layers that can be hidden or made visible with single click. Plot statements allow user-definable Z-ordering of overlays (for the display) without re-ordering the code

Flexibility and speed

Multiple windows, panes, scales, intervals possible at the same time and scrolled/zoomed super-fast thanks to multithreaded execution and rendering

Chart interpretations

AmiBroker can generate programmable automatic descriptions of the meaning of given indicators

Real-time features

Multiple data-source support

You are not locked to one data vendor, you can connect to eSignal, IQFeed, Interactive Brokers, QCharts, among others

Multi-page Real-Time quote window

Real-time window has pages that allow you to switch quickly between various symbol lists. The RT quote column layout and ordering is fully customizable

Unlimited Time&Sales windows

Floating T&S windows contain RT-calculated Bid/ask pressure statistics

Easy alerts

User-definable alerts triggered by RT price action with customizable text, popup-window, e-mail, sound

High-Low rank bar charts

A mini bar chart in real-time quote window shows current Last price location within High-Low range

Bid-Ask trend indicator

A mini bid/ask trend indicator within RT quote window helps tape reading

Programming features

Fast array and matrix processing

In AmiBroker Formula Language (AFL) vectors and matrices are native types like plain numbers. To calculate mid point of High and Low arrays element-by-element you just type MidPt = ( H + L )/2; // H and L are arrays and it gets compiled to vectorized machine code. No need to write loops. This makes it possible to run your formulas at the same speed as code written in assembler. Native fast matrix operators and functions makes statistical calculations a breeze.

Concise language means less work

Your trading systems and indicators written in AFL will take less typing and less space than in other languages because many typical tasks in AFL are just single-liners. For example dynamic, ATR-based Chandelier's stop is just:ApplyStop( stopTypeTrailing, stopModePoint, 3* ATR(14), True, True );

Built-in debugger

The debugger allows you to single-step thru your code and watch the variables in run-time to better understand what your formula is doing

State-of-the-art code editor

Enjoy advanced editor with syntax highlighting, auto-complete, parameter call tips, code folding, auto-indenting and in-line error reporting. When you encounter an error, meaningful message is displayed right in-line so you don't strain your eyes

Less typing, quicker results

Coding your formula has never been easier with ready-to-use Code snippets. Use dozens of pre-written snippets that implement common coding tasks and patterns, or create your own snippets!


All your formulas automatically benefit from multiple processors/cores. Each chart formula, graphic renderer and every analysis window runs in separate threads.


Wide data source selection
  • Free historical data from Yahoo Finance, MS Money, Google Finance, etc (automatic download)
  • Free fundamental data from Yahoo Finance (automatic download)
  • Multiple 3rd party data vendor support (Quotes Plus, TC2000, CSI, eSignal, IQFeed, FastTrack, Interactive Brokers etc).
  • Reads Metastock databases directly
Data APIs
  • Open Data API for connectivity with any data source
  • DDE plugin for linking with DDE-compliant sources
  • ODBC plugin for external database connectivity
Symbol and list maintenance
  • Categorisation system (assigning symbols to markets, groups, sectors/industries, favorites)
  • Unlimited user-definable watch list
  • Filtering by any category
  • AFL access to category structure
State of the art programming

AmiBroker is written in C++ (compiled to machine code), the same language in which operating systems are written. It runs natively on the CPU without need of any kind of virtual machine or byte-code interpreter, unlike Java or .NET programs. The fact that CPU runs native machine code allows achieving maximum execution speed. The AFL language can process as much as 166 million data bars per second on 2GHz CPU, see this for details. The AmiBroker code has been hand optimized and profiled to gain maximum speed and minimize size. Small code runs many times faster because it is able to fit into CPU on-chip caches. Full setup program with example database and help files is just about 6 (six) megabytes, half of that is documentation and data. The executables alone (.exe and .dll libraries) are just 3.5 MB. In today's world of bloatware we are proud to deliver probably the most compact technical analysis application.