Using quantum entanglement to achieve zero transmission delay, and then only looking at it once every 20 milliseconds? You may as well just use fiber, as half of the time you will still receive information ahead of a polling-based QE system. Now, the benefit for the QE system increases as the fiber distance increases, so your idea still makes sense for mutli-planetary HFT. Just... not between Chicago and New York.
There's no point ot a "high speed link", with all the insanity involved in [FPGAs]
Do that for a day, and then come back and tell us how you fared. Local silicon in New York doesn't do squat when the best information is coming from Chicago, London, or Tokyo.
Holy shit, I would love to have a live feed from the ISS on a 120" TV! That could be good for showrooms, too, to show off fine detail of the Earth's geography from space.
Estimates from my wife place that at approximately one half of a pregnancy, which is not very difficult to achieve. You may want to set your pee-standards higher!
Now profits jump as production triples and the bonuses take his pay to 20 times that of the janitors.
The hot shot CEO will know to take enough to put him to the 12x limit, and then distribute the remainder evenly across the entire company. That is, give everyone a single percentage of his/her salary as a bonus, preserving the 12x ratio. He could conceivably only give the bonus to the lowest-paid employees to maximize his own bonus, but that would alienate the overwhelming majority of the company.
There's no need to raise salaries or wages in order to comply with a relative cap on total compensation. In fact, I think it's pretty irresponsible to raise anyone's salaries based on a windfall year for the company as a whole; precisely for the reasons you specified.
If the compiler decides it can delete a conditional because it's always true or always false, I most certainly do want a warning!
What if the conditional is based on a macro that is user-defined, to enable or disable functionality at compile-time? Or what if the conditional is based on template parameters, for C++? I see those use-cases on a regular basis, and the relevant code depends upon the compiler to properly optimize out the conditional and dead code for performance.
I basically distrust pointers, but especially any pointers on which the user does arithmetic. Some people think that's a snazzy way to move through an array.
In C and C++, all array iteration is pointer arithmetic, so your "some people" is really everyone. Always remember that foo[n] is equivalent to n[foo] is equivalent to *(foo+n).
You're right—I was thinking about Knight's market-making activities (which are HFT), and not their customer execution activities. It's definitely the customer execution activities at fault here.
Hey, that's a great idea. It already exists, but it takes place twice daily: the opening auction and the closing auction on NASDAQ or NYSE. You're welcome to restrict your trading to those auctions.
Tax these millisecond trades and they'd go away or, at least, the volume would drop significantly.
I recommend against that. The profit margin on these "news" style trades is so high that a tax would not impact them. A new tax will reduce volume, but it won't do diddly-squat about this particular issue.
Instead of the paltry fines that the SEC levies on the cheaters, they ought to take the entire transaction away from the guilty party.
Busted trades can hurt the cheaters' counterparties, so you are effectively punishing all market participants by doing this. Better to just force the cheating company to disgorge all profits from the trade. They can keep the position they acquired, but fraudulent proceeds go to the regulatory agency instead.
I wholly disagree. If someone cranks out a lot of buggy code, it's arguable that the functional value of the code is also bundled with a lot of technical debt. So, if you are measuring 10x the functional value, then yes you may have many bugs. But a real productivity metric should account for technical debt, and therefore the hypothetical 10x developers are probably both producing more functional value and fewer bugs. In fact, maybe your best 10x developers are the ones who produce the same functional value as everyone else, but find and preemptively fix bugs like a well-oiled machine.
Have you considered plasma screens? I have a Panasonic VT series, and while it does have built-in speakers, they don't impact the form-factor. IMHO, the only downside is that plasmas can appear too dark in high-light environments, like a living room with a wide-open sun-facing window.
What's happened in recent years that's made market systems more vulnerable?
The creation of a National Market (RegNMS) requires all exchanges to coordinate to ensure that orders only ever execute at/inside the national best bid and national best offer. So now, instead of leaving it to arbitrageurs to keep the markets in line with each other, all exchanges need to send their quotes to the SIP and receive timely quotes from all other exchanges via the SIP. If there is any inter-exchange problem with the SIP (as appears to have happened today), things fall apart. The intent is to protect small investors, but it does come at a cost of fragility.
HFT guys usually go home as close to flat as possible. Even if they are a large portion of the daily trading volume, they have effectively zero long-term ownership, so they don't influence long-term management decisions or valuation for the individual companies they trade.
As a long-time Java programmer who wants to learn/use C++, I'd love to hear your insights, so that I don't appear on your wall of shame.:)
In addition to the other replies, here are a few I have encountered:
Don't overuse dynamic allocation. In Java, this is just "how you use objects". In C++, this is how you separate object lifetimes from the local scope. Most variables have scope-bounded lifetimes, so let the compiler do the work for you.
Don't overuse dynamic polymorphism. All methods are effectively virtual in Java, which IMHO encourages unnecessary class hierarchies. Much high-level logic is not actually polymorphic, so your default approach should be avoidance.
Don't overuse class inheritance. In many situations, aggregations are sufficient, but inheritance is so easy. For example, maybe in a multithreaded app, several key objects need to be locked for access. So they could either inherit from a parent "mutex" class, or they could contain said mutex as a member. The latter should be preferred—even if it requires some inline forwarding-functions—as it more accurately describes ownership to maintenance developers: the mutex belongs to the business object. The BO isn't itself some sub-type of mutex.
Don't use classes as namespaces. If a class is full of static methods and you never actually instantiate the class, then it's a namespace in disguise.
In interface code, prefer forward-declarations of dependencies to #includes. It really helps to keep dependency management under control, which matters due to the nature of the C preprocessor.
Capitalize upon the separation of interface (*.h) and implementation (*.cpp). Since Java uses a single file, it may seem very cumbersome to have to re-declare function signatures and such. However, the benefit is that the implementation can internally #include private utility headers which are completely invisible to downstream developers. Or the implementation can directly contain static global functions and data, again entirely invisible downstream.
If your codebase uses exceptions, learn about exception safety and try to refactor away try blocks. Intermediate layers which catch and then re-throw exceptions are often easier to manage when using RAII "guard" objects to handle exceptional cleanup. Your code can become transactional, with a nonthrowing commit at the end if everything succeeds; or an implicit rollback if any exception is thrown.
He's never even heard of such a thing! Thought it was magic. Grep couldn't have found the method anywhere near as fast, not through 30 million lines of code anyway, and then it would have returned every reference to the method name as well, not just the method definition itself.
A competent vim/emacs developer probably uses etags for indexing identifiers. I agree that grep is a poor, disk-intensive, high-latency tool for this particular job; but it is a straw man.
It's not even a good idea to let developers pick their favorite IDE either, because there are productivity gains to be had from consistency.
Many a whitespace war could be circumvented entirely by forcing a team-wide editor. I've never seen it done, though.
Well, obviously BATS and Direct Edge are not providing an innovative and cheap solution, they are just trying to provide the same service as the big guys, with the same restrictions and overhead.
I'll grant you that they are registered as exchanges, which does add overhead and probably represents a large barrier to entry. But why do you say "obviously"? Their baseline fee structures are cheaper in aggregate than either NYSE or NASDAQ. The last time I checked, their market data access was cheaper, too. They also provide quite a wealth of useful order-entry functionality (including routing), making them good systems for small guys to connect to directly. As I see it, this adds up to providing better service to customers (particularly the little guy). Nothing is revolutionary, but I don't see it as "more of the same".
In fact, BATS doesn't even seem to have their software under control.
I don't blame you for that attitude, because they did get quite a public sting from their botched IPO. But every exchange has had major software problems: NASDAQ's auction process was DoS'ed by an old bug for the Facebook IPO. DirectEdge did a major system upgrade at the same time as they converted from an ECN to an exchange, and they were basically unusable for days. NYSE seems to have regular problems delivering data to the SIPs, to the point that the SEC finally decided to fine them for unfair market access. Nobody in the market has an untarnished history; IMHO, BATS only got egg in their face because the technology problem coincided with their IPO, so all eyes were already on them.
Using quantum entanglement to achieve zero transmission delay, and then only looking at it once every 20 milliseconds? You may as well just use fiber, as half of the time you will still receive information ahead of a polling-based QE system. Now, the benefit for the QE system increases as the fiber distance increases, so your idea still makes sense for mutli-planetary HFT. Just... not between Chicago and New York.
Do that for a day, and then come back and tell us how you fared. Local silicon in New York doesn't do squat when the best information is coming from Chicago, London, or Tokyo.
Holy shit, I would love to have a live feed from the ISS on a 120" TV! That could be good for showrooms, too, to show off fine detail of the Earth's geography from space.
Estimates from my wife place that at approximately one half of a pregnancy, which is not very difficult to achieve. You may want to set your pee-standards higher!
The hot shot CEO will know to take enough to put him to the 12x limit, and then distribute the remainder evenly across the entire company. That is, give everyone a single percentage of his/her salary as a bonus, preserving the 12x ratio. He could conceivably only give the bonus to the lowest-paid employees to maximize his own bonus, but that would alienate the overwhelming majority of the company.
There's no need to raise salaries or wages in order to comply with a relative cap on total compensation. In fact, I think it's pretty irresponsible to raise anyone's salaries based on a windfall year for the company as a whole; precisely for the reasons you specified.
Friends don't let friends generate dynamic SQL. Please use prepared statements!
What if the conditional is based on a macro that is user-defined, to enable or disable functionality at compile-time? Or what if the conditional is based on template parameters, for C++? I see those use-cases on a regular basis, and the relevant code depends upon the compiler to properly optimize out the conditional and dead code for performance.
In C and C++, all array iteration is pointer arithmetic, so your "some people" is really everyone. Always remember that foo[n] is equivalent to n[foo] is equivalent to *(foo+n).
You're right—I was thinking about Knight's market-making activities (which are HFT), and not their customer execution activities. It's definitely the customer execution activities at fault here.
Hey, that's a great idea. It already exists, but it takes place twice daily: the opening auction and the closing auction on NASDAQ or NYSE. You're welcome to restrict your trading to those auctions.
At this point, almost all market-making is HFT.
There is quite a large tail risk in a flu outbreak. three to five percent of the world dead? I'll take my chances with the shot.
I recommend against that. The profit margin on these "news" style trades is so high that a tax would not impact them. A new tax will reduce volume, but it won't do diddly-squat about this particular issue.
Busted trades can hurt the cheaters' counterparties, so you are effectively punishing all market participants by doing this. Better to just force the cheating company to disgorge all profits from the trade. They can keep the position they acquired, but fraudulent proceeds go to the regulatory agency instead.
I wholly disagree. If someone cranks out a lot of buggy code, it's arguable that the functional value of the code is also bundled with a lot of technical debt. So, if you are measuring 10x the functional value, then yes you may have many bugs. But a real productivity metric should account for technical debt, and therefore the hypothetical 10x developers are probably both producing more functional value and fewer bugs. In fact, maybe your best 10x developers are the ones who produce the same functional value as everyone else, but find and preemptively fix bugs like a well-oiled machine.
Have you considered plasma screens? I have a Panasonic VT series, and while it does have built-in speakers, they don't impact the form-factor. IMHO, the only downside is that plasmas can appear too dark in high-light environments, like a living room with a wide-open sun-facing window.
Does it matter? We will seek to preserve ourselves as a species.
I don't have to imagine that, I've seen it. The real problem is the return trip!
The creation of a National Market (RegNMS) requires all exchanges to coordinate to ensure that orders only ever execute at/inside the national best bid and national best offer. So now, instead of leaving it to arbitrageurs to keep the markets in line with each other, all exchanges need to send their quotes to the SIP and receive timely quotes from all other exchanges via the SIP. If there is any inter-exchange problem with the SIP (as appears to have happened today), things fall apart. The intent is to protect small investors, but it does come at a cost of fragility.
HFT guys usually go home as close to flat as possible. Even if they are a large portion of the daily trading volume, they have effectively zero long-term ownership, so they don't influence long-term management decisions or valuation for the individual companies they trade.
I've seen people program with Pico and Nano. Oh, the humanity!
In addition to the other replies, here are a few I have encountered:
A competent vim/emacs developer probably uses etags for indexing identifiers. I agree that grep is a poor, disk-intensive, high-latency tool for this particular job; but it is a straw man.
Many a whitespace war could be circumvented entirely by forcing a team-wide editor. I've never seen it done, though.
I don't understand... are you vehemently agreeing with me?
I think Occam's Razor can be applied here. The world cannot be simple because there are so many opportunities for individuals to introduce complexity.
I'll grant you that they are registered as exchanges, which does add overhead and probably represents a large barrier to entry. But why do you say "obviously"? Their baseline fee structures are cheaper in aggregate than either NYSE or NASDAQ. The last time I checked, their market data access was cheaper, too. They also provide quite a wealth of useful order-entry functionality (including routing), making them good systems for small guys to connect to directly. As I see it, this adds up to providing better service to customers (particularly the little guy). Nothing is revolutionary, but I don't see it as "more of the same".
I don't blame you for that attitude, because they did get quite a public sting from their botched IPO. But every exchange has had major software problems: NASDAQ's auction process was DoS'ed by an old bug for the Facebook IPO. DirectEdge did a major system upgrade at the same time as they converted from an ECN to an exchange, and they were basically unusable for days. NYSE seems to have regular problems delivering data to the SIPs, to the point that the SEC finally decided to fine them for unfair market access. Nobody in the market has an untarnished history; IMHO, BATS only got egg in their face because the technology problem coincided with their IPO, so all eyes were already on them.