OrionQuant Backtesting Engine tests trading algorithms on historical market data. It is built twice from the same interface: a desktop app, where the Python engine, the data cache and the plugin folder are on your own machine, and a browser build, where a run is queued on our server instead. What it aims at is a backtest you can check: no lookahead by construction, a fill accuracy you choose from OHLC to real ticks, and full control of costs and execution. It is for research and testing only, not live trading.
Your first backtest
- Open Build in the sidebar and open one of the sample strategies, for example Moving Average Cross, RSI Mean Reversion or Bollinger Band Breakout. The library carries seven Python samples and one C# sample. Nothing is armed here: the strategy a run uses is picked in the Test view.
- Open Data, choose This machine in the rail, and fetch a range from the toolbar. The built in source is OrionQuant's archive of Dukascopy data, and it serves every instrument the archive lists: forex pairs, gold and silver, cash indices, US shares, energy, copper and ten coins. Anything else needs a plugin data source or bars imported from a CSV under Instruments in the same rail, and the toolbar warns you before you press the button rather than returning an empty download. You can skip this step: a range this machine lacks is fetched from the archive when you press Start, if your plan allows it.
- Open Test in the sidebar and stay on the Backtest mode. Pick the strategy, the instrument and the timeframe under Settings at the left of the bar at the top, set the period on the bar, then press Start.
- Read the result in the Evaluation under the chart: Overview, Report, Trades, Positions and Logs.
Which instruments the engine will price
The engine places a currency pair and a coin pair by the shape of the symbol, and it carries a table of named instruments that also covers gold and silver, the cash indices in the picker, and WTI crude, Brent crude and natural gas. Anything else is refused with a message rather than priced as a forex pair, so a stock ticker stops the run until you define it under Data, Instruments with its own contract size and pip size. A run configuration can also carry an assetClass, which supplies that class's defaults, and the app fills it in for the instruments in its picker. See Asset Classes for the table of what each class assumes.
In the browser
engine.orionquant.com is the same app without the parts that need your own machine. There is no local engine, no data cache and no plugin folder, so set the run location beside the Run button to Server and the run is queued in a container on our server, against the data the server holds. The Data view says it is desktop only rather than showing empty panes, and downloads, imports, plugins, the AI assistant and AI apps on this computer stay on the desktop. AI apps in the cloud do not need the app at all, see Connect AI apps.
Signing in works the same way it does on the desktop, with a code sent to your address, with a password once you have chosen one, or with Google or GitHub. The provider round trip ends back on the page with the session in a cookie the page cannot read, which is why nothing sensitive appears in the address bar on the way.
Look around first on the sign in screen, or ?guest in the address, opens a preview with fixed synthetic runs. It walks most of the app, every control is inert, and it reaches no endpoint that needs a session: the account area, the admin terminal and Community are the pages it cannot open, because a preview of somebody else's account is not a preview of anything.
It works on a phone. Below a laptop width the sidebar becomes a drawer behind the menu button and the page becomes one column. The desktop app is unchanged by that: it is a desktop shell on purpose.
How to read results honestly
Results are simulated. A great looking equity curve on one period is not a strategy. Test across regimes, watch the drawdown, and treat a high win rate with suspicion if the average loss dwarfs the average win.