[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [amibroker] Monte Carlo Analysis in AMIBROKER?


  • Date: Sun, 24 Jan 2010 19:27:35 -0800 (PST)
  • From: Joseph Occhipinti <joseph_occhipinti@xxxxxxxxx>
  • Subject: Re: [amibroker] Monte Carlo Analysis in AMIBROKER?

PureBytes Links

Trading Reference Links



Thank you Howard

Greatly appreciated

Just a question regarding the following comment of yours:

"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."

Instead of back testing 'All Quatotaions', I select 'From' (selecting one year at a time), will this address the issue of survivorship bias? As an example:


as at 01/01/2008
a
b
c
d
e

as at 01/01/2009
a
b
c
d

as at 25/01/2010
a
b
c


If I were to run tests one year at a time - say i chose 01/01/2008 to 01/01/2009 - does that mean that AB will only pick up stocks a, b and c given they are the only ones left in the index as at todays date? 

Or will AB pick the results of a,b,c,d and e for that year? And then simply omit 'e' for the following year's test?

(When a stocks get delisted does that mean it is ommitted from any historical testing done?)

MY SYSTEM:
In short, my system is an intraday one - im in by the open and out by the close. So i hold no stocks overnight. So i am not exposed to trading halts or overnight gaps etc.
(not sure if this makes a difference)


Thanks again for your time Howard
















From: Howard B <howardbandy@xxxxxxxxx>
To: amibroker@xxxxxxxxxxxxxxx
Sent: Mon, 25 January, 2010 4:12:08 AM
Subject: Re: [amibroker] Monte Carlo Analysis in AMIBROKER?

 

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.premiumd ata.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.tickques t.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@ yahoo.com> 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.



Yahoo!7: Catch-up on your favourite Channel 7 TV shows easily, legally, and for free at PLUS7. Check it out.

__._,_.___


**** 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/





Your email settings: Individual Email|Traditional
Change settings via the Web (Yahoo! ID required)
Change settings via email: Switch delivery to Daily Digest | Switch to Fully Featured
Visit Your Group | Yahoo! Groups Terms of Use | Unsubscribe

__,_._,___