I am a long time user of Dakota and have put together a high level description of how the program works. The key strengths of the application are discussed. A form of optimization does take place via the swarm of trading robots, however, all signals are out-of-sample. This assumes that the parameter ranges have not been optimized over the trading simulation period.
BioComp Dakota is a product of BioComp Systems Inc. BioComp Systems provide state of the art modeling, prediction and optimization technologies to corporations and individuals. Dakota is a stand-alone application for building trading systems. The Dakota application framework is flexible thereby, enabling trading systems developers to plug-in their own technical indicators / trading rules, performance engines and adaptation routines.
One of the strongest features of the Dakota application is that it functions on a 100% walk-forward basis. When price data for given trading period (day) is processed, trading system parameters are adapted using data up to the most recent period. Whether you are building new systems or updating existing systems Dakota runs in 100% walk-forward mode. It is my belief that eventually all trading systems software will operate on this basis.
Some trading systems software applications run walk-forward simulations by organizing in-sample and out-of-sample periods so that a new out-of-sample period starts when the prior out-of-sample period finishes. This is the approach that we used over 10 years ago. The 'block by block' approach is better than optimizing over the entire simulation period and thereby producing no out-of-sample results. However, the fact that historical optimizations occur over distinct and potentially very different periods introduces numerous issues that are difficult to work around. Dakota is superior because historical optimizations are occurring bar by bar. i.e. There is not a huge 'jump' from one optimization period to the next. This enables smooth adjustments in trading system parameters to take place walking-forward.
A Dakota trading system is made up of a set of trading robots. The set of bots is referred to as a swarm. Typically, each bot in a swarm is based on the same technical indicators and trading rules. Parameter values for technical indicators and trading rules vary from bot to bot within user defined ranges and are adjusted as new data is processed. Adaptation occurs via the bar by bar adjustments in bot parameter values. The trading system signal is generated by combining the trading signals generated by the bots in the swarm.
The swarm adaptation engine is responsible for the bar by bar adaptation of bot parameter values. A trading systems developer can use any technology or set of rules to determine how the adjustments are calculated. For example, a given trade bot's parameter values can be moved closer to those of the best performing bot in the swarm as well as the trade bot's best position over the performance lookback period. Any suitable algorithm can be used by the trading systems developer to enable the adaptation process.
Trading system parameters are generally adjusted gradually period by period by the swarm adaptation engine. Although, relatively rapid adjustments in parameter values occur when significant changes in market behaviour takes place. For example, a simple moving average is used along with some trading rules by each of the 60 bots in the swarm. The length of the SMA is set to vary anywhere from 2 to 30 trading days. Bot number 1 is currently using a 9 period SMA and bot number 2 is currently using a 12 period SMA and so on. The minimum period used by the bots in the swarm is 8 trading days and the maximum is 15 trading days. In 20 trading days time the period of the SMA used by each bot will have potentially changed due to the bar by bar adaptation that is taking place. The minimum period is now 11 trading days and the maximum is 18 trading days.
The spread in parameter values provided by the swarm of bots is just as valuable as the adaptation process itself. The bots in a swarm will tend to be in the vicinity of the historically best performing bot. The best set of parameter values in the future is often not equal to the parameter values of the currently best performing bot, but will often be in the vicinity of those parameter values. Trading simulations that exclusively use the signal generated by the best performing bot in the swarm always produce inferior results compared to using the average of all bot signals in the swarm.
If any points are not clear then let me know and I'll do my best to provide a better explanation.