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.
I also believe there is a room for improvement and since we never
actually
tried to synchronize our clocks we might do some testing.
As I said before NTP is probably the best way to go if we want to do
this.
Some people mentioned Dimension4 software in the past but it's a very
basic tool
and it's only slightly better than default Windows time tool. NTP not
only takes into
account variable network latency but it also deals with clock drift
which on Windows machines
can be very large.
I can run the test tomorrow but can you clarify one thing for me.
Let's say I start two JBT instances
on two computers that have perfectly synchronized clocks. Will both
data files be mostly
identical even though forward-test on the second instance was started
0.5 seconds after the first one?
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.
This sounds like an indicator to me. I don't like the idea of effectively smoothing the data beneath the 'user space' in JBT.
every 100ms? What kind of ping time do you get to these servers?
Now, I don't know how NTPUDPClient.java works, but if it doesn't take
network latencty into account and
is not picky about the server it is connected to then it probably it
is far from accurate.
EOD results:
4 trades, Net Profit: -119
There's nothing unusual in the log but around that time I was running
few cpu heavy
applications and I noticed a lot of memory paging.
I am happy with the results, although I wish that more people participated. Perhaps they were deterred by having to sync with SVN. We'll repeat this test after I roll these changes into release 7.03.