Computer Configuration for Trading

Market data, Trading, Technical support, Features requests, etc
dpless01
Posts: 2
Joined: Mon Apr 06, 2020 5:12 pm
Been thanked: 1 time

Computer Configuration for Trading

Post by dpless01 » Thu May 14, 2020 12:37 am

Hello everyone. During the Live Order Flow Advanced Analysis webinar today (5/13), Bruce and I had a brief discussion about my computer setup for trading. The specs for my machine are shown below. I currently run Bookmap, Thinkorswim, Tradeovate, and Chrome while trading. I am in the process of switching brokers so I can trade directly from Bookmap. When the transfer is complete, I will be running R Trader Pro instead of Tradeovate. My computer runs these programs and drives two 4k monitors without breaking a sweat. My Internet connection is 1 GB fiber. Hope this helps anyone who is considering a new computer for trading.

Chassis Model: Digital Storm Velox
Processor: AMD Ryzen 9 3900X (12-Core) 4.6 GHz Turbo
Motherboard: ASUS PRIME X570-PRO (AMD X570 Chipset) (Up to 3x PCI-E Devices)
System Memory: 64GB DDR4 3200MHz Digital Storm Performance Series
Power Supply: 850W EVGA 850 GQ (Modular) (80 Plus Gold)
Storage Set 1: 1x SSD M.2 (1TB Samsung 970 EVO PLUS) (NVM Express)
Graphics Card(s): 1x GeForce RTX 2070 SUPER 8GB (VR Ready)
Sound Card: Integrated Motherboard Audio
HPC Processor: - No Thanks
Extreme Cooling: H20: Stage 2: Digital Storm Vortex Liquid CPU Cooler (Dual Fan) (Fully Sealed + No Maintenance)
Cable Management: Premium Cable Management (Strategically Routed & Organized for Airflow)
Chassis Fans: Standard Factory Chassis Fans
Operating System: Microsoft Windows 10 Professional (64-Bit Edition)

Svyatoslav
Site Admin
Posts: 72
Joined: Mon Jun 11, 2018 11:44 am
Has thanked: 2 times
Been thanked: 7 times

Re: Computer Configuration for Trading

Post by Svyatoslav » Thu May 14, 2020 3:18 pm

Hi. First of all - nice build! It's above what bookmap needs right now, but we are slowly working on multi-threading improvements, so eventually bookmap should be able to fully benefit from that. Also it's good for running many apps in parallel.

However I'd like to provide a bit of input on the subject, mostly for others who might be considering a build and would like to cut the cost down a bit:
- Bookmap is not multithreaded to a point where it can utilize all your cores just yet. Right now there are tasks that are paralleled well, but there are also tasks that are basically single-treaded. So a thing to consider is single thread performance. We are slowly working on it, but at this point - do not expect Bookmap to scale with the number of cores that well (maybe up to 4 cores/8 threads it's pretty noticeable, not so much past that). That being said, since you will be running multiple apps in parallel - you still might benefit from extra cores since bookmap won't be starved of resources.
- SSD is a nice thing to have, NVME one is not a must though. Bookmap isn't usually bottlenecked by IO on SATA SSD's (it can be bottlenecked by HDD's though). Neat trick: only Cache folder really needs to be on SSD. If you want you can move other folders to HDD by creating junctions (https://docs.microsoft.com/en-us/window ... nds/mklink) in Windows. Not sure if symlinks work with Bookmap in Linux/MacOS, in theory those should, bit if not - "bind mount" should work almost for sure.
- GPU isn't that important for Bookmap. By itself BM does not utilize it too much, so even lower end cards will usually do (just don't go too low; something like GTX 1060 should probably be fine), as long as drivers are good. Better GPU won't hurt, but probably won't accelerate Bookmap either. Though I'm not an expert on running multiple large monitors, so maybe in that case GPU matters more.
- about the network - first of all you need low latency and low package loss. You will rarely exceed 100MBit with Bookmap (well, maybe when fetching historical data you might, but not when streaming data), and usually speed at which bookmap gets data will get limited by package loss and latency long before it gets limited by your network bandwidth.

Also, kind of a personal opinion on water cooling - as long as you don't intend to do overclocking and have space in the case for a big air cooler - I recommend to always go for air cooler. Water coolers are nice if you need to move a lot of heat but don't have much space near CPU, but they are usually more expensive and louder. GPU water cooling on the other hand actually does make sense (exactly because of "not much space and a lot of heat" part), but is usually hard to do and doesn't really help Bookmap.

latnemele
Posts: 5
Joined: Wed May 13, 2020 12:27 am
Has thanked: 4 times

Re: Computer Configuration for Trading

Post by latnemele » Fri May 15, 2020 12:43 am

Thank you for the detailed response Svyatoslav! I'm building a PC right now, and I still haven't decided how much memory I should use for it, can you tell me what you think? I'll use a ryzen 5 3600x, nvidia 1070 ti, samsung nvme all in a mesh airflow case, I don't think the rest of the components really matter here.
I'll be subscribed to 6-8 different CME instruments in bookmap, and doing some web browsing on the side. I've settled on 32gb 3200hz, but I'd like to hear your input.

I know that I can set the amount of memory bookmap uses, can you please tell me what the sweet spot of GB per instrument is? Will the larger amount of memory dedicated to bookmap lead to significantly longer JVM pauses?

Svyatoslav
Site Admin
Posts: 72
Joined: Mon Jun 11, 2018 11:44 am
Has thanked: 2 times
Been thanked: 7 times

Re: Computer Configuration for Trading

Post by Svyatoslav » Fri May 15, 2020 8:02 am

Hi.
32 GiB should be plenty, in most cases. Bookmap itself, as you correctly mentioned, will follow what you set + a bit of memory for the native code on top of that. However it uses memory mapped files for caches, and OS will actually use your free RAM for those memory mapped files (it will free RAM automatically if it starts getting low - it's just that as long as there is unused memory you'll get small boost because caches won't have to be read from disk) - you actually don't have to worry about it much because the boost is pretty small, but you might see that behavior in task manager.
16GiB is most likely enough for Bookmap + browser (with reasonable number of tabs open) + OS, but if you start running more stuff in parallel you might feel the limitations.

About memory allocation settings - I'd set it to 4GiB (which should be a default if you have 16+ GiB of RAM) and not change it unless you start seeing issues. Without external modules (and with external modules that are not too memory hungry) you should be fine with 4GiB for JVM. About GC pauses - we currently use "G1 GC" which is supposed to minimize pauses reasonably well, so it probably isn't going to be a big deal. We didn't do any extensive testing with heap size beyond 4GiB, since typically it isn't something you'll need, but we have a few clients reporting that it works fine with 8GiB max heap size (that being said - java won't always used allowed maximum, so it's possible that it doesn't really get to 8GiB heap in those cases).

Post Reply