For the latest documentation, please visit the new sites: MesoSim docs at docs.mesosim.io and MesoLive docs at docs.mesolive.io.

Workflow

New Run from a Template

If you are a new user, you need at least one backtest to start. You can start with a template or with a shared job.

In our example, we will create and tune the public template Short Strangle.

First, we are running the backtest with the default settings.
Click New run > Templated

New Run from a Template
New Run from a Template

Pick [Strangle], hit Start.

New Backtest - Short Strangle
New Backtest - Short Strangle


The job will start to execute, and the backtest details will be shown shortly:

Strategy Results
Strategy Results



Our Cumulative Return for this backtest is 68.31%, and the Max Drawdown is -13.22%, both higher than SPX’s respective statistics for this period.

Let’s see if we could achieve better results by staying longer or shorter in the positions.


Finetuning the test - Iterate via Cloning

Already performed backtests are read-only, so you will need to clone, edit and run a new backtest each time you want to make a change.

Click Clone to iterate on the job.

Note: the dropdown menu next to it will be used in our next step.

Cloning of a backtest
Cloning of a backtest


Clicking Clone will bring up the Job Editor, where you can change variables and modify the backtest based on your observations.

If you only want to adjust one variable, we recommend you switch to the tree view of the Job Editor:

Code Editor - Tree View
Code Editor - Tree View

Double-click the value you want to change.


When you are done, hit Run to initiate a new backtest.
We are adjusting the variable MaxDaysInTrade in this example:

Adjusting the variable MaxDaysInTrade
Adjusting the variable MaxDaysInTrade

When you are done, hit Run to initiate a new backtest.

Keep iterating: Clone -> Edit -> Run until you are happy with your results.


Validation of Job Changes

To offer a better user experience, we provide early and clear warnings when the job under execution is malformed or violates the execution requirements.
JSON syntax errors are immediately highlighted with yellow on the bottom of the screen (scroll all the way down!). At the same time, the underlying business logic is validated using the “Validate” button, on the right-hand side of the panel.

Example of warning for two malformed entries (one JSON syntax error and one business logic error):

JSON Syntax Error
JSON Syntax Error
Business Logic Error
Business Logic Error

Working with Templates

You can review all of your previous backtests on the Backtests page.
You can add or remove columns as desired.

We are saving our best-performing test as a template.

Sample Strategy
Sample Strategy

Managing Templates

Templates are milestones of strategies that serve as a starting point for further backtests

Templates can be managed on the Templates tab. However, this tab doesn’t provide the option to run backtests. For this, please go back to Backtests or New Run - Templated.

Saving a job as a Template

In our previous example, the strategy with ‘MaxDaysInTrade: 70’ brings the best results (in terms of Sharpe), so let’s save it as a template.

Open the specific backtest, hit the dropdown menu next to the Clone button, and choose "Save as template":

Save as a Template
Save as a Template

The OK button that saves the template will become active once you start typing a new template name.

Run Backtest from a Template
Run Backtest from a Template

The tool has several major market crash periods, up and down periods pre-defined.

We want to test how this strategy would have performed during the Covid crash.

Pre-defined Major Market Crash Periods
Pre-defined Major Market Crash Periods

After starting the test, we observe that the test results for this period are not great.
The cumulative return is -90.02%, with a max drawdown of -128.48%:

Covid Crash Period
Covid Crash Period

If you are not experienced with options trading, here is a hint of what went wrong:

Options can be considered as insurance bought or sold. We created a steady income with the Short Strangle scenario by selling insurance via naked options. This works very well in a bullish environment (such as 2021), but in case of a crash, we have no protection in place.

How do we get protected? We buy insurance (e.g., long puts).
That’s how one will end up trading complex structures, such as Iron Condors or Butterflies.
Mastering those structures involves understanding their risk characteristics (represented by greeks: Delta, Gamma, Vega) and coming up with a cost-efficient plan which provides enough protection to survive market crashes while creating a steady income.


Reading the Results

We already saw the results of the run on the previous screenshot; let’s quickly go through the remaining elements of the results screen.

At the top of the Overview tab, the high-level details of the strategy are shown, including the name of the Structure and the number of legs.
As the title of the PnL graph indicates, we are using Log Returns. It’s an industry best practice, which is necessary to display returns accurately over a more extended period in time series.

Greeks

Under the Log Returns graph, the second graph displays the trend of the greeks of the strategy for the whole run. By default, it’s set to display the Delta, but by clicking the names, you can switch on all other greeks as well.

Greeks - Delta Graph
Greeks - Delta Graph
Graph of selected Greeks
Graph of selected Greeks

PnL Graph

Analytics

On the right-hand side of the screen, there is a comprehensive selection of strategy metrics available, next to the Benchmark (SPX) metrics for the same period. 

Observability of each backtest action - Events viewer

The Events Tab was explicitly designed to provide in-depth observability for each trade.

We wanted to deviate from the black box approach used by some of the available backtesting applications and display all actions executed during the backtesting run.

Events Tab
Events Tab

If you click into the table, the keyboard navigation becomes active, you are now able to use the ← and → keys to scroll through the pages.

Additionally, you are able to access the values of each of the variables at the given point in time by clicking the triangle in the leftmost column of the table.

The value of each variable at a point in time
The value of each variable at a point in time

Sharing of Results

Your backtest results are visible only to you by default. If you wish to share a particular run with someone, click on the Share radio button to enable sharing:

Sharing of Results
Sharing of Results

When sharing is enabled, others who have the URL of your backtest will be able to see all the run details: PnL graph, Events, and Job Definition, and can clone from your backtest.
Please note that we require all users to be authenticated; therefore, if you share the link with someone, they must register at the site first.

If you wish to disable sharing, click on the sharing radio button so that it becomes deactivated. When you disable sharing, your run will not be visible to others, even if they have the URL:

Disable Sharing
Disable Sharing

To illustrate sharing, we provide the ‘best’ benchmark run in this tutorial.