Australian (ASX) Stock Market Forum

Monte Carlo Simulation of trades in backtesting a la Van Tharp

Joined
21 June 2005
Posts
105
Reactions
0
Monte Carlo Simulation of trades in backtesting a la Van Tharp

I’ve been reading Van Tharp’s latest offering “Definitive Guide to Position Sizing” and revisited the concepts of expectancy, R-Multiples etc. What I found new was the idea of performing a Monte Carlo analysis as a tool to really understand the probability of profits, DD etc by performing Monte Carlo on the trades that come up in backtesting. He recommends calculating the R-Multiple for every trade in the backtest and then working out the Expectancy, Standard Deviation of R-Multiples (to ascertain variability of results) and then calculate the t-score or what he calls the System Quality Number (SQN).

On this subject, I also went through the eBook “Trading Strategies – Using computer simulation to maximize profits and control risk” by Larry Sanders which addresses the topics of probability, marble game and MonteCarlo simulation. Larry Sanders has also designed the program TradeSim which he sells at www.tradelabstrategies.com The book can also be downloaded at this site for free. This book also talks about the Monte Carlo analysis of trades.

My question is to all the mechanical traders on the forum, if any of you actually have used this type of Monte Carlo analysis to really work out the expected future behaviour of your systems in terms of probabilities and if so, then what program did you use for the Monte Carlo analysis. I would also really appreciate some feedback on the use of Trade Lab Strategies TradeSim program (this is not Compuvision’s TradeSim which most are familiar with). I am aware that the Compuvision’s TradeSim can perform Monte Carlo simulation to cover the situation in backtesting when there are more triggers than can be taken on a particular day.

Cheers,
 
My question is to all the mechanical traders on the forum, if any of you actually have used this type of Monte Carlo analysis to really work out the expected future behaviour of your systems in terms of probabilities and if so, then what program did you use for the Monte Carlo analysis. I would also really appreciate some feedback on the use of Trade Lab Strategies TradeSim program (this is not Compuvision’s TradeSim which most are familiar with). I am aware that the Compuvision’s TradeSim can perform Monte Carlo simulation to cover the situation in backtesting when there are more triggers than can be taken on a particular day.

I'm not sure what the question is here. I do heaps of MC analysis. I use Compuvision's Tradesim. Back when I was first looking at all this I remember looking at TradeLab's Tradesim and rejecting it, but I can't remember why - think it was something to do with the way it interacted with Metastock.
 
I'm not sure what the question is here. I do heaps of MC analysis. I use Compuvision's Tradesim. Back when I was first looking at all this I remember looking at TradeLab's Tradesim and rejecting it, but I can't remember why - think it was something to do with the way it interacted with Metastock.

TradeLab's TradeSim cannot substitute Compuvision's Tradesim. They are two different beasts.

Compuvision’s TradeSim:

Metastock generates a trade database comprising all trades that trigger on every day of the backtest period. This database is used by Tradesim to run a simulation.

In real time trading, if your system gives 10 triggers today and you have equity to take only 2 trades, then you would have to disregard the other 8 trades. Ideally, one should pick those 2 trades at random from the 10 triggers available. In MC backtesting, with TradeSim, the simulator does 1000s of passes, picking trades at random from the available triggers and spits out results showing the max/min/average of profits/DD etc. In case, the daily triggers on every day of the backtest period could actually be taken, the MC tester is actually not used by Tradesim.

TradeLab’s TradeSim:

I don’t think this simulator can do what is outlined above. My understanding is that one has to get the results of a backtest showing the profit/loss of the various trades and then TradeSim performs a very detailed statistical analysis using Monte Carlo method to take these trades in 1000s of different combinations/order to give you the results for analysis. This would give a trader a relatively more thorough idea of what to expect from the system in the future.

It is this type of MC analysis that I am seeking the info on. Both the publications I mentioned in my previous post give details of this type of analysis and the importance thereof.

Trust this clarifies.

Cheers,
 
David Samborsky (Tradesim) has some pretty strong views re the way Tradesim handles Montecarlo analysis and how Amibroker handles it.

He has a strong arguement as to the poor nature of the Amibroker M/C testing.

I'll let him know about this thraec and he may pop in to explain.
 
David Samborsky (Tradesim) has some pretty strong views re the way Tradesim handles Montecarlo analysis and how Amibroker handles it.

He has a strong arguement as to the poor nature of the Amibroker M/C testing.

I'll let him know about this thraec and he may pop in to explain.

Tech,
This is not about TradeSim vs Amibroker.
This is about performing MC analysis on either the actual past trades or trades generated by whichever backtester in use. The backtest gives us one sample of trades - say 100 in number stretching over months or years. We then calculate R-Multiples for each of these trades. These are fed into the MC simulator. The MC simulator randomly picks one R-multiple value from the sample and assumes it's the result of the first trade. For the next trade, it does the same thing and selects another (it could even be the same trade) trade from the population. It keeps doing a 100 times. This forms one equity curve of R-multiples. The simulator can do 1000s of such runs generating an equity curve for each. It then works out the results of DDs, profits, losing streaks, winning streaks etc and works out the statistical probabilities for each. This would be invaluable in getting an idea of what can be expected from the system in the future.
Pretty sure David Samborsky would have researched Monte Carlo analysis relating to trading systems and I would welcome his views. I would also like to hear from other experienced systems designers who might be employing this methodology. I do have a lot of respect for Van Tharp who lays great emphasis on this type of testing.

Look forward to learning from others.

Cheers,
 
This is not about TradeSim vs Amibroker.

Yeh I know and wasnt trying to swing it that way.

David's a pretty knowledgable guy--you just need to see Tradesim.
His view I thought would be of interest to all who use or wish to use Montecarlo analysis in their trading.
 
Tech,
This is not about TradeSim vs Amibroker.
This is about performing MC analysis on either the actual past trades or trades generated by whichever backtester in use. The backtest gives us one sample of trades - say 100 in number stretching over months or years. We then calculate R-Multiples for each of these trades. These are fed into the MC simulator. The MC simulator randomly picks one R-multiple value from the sample and assumes it's the result of the first trade. For the next trade, it does the same thing and selects another (it could even be the same trade) trade from the population. It keeps doing a 100 times. This forms one equity curve of R-multiples. The simulator can do 1000s of such runs generating an equity curve for each. It then works out the results of DDs, profits, losing streaks, winning streaks etc and works out the statistical probabilities for each. This would be invaluable in getting an idea of what can be expected from the system in the future.

The only issue in doing this is the big assumption that the distribution of R-multiples is constant throughout time ie a stationary process as opposed to a non-stationary process. This may be true for a single security system but may not apply to a portfolio trading system which has trades from many different securities.

In TradeSim for Metastock we avoid doing this type of MC analysis for that reason. That is not to say that it is not useful to do it but there are some underlying assumptions that have to be made which may or may not reflect what happens in the real world.

Then there is the other issue of when you have the possibility of multiple entry triggers as in a portfolio trading system. Which back test do you use to base the distribution of R-multiples on ?? If it's just a single security back test then there is only one possible back test result. However if you are analysing a portfolio trading system that uses multiple entry triggers with equal weighting then there is not one unique outcome for a back test. There are many !!

This is similar to the issue of trying to optimize a portfolio trading system with multiple entry triggers which have equal weighting. Which back test do you try and optimize for because it is possible to have many different back tests from the one system and all are equally valid historical back tests yielding different results and a different set of metrics. Usually some kludge has to be made by forcing a certain sequence of trades to yield only one outcome using some kind of signal or trade ranking criteria but then there is the issue of how one determines this ranking criteria. Some assumptions are made here as well which may or may not represent the reality of the situation.
 
Hi David,

Many thanks for your comments. Great food for thought. Here are some of my thoughts on your comments

The only issue in doing this is the big assumption that the distribution of R-multiples is constant throughout time ie a stationary process as opposed to a non-stationary process. This may be true for a single security system but may not apply to a portfolio trading system which has trades from many different securities.
I am not sure what you mean by above. The distribution of R-multiples would vary over different phases of the market and it would vary for a single security system as well as for multiple securites system.

In TradeSim for Metastock we avoid doing this type of MC analysis for that reason. That is not to say that it is not useful to do it but there are some underlying assumptions that have to be made which may or may not reflect what happens in the real world.
There certainly would be assumptions that have to be made and recognized while interpreting the results. I suppose this would be a statistical analysis which would appeal to a trader who has a belief that trading is all about getting probability in his favour and takes the effort to understand and analyse it within the limitations of the assumptions made in the first place.

Then there is the other issue of when you have the possibility of multiple entry triggers as in a portfolio trading system. Which back test do you use to base the distribution of R-multiples on ?? If it's just a single security back test then there is only one possible back test result. However if you are analysing a portfolio trading system that uses multiple entry triggers with equal weighting then there is not one unique outcome for a back test. There are many !!
In case of multiple triggers, would it be useful to take the entire population of qualifying trades and then conduct the MC in the manner described in my previous post in order to derive the statistics required. After all the trades in the population qualified and any one of those could have been used. In this type of MC analysis, we are not working on the exact sequence of trades that would have been taken in real trading. This is more akin to the marble game where each marble is pulled for a trade and is replaced in the bag before another one is pulled.

This is similar to the issue of trying to optimize a portfolio trading system with multiple entry triggers which have equal weighting. Which back test do you try and optimize for because it is possible to have many different back tests from the one system and all are equally valid historical back tests yielding different results and a different set of metrics. Usually some kludge has to be made by forcing a certain sequence of trades to yield only one outcome using some kind of signal or trade ranking criteria but then there is the issue of how one determines this ranking criteria. Some assumptions are made here as well which may or may not represent the reality of the situation.
In terms of optimizing a portfolio trading system with multiple entry triggers I personally rank them according to ATR volatility in systems which work better on high volatility phases of the market and on liquidity for others. There are other valid ways to rank too. I think doing the MC in the way outlined in my previous post is even more important in such a case.

I would very much like your comments on above.

Cheers
 
If you're simulating based on in-sample data, what information does monte-carlo simulation provide about out-of-sample performance ?
 
If you're simulating based on in-sample data, what information does monte-carlo simulation provide about out-of-sample performance ?

There are no guarantees with what can be expected with out of sample data. However, with statistical MC analysis on either backtested data or historical trades date, the following should come to light to enable better decision making on position sizing, (including determination of risk per trade) deciding that the system is broken and ceasing to trade it etc.

  • Longest expected winning and losing streak
  • Highest expected DD
  • Lowest equity expected.

Above can be calculated in probabilities. For example, what is the highest DD at 1, 10, 50, 90 percentile level etc. I am still grappling with statistical probabilities but all this does appear very useful information in objective decision making.

Considering the lack of responses to this thread, I can only surmise that this type of trading system analysis is not a methodology commonly used by system designers here. The purpose of initiating this thread was to learn from others' knowledge and experience.

Cheers
 
Hi David,

Many thanks for your comments. Great food for thought. Here are some of my thoughts on your comments


I am not sure what you mean by above. The distribution of R-multiples would vary over different phases of the market and it would vary for a single security system as well as for multiple securites system.

In the context of a trading system, and using marbles as an example of a stationary random process, would be the situation where you would draw a marble out of a hat and then put it back and draw again from the same hat at a later time. Each time the same hat would have the same statistical properties. In a non-stationary process each time you draw a marble it would be from a different hat each with a different set of marbles and hence different statistical properties.

Assuming a stationary random process for a portfolio trading system might be making a rather bold assumption. Also the issue is further complicated by the fact that the process may not be completely random due to an underlying trend etc and so the data contains a deterministic bias which also varies with time.
 
If you're simulating based on in-sample data, what information does monte-carlo simulation provide about out-of-sample performance ?

Typically you would optimize a single pass back tested trading system on in-sample data and then test it on out of sample data to see if the optimization was correct.

Monte Carlo analysis gives you more insight into the variance of a trading system rather than trying to optimizing it using a single deterministic pass. Essentially the two types of analysis are mutually exclusive because it is almost impossible to optimize a trading system which has variance. For example if your trading system has some sort of random selection algorithm for the entry criteria then it is almost impossible to optimize this.

But as long as the statistical analysis from a thorough Monte Carlo analysis yields a robust trading system then it is not necessary to optimize anything as the worst case performance metrics will be the guiding factor on whether or not the trading system meets your requirements.
 
In the context of a trading system, and using marbles as an example of a stationary random process, would be the situation where you would draw a marble out of a hat and then put it back and draw again from the same hat at a later time. Each time the same hat would have the same statistical properties. In a non-stationary process each time you draw a marble it would be from a different hat each with a different set of marbles and hence different statistical properties.

Assuming a stationary random process for a portfolio trading system might be making a rather bold assumption. Also the issue is further complicated by the fact that the process may not be completely random due to an underlying trend etc and so the data contains a deterministic bias which also varies with time.

Thanks for clarifying. A very valid point. I suppose this is what Howard Bandy refers to in his "Quantitative Trading Systems" when he says that in the Walk Forward Testing, "the time period is shortened in the hope that the market and the trading system remain in synchronization throughout - remain stationary, in statistical terms.

Can't say I am in full agreement with your expressed view of irrelevance of the single path backtesting, however, be that as it may, I would be very interested in hearing your views on chapter 20 (Walk Forward Testing" of Howard Bandy's aforementioned book.

I for one find the different experts' varied views on Monte Carlo testing and analysis quite confusing. Perhaps, one way of looking at it would be that there is just that much more for me to research and learn;)

Cheers
 
He recommends calculating the R-Multiple for every trade in the backtest and then working out the Expectancy, Standard Deviation of R-Multiples (to ascertain variability of results)
I've found it useful to look at the distribution of all trades to look for outliers and remove them altogether. By outliers I mean trades with vastly larger return than the average (greater than 10 times the average). Most systems use stop loss techniques so there shouldn't be any single trades with very large losses, however there will be some very large profits and these can wildly affect the equity curve. I think it's better to study the system without the outliers and treat them as a "bonus".
 
Greetings all --

The posting as originally entered is too long. This is part 1.

Some of my thoughts on using Monte Carlo techniques with trading systems.

First, some background.

Monte Carlo analysis is the application of repeated random sampling done in order to learn the characteristics of the process being studied.

Monte Carlo analysis is particularly useful when closed form solutions to the process are not available, or are too expensive to carry out. Even in cases when a formula or algorithm can supply the information desired, using Monte Carlo analysis can often be used.

Here is an example of Monte Carlo analysis. Assume that a student is unaware of the formula that relates the area of a circle to its diameter. A Monte Carlo solution is to conceptually draw a square with sides each one unit in length on a graph, with the origin at the lower left corner. The horizontal side goes from 0.0 to 1.0 along the x-axis and the vertical side goes from 0.0 to 1.0 along the y-axis. Draw a circle with a diameter of one unit inside the square. The center of the circle will be at coordinates 0.5, 0.5. The Monte Carlo process to compute the area of the circle is to generate many random points inside the square (each point a pair of number with the values of the x-coordinate and y-coordinate being drawn from a uniform distribution between 0.0 and 0.999999), then count the number of those points that are also inside the circle. The ratio between the number of points inside the circle to the number of points drawn gives an estimate of the constant pi. Running this experiment several times, each using many random points, allows application of statistical analysis techniques to estimate the value of pi to within some probable uncertainty. The process being studied in that example is stationary. The relationship between the area of the circle and the area of the square is always the same.

When we are developing trading systems, the ultimate question we are most often asking is "What is the future performance of this trading system?" Recall that the measure of goodness of a trading system is your own personal (or corporate) choice. Some people want highest compounded annual return with little regard for drawdown. Others value systems that have low drawdown, or infrequent trading, or whatever else may be important. But, in all cases, the goal is to have the trading system be profitable. Assume that many of us are trading a single issue over a period of several years, and that the price per share at the end of that period is the same as it was at the beginning of the period, with significant price variations in between. If we ignore frictional costs -- the bid - ask spread of the market maker and the commission of the broker -- we are playing a zero-sum game. Those of us who make money are taking it from those who lose money. If, instead of the final price being the same as the beginning price, the final price is higher, then the price has an upward bias and more money is made than lost. This is when we all get to claim it was our cleverness that made us money. If the final price is lower, the price has a downward bias and more money is lost than made.

The price data for the period we are trading has two components. One is the information contained in the data that represents the reason the price changes -- the signal component. The other is everything we cannot identify profitably -- the noise component. Note that there may be two (or more) signal components. Say one is a long term trend in profitability of the company, and the price follows profitability. Say the other is cyclic price behavior that goes through two complete cycles every month for some unknown but persistent reason. In every financial price series, there is always the random price variation that is noise. The historical price data that we see consists, in this case, of trend plus cycle plus noise. Each component has a strength that can be measured. If the signal is strong enough, relative to the noise, our trading system can identify the signal and issue buy and sell signals to us. If our trading system has coded into it logic that only recognizes changes in trend, the cycle component is noise as seen by that system. That is -- anything that a trading system does not identify itself, even though it may have strong signal characteristics when analyzed in other ways, is noise.

Over the recent decades, analysis of financial data has progressed from simple techniques applied by a few people in a few markets using proprietary tools to sophisticated techniques applied by many people in many markets using tools that are widely available at low cost. The techniques used successfully by Richard Donchian from the 1930s, and Richard Dennis and William Eckhart in the 1980s, were simple. To the extent that the markets they traded did not have strong trends, every profitable trade they made was at the expense of another trader. Today, every person hoping to have a profitable career in trading learns about techniques that did work at one time. They are well documented and are often included in the trading system examples when a trading system development platform is installed.

Assume that a data series is studied over a given date range. Using hindsight, we can determine the beginning price and the ending price. Continuing with hindsight, we can develop a trading system that recognizes the signal component -- some characteristic about the data series that anticipates and signals profitable trades. By trying many combinations of logic and parameter values, we will eventually find a system that is profitable for the date range analyzed. If we are lucky or clever, the system recognizes the signal portion of the data. Or, the system may have simply been fit to the noise. The data that was used to develop the system is called the in-sample data. If the system does recognize the signal and a few of us trade that system, while all the rest of the traders make random trades, those of us who trade the system will make a profit. On average, the rest lose. As more and more people join us trading the system, each of us earns a lower profit. In order to continue trading profitably, we must be earlier to recognize the signal, or develop better signal recognition logic and trade different signals or lower strength signals. By the time the date range we have studied has passed, most of the profit that could have been taken out of that price series using that system has been taken. Perhaps the future data will continue to carry the same signal in the same strength and some traders will make profitable trades using their techniques, or perhaps that signal changes, or perhaps so many traders are watching that system that the per-trade profit does not cover frictional costs.

Data that was not used during the development of the system is called out-of-sample data. But -- important point -- testing the profitability of a trading system that was developed using recent data on older data is guaranteed to over-estimate the profitability of the trading system.

Financial data is not only time-series data, but it is also non-stationary. There are many reasons related to profitability of companies and cyclic behavior of economies to explain why the data is non-stationary. But -- another important point -- every profitable trade made increases the degree to which the data is non-stationary. There is very little reason to expect that future behavior and profitability of well known trading systems will be the same as past behavior.

Thanks for listening,
Howard
 
And Part 2 --

Which brings me to several key points in trading systems development.

1. Use whatever data you want to to develop your systems. All of the data that is used to make decisions about the logic and operation of the system is in-sample data. When the system developer -- that is you and me -- is satisfied that the system might be profitable, that conclusion was reached after thorough and extensive manipulation of the trading logic until it fits the data. The in-sample results are good -- they are Always good -- we do not stop fooling with the system until they are good. In-sample results have no value in predicting the future performance of a trading system. None! It does not matter whether the in-sample run results in three trades, or 30, or 30,000. In-sample results have no value in predicting the future performance of a trading system. Statistics gathered from in-sample results have no relationship to statistics that will be gathered from trading. None!

The follow-on point, which relates to Monte Carlo analysis, is that rearranging the in-sample trades gives no insight into the future characteristics of the system. Yes, you can see the effect of taking the trades in different orders. But why bother? They are still in-sample results and still have no value.

The Only way to determine the future performance of a trading system is to use it on data that it has never seen before. Data that has not been used to develop the system is out-of-sample data.

2. As a corollary to my comments above, that out-of-sample data Must be more recent that the in-sample data. The results of using earlier out-of-sample data are almost guaranteed to be better than the results of using more recent out-of-sample data. Consequently, techniques known as boot-strap or jack-knife out-of-sample testing are inappropriate for testing financial trading systems.

So, when is Monte Carlo analysis useful in trading system development?

1. During trading system development. It may be possible to test the robustness of the system by making small changes in the values of parameters. This can be done by making a series of in-sample test runs, each run using the central value of the parameter (such as the length of a moving average) adjusted by a random amount. The values of the parameters can be chosen using Monte Carlo methods. Note that this does not guarantee that the system that works with a wide range of values over the in-sample period will be profitable out-of-sample, but it does help discard candidate systems that are unstable due to selection of specific parameter values.

Note that this technique is not appropriate for all parameters. For example, a parameter may take on a limited set of values, each of which selects a specific logic. Such parameters, associated with what are sometimes called state variables, are only meaningful for a limited set of values.

2. During trading system development. It may be possible to test the robustness of the system by making small changes in the data. Adding a known amount of noise may help quantify the signal to noise ratio. When done over many runs, it may reduce (smooth out) the individual noise components and help isolate the signal components.

3. During trading system development. It may be possible to investigate the effect of having more opportunities to trade than resources to trade. If the trading system has all of the following conditions:
A. A large number of signals are generated at exactly the same time. For example, using end-of-day data, 15 issues appear on the Buy list.
B. The entry conditions are identical. For example, all the issues are to be purchased at the market on the open. If, instead, the entries are made off limit or stop orders, these can and should be resolved using intra-day data -- as they would be in real time trading.
C. The number of Buys is greater than can be taken with the available funds. For example, you only have enough money to buy 5 of the 15.

If your trading system development platform provides a method for breaking ties, use it. For example, you may be able to calculate a reward-to-risk value for each of the potential trades. Take those trades that offer the best ratio. AmiBroker, for example, allows the developer to include logic to compute what is known as PositionScore. Trades that are otherwise tied will be taken in order of PositionScore for as long as there are sufficient funds.

Alternatively, Monte Carlo methods allow you to test random selection of issues to trade. My feeling is that very few traders will make a truly random selection of which issue to buy from the long list. I recommend quantifying the selection process and incorporating it into the trading system logic.

4. During trading system validation. After the trading system has been developed using the in-sample data, it is tested on out-of-sample data. Preferably there is exactly one test, followed by a decision to either trade the system or start over. Every time the out-of-sample results are examined and any modification is made to the trading system based on those results, that previously out-of-sample data has become in-sample data. It takes very few (often just one will do it) peeks at the out-of-sample results followed by trading system modification to contaminate the out-of-sampleness and destroy the predictive value of the out-of-sample analysis.

One possibly valuable technique that will help you decide whether to trade a system or start over is a Monte Carlo analysis of the Out-of-sample results. The technique is a reordering of trades, followed by generation of trade statistics and equity curves that would have resulted from each trade sequence. What this provides is a range of results that might have been achieved. Note that this technique cannot be applied to all trading systems without knowledge of how the system works. If the logic of the system makes use of earlier results, such as equity curve analysis or sequence of winning or losing trades, then rearranging the trades will result in trade sequences that could never have happened and the analysis is misleading and not useful. Also note that most of the results produced by the Monte Carol analysis could also be developed from techniques of probability and statistics without using Monte Carlo techniques -- runs of wins and losses, distribution of drawdown, and so forth.

In summary --

Monte Carlo analysis can be useful in trading system development. But only in those cases described in items 1, 2, 3, and 4 above.

Rearranging in-sample trades has no value.

Obtaining meaningful results from Monte Carlo techniques requires large numbers -- thousands -- of additional test runs.

If you decide to apply Monte Carlo techniques, I recommend that they be applied sparingly, primarily to test robustness of a likely trading system as in numbers 1 and 2 above, not in the early development stages.

On the other hand -----

What is tremendously useful in trading system development is automated walk-forward testing. I believe that is the Only way to answer the question "How can I gain confidence that my trading system will be profitable when traded?" But that is the subject of another posting.

Thanks,
Howard
 
Hi everyone,

Wow.
Excellent response Howard.

If I could just add something.
I think monte carlo analysis does NOT in no way whatsoever replace out-of-sample testing.
I, and many other traders surely would use both in their systems testing and design.

Monte carlo analysis, in the way that I use it (TradeSim), is not re-arranging the trades (as this would be largely useless) or changing small parameters in the system rules (which is also important), but rather, it is testing the different possible paths through the sample of trades, each of which is equally likely in real-time trading.

Monte carlo analysis is only important/critical in systems or methods in which the trading capital is not sufficient to take every possible trade. Otherwise there would obviously be only one possible paths of trades as you can easily take each one.

And while I agree that in-sample testing has no determining ability in terms of future real-time trading performance, in my opinion, a system has to trade well in-sample for me to even bother testing it on out-of-sample data (walk forward analysis).

PositionScore as defined by AmiBroker is something which can also be used in TradeSim, where it is known as trade ranking, where you can choose to rank trades by any criteria that you want.

Nizar.
 
I've found it useful to look at the distribution of all trades to look for outliers and remove them altogether. By outliers I mean trades with vastly larger return than the average (greater than 10 times the average). Most systems use stop loss techniques so there shouldn't be any single trades with very large losses, however there will be some very large profits and these can wildly affect the equity curve. I think it's better to study the system without the outliers and treat them as a "bonus".

I agree.
I usually remove the top 3-5 winners and losses and then review the performance.
 
And Part 2 --

If your trading system development platform provides a method for breaking ties, use it. For example, you may be able to calculate a reward-to-risk value for each of the potential trades. Take those trades that offer the best ratio. AmiBroker, for example, allows the developer to include logic to compute what is known as PositionScore. Trades that are otherwise tied will be taken in order of PositionScore for as long as there are sufficient funds.

Alternatively, Monte Carlo methods allow you to test random selection of issues to trade. My feeling is that very few traders will make a truly random selection of which issue to buy from the long list. I recommend quantifying the selection process and incorporating it into the trading system logic.

I'm curious to know how you derive your trade selection criteria and what tests did you use to ascertain whether or not your trade selection criteria always results in the optimum selection of trades ?? It would be a tall leap of faith to assume that a few formulas would somehow reveal that one stock was a better bet than another even if it was only based on intuition. Without thorough statistical analysis your assumption and hypothesis could be completely wrong and misleading.

The reason why I say this is because I have just recently tested one of these one-pass portfolio trading systems with trade ranking and just by overriding the ranking and randomly selecting trades from multiple entry triggers I was able to generate a better outcome than the fixed selection based on a certain ranking criteria. Food for thought anyway ;)

With TradeSim for Metastock when you run enough simulations in a Monte Carlo analysis it will most likely cover the instance of the trade selection that was forced by the ranking criteria. However this trade selection will be one of many (from tens of thousands in fact) and most likely won't be the most optimum choice. It is possible that a completely random selection of trades could be a much better trade selection criteria than your ranking which maybe counter intuitive to what you think but that is why it needs to be tested and investigated properly which many people don't actually do.

Regards
David
 
Hi David --

I may be misunderstanding your question. If so, correct me. But I think these comments might help clarify.

The logic of the trading system is completely determined by the developer.

If the trading system creates a situation where all of the following conditions hold, then Monte Carlo simulation can be helpful:
A. A lot of trades are signaled at exactly the same time. For example, after the close of trading when using end-of-day data.
B. The signals are for entry with exactly the same circumstances. For example, at the next day's open.
C. There are more signals than funds will allow to be taken.
This is just a repeat of the conditions I stated in my postings above.

If I have developed a trading system where this happens, then I will be faced with a decision as to which trades to take. Say there are 15 buy signals and I have funds only for 5. Which five do I take? Do I rank them in some way or do I use a random selection process?

If I actually did use a random process, then Monte Carlo simulation would help me by showing me the distribution of results that might have occurred. If I had a choice of 5 of 15 once a week for a year, I would be drawing random numbers to select which 5 each week for 52 times a year, and I would see an equity curve (and associated trade statistics) for each combination the Monte Carlo picked. That would be helpful, and it might convince me that I should use a random method to select which 5 of 15.

My point is that I, personally, do not use random selection. I rank them. What I want to do is create a trading system where that set of three criteria never happens -- where I never need to make random choices. So what I should be doing is incorporating my ranking method into the trading system explicitly so the 15 signals generated are in order of preference according to my selection criteria. That is, according to what is best when measured using my objective function. If I have done that, there is then no need for a Monte Carlo analysis because all of the trades -- all 5 for all 52 weeks -- will have been determined by the trading system.

My point is that Monte Carlo analysis is helpful when there is some random component of the trading system. If there is no random component, then there is no need for Monte Carlo analysis. Further, applying Monte Carlo analysis to a system that determined by the logic of the system adds no useful information, and may be distracting.

Echoing Nizar's comments -- whatever is done to study alternative in-sample results in no way reduces the need for rigorous out-of-sample testing.

Thanks for listening,
Howard
 
Top