MustPlayOptions
Registered: Jun 2006 Posts: 134 | 01-16-07 08:23 PM
1) Be DUM
"For every system I develop I use DUM.
D - Define
All systems are based on finding and pulling a fundamental truth about the market. Define what fundamental truth you'll be going after. Ex. All markets have a tendency to trend beyond random. Now you've got the definition that most technical-based hedge funds are derived from.
U - Understand
Determine the conditions under which the defined truth tends to occur. In the case of a trend tendency it could be when does the trend tendency begin beyond random? This will lead you to how do I measure a trend? Since trends can occur randomly, how do I determine if a trend is beyond a confidence level of randomness? Does the trending tendency beyond random exhibit the same degree of persistence beyond one year? two years? 5 years? If not, is there some point at which the persistence beyond random occurs every year? If so, does it also persist at the same frequency for 5, 10, 50 different markets? If so, you've discovered a fundamental truth and you now understand what you need to know about the behavior.
M - Mine
Once you understand the conditions under which the behavior occurs, you write the code necessary to map the understanding of the behavior. Is the code going to be all inclusive of many markets? or try to just go after the best of the best? Once mapped it's a mechanical process to determine how well it maps against the behavior. After you're satisfied you've developed a satisfactory method for mining the behavior, you can do an edge test to see if it happens beyond random. If not, use Monte Carlo sims to determine confidence levels for trading the method. Determine at what confidence level you'll stop trading. Examine the drawdown versus the profit. Is it worth risking any money on this? If so, allocate money using a money management scheme.
After you're done with this, you'll have your first system. Next, develop a complimentary system (non-correlated). Go through the same process for say a range bound system. Once you've gone through the mining stage, use the correlation test to weight the two systems. Apply the weights to the money management scheme and move on to your third system."
2) Target a behavior (Define)
"I don't look for a market for a system. Each system I've developed is targeting some behavior. If that behavior is present in multiple markets, then I could test it to see if my system captures the behavior better than random. If so, I'd just trade it on that market and check to make sure the behavior was persistent. For instance I have a volatility breakout model that I've used successfully in the SP market. I tested it against the DAX market and found the edge (ability to capture profits at better than random), was better in the DAX than the SP. I've been trading the DAX with it since then and it's done very well. Only thing I don't like is getting up in the middle of the night to trade.
Every model I've worked on has gone through the same process. Look at the behavior's present in a market, characterize them by creating a rule and checking the fit until all behavior's are noted. Then start looking to see if there is a component to the behavior that is non-random. If so, develop a system to mine it and create a way to monitor the behavior to ensure it's persistent over time. For example, one of the behavior's widely known is the trend day in the SP market. It can be identified just by visually inspecting a chart. I characterized it as a low/high within 10% of the low/high of the day and the close within 20% of the high/low of the day. With the definition I can see how many of these days have persisted over the years (averages about 25 days per-year). Then I can see if there is a way to identify these days in advance (realizing I'm going to also be capturing some false days as well)."
3) Basic data mining process (Mine)
"First find out what is going on in the market you want to trade in the timeframe you plan on holding a position. If you want to daytrade with one trade per-day then find out all the different ways the day has played out in the past. ex. trend day, two-way day, reversal day, etc.
Once you've done this you should have an idea of which type of day is most common and which is most profitable. Then define something which could be of value to trade one of the market types. An example might be in a reversal day to find out how often the market makes a low of the day in the first 15 min. of the session. If it happens often enough to be of interest then you go on to the next step.
Take every period for which the target is found and create a table of outputs with 1 for the target and 0 for non-targets. Then pre-process all the inputs into the target and convert them to binary inputs. (A common mistake is to take open, high,low, and close data -- analog and assume you can find relationships with the target). For ex. yesterday close > day before yesterday close. If found mark the input as a 1 if not present mark it as a 0. Do this for as many identifies as you can. This may present a hundred or more binary inputs leading to the target for each day of the data.
Then you'd pass the data into a backprop neural net and have it train on the data. (you'll need to set aside some data for out of sample testing). Once it's trained to hit at least 90% correctly test the NN on the out-of-sample data. If you hit at least 85% correctly then you can do one of two things. If you're a discretionary trader, setup the NN and preprocess the inputs every day and use the net to predict whether tomorrow has the target (in this example the low of the day is within 15 min. of the start of the session). If so use it to trade to the upside as long the net remains 85% correct. If you're a systems trader then go back to the net and look at the weights of the net to see which of the binary inputs were most important in hitting the target. Use the inputs to create a backtestable system based on the patterns. A system might be when xyz pattern exists then buy next bar above the lowest bar as long as the time is within the first 15 min. of the day. Set the stop to one tick below the low. If the system tests profitable enough to be of interest then move on to the next step.
Next, take the trades and test them against random trades pulled from the same year (the edge test). Rank the trades versus random for each year of the backtest. If the trades score consistently above the 70th percentile then you can guess you've found a edge-based system. If not, then you have to assume you've found a temporal characteristic in the data that can be exploited for some period of time.
If it's edge based then all you need to do is adjust the trades for market volatility and apply a money management strategy. Check the trades on a periodic basis to ensure the edge continues and plan what to do with your next million. If it's not edge based you can still trade it but you need to setup a objective bailout method such as running a monte carlo sim and determining the bailout point to be say the 95% level of the predicted max drawdown point. Your trading would be more defensive using a non-edge based method as well. Maybe you'd split the trade size in half and have a 15 min. or 10% of daily range as a filter to adding the second position (letting the position prove itself) as long as the volatility was large enough to justify the scaled entry." |