Random data provider

Modified on 2020/05/08 06:10 by Eugene — Categorized as: Providers

What it is

This provider can quickly create large DataSets with randomized historical data for blind testing purposes.

Hopefully, it will help you fight over-optimization and design better trading systems without curve-fitting.

Creating a random DataSet

Creating a new DataSet containing random data is straightforward:


First, you need to specify a prefix which will be used to create required number of random symbols in conjunction with the counter. On the right, there's a preview area. For example, if you enter "TEST" as the prefix and request the provider to create 1000 symbols, it will show that the symbols "TEST0" to "TEST999" are going to be created.

1-minite and Daily data are supported: you can select a data scale from the drop down list. For 1-minute scale, custom market hours can be specified. Finally, the Starting Date field controls how deep your "historical" data will be.

Starting from version 2011.02, the provider allows to specify which randomization method to use when creating new DataSets. Read on below for their descriptions. This is a breaking change: all DataSets created before will be lost and have to be created from scratch (but all previously generated data is preserved).

Under the hood

Under the hood, the provider implements two different engines of synthetic data creation:

If "Randomly select" was specified when creating a DataSet, it's impossible to know beforehand which method will be used - method will be picked randomly for each symbol. However, refreshing a symbol's data doesn't keep the random engine preference.

Like in real life, synthetic prices can not go below zero: when the price gets "close enough", the Random provider will make its best to not allow the market to lose its value, usually by forming a basing period or doing a "V" reversal.

Further reading

Known issues and limitations