Better Fills

Discussion in 'Order Execution' started by abattia, Aug 2, 2010.

  1. I autotrade US stocks/ETFs intraday with NinjaTrader.

    I want to investigate what I can do to improve the net prices I get filled at in my trading.

    Below are my initial thoughts on areas I could look at. I'd be grateful for comments on this list (e.g. which areas are most material, and which least? etc), and for suggestions on other areas I might include.


    1. Co-locate my trading computer at my broker (MB Trading) to get my orders into the market faster.
    2. Use a datafeed that is "closest" to my broker (probably MB Trading's own feed) to get my signals as quickly as possible.
    3. Optimize my trading computer (ensure sufficient speed and power, and remove all unecessary services and apps) so that I am able to react to the signals as quickly as possible.
    4. Minize use of market orders.
    5. Keep commissions/share to a minimum.
    6. Trade only the most liquid instruments to benefit from market depth at each price.
  2. rosy2


    1) so you put your server closer to your broker but you're still at the mercy of your broker's speed to send your order to the exchange

    2) so you get prices quicker but are still at the mercy of your broker to send your orders to the exchange

    3) i guess

    4) are market orders still used?

    you need to look at cost/benefit. Since you're using MB and ninja I assume you are a retail guy with a small account. Dont trade so much.
  3. Thanks
  4. If I want to measure how long it takes my orders to travel from my trading computer to my broker’s servers, how do I do this?

    Once I know how, I’ll then investigate how much better I could do by co-locating nearer my broker ...

    Perhaps, this isn’t the right place to ask this question? If I get no response, I try starting a new post ...
  5. you need to create and log timestamps on all outgoing and incoming messages.
  6. Thanks.

    I am pretty sure there is also another way to measure network "distance" using the DOS "ping" command.

    I'll post on the ET Hardware Forum, and see if I can get instructions how to do this there ...
  7. 'ping' measures the network travel time from one machine to another. But it doesn't measure processing time on either end or time from your broker to the exchange matcher, so it's pretty useless.

    You've already got an automated trading system. Just do this:

    1) When a message you receive causes you to enter a trade, copy the time & sales time associated with that message to a variable. This is the start time of your order processing.

    2) When your order prints on T&S, write down that time. That's the end time.

    3) Subtract to find out how long your order really took to execute. This makes the assumption that the time between your broker and the exchange is constant if your broker re-stamps T&S. But averaged over a bunch of trades, that's a reasonable assumption.
  8. Fair enough.

    If I have understood you correctly (my apologies if I have not!), you are saying:

    Execution Time
    Network Travel Time [A]
    Broker Processing Time
    Broker to Exchange Matcher Time [C]
    Other [D]

    For the time being, I am assuming I will stay with my current broker, so that I can do little to influence elements B, C or D.

    It is element A that I want to address to start with. Can I meaningfully reduce this through co-location?

    I will do what you suggest to measure A+B+C+D.

    If I could measure A separately for my current location, and then from a co-location site near my broker, I am hoping that I will be able to determine whether I can get a meaningful reduction compared with total time (A+B+C+D).

    Is it a question of "pinging" the IP address/addresses of my broker's quote/order servers, or is there more to it than that?

    [As you have probably sensed, you are dealing with a techno-idiot at this end ...]
  9. No problem - this isn't painfully tech-unsavy compared to what I'm used to.

    Ping can help you address [A].

    The ping command has the syntax
    'ping [IP/HOSTNAME]' where IP/HOSTNAME is the address of the host you're talking to. If you don't have that, your broker may be able to tell you or it may be buried in your trading software setup or you can get your computer to tell you (but how will vary based on OS).

    ping measures a round-trip time plus a little bit of processing on either end (usually very little). So the average ping time divided by 2 will be a good first order estimate of [A] unless your network connection is not symmetrical with respect to upstream vs. downstream data.
  10. Thanks. Very helpful.
    #10     Aug 3, 2010