AmiBroker is a technical analysis and portfolio backtesting platform developed by Tomasz Janeczko, a Polish software engineer, since 1995. At first glance, AmiBroker looks like software from the Windows 98 era — its interface is utilitarian, its icons are pixelated, and it doesn't support point-and-click trading out of the box. But underneath this unassuming exterior lies what many quantitative traders consider the fastest, most efficient backtesting engine available to retail traders at any price.
AmiBroker's secret weapon is its AFL (AmiBroker Formula Language), which uses vector/array processing similar to Python's NumPy or MATLAB. This architectural choice means that operations that take minutes in other platforms complete in seconds — or even milliseconds — in AmiBroker. For traders who need to test thousands of parameter combinations across hundreds of symbols, this speed advantage is transformative.
History & Development Philosophy
Tomasz Janeczko began developing AmiBroker in 1995 as a personal project. Unlike most trading platforms that are built by large teams, AmiBroker has been primarily the work of a single developer — a fact that explains both its strengths (laser-focused optimization, no bloat, incredible performance) and its weaknesses (dated UI, limited documentation, slow feature additions).
The platform has been continuously updated for nearly three decades, with the current version (6.40+) representing a mature, highly optimized codebase. AmiBroker has a devoted following among quantitative traders, particularly in the systematic equity and futures trading communities. It's used by individual traders, prop firms, and even some small hedge funds for strategy research and development.
AFL: AmiBroker Formula Language
AFL is the heart of AmiBroker. It's a C-like language that operates on arrays (vectors) rather than individual values. This means that when you write a simple statement like "MA = MA(Close, 20);", AmiBroker doesn't loop through each bar one at a time — it processes the entire array of closing prices in a single operation, leveraging CPU SIMD instructions for maximum throughput.
// Portfolio Rotation Strategy in AFL
// Rotates into the top N stocks by 12-month momentum
SetBacktestMode(backtestRotational);
SetOption("MaxOpenPositions", 10);
SetOption("WorstRankHeld", 20);
// Calculate 12-month momentum (Rate of Change)
momentum = ROC(Close, 252);
// Only consider liquid stocks
liquid = MA(Volume, 50) * Close > 1000000;
// Assign position score (higher = better)
PositionScore = IIf(liquid, momentum, 0);The code above implements a complete portfolio rotation strategy that ranks all stocks by 12-month momentum and rotates into the top 10. In AmiBroker, this strategy can be backtested across the entire S&P 500 universe (500 symbols × 20 years of daily data) in under 2 seconds. The same test in most other platforms would take minutes.
AFL's array processing is conceptually similar to how pandas and NumPy work in Python. If you're comfortable with vectorized operations in Python, you'll find AFL intuitive. The key difference is that AFL is compiled to native code, making it orders of magnitude faster than interpreted Python.
Portfolio-Level Backtesting
While most retail platforms backtest one symbol at a time, AmiBroker was designed from the ground up for portfolio-level backtesting. This means it can:
- Test a strategy across hundreds or thousands of symbols simultaneously, factoring in true portfolio equity, available capital, and position sizing.
- Handle realistic portfolio constraints — maximum number of open positions, sector exposure limits, and correlation-based position sizing.
- Model margin requirements accurately, including portfolio margin and Reg-T margin rules.
- Simulate realistic execution — including slippage, commissions, and the impact of position sizing on available capital.
- Generate comprehensive portfolio-level statistics — Sharpe ratio, Sortino ratio, maximum drawdown, Calmar ratio, profit factor, and dozens more.
Optimization Engines
AmiBroker offers multiple optimization methods, from brute-force exhaustive search to sophisticated evolutionary algorithms:
| Method | Description | Best For |
|---|---|---|
| Exhaustive | Tests every parameter combination | Small parameter spaces (< 10,000 combinations) |
| CMA-ES | Covariance Matrix Adaptation Evolution Strategy | Large parameter spaces, continuous parameters |
| Particle Swarm (PSO) | Swarm intelligence optimization | Multi-modal landscapes with many local optima |
| Tribes | Self-adaptive PSO variant | When you don't want to tune optimizer parameters |
| SPSO | Standard Particle Swarm Optimization 2011 | General-purpose, well-studied algorithm |
| Custom | User-defined optimization via AFL | Specialized requirements |
AmiBroker also includes Walk-Forward Optimization (WFO), which automatically divides data into in-sample and out-of-sample periods, re-optimizes at each step, and produces a composite equity curve from out-of-sample results only. This is the gold standard for strategy validation and helps identify strategies that are genuinely robust versus those that are merely curve-fit.
Exploration & Scanning
AmiBroker's Exploration feature is a powerful scanning tool that allows you to run custom AFL code across your entire database and output results in a spreadsheet-like format. This is commonly used for:
- End-of-day stock screening — Find stocks matching specific technical or fundamental criteria.
- Generating trade signals — Output buy/sell signals for manual execution.
- Data analysis — Calculate custom statistics across your universe.
- Exporting data — Generate CSV files for further analysis in Python, R, or Excel.
Data Sources & Connectivity
AmiBroker supports a wide range of data sources through its plugin architecture:
| Data Source | Type | Notes |
|---|---|---|
| IQFeed | Real-time + Historical | Most popular choice for US equities and futures |
| Interactive Brokers | Real-time + Historical | Also enables automated trading via IBController plugin |
| Norgate Data | End-of-Day | Premium survivorship-bias-free data for US/AU stocks |
| Tiingo | End-of-Day + Intraday | Affordable API-based data |
| Alpha Vantage | End-of-Day + Intraday | Free tier available |
| ASCII/CSV Import | Any | Import data from any source in CSV format |
| MetaStock Format | End-of-Day | Compatible with MetaStock data files |
For serious backtesting, Norgate Data is the gold standard data source for AmiBroker. It provides survivorship-bias-free data (including delisted stocks), which is essential for accurate historical testing. Without survivorship-bias-free data, your backtest results will be artificially inflated.
Automated Trading
AmiBroker is primarily an analysis and backtesting tool, not a trading platform. However, it can be connected to Interactive Brokers for automated execution through the IBController plugin or third-party tools like AmiBroker-IB Controller. This requires significant technical setup and is not as seamless as the automated trading in platforms like MultiCharts or NinjaTrader.
Automated trading through AmiBroker requires technical expertise and careful setup. Most users employ AmiBroker for strategy research and signal generation, then execute trades manually or through a separate execution platform connected via API.
Pricing
| Edition | Price | Key Differences |
|---|---|---|
| Standard | $279 (lifetime) | Single data feed, basic optimization |
| Professional | $369 (lifetime) | Multiple data feeds, all optimization engines, real-time plugins |
AmiBroker's pricing is remarkably affordable for what it offers. Both editions are one-time purchases with free updates for the current major version. There are no monthly fees, no subscriptions, and no recurring costs (though data feed subscriptions are separate). At $369 for the Professional edition, it's a fraction of the cost of MultiCharts ($1,497) or MotiveWave Ultimate ($1,499).
Pros and Cons
| Pros | Cons |
|---|---|
| Fastest backtesting engine available to retail traders | Severely dated user interface |
| Portfolio-level backtesting with realistic constraints | No built-in trading — requires third-party integration |
| AFL is powerful and fast (vectorized processing) | Steep learning curve for AFL |
| Advanced optimization (CMA-ES, PSO, WFO) | Primarily one-developer project |
| Incredibly lightweight — under 20MB installation | Limited charting compared to modern platforms |
| One-time purchase — no recurring fees | No macOS or Linux support |
| Affordable ($279–$369 lifetime) | Small community compared to MT5 or TradingView |
Who Should Use AmiBroker?
AmiBroker is the platform of choice for quantitative traders who prioritize backtesting speed, portfolio-level analysis, and advanced optimization above all else. If you're developing systematic equity strategies, testing them across large universes of stocks, and need results in seconds rather than minutes, nothing else comes close.
It's also ideal for traders who are comfortable with code and don't need a pretty interface. If you come from a Python/MATLAB background and think in terms of arrays and vectorized operations, AFL will feel natural. However, if you need a modern UI, built-in trading, or a large community of shared resources, platforms like TradingView, NinjaTrader, or MetaTrader 5 would be more appropriate.
Final Verdict
AmiBroker is a hidden gem in the trading software world. Its dated appearance belies extraordinary capability — it's the fastest, most efficient backtesting engine available to retail traders, period. At $369 for a lifetime license, it offers arguably the best value in professional trading software. For quantitative traders who can look past the UI, AmiBroker is an indispensable tool.
Find Your Perfect Broker
Compare 539+ verified brokers with real server infrastructure data.