{"id":956,"date":"2007-08-13T05:49:23","date_gmt":"2007-08-13T05:49:23","guid":{"rendered":"http:\/\/www.amibroker.org\/userkb\/2007\/08\/13\/2-io-exhaustive-search-vs-intelligent-algorithms\/"},"modified":"2012-08-17T11:03:56","modified_gmt":"2012-08-17T11:03:56","slug":"2-io-exhaustive-search-vs-intelligent-algorithms","status":"publish","type":"post","link":"http:\/\/www.amibroker.org\/editable_userkb\/2007\/08\/13\/2-io-exhaustive-search-vs-intelligent-algorithms\/","title":{"rendered":"IO – Exhaustive Search .vs. Intelligent Algorithms"},"content":{"rendered":"
This page is obsolete. Current versions of AmiBroker feature built-in non-exhaustive, smart multithreaded optimizer and walk-forward engine.<\/font><\/b><\/p>\n The main factors involved in how much time\u00a0optimizations take typically include:<\/p>\n .\u00a0\u00a0\u00a0\u00a0The Number of Combinations of Parameter Values<\/p>\n The AmiBroker engine is the fastest I\u2019ve ever seen but even with very simple systems like a MACD or Stochastic utilizing 3 variables with potential values ranging from\u00a01 to 100 it can take a long time using an exhaustive search process.\u00a0 The number of combinations for a simple system like this is 10 ^ 6 and even if our engine is capable of processing 100 combinations per second it will take close to 3 hours to complete the optimization process. \u00a0 Using the same fast AmiBroker engine to repeatedly perform small bursts of optimization with a few ( 15 \u2013 50 ) combinations per burst and then intelligently redirecting optimization based on the results will typically perform a task like this in 5 \u2013 10 minutes.\u00a0\u00a0For intelligent algorithms it makes little difference whether there are 3 variables to be optimized or 30 as this is not typically a factor that affects how long it takes them to solve problems.\u00a0 Robust\u00a0solutions to engineering problems with hundreds of variables are typically solved by intelligent algorithms as\u00a0these are the only methods feasible. \u00b7\u00a0\u00a0\u00a0\u00a0The Length of the Data Streams<\/p>\n One of the things I have observed over the course of time is that there is a distinct difference of how long operations in AmiBroker take\u00a0depending on the length of historical data loaded in AmiBroker.\u00a0 Changing the AA date range\u00a0will have a minor effect on run times but we can have a much greater effect by cloning only the data needed from an existing symbol to a pseudo or cloned\u00a0 symbol and using the clone for optimization.\u00a0 As can be seen from the chart below, changing\u00a0the AA dates to use only\u00a0half the data results in a decrease of relative run times from 43 to 36 or about 16%.\u00a0 However,\u00a0 cloning the symbol with only half the data under a new symbol\u00a0and using the clone for optimization\u00a0results in a decrease of\u00a0relative run times\u00a0from 43 to ~25 or about 41%.\u00a0 That’s a 25% difference between the two methodologies.<\/p>\n
\nThe benefits here are that not only do intelligent algorithms\u00a0allow us to run common optimization problems much faster; they also allow us to solve problems that would not otherwise\u00a0be possible.<\/p>\n