- Another protocol that's not mentioned is PPS and its variants, such as WhiteRabbit.
A regular pulse is emitted from a specialized high-precision device, possibly over a specialized high-precision network.
Enables picosecond accuracy (or at least sub-nano).
- There is a low-latency study group at the C++ standards committee, but most of the proposals coming from there where new libraries of limited value to the standard at large.
There is a large presence from the trading industry, less from gaming but you still see a lot of those guys.
- You don't necessarily need to lay out your data in arrays to use SIMD, though it certainly makes things more straightforward.
- Perl is obsolete and was replaced by Python for all usages in practice.
- It's still lacking content that goes before/after the output.
Just write a Python script that does the whole thing.
- surely the preprocessor method doesn't work in the general case, since the data can contain commas or parentheses.
Regardless all of the methods suggested are terrible. If you don't have access to #embed, just write a trivial python script.
- I just turn off trackpads, I'm not interested in that kind of input device, and any space dedicated to one is wasted to me. I use nibs exclusively (which essentially restricts me to Thinkpads).
My arms rest on the body, the last thing I want is for it to be a material that leeches heat out of my body or that is likely to react with my hands' sweat and oils.
- why would you want a laptop being made of metal?
it's a stylistic choice, not a logical one.
- I never understood why people claim the Macbook is so good.
Bad keyboard, bad aluminium body, soldered ram...
Is it just the Apple Silicon that somehow makes it worth it? It's ARM, most software is still written and optimized for x86.
- That's Milan to Amsterdam though. Aren't there some mechanisms to have a handoff as close to Milan as possible?
I was pretty sure there was a way to have something that's just a fixed cost, maybe with a partner third party service.
- Just waiting for a MTU-sized frame to come in through the network at 10Gbps is 1.2us.
Reacting to incomplete frames in software is possible, but realistically at this point just use FPGAs already.
- Some comments from skimming through the code:
- spin loop engine, could properly reset work available before calling the work function, and avoid yielding if new work was added in-between. I don't see how you avoid reentrancy issues as-is.
- lockfree queue, the buffer should store storage for Ts, not Ts. As it is, looks not only UB, but broken for any non-trivial type.
- metrics, the system seems weakly consistent, that's not ideal. You could use seqlocks or similar techniques.
- websocket, lacking error handling, or handling for slow or unreliable consumers. That could make your whole application unreliable as you buffer indefinitely.
- order books; first, using double for price everywhere, problematic for many applications, and causing unnecessary overhead on the decoding path. Then the data structure doesn't handle very sparse and deep books nor significant drift during the day. Richness of the data is also fairly low but what you need is strategy-dependent. Having to sort on query is also quite inefficient when you could just structure your levels in order to begin with, typically with a circular buffer kind of structure (as the same prices will frequently oscillate between bid and ask sides, you just need to track where bid/ask start/end).
- strategy, the system doesn't seem particularly suited for multi-level tick-aware microstructure strategies. I get more of a MFT vibe from this.
- simulation, you're using a probabilistic model for fill rate with market impact and the like. In HFT I think precise matching engine simulation is more common, but I guess this is again more of a MFT tangent. Could be nice to layer the two.
- risk checks, some of those seem unnecessary on the hot path, since you can just lower the position or pnl limits to order size limits.
- Those numbers seem to be TSC sampled in software from the moment it receives a full frame to the moment it starts sending a packet.
The traditional way to measure performance in HFT is hardware timestamps on the wire, start of frame in to start of frame out.
With those measurements the performance is probably closer to 2us, which is usually the realistic limit of a non-trivial software trading system.
- There are times where a big company needs to build something new (albeit within a constrained ecosystem and a very narrow swimming lane).
To do so, one good way is to hire the experts of that domain that have built it before. That can mean acquiring a small specialized company, or simply hiring its top talent.
You could also repurpose your existing staff, but a big company is unlikely to have a lot of "builders", as most of its staff is just iterating and maintaining things others have built a decade ago. You probably still want to have some of those people in the team anyway, for integration purposes.
- Big Tech are large organizations with different needs than that of small organizations.
They care about setting standards over widely different teams and managing large-scale upgrades etc.
It's not optimized for velocity or cost efficiency, which is what a smaller organization needs.
- It is quite common for CTOs of smaller companies to be hired as team leaders into bigger companies; nothing wrong with that.
- Personally, I write my own build systems.
Any readily available build system is more of a meta-language onto which you code your own logic, but with limited control and capabilities. Might as well take control of the whole stack in a real programming language.
Building my own build system lets me optimize my workflow end-to-end, from modular version management, packaging and releasing, building and testing, tightly integrating whatever tool or reporting I want, all seamlessly under the same umbrella.
I mostly do C++, Assembly, eBPF, Python (including C++ Python modules), and multi-stage codegen on Linux, so I haven't really looked at the complexity of other languages or platforms.
- To my knowledge direct connect is a fixed cost, as is running your own dedicated infrastructure, so you don't pay for bandwidth.
- The X1 Carbon is fine, not sure what is wrong with the 2k IPS display.
Do you need 4k for a 13 inch laptop?
Turns out that a lot of code is fine with this. Some parts of the industry still have more stringent standards however.