455 karma · joined February 23, 2012
You are correct, public markets are anonymous by design, so there is no way to tell that the same liquidity is being offered in more than one place. That doesn't change the reality that it is. As I explained, it must be, or the transition from 1 exchange to 13 exchanges would have seen offered liquidity by market makers cut to 1/13th.
So like I said, anyone with a working mental model of the market knows this. You can't just aggregate displayed liquidity at each venue and think that number is valid. It doesn't matter what your 'screen' is telling you if the screen is doing something that makes no sense. No one ever pretended that you can magically execute on different exchanges as if they were one exchange. No one ever made that guarantee. The only people who think that are wingnuts like Eric.
And since we are talking about an issue that only effects people sending very large orders to multiple exchanges, the likes of Katsuyama have no excuses for their ignorance. They are paid to be on top of these details. You can't have a 'trader' in the modern age who doesn't know what a millisecond is, or isn't prepared or capable to dig below one abstraction layer. "dUh, my screen say 24800 shares are there and i pressed buy" is not what you pay an execution trader for. It is his fucking job to know what happens when his order goes down the wire.
>To your analogy, it would be similar to a real estate agent flooding the market with multiple listings of each house, but with different pictures and different addresses, giving the impression of a buyers market to a buyer (phantom liquidity).
They are not "flooding the market" or trying to present "phantom liquidity". They are doing exactly what you do when you put the house on 3 different websites. Trying to increase your chances of finding a customer. They are forced to put bids and offers on 13 different exchanges, because that is US equity market structure. It's no fun. Life would be a lot simpler if there were just one exchange. As I explained, it's like playing russian roulette for them... they are now forced to take the chance that they may get filled simultaneously on multiple exchanges and take on more risk than they are comfortable holding. But they are forced to do that since their customers are now spread across 13 exchanges. Market makers would like nothing better than to have 1 exchange. Arbitrageurs are the ones who love having all this fragmentation.
Where? I have explained that it is real. The confusion stems from thinking you can sum up the orders at each exchange. It would be like seeing the same house on three different real estate websites and then thinking you can buy three houses. They are the same house. Listed three times. The liquidity listed at the 13 different US equity exchanges is listed by the same market makers, so you can't sum it. Do you understand?
>But in an order book, orders are supposed to be firm and executable. If they aren't, the market is rigged. As it very clearly is.
How aren't they executable? No one can see your order coming. If you send a single order to NASDAQ or any other exchange it will execute. They are all executable and firm at the exchange level. Nanex seems to think you should be able to execute everything visible at all exchanges at once. You can't.
Imagine you are a market maker trying to make the spread and provide liquidity back in the old days. There is only a single stock exchange. Your firm obviously has a limit on how much risk it can take. How much capital/money it has available. So let's say you are allowed to post 1000 shares on the offer and 1000 shares on the bid. You are not allowed to hold a position of more than 1000 shares long or short. Life is simple.
Then things get complicated. A competing exchange is now set up and begins to thrive. Yay for competition! Yay for the free market! But you still have the same limits on your capital and risk. What do you do? Do you now post 500 shares on the first exchange and 500 shares on the second? You could do that. Then you are guaranteed that you will never be long or short greater than 1000 shares. You'll never break your limit. But what happens when there are 10 different stock exchanges? Do you post only 100 shares at each one? Should the available liquidity in the market be fragmented into 10 pieces? Of course not.
So what you do is post your bids and your offers for your full amount on each exchange. And then if you get filled on one exchange, you cancel your orders on the other ones. This isn't crazy, this isn't radical, this isn't some nefarious plot. It happens every day in all sorts of markets. I might put my house for sale on three different real estate websites. When it sells on one, I cancel the listing on the other two. No big deal. Or if I am a fisherman in India, I might send my sons to three different markets to sell my catch. When one finds a buyer, he phones the other two and tells them. (http://qje.oxfordjournals.org/content/122/3/879.abstract). This is simple stuff.
In more technical terms, the offers and bids are all bona fide ab initio. They are all bona fide when initiated. When posted, you do actually want to sell or buy at that price. When you get filled at one exchange, circumstances (your inventory) have now changed, and you are entitled to cancel.
Note in my explanation, the market maker isn't front-running, or even back-running, they are just responding to their own personal changes in inventory level (position) that means they can no longer offer those shares at the other exchanges. Electronic market makers may well have sophisticated models that predicts the short term price move causing them to pull orders at other exchanges, but we need not even consider those models to explain this behaviour. Changes in inventory is ample explanation.
Of course, by posting their full available inventory on each exchange, market makers expose themselves to a new risk. Someone might come along at the exact same instant and fill them on every exchange! Then they will be over their limit and massively exposed. Luckily, they have very fast systems and low latency lines to help protect them from this. If they didn't, they would be forced to offer 1/n times their current liquidity, where n is the the number of exchanges. That would suck for all liquidity consumers.
Which brings me to the most amusing part of this whole story, is that when the 'hero' of Flash Boys Brad Katsuyama figured out he could precisely fire off orders so that they hit all exchanges at the same instant in time with his 'thor' program, the SEC came knocking. Because behaviour like that, ambushing market makers on multiple exchanges, could in fact force market makers to offer much less liquidity. I don't have a problem with it, but it amuses me that the supposed hero was the one probably endangering market structure.
With an FTT, that 'tiny' tax is charged indiscriminately all the way through the chain. And passed through the chain to the end consumer. So the market maker pays it twice (in and out of a position) and their margins are razor thin. So spreads will increase by twice the tax for starters. Plus you as end consumer will pay it twice (on buying and selling). So at a bare minimum that 0.1% will be 0.4% for an end consumer. More if more middlemen are involved in the chain, since it just compounds. What are annual returns? 4-8%? So we're talking about the government taking 5-10% of your profits? Does it seem tiny still?
Spoiler: No one will.
Or are they arguing that the government should step in and tell people how to trade?
It is utterly irrelevant that it is being released now. It will be reabsorbed when the forests regenerate. If those trees had died of non-fire causes, they likely would have rotted in the open air and released methane anyway. This is just natural noise in the carbon cycle, which would occur if the human race didn't exist. Global warming is the theory that by digging up FOSSILIZED carbon, that isn't part of the current cycle and releasing it we are forcing the system out of the prevailing equilibrium.
Classic stuff from good old George Moonbat, who is notorious for struggling with the science bit of his job.
All he's done with his analysis is used two thinly disguised proxy variables to hide his true hypothesis, which may very well be a good hypothesis but is unpalatable to discuss in public.
I bet you don't get this bit in return.
So the 17.7% of HFT counterparties squares roughly with 30%+ HFT trades.
See, this is what I never quite understand. I use C++ when I want to do C type things. Manage my own memory. Bit twiddle with speed. Avoid all dynamic allocations. Increase cache coherency. Call inline assembler. Use the CRTP to achieve static polymorphism. Design my own containers. Lock free containers with atomics. Etc. If I'm using C++ I want nastiness. I want to get down and dirty.
Why on earth would you ever want to use it as a higher level lanuage? It sucks balls at that. Just go and use a proper, nice, well designed high level language instead. If I want a language that holds my hand and protects me from the evil pointers, I'm not choosing C++. Using C# or Java (for example) is complete luxury compared to C++.
But apparently, there are a whole bunch of people that do attempt to use C++ for this purpose. Who strive to achieve a language where you never see a raw pointer, but you are still stuck with maybe 30% of the productivity you'd have in a proper higher level language. It boggles my mind. Congratulations, now you have no garbage collection, a crap IDE, you're still wrestling with forward declarations of classes and header files and the preprocessor and linker options and slow compilation and you've now buried the machine under a layer of abstraction. The absolute worst of both worlds.
>brings both the benefits of C-like speed and higher level languages safety.
It doesn't. You end up with neither!
I covered that. If you really, truly, want to sell at any price(and I can't imagine why, that is terrible trading), then you set your limit to zero.
That's all a market order is - a special case of a marketable limit order (immediate or cancel/fill and kill/etc) with the limit set to zero (in the case of a sell) or infinity (in the case of buy).
Banning vanilla market orders just forces people to acknowledge that fact, which is a good thing.
You could carry on trading as you currently are. If a stock is trading $100/$100.1 and you want to buy it ('now' as you say), then just set your limit to $1000.
Of course, you will have no one to blame but yourself if, during the ~50 milliseconds it takes for the order to reach the exchange, the market makers have switched off and you end up crossing a massive spread and buying the only available offer at $600 or something. An incredibly unlikely scenario, but it can happen.
So I imagine you'll set your limit to something sensible, like $101. It'll still get filled 'now' 99.9999% of the time. But you won't be taking the risk of doing something epically stupid. There, that wasn't so hard now was it?
Then when ES and the other futures did unfreeze, they promptly plunged to a second limit down in extremely thin trade. Why so thin? Because when you stop trading, everyone empties out of the orderbook, and they don't necessarily dive straight back in once it unfreezes. Liquidity gradually comes back as participants assess that the price is stable and they can start quoting again.
Monday was not a good day for your argument.
Imagine you have a stop loss, which doesn't trigger, then the market vol interrupts, then the price opens 10% below your stop loss.
Oops, you'd be moaning about that instead.
Erm no. Exhaling it is just part of the carbon cycle, it doesn't make the net level in circulation go up or down, it isn't a sink or a source... the carbon you breathe out doesn't get magicked out of thin air. It comes from the sugars, fats and protein you eat which is then burnt by your body for energy, exhaled, photosynthesized by plants, consumed by animals, and moves on up the food chain where you eat it and we start again. Round and round. That's why they call it a cycle.
Without our intervention the net amount of carbon in the cycle would continue to fall due to weathering of rocks and sequestration beneath the Earth, eventually leading to the extinction of all trees and most (non C4) plant life. Luckily, we're digging it up to restore the carbon cycle to its former glory. I think about 800ppm should be our target.
That is fucking miles away. At the other end, C3 plant life goes extinct if CO2 falls below 250ppm or so? So why don't you alarmists get your knickers in a twist about that "tipping point"?? If we hadn't dug up and put some fossilized carbon back into the carbon cycle (where it bloody well came from in the first place) then we'd be facing that extinction scenario instead.
That is fucking miles away. At the other end, C3 plant life goes extinct if CO2 falls below 250ppm or so? So why don't you alarmists get your knickers in a twist about that "tipping point"?? If we hadn't dug up and put some fossilized carbon back into the carbon cycle (where it bloody well came from in the first place) then we'd be facing that extinction scenario instead.
Best solution is to do most of your work in Q and call into R when you want to use a package. The R integration works well, see http://code.kx.com/wiki/Cookbook/IntegratingWithR.
The reality is that if you are using (and paying for) Q/K, you are likely doing so because you're dealing with billion+ point datasets. At least. R just melts and falls apart at that kind of size (without using native code, which isn't really R then is it?). So I often end up just translating R functions into K equivalent, and just using R for the nice-to-have features like latex/brew/ggplot/etc.