Welcome to NexusFi: the best trading community on the planet, with over 150,000 members Sign Up Now for Free
Genuine reviews from real traders, not fake reviews from stealth vendors
Quality education from leading professional traders
We are a friendly, helpful, and positive community
We do not tolerate rude behavior, trolling, or vendors advertising in posts
We are here to help, just let us know what you need
You'll need to register in order to view the content of the threads and start contributing to our community. It's free for basic access, or support us by becoming an Elite Member -- see if you qualify for a discount below.
-- Big Mike, Site Administrator
(If you already have an account, login at the top of the page)
OK, I'll try to explain this without going into code. So you are retaining a record of ALL trades which cross the Time and Sales, and you are of course able to categorize them from some original sequential trade list, into 2 lists, the MM-Buy list (Retail sales to the BID) and the MM-Sell list.
All of these items are, of couse, timestamped but in calculating Buy/Sell volume pairings, the time order is not important since you can clearly Buy, then Sell; or Sell, then Buy and so Inventory Evaluation is not done in time sequence. However, it is ALWAYS done with a particular Timeframe subset of the action, for example, all Trades for the past hour.
Once you have these 2 lists for the past Hour, all within the same time range, you'll need to make a determination whether there is more MM-Buy activity than Sell activity; and decide to call the Inventory "Net Long" or whether the opposite is true, so you call the Inventory "Net Short". Having made this determination, then...
...if "Net Long", then Sort both lists lowest to highest price; and if "Net Short", then Sort the lists highest to lowest price.
Then we have to do "matching" of any MM-Buy volume, and eliminate it, by finding MM-Sell volume at a higher Price. From the MM-Sell entries, most of the time, we'll be able to find enough Volume to match each MM-Buy volume entry, with 1 or more MM-Sell entries at the higher Price levels. The current MM-Buy entry then has its volume set to zero (meaning it is eliminated from open Inventory) and the MM-Sell entries which gave up all or portions of their volumes are also reduced in volume, or set to zero volume by giving up all of their Matching volume in compensating for the MM-Buy entry.
Thus, for "Long" inventory, we work from Lowest to Highest Price, matching EVERY MM-Buy volume unit, with corresponding MM-Sell volume at the next higher price. So, simplistically, an MM-Buy of 1 unit is compensated for by an MM-Sell entry of 2 units. The MM-Buy entry is eliminated from active Inventory (profit is taken) and the MM-Sell entry has 1 unit subtracted from its volume entry.
We work on every MM-Buy, matching MM-Sell volume until we have no more MM-Buy entries, or we run out of matching MM-Sell entries, of course. WHAT REMAINS are "pure" MM-Buy transactions which DO NOT YET HAVE matching MM-Sell volume at a higher price. This is PURE LONG INVENTORY, which has been bought from Retail Sellers, but which remains to be sold off at a higher price.
The Volume Weighted Average price of this "pure" MM-Buy inventory is the Cost Basis or "Price Break Even" for Open Inventory. (The inventory which disappeared during the matching process is Closed Inventory or profit-taking, and so it must be taken out of the remaining Open Inventory).
So the Current Market price, as compared with the Cost Basis for LONG Inventory positions, determines whether MM is making a profit or a loss on her current Open Inventory of "pure" Long Inventory items after this process of evaluation has taken place, over the specified timeframe we said 1 hour.
Obviously, you can evaluate this for ANY timeframe, and you'll find different results; or you can do them for a number of representative timeframes, at the same time, in order to have a "multi timeframe Inventory Status" which shows the Open Interest (Open Inventory), its Price Break Even (Cost Basis) and then calculates an estimate of what I call "Risk" which is Current Price versus Cost Basis. That, multiplied by Net Open Inventory volume, can give you a $$$ measure of just how much "Risk" is being experienced by Market Maker, on this timeframe, at this current time.
Tedious, yes. But this is roughly the way in which Inventory can be analyzed to yield useful results, over specific Timeframes, based on actual Trades over the Time and Sales.
Let's say MM has 10,000 contracts Long and would love to sell them off. Will MM then raise the Price in order to stimulate Retail Buyers, to whom she can sell these contracts??? Not necessarily. She has a Long position, sure, and it seems like a lot of contracts !!! But Market Maker operates at scale.
WHAT REALLY MATTERS is when those 10,000 net Long contracts' Cost Basis is 10 Ticks above the Current Market Price, so she is "losing money on paper" temporarily. Now, we know this is all "part of the game" and that these "Risks" are not really risky, provided that Market Maker can simply raise Price and get out of "Risk" and into "Profit" quite easily.
But RISK (losses on paper) are not a situation which MM prefers, so there is a strong motivation to reduce that RISK level or control it.
This is a DYNAMIC situation, as you can appreciate. There are several ways MM may be able to shift Cost Basis and control Risk, in addition to modifying the Inventory mix. This is why any simplistic Analysis is inadequate.
Hope this gives some idea of the calculations which could be done to evaluate Inventory and "Risk" meaningfully, so that we could use this "situational awareness" and factor it into our trade decisions. So, if we are at a "Support" level (is that a real concept?) then if we are strongly into "Long Risk" we predict that the Support may appear
to break, but it is far more likely to hold.
I'm sure you can work out the Short Inventory evaluation methodology, since it is just the opposite of Long inventory.
[EDIT] Imagine if you find that MM is in $100,000 Risk (small, unrealistic, but for example) so, dang, but consider that in your matching process (every Buy/Sell volume match generates revenue) and maybe that Revenue is $150,000 that has gone into her ample pocket !! So
this "dynamic" situation can be seen to be even slightly more dynamic, since Revenue has compensated for Risk losses on paper, at least at this point in time. She's making high Revenues, so maybe the Risks are not immediately a big deal... LOL Revenue could be characterized as $$ per minute of the entire Timeframe Interval, for example. $150k/60= rev. per minute? Rate of getting Rich for aggregated MM in this situation ! lol of course these are estimates...
[EDIT] So, I ask "Why are support and resistance price levels so important?" one reason is that they generate a trading battle, and generate... wait for it... MORE REVENUE to MM. She loves to linger there for a while ! LOL
[EDIT] At this time, it looks like ES is trading at around $25,000 per minute Revenue, but I didn't see how to post the image.
I came into this conversation late, maybe I am missing something; apologies if I am.
But what "unusual exchanges" are you referring to? Bc what you've described is precisely what a retail trader can do on the CME...place resting orders on the order book (referred to as limit orders) and not pay the spread. Now, some products have weird rules for order matching (e.g., pro rata, lead mm) but I believe stock index futures are pure unadulterated FIFO matching...someone correct me if I'm wrong. But that's beside the point anyway.
The point is, retail traders can place resting orders on the books at, for example, the CME and I would not call the CME an "unusual exchange." And limit orders are definitely not converted to market orders, even when the limit order is placed by a retail trader on the CME. This is precisely the reason futures trading is ideal for order flow daytrading.
I think your statements are correct only as applied to forex trading, not futures.
Hey, it's been a while since I've looked at Futures Order Execution and Placement, so I'll take your word for it. It's great that "ordinary traders" are able to be "makers" rather than "takers" and genuinely Bid or Offer on the Book with the same status as the dominant Market Makers. So they can make the Spread perhaps on at least one side of their round trip.
But I'd say that would have a negligible effect on the overall thrust of the Analysis, where Market Maker dominates and (almost) everyone else is a Retail player. Still, I take your point...
Why do you say that the ability to place Orders resting on the Book is what makes futures trading "ideal for order flow daytrading". How does that significantly improve the attractiveness or effectiveness of Order Flow based analysis, and... wait for it... what IS "Order Flow Daytrading" anyway? I ask this as a serious question.
Take a look at article "From PIN to VPIN: An introduction to order flow toxicity" wrote by David Abad and José Yagüe. I think you will find it quite interesting.
Well this is a deep question. Maybe check out threads on this forum and some YouTube vids that explain this better (e.g., jigsaw and no bs daytrading have some very old videos explaining the foundation underpinning order flow trading).
But here's my attempt:
I think futures markets are "ideal" for order flow trading because the liquidity and order flow (or what you referred to as trade flow, actual executed deals) is transparent and not hidden, and retail players have access to the full and complete order flow data. Because the data is full and complete, the order flow is relatively transparent. And I'm only talking about CME bc that's all I have experience with. Having said that, I do not mean the CME markets are perfectly transparent anymore than markets are perfectly efficient.
So, what do I mean by order flow trading? I mean watching passive and aggressive orders to see which side is gaining the upper hand within a given frame of context (context can be anything). There are infinite ways to measure order flow to try to suss out whether one side is outpacing the other. Futures products are traded on a centralized exchange and full "order flow" data (i.e., the passive and aggressive orders) is completely exposed to retail traders. I'm not saying big players don't have a data edge; I'm sure they do. But the retail trader is not knee-capped; he (or she) has access to full order flow data for a relatively cheap price.
I appreciate your attempt to explain Order Flow trading, but for my money, I want to calculate my odds in real time, and I'm a purely technical trader. I'm also cursed by developing my own indicators, and especially avoiding any indicator which is solely based on Price itself. So Price doesn't predict Price; although I'd concede that possibly "patterns of price" (whatever that means) could be predictive of future Price... 'nuff said.
For me, I want the data to "tell me" where the market is headed. And what I've called Inventory Analysis, which I tried to describe, is one piece of the puzzle; but it's more "situational awareness" than precisely telling me when/where a turn will happen; and what the dominant trend continues to be, even if Price isn't moving.
My only good candidate for continuous positive real time "Trend following" has got to be Analysis of the Market Depth in real time, or "the Book" as it's called. Here the Analysis is even more complex than I described for Inventory Analysis, since the DOM (Depth of Market) is an unbelievably dynamic critter.
I've done this a long time, and so I do have a feel for how it should be done. Without getting into too much detail, the DOM properly evaluated, will tell you where the Market is headed in the short term. That involves getting to grips with the concept of "spoofing" and understanding somewhat, that Market Maker on aggregate is in competition for favorable positioning on the FIFO execution queue. There is a disincentive for MM to pull a quote, given that she loses her place in the matching queue for that Price level. By being able to find a measurable correlate for this "reluctance" or "eagerness" to maintain a Quote, we can discern a "bias" which predicts short term market direction.
This is the kind of real time indicator I need, so DOM Bias combined with Inventory Analysis is my way of determining where the short term Market is moving. I allow the Market Makers to TELL ME where they're most eager to interact with the Retail players, and therefore, where they will be moving Price.
Most people, and I thought you did for a moment there, believe that Prices move because Retail players, Buyers or Sellers take control and cause it to move. I don't subscribe to that view; and believe that Market Maker moves prices, often on a predetermined plan; and of course uses Retail enthusiasm or liquidity to achieve her goals as Market Maker (on aggregate) always (by definition) trades against the entire Retail Market simultaneously.
Generally, her attitude is this: "Half of you Retail traders may get lucky and guess my medium to long term direction, so you can WIN; and the others will LOSE; but in the very short term, I will defeat the majority of you Retail traders, by denying you the Price movement you will need to profit, before I shake you out." ...or statements to that effect LOL For me, I have to "know" Market Maker's position; and then, of course, I seek to follow what I'd hope she can "tell me" by her behaviors, to predict the Price movement in the near future.
I'm quoting myself, and maybe just talking with myself. I've been away coding my little heart out; with both Inventory Analysis (an easy problem already solved) but, more importantly, as I've alluded to, Market Depth Trend analysis. I'm not offering out any code, so don't worry. I am happy to discuss the major Principles and techniques used in the analysis, for those happy coders who think they might approximate, or even improve my results.
Using the ATAS platform C# I coded a data capture (from the rithmic unfiltered feed) and local transfer via interprocess communication, to a monstrous Java analyzer. This captures the Futures Depth of Market 30 Ticks on both sides of the DOM, about 10 times per second. Intervening events (inside the 100 msecs) also examines any minimum observable sizes, and merges those sizes into the DOM snapshot, if any QuoteSize@Price is the minimum at that price. (Hint: detecting the minimum, over a window of time, at a Price, is a key part of the prediction.) We all have some idea of what Spoofing is.
So, we stream that into a Java based analyzer which focuses on ONE single symbol/security. We're doing ES, and NQ mainly.
What we find is that we can dynamically predict the turning points of the market; and also the sustained longer term trending. NQ is the real prize here, since it's got "moves like Jagger" and so being able to "surf scalp" NQ (or MNQ) would be the big money maker. ES, on the other hand, is more liquid, staid, but still quite well predicted.
Just to say again that Market Depth Analysis is possible; but it is a Herculean task, and requires a massive focus on the key principles being measured as predictors, and is an implementation problem requiring a high degree of skill in multi-threaded object oriented coding in C#, Java or similar language. ATAS has been used initially, but this could be implemented on Ninja Trader, although I don't have time to do that, so long as I can stick with ATAS for the time being.
[EDIT] I just want to make it clear I'm not selling or leasing the Java analysis code, but have discussed with a couple of you, some of the principles. So we have a data capture process on the ATAS side, and then a separate analyzer. I'm not trying to make a buck by selling software, since I hate supporting it. If you want a deep dive into the logic of the analysis, you might have to buy me a coffee, so to speak.