Bottom line - IMO, it's not possible to backtest something like this since you can't tell your backtesting system "if I didn't get a fill, don't take the trade" on entry - or "if I didn't get a fill, try again or wait for the stop-out" on exit. Automatically assuming a fill and including slippage is just as invalid as automatically assuming a fill. Doing either in a backtesting run simulates nothing and proves nothing - positive or negative.
I'm going to step out on a limb here and make a bold statement: This system is asinine. The fib numbers are meaningless. The signal is seemingly meaningless as it has been stated you could take the same signal as a short or long op and get the same result. The stop logic seems screwy to me as well. What this looks like to me is a random overlay on the market instead of an attempt to actually find the best speculative risks for expected returns. Personally I could likely never trade a system like this because it goes against my style, finding pockets of determinism in the choas that is the markets. This entire concept seems like a joke to me. That being said the system makes money! (At least if you believe the results posted here). To get beyond the recent results I coded up the system in Wealth Lab. I did this quickly so there may be problems in my code. Some disclaimers: 1) I am not sure the stochastics logic was coded correctly. Also it is based on the 1 min stochatics as I did not want to deal with a seperate data set for the 2 min. 2) The stops are set in percentages to stay relative to the market. A three point stop at the market peak is a lot different than a 3 pt stop today. 3) There are two breakeven stops. If the market moves two points in either direction and comes back to breakeven it will get stopped out. 4)Currently the reverse on loss will keep flipping but is usually stopped out by the breakeven stop. I'll have to add some position tracking to have it stop after one flip. The reverse on stop did not impact the results much anyhow. Here is the script: {Quah's Fib System} var Bar, i, nPane, D, K: integer; var FibTimes: array[0..11] of integer; var TimeIsFib: boolean; {Stop = 3.5 NQ pts relative to 900 NQ level} InstallStopLoss(0.33889); {Profit = 3 NQ pts relative to 900 NQ level} InstallProfitTarget(0.3333); {Install Break Even after 2 NQ pts profit relative to 900 NQ level} InstallBreakEvenStop( 0.222 ); {Install Break Even after 2 NQ pts loss relative to 900 NQ level} InstallReverseBreakEvenStop( 0.222 ); FibTimes[0] := 3; {833} FibTimes[1] := 5; {835} FibTimes[2] := 8; {838} FibTimes[3] := 13; {843} FibTimes[4] := 21; {851} FibTimes[5] := 34; {904} FibTimes[6] := 55; {925} FibTimes[7] := 89; {959} FibTimes[8] := 144; {1054} FibTimes[9] := 223; {1223} FibTimes[10]:= 377; {1447} i := 0; TimeIsFib := false; { Create Pane for Slow Stochastic } nPane := CreatePane( 100, TRUE, FALSE ); { Use Fast %D as %K for slow Stochastic } K := SMASeries( StochKSeries( 17 ), 1 ); D := SMASeries( K, 17 ); { Plot Slow Stochastic } PlotSeries( K, nPane, 505, 0 ); PlotSeries( D, nPane, 000, 1 ); DrawText( 'Slow Stochastic %K', nPane, 4, 4, 505, 8 ); DrawText( 'Slow Stochastic %D', nPane, 4, 16, 000, 8 ); DrawHorzLine( 50, nPane, 777, 1 ); DrawHorzLine( 0, nPane, 777, 1 ); DrawHorzLine( 100, nPane, 777, 1 ); SetPaneMinMax( nPane, -10, 110 ); for Bar := 0 to BarCount - 1 do begin ApplyAutoStops(Bar); for i := 0 to 10 do begin if BarNum(Bar) = FibTimes - 1 then SetBarColor( Bar + 1, #Green ); end; if not LastPositionActive then for i := 0 to 10 do begin if BarNum(Bar) = FibTimes - 1 then if GetSeriesValue( Bar, K ) > GetSeriesValue( Bar, D ) then BuyAtMarket(Bar + 1, 'Buy on Fib Entry'); if BarNum(Bar) = FibTimes - 1 then if GetSeriesValue( Bar, K ) < GetSeriesValue( Bar, D ) then ShortAtMarket(Bar + 1, 'Short on Fib Entry'); end; if LastPositionActive then if PositionLong(LastPosition) then begin ShortAtStop( Bar + 1, PositionEntryPrice( LastPosition )*(0.99611), 'Short Entry on Long Failure' ); end else if PositionShort(LastPosition) then begin BuyAtStop( Bar + 1, PositionEntryPrice( LastPosition )*(1.0033889), 'Long Entry on Short Failure' ); end; if LastPositionActive then if PositionLong(LastPosition()) then if GetHour( Bar ) = 16 then SellAtMarket( Bar, LastPosition, 'Close on EOD' ); if PositionShort(LastPosition()) then if GetHour( Bar ) = 16 then CoverAtMarket( Bar, LastPosition, 'Close on EOD' ); end; The results from late 1999 to mid 2000 can be seen in the attached gif. $10 a RT was taken for commisions. The results are abysmal. Other periods fared just as bad. That being said I think that backtesting a system like this is at best an approximation. There are many different things it can't account for like different interpretations of the stochastics, missed trades, fills, etc. As you can see in my post I've condradicted myself numerous times. Despite the results I'm trying to keep an open mind. I hesitate to send this because it is not entirely conclusive. I hope the code can help some of you with Wealth Lab who are interested in this system. Let me know what you guys find in your own studies. I'll be watching this thread for the outcome of all this.
What is assinine is for you to post these results and call it a backtest of the system I've been talking about here. It's not even close, as you "disclaim". You disclaimer really means nothing - sort of like me saying I'm going to test the 0-60 time of a Corvette and say it took 5 minutes to go from 0-60 - however, my disclaimer is that I tested using a bicycle instead of a Corvette.
The only disclaimer you should have is that you didn't acutally code up the system like you stated in the sentence before. Come on. You mention the stop logic seems screwy to you - that's fine - so, how should the stop logic be? Doesn't really make any sense to me for you to say that any of this is meaningless - it is just what it is. Nothing more. The results will speak for themselves - good or bad.
The truth to the matter is Quah thought of a system and started trading his system and it seems to be profitable. That's all that really matters. Who cares about backtesting. He's forward testing his system. There are many systems and ways to trade everything and he has one he likes and trades. He's also got the balls to post his results and answer to the skeptics. My thoughts are ' who cares what anybody else thinks". It is working for him and that is all that matters.
What seems to work for Quah may not work for others, myself included. Don't think the fib time validity is being contested (we are already in agreement that it doesn't work for most parameters- his subjectivity is still a major component that is missing from your evaluation in the trade determination), nor is the method to be taken wholesale. Take a look at a chart with the time formula provided by esignal, and you'll immediately see how difficult it is to trade, imho. It was just a means to enable Quah to mechanically enter trades at certain time slices, and get his high probability pt using his read on stohs. Not a magic number. Modify it somewhat (I omitted the fib time entry requirement- based on conditions instead because I wanted to capture a "larger" move for my buck) chuck in a fave indicator (used mov avgs, 5,10), use discretion (what's the overall picture- trend or range), and you've got a nifty scalping tool, or, better still, as a complement to a longer term (15 min) intraday method (can't drop planning and anticipating altogether but it certainly has helped me clarify signals at points where I'm thinking a move might happen in a particular direction). So no fully automated system unfortunately, but kudos to Quah for getting a lot of us thinking about entries, exits, and trade management!
There really isn't anything subjective about it. With the signal I've been using, either K is above D or it isn't. Either it is one of those times, or it isn't. That said, I don't claim that the specific indicator I'm using and/or how I'm using it is the best or only way to go about picking direction without having to make a subjective decision. It is just the one I've chosen to use. I believe a few other have used the same thing - inandlong for one, and we seem to have made the same decisions at the same times - nonsubjective. ctrader is using a different stoch setting that I suggested seems to work nice on a one minute chart - again, nonsubjective.
What results did your system have over the last two weeks? Comparable to the papertraded/live traded results?