Historical FX ticks, versus stock/future ticks, and testing

Discussion in 'Strategy Development' started by abattia, Apr 20, 2012.

  1. Whereas historical stock/future ticks represent a time, price and volume at which a trade was transacted, I understand FX ticks are different; they represent a time, and two quotes, the best bid and best ask across some sample of quotes at a time immediately after one or other of the two quotes changes.

    So… ticks (and bars) for stocks and futures are based on actual trades; but ticks (and bars) for FX are based only on “best” quotes.

    Is this correct?

    And for those ETers that test systematic FX strategies, does the above difference also imply there should be differences too between the methodology of using historical data to test and evaluate a FX strategy, and that used for a stock/futures strategy?

    Or is it irrelevant?
  2. jcl


    I'd say both assumptions are correct. The content of an FX tick depends on the algorithm by the tick provider, which is normally an FX broker. The broker calculates the bid and ask price from the best quotes of his connected banks, and adds his own spread.

    As FX ticks have no volume, some brokers use the quote frequency instead, but that is in my experience a mostly irrelevant value. When volume is used, strategies must work differently for FX and for stocks.
  3. FX is traded on literally 1000s of "mini exchanges", like banks, institutions, agencies, etc. Different brokers and data providers give you only the best info they can get on what most of the FX participants are doing (quoting). Some are better and some are worse at the data they have. For this reason, most of the time you will only see bid/ask in the data feeds. I think i've seen some FX historical data with volume, but i'm not sure how reliable that is because it's always questionable what sources they used historically to create volume data, and you'd have to be very careful about that - in case they changed it at any point in the past.

    Anyway, for strategy development, you're stuck at guessing the volume but you can create normal (tick) bars in most instances. Most of the time the application should use:
    -Open: randomly select bid/ask at bar open time
    -High: highest value of ask
    -Low: lowest value of bid
    -Close: randomly select bid/ask at bar close time

    This makes some assumptions but it should work for the most part. In case you don't have the option of doing this in your software, you'd have to ask the vendor how it handles bid/ask data on their own.

    Keep in mind that the bid/ask ticks aren't real "ticks", they are just quotes, and a trade (tick) may or may not have happened at those prices. In most cases it will if it's a liquid currency pair.

    In the end there shouldn't be any major difference when testing strategies from bid/ask data (except for inability to use volume), but you'd have to look into how the bars are created by the software you are using, and this is a question either to your vendor or programmer who coded the software.
  4. Thanks for the above, braincell. And thanks, jcl, too. (Sorry, my thanks has come a year late!).

    What was your reasoning behind randomizing bid/ask selection for open and close? I imagine it was related to the final objective of your analysis or research ... it would help me to understand this a bit better to understand if doing this would also be good in my case ...

    ... an alternative approach would be to calculate a FxBar where open is actually a tuple of (bidOpen, askOpen), and the same principle is extended to High, Low and Close? What do you think? More useful?