Page 1 of 3

Average spread stats: EFX vs. Interactive Brokers

Posted: Tue Oct 16, 2007 11:10 am
by michal.kreslik
Hello, friends,

I think you might be interested in the average spread statistics in pips that I've done yesterday. It's calculated from the millisecond-precision tick data that I've been collecting from EFX & Interactive Brokers from mid August:



The source data only contains new quotes. In this methodology, a quote consists of both the Bid and Ask values. A new quote is created when either the Bid or Ask or both differ from their respective values in the previous quote.

The resulting table also contains information on how many quotes for the FX pairs in question were available for the calculation. The quote stream is not always continuous, i.e. if there is some internet connection or other failure, the quotes are missing in the source data. But, provided the spread values are distributed normally, this should not skew the results in an essential way.

EFX offers more FX pairs than IB, so there are only the resulting values for EFX for some pairs.

The value of the average spread is critical for trading systems that generate high frequency trades. Obviously, the average spread is not the only broker-dependent market access parameter that affects high frequency trading system's tradability. Among the key factors are:
  • average spread
  • executability, both price-wise and size-wise
  • commissions
Attached you'll find the Excel spreadsheet.

Michal

Posted: Tue Oct 16, 2007 1:03 pm
by alichambers
Nice work Michal. As you point out, the key question for me is:

- Speed of execution

if we are scalping in a fast market

Posted: Tue Oct 16, 2007 1:12 pm
by michal.kreslik
alichambers wrote:Nice work Michal. As you point out, the key question for me is:

- Speed of execution

if we are scalping in a fast market


Sure, Alex,

that's one of the most important factors. But how to measure it objectively?

Michal

Posted: Tue Oct 16, 2007 3:19 pm
by alichambers
Agreed - a difficult one.

Posting our experiences with execution speed would be a good start - maybe another thread???

I have found Interactive Brokers to be a little slow at times - using their API trading. Sometimes 10-15 secs for the order request to go through. However, I'm fairly new to trading, so this maybe the norm???

AC

Posted: Wed Oct 17, 2007 1:49 am
by dbw451
Hi Michal,

I'm wondering if this is an apples to apples comparison. I know IB provides data in 2 ms snapshots. Does EFX do something similar or are they sending every quote change? Funny numbers can result from IB averages because you don't have all the quote changes between the snapshots.

Regards,

David

Posted: Wed Oct 17, 2007 1:58 am
by daniil
Hi Michal!
I suppose you collect the ticks with MS SQL? i've read your topic about that so would you be please so kind as to share the final SQL table format for quotes?
Do you collect Level II data? if so please be aware that demo and real Level II data at least for MBT/EFX does not match.

BRGDS, Dan

Posted: Wed Oct 17, 2007 9:57 am
by 4x=0
Key questions for Justin at EFX:

1. does EFX emphasize speed and execution?

2. db asked, "I know IB provides data in 2 ms snapshots. Does EFX do something similar or are they sending every quote change?"

3. daniil seems to notice that demo and real Level II data at least for MBT/EFX does not match. Is this true?

I'll send an email

Posted: Wed Oct 17, 2007 1:30 pm
by Annu
Thanks Michael for posting these very interesting statistics. EFX started to quote fractional pip prices this week much more frequently, i wonder how that will impact your results.

Unfortunatly, the commissions will eat the spread advantage EFX has over IB.

Regarding speed of execution: apparently the new EFX platform, which will be released soon(tm), will feature internet-routing over the akamai-network, which is supposed to bring down latency. At the moment my avg. execution takes about 2.5 seconds from order-entry to confirmation (from europe to the EFX-servers in the USA, measured with an API-project). Looking forward to see how this technology will affect the speed.

Posted: Fri Oct 19, 2007 5:53 pm
by michal.kreslik
alichambers wrote:Agreed - a difficult one.

Posting our experiences with execution speed would be a good start - maybe another thread???

I have found Interactive Brokers to be a little slow at times - using their API trading. Sometimes 10-15 secs for the order request to go through. However, I'm fairly new to trading, so this maybe the norm???

AC


Alex,

10 - 15 sec for the Forex order during a normal time of the day is definitely far too much. Are you sure you've got the order routing set up correctly in the TWS? Even if you had an IP-packet monitoring antivirus set up, it should not take so long!

Michal

Posted: Fri Oct 19, 2007 6:40 pm
by michal.kreslik
dbw451 wrote:Hi Michal,

I'm wondering if this is an apples to apples comparison. I know IB provides data in 2 ms snapshots. Does EFX do something similar or are they sending every quote change? Funny numbers can result from IB averages because you don't have all the quote changes between the snapshots.

Regards,

David


I've heard about the "snapshot" issue. Anyway, if they really feed the snapshots instead of the continuous stream, it does not matter as long as the snaphots are not skewing the distribution of all their (even hidden) prices. It's because if you draw a random sample from a population of normally distributed cases and measure the sample's statistical properties, you're going to arrive at roughly the same results almost every time you draw a new random sample.

The problem would be if they would only feed the best prices or the worst prices etc. which I guess is not the case.

Imagine this from a standpoint of a US census worker. If he's assigned a task to calculate the average height of a US citizen, it's not going to skew the results much if he omits some randomly picked individuals from the calculation.

Also, I've been told that even if the price does not show up on your chart, you get filled at it with IB.

Last but not least, 2 ms is still much more precise than anyone can ever capture with an ordinary PC without the help of some special (and potentially very expensive) additional technical equipment. I'm collecting the ticks with a millisecond precision, but obviously, I'm limited by the PC's clock timer resolution.

The PC's clock timer interrupt refreshes the time information at a frequency of about 62.5Hz, so it delivers a new time information to the system roughly every 16 ms.

Let me illustrate my point and have a look at this simple code in C#:

Code: Select all

using System;

namespace PcClockTester
{
    class Program
    {
        static void Main(string[] args)
        {
            int count = 0;
            DateTime time = DateTime.Now;

            while (count < 5)
            {
                if (DateTime.Now != time)
                {
                    time = DateTime.Now;
                    Console.WriteLine(time.Second.ToString("d2") + "." + time.Millisecond.ToString("d3"));
                    count++;
                }
            }
        }
    }
}


It cycles 5 times and prints the value of the current time in a format of seconds.milliseconds, but only if there is a new time information available.

If you run this code, you'll get something like this:



As you can see, the time moves in 16 ms leaps for an IBM PC-compatible computers :) However, I've seen some interesting solutions on how to cope with this issue of time precision granularity, but it's a theme onto itself.

Michal