My question is "does it matter?" Just because our data all looks the same, doesn't make it any better. It's all correct, just a different sampling. If it effects the outcome if your strategy that much, then your strategy has a problem. In fact, it would be better if everyone had different versions of the same data, and these seperate data sets could be used to test how sensitive the strategy is to the sampling.
On Wed, Aug 19, 2009 at 7:53 PM, nonlinear5 <[email protected]>wrote: > > The long time JBTers are aware of this problem: when multiple people > run the same strategy in the same time frame, their results may be > different. For the benefit of everyone, I'd like to explain why this > happens, and perhaps someone would come up with an idea to improve the > consistency. > > When JBT runs in the "trade" and "forward test" mode, it's driven by a > timer which fires 1 time per second. Every time the timer fires, JBT > calculates the depth balance as the midpoint between the lowest and > the highest depth balance observed during that second. This midpoint > balance is what gets fed to the indicators, which ultimately generate > trading signals. This approach works fairly well. We've run multiple > multi-user tests in the past, and I am also regularly checking my > results with another JBTer who runs the same strategies. Most of the > time, the results match well, with occasional exceptions. Here is why > these exceptions occur: > > The timer uses the computer clock, and obviously, everyone's clock is > different. When user A samples 1-second interval, it may be, say, > 10:00:05.200 to 10:00:06.200 real time period. By "real time", I mean > the most precise, atomic time, which is the same for everyone. At the > same time, user B sample could be 10:00:05.900 to 10:00:06.900, > measured by the same atomic clock. So, users A and B are "out of > phase" by about 700 milliseconds. As a consequence, their min/max > depth balance observations would differ by small amount. Now, imagine > that some strategy triggers a long trade when the indicator value > exceeds 100. Because of the small differences, the indicator for user > A may reach 100.01 and trigger a trade, while the same indicator for > user B may reach 99.99 and drop off, never triggering a trade. An > additional source of the differences is the PC clock drift, which may > cause JBT to sample overlapping periods, or to have gaps in the > samples. > > Here are a couple of ideas that I have to improve the multi-user > consistency: > > 1. Instead of the midpoint depth balance, use a 1-second average (or > an exponential average) of the depth balance. > > 2. Instead of using the PC clock, obtain the atomic time from a time > server (such as the US Naval Observatory time server), and trigger > depth balance sampling based on the changes in that atomic clock. This > would involve continuous polling of the time server, multiple times > per second. This is easy to do in Java, but it may not be reliable, as > the server may go down. The server may also deny service, if the > requests are deemed to be too frequent. > > If you have any other ideas, feel free to share with the group. > > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "JBookTrader" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/jbooktrader?hl=en -~----------~----~----~----~------~----~------~--~---
