PureBytes Links
Trading Reference Links
|
Hi Joseph --
There are many uses of Monte Carlo in the fields of econometrics and
financial analysis and modeling. But the three described below are the
most applicable to trading systems development. Some are easy to
implement in AmiBroker, others are more difficult. Some are useful,
others are not useful or poor practice.
1. Use Monte Carlo techniques to study the robustness of a trading
system to small changes in the data. Small, random amounts of noise can
be added to the open, high, low, close, and volume to see if the
trading system is sensitive to noise in the data. This is easily done
and useful. There is a more detailed explanation, including code, in my
book, Quantitative Trading Systems.
2. Use Monte Carlo techniques to study the robustness of a trading
system to small changes in values of parameters. When an optimization
is performed, the value of an objective function is calculated for
every set of parameter values tested. The best set of parameters is the
set that give the highest value of the objective function. If we
consider a two dimensional optimization, say the lengths of two moving
averages, then we can imagine and visualize the objective function as a
surface above (or below) the plane defined by the two variables. If the
highest value of the objective function is an isolated peak, then the
system is sensitive to changes in the relationship between the model
and the data being modeled, and even small changes in the
characteristics of the data will cause a shift in the position of the
optimal solution. That is, the system is not robust relative to changes
in the values of the parameters. If, on the other hand, the highest
value of the objective function is a broad plateau, then the system is
relatively insensitive to changes in the relationship between the model
and the data and small changes in the characteristics of the data will
not result in significant changes in the profitability of the system.
That is, the system is robust relative to changes in the values of the
parameters.
Monte Carlo techniques can be used to study the sensitivity of the
system by adding random noise to the values of the parameters, testing
solutions near the optimal solution. There are many subtle issues that
arise when performing this type of study, making general solutions very
difficult. Specific solutions are easy to code by running a second set
of optimizations that look at the solution space near the previously
selected optimum. Additionally, some of the optimization methods
included with current releases of AmiBroker (such as the non-exhaustive
method known as cmae -- Covariance Matrix Adaptation Evolutionary
Strategy) have a robustness component that is used with no need for
additional coding by the trading system developer.
3. Monte Carlo techniques can be used to study the risk profile of a sequence of trades.
Your question prompts me to ask how the tests you are running are
defined. If the universe of stocks being tested is comprised of the
3000 stocks that are the current members of the Russell 3000 index, and
the test period is the past ten years, then there is a considerable
survivorship bias in the test runs. That is, the 3000 companies that
are in the index now have survived the past ten years, but those
companies that disappeared during that period are not included in the
tests. That bias strongly affects the test results. In some of my
research, I have compared two studies:
1. Use the list of stocks currently in an index.
2. Use the lists of stocks that were in an index at the start of each
year and run tests one year at a time, with lists reconstructed at the
beginning of each year.
The results of the first study are always significantly better than the
results of the second study. Ignoring the survivorship bias will cause
the trading system developer to significantly over-estimate the
likelihood that the system will be profitable in the future.
Norgate Premium Data (http://www.premiumdata.net/)
is an excellent source of end-of-day data for the US and Australian
markets, including data for issues that have been delisted. They are in
the process of developing historical lists of components of major
indexes which will be very valuable for study of the effects of
survivorship.
Your question also raises a related issue about how trades are
selected. Some developers run a general test using a large universe of
possible issues to trade, which results in a number of potential
positions to enter that is greater than the funds available to take
those positions. They then consider using Monte Carlo techniques to
analyze what might happen if different combinations of issues are
purchased. This is an inappropriate use of Monte Carlo analysis and is
poor trading system development practice. I do not know of a single
trader or trading company who runs a test or report, generates a list
of signals, sees that it has more signals than he or she has money, and
rolls dice to determine which of the signals to actually take. The
trader will always have a secondary set of conditions that are used to
rank-order the list of signals so that the best candidates can be
purchased. If the secondary set of conditions comes from non technical
analysis data, rankings from Investor's Business Daily for example,
then it will be difficult to incorporate the ranking in any trading
system development platform, including AmiBroker. If, however, the
secondary set of conditions comes from technical analysis, recent
relative strength of price for example, then it is easy to calculate a
ranking score and use it so that the signals generated do not exceed
the funds available and there is no need for application of a Monte
Carlo technique. In AmiBroker, this secondary set of conditions is
stored in the reserved variable PositionScore. It is, in effect, a
tie-breaking component of the objective function.
Returning to the question of reordering trades to study the risk
associated with the trading system. Use of Monte Carlo analysis in this
area is very valuable. It is best done using a program that accepts a
list of closed trades and performs the risk analysis. Equity Monaco,
available free (http://www.tickquest.com/product/equitymonaco.html), is a good one to start with. And Market Systems Analyzer (http://adaptrade.com/) has more capability and a trial version.
I hope this has been helpful.
Thanks for listening,
Howard
On Sun, Jan 24, 2010 at 4:38 AM, Joseph Occhipinti <joseph_occhipinti@xxxxxxxxx> wrote:
Does anyone know how to use this function in amibroker?
Ie. when i "backtest" a system on all of the trades that would have occurred in all / any of the stocks that make up the rusell3000 over the past 10 years, does that backtest result only give ONE course of action, or is it giving me the results of say 10,000 courses of action (or histories, or whatever the correct term is)
I am assuming it is only the ONE as I am not seeing any standard deviations or confidence levels in the results summary.
1. please advise on whether this function exists
2. where such a fucntion can be located on the program
thank you
See what's on at the movies in your area. Find out now.
__._,_.___
**** IMPORTANT PLEASE READ ****
This group is for the discussion between users only.
This is *NOT* technical support channel.
TO GET TECHNICAL SUPPORT send an e-mail directly to
SUPPORT {at} amibroker.com
TO SUBMIT SUGGESTIONS please use FEEDBACK CENTER at
http://www.amibroker.com/feedback/
(submissions sent via other channels won't be considered)
For NEW RELEASE ANNOUNCEMENTS and other news always check DEVLOG:
http://www.amibroker.com/devlog/
__,_._,___
|