NexusFi: Find Your Edge


Home Menu

 





Tape/Time and Sales: why actual trades do not decrease bid/ask sizes?


Discussion in Traders Hideout

Updated
      Top Posters
    1. looks_one Nicolas11 with 17 posts (9 thanks)
    2. looks_two Jigsaw Trading with 11 posts (5 thanks)
    3. looks_3 Jura with 4 posts (3 thanks)
    4. looks_4 traderwerks with 1 posts (0 thanks)
      Best Posters
    1. looks_one SPMC with 1 thanks per post
    2. looks_two Jura with 0.8 thanks per post
    3. looks_3 Nicolas11 with 0.5 thanks per post
    4. looks_4 Jigsaw Trading with 0.5 thanks per post
    1. trending_up 18,334 views
    2. thumb_up 18 thanks given
    3. group 5 followers
    1. forum 33 posts
    2. attach_file 1 attachments




 
Search this Thread

Tape/Time and Sales: why actual trades do not decrease bid/ask sizes?

  #11 (permalink)
 traderwerks   is a Vendor
 
Posts: 692 since Jun 2009
Thanks Given: 436
Thanks Received: 465


Nicolas11 View Post
I have made a similar test with YM @ CME, for which I have both Level I and Level II through DTN IQFeed.
Seems "normal", as illustrated here-below.

The numbers between [] are the ID numbers of the messages in the feed (to be sure that I have not missed any).

There are two cases.

1st case: the trade(s) do(es) not take all the liquidity at the level. Then next bid/ask update reflects the decreasing liquidity.

Example: 1 trade at the ask

[128935] Update without trade: Ask = 18 @ 13215 - Bid = 8 @ 13214 | 2012-08-20 16:36:38
[128936] New trade at the ASK: 1 @ 13215 - Ask = 18 @ 13215 - Bid = 8 @ 13214 | 2012-08-20 16:36:38
[128937] Update without trade: Ask = 17 @ 13215 - Bid = 8 @ 13214 | 2012-08-20 16:36:38

Example : 2 trades at the bid

[127848] Update without trade: Ask = 22 @ 13212 - Bid = 11 @ 13211 | 2012-08-20 16:36:01
[127849] New trade at the BID: 2 @ 13211 - Ask = 22 @ 13212 - Bid = 11 @ 13211 | 2012-08-20 16:36:02
[127850] New trade at the BID: 1 @ 13211 - Ask = 22 @ 13212 - Bid = 11 @ 13211 | 2012-08-20 16:36:02
[127851] Update without trade: Ask = 22 @ 13212 - Bid = 8 @ 13211 | 2012-08-20 16:36:02

2nd case: the trade(s) do(es) take all the liquidity at the level. Then next bid/ask update reflects the up/down tick

Example : 1 trade at the bid

[127061] Update without trade: Ask = 23 @ 13212 - Bid = 1 @ 13211 | 2012-08-20 16:35:58
[127062] New trade at the BID: 1 @ 13211 - Ask = 23 @ 13212 - Bid = 1 @ 13211 | 2012-08-20 16:35:58
[127063] Update without trade: Ask = 23 @ 13212 - Bid = 32 @ 13210 | 2012-08-20 16:35:58
[127064] Update without trade: Ask = 23 @ 13212 - Bid = 30 @ 13210 | 2012-08-20 16:35:58
[127065] Update without trade: Ask = 23 @ 13212 - Bid = 29 @ 13210 | 2012-08-20 16:35:58
[127066] Update without trade: Ask = 24 @ 13212 - Bid = 29 @ 13210 | 2012-08-20 16:35:58
[127067] Update without trade: Ask = 25 @ 13212 - Bid = 29 @ 13210 | 2012-08-20 16:35:58
[127069] Update without trade: Ask = 27 @ 13212 - Bid = 29 @ 13210 | 2012-08-20 16:35:58

[127070] Update without trade: Ask = 2 @ 13211 - Bid = 29 @ 13210 | 2012-08-20 16:35:58

The green part illustrates a very short-term "liquidity vaccum": we have to wait 5 messages until the bid/ask spread reduce to 1 tick.

Example : 2 trades at the ask

[127673] Update without trade: Ask = 3 @ 13210 - Bid = 37 @ 13209 | 2012-08-20 16:36:00
[127675] New trade at the ASK: 1 @ 13210 - Ask = 3 @ 13210 - Bid = 37 @ 13209 | 2012-08-20 16:36:00
[127676] New trade at the ASK: 2 @ 13210 - Ask = 3 @ 13210 - Bid = 37 @ 13209 | 2012-08-20 16:36:00
[127677] Update without trade: Ask = 28 @ 13211 - Bid = 37 @ 13209 | 2012-08-20 16:36:00
[127678] Update without trade: Ask = 26 @ 13211 - Bid = 37 @ 13209 | 2012-08-20 16:36:00
[127679] Update without trade: Ask = 26 @ 13211 - Bid = 39 @ 13209 | 2012-08-20 16:36:00
[127680] Update without trade: Ask = 24 @ 13211 - Bid = 39 @ 13209 | 2012-08-20 16:36:00
[127681] Update without trade: Ask = 21 @ 13211 - Bid = 39 @ 13209 | 2012-08-20 16:36:00
[127682] Update without trade: Ask = 20 @ 13211 - Bid = 39 @ 13209 | 2012-08-20 16:36:00
[127683] Update without trade: Ask = 19 @ 13211 - Bid = 39 @ 13209 | 2012-08-20 16:36:00
[127684] Update without trade: Ask = 18 @ 13211 - Bid = 39 @ 13209 | 2012-08-20 16:36:00

[127685] Update without trade: Ask = 18 @ 13211 - Bid = 2 @ 13210 | 2012-08-20 16:36:00

Nicolas

Orders are being cancelled and you are not getting those messages.

Math. A gateway drug to reality.
Reply With Quote

Can you help answer these questions
from other members on NexusFi?
What broker to use for trading palladium futures
Commodities
Cheap historycal L1 data for stocks
Stocks and ETFs
MC PL editor upgrade
MultiCharts
How to apply profiles
Traders Hideout
Better Renko Gaps
The Elite Circle
 
  #12 (permalink)
 
Nicolas11's Avatar
 Nicolas11 
near Paris, France
 
Experience: Beginner
Platform: -
Trading: -
Posts: 1,071 since Aug 2011
Thanks Given: 2,232
Thanks Received: 1,769


traderwerks View Post
Orders are being cancelled and you are not getting those messages.

Here, we are just talking about best bid / best ask, so the 1st level in the DOM on each side.
You are saying that, if a limit order resting on the 1st levels of the DOM is cancelled, there is no update message in the T&S.
I am not so sure.
For example, let's have a look at this sequence (extracted from above):
[127064] Update without trade: Ask = 23 @ 13212 - Bid = 30 @ 13210 | 2012-08-20 16:35:58
[127065] Update without trade: Ask = 23 @ 13212 - Bid = 29 @ 13210 | 2012-08-20 16:35:58
I think that the 2nd message reflects that 1 order was pulled out from the DOM.
I do not pretend to be right. Just discussing. I'm new in the T&S party. And eager to learn.

Nicolas

Visit my NexusFi Trade Journal Started this thread Reply With Quote
  #13 (permalink)
 
Jigsaw Trading's Avatar
 Jigsaw Trading  Jigsaw Trading is an official Site Sponsor
 
Posts: 2,988 since Nov 2010
Thanks Given: 831
Thanks Received: 10,393


Is Ninja the platform here?

Just so you know - there's a couple of places Ninja stores the current bid/ask and they are not updated @ the same frequency.

Can you show the lines of code you have that are displaying this?

Visit my NexusFi Trade Journal Reply With Quote
  #14 (permalink)
 
Nicolas11's Avatar
 Nicolas11 
near Paris, France
 
Experience: Beginner
Platform: -
Trading: -
Posts: 1,071 since Aug 2011
Thanks Given: 2,232
Thanks Received: 1,769

The platform is Sierra Chart.
So there is no "storage issue" as with Ninja Trader. I mean: everything is built-in.
The code is very short and uses the built-in function sc.GetTimeAndSales which gives access to the T&S messages.
The code just reads these T&S messages one after the other and adapts the printing according to "new trade" or "update" (it is a "field" of the message).

Visit my NexusFi Trade Journal Started this thread Reply With Quote
  #15 (permalink)
 
Jigsaw Trading's Avatar
 Jigsaw Trading  Jigsaw Trading is an official Site Sponsor
 
Posts: 2,988 since Nov 2010
Thanks Given: 831
Thanks Received: 10,393


Nicolas11 View Post
The platform is Sierra Chart.
So there is no "storage issue" as with Ninja Trader. I mean: everything is built-in.
The code is very short and uses the built-in function sc.GetTimeAndSales which gives access to the T&S messages.
The code just reads these T&S messages one after the other and adapts the printing according to "new trade" or "update" (it is a "field" of the message).

I don't think each individual T&S message contains the qty at bid & at ask - there are separate messages for trades/depth changes/price changes.

Visit my NexusFi Trade Journal Reply With Quote
  #16 (permalink)
 SPMC 
GER
 
Experience: Advanced
Platform: MC
Trading: ES
Posts: 144 since May 2011
Thanks Given: 11
Thanks Received: 213

Nicolas,
it could be a Sierra problem. I havent it install anymore, but if you look at the times and sales window on their site you will see that the bid and ask sizes change only on the next tick, ie at 1:09:58 the sizes remain constant till 1:10:00. Dont know if this is fixed now.


Reply With Quote
Thanked by:
  #17 (permalink)
 
Nicolas11's Avatar
 Nicolas11 
near Paris, France
 
Experience: Beginner
Platform: -
Trading: -
Posts: 1,071 since Aug 2011
Thanks Given: 2,232
Thanks Received: 1,769

@SPMC,

I think that this behaviour is normal.

As you say, T&S Window only updates at each new transaction.

However, sc.GetTimeAndSales() gives more information:
- what happens at each transaction (same as T&S Window)
- and update of best bid / best ask between transactions

Nicolas

Visit my NexusFi Trade Journal Started this thread Reply With Quote
  #18 (permalink)
 
Jura's Avatar
 Jura   is a Vendor
 
Posts: 775 since Apr 2010
Thanks Given: 2,352
Thanks Received: 690

Interesting. MultiCharts 8.0 with ZenFire on 6E has the same behaviour (bid and ask don't change after trade):

 
Code
20-08_22:25:40  6E Update without trade. InsideBid: 15  InsideAsk: 4
20-08_22:25:41  6E Update without trade. InsideBid: 15  InsideAsk: 4
20-08_22:25:41  6E Update without trade. InsideBid: 15  InsideAsk: 4
20-08_22:25:41  6E Update without trade. InsideBid: 15  InsideAsk: 4
20-08_22:25:41  6E Trade done: 7. InsideBid: 15  InsideAsk: 4
20-08_22:25:41  6E Update without trade. InsideBid: 15  InsideAsk: 4
20-08_22:25:41  6E Update without trade. InsideBid: 14  InsideAsk: 4
20-08_22:25:41  6E Update without trade. InsideBid: 14  InsideAsk: 4
20-08_22:25:41  6E Update without trade. InsideBid: 14  InsideAsk: 4
20-08_22:25:42  6E Update without trade. InsideBid: 14  InsideAsk: 4
20-08_22:25:42  6E Update without trade. InsideBid: 14  InsideAsk: 4
Perhaps a coding error from my part?

 
Code
Variables:
	IntraBarPersist PrevBid(0),
	IntraBarPersist PrevAsk(0),
	IntraBarPersist PrevVolume(0),
	sizeOfTrade(0), bidSize(0), askSize(0);
	
if (dom_isconnected) then begin 	
	bidSize = DOM_BidSize(0);
	askSize = DOM_AskSize(0);	
end;

if (Ticks <> PrevVolume) then begin 

	if (BarStatus(1) = 1) then 
		sizeOfTrade = Ticks
	else 
		sizeOfTrade = PrevVolume - Ticks;	

	Print(TimeNow, SymbolName, " Trade done: ", NumToStr(sizeOfTrade, 0), 
		". InsideBid: ", NumToStr(PrevBid, 0), "  InsideAsk: ", NumToStr(PrevAsk, 0));

end else begin 

	Print(TimeNow, SymbolName, " Update without trade. InsideBid: ", NumToStr(PrevBid, 0), 
		"  InsideAsk: ", NumToStr(PrevAsk, 0));

end;
	
PrevVolume = Ticks;	
PrevBid = bidSize;
PrevAsk = askSize;

RecalcLastBarAfter(0.1);

Reply With Quote
Thanked by:
  #19 (permalink)
 
Nicolas11's Avatar
 Nicolas11 
near Paris, France
 
Experience: Beginner
Platform: -
Trading: -
Posts: 1,071 since Aug 2011
Thanks Given: 2,232
Thanks Received: 1,769

Jura,

Is it correct to say that, roughly speaking, your code is executed again and again at each new tick or after 100ms, whichever comes first?

Nicolas

Visit my NexusFi Trade Journal Started this thread Reply With Quote
  #20 (permalink)
 
Jura's Avatar
 Jura   is a Vendor
 
Posts: 775 since Apr 2010
Thanks Given: 2,352
Thanks Received: 690



Nicolas11 View Post
Is it correct to say that, roughly speaking, your code is executed again and again at each new tick or after 100ms, whichever comes first?

Yes indeed, due to the RecalcLastBarAfter keyword.


Reply With Quote




Last Updated on September 4, 2012


© 2024 NexusFi™, s.a., All Rights Reserved.
Av Ricardo J. Alfaro, Century Tower, Panama City, Panama, Ph: +507 833-9432 (Panama and Intl), +1 888-312-3001 (USA and Canada)
All information is for educational use only and is not investment advice. There is a substantial risk of loss in trading commodity futures, stocks, options and foreign exchange products. Past performance is not indicative of future results.
About Us - Contact Us - Site Rules, Acceptable Use, and Terms and Conditions - Privacy Policy - Downloads - Top
no new posts