- History of Market and trading: https://youtu.be/DLg5tyxmXqQ?si=kqaQc9xvFzJwk_r4
- Varsity by Zerodha
- Goldman Sach Hackathon - 2024
- Why and How doing nothing is better
- The Sharpe Ratio Explained (by a quant trader)
- Coding Jesus Videos - Youtube
- TradeMath - leetcode for Quant
Conf videos on youtube
HRT
IMC
IMC Lauchpad Program: https://www.imc.com/in/careers/students-graduates/programs/launchpad
Meetup:
- The evolving search for modern API’s in Boost
- Conan C++ package manager
- A story of one Exception
- The Curious symbiosis between C++ and the Linker
- Going NATS
Books
Research Papers/Articles:
- Apr 2019: ABIDES: TOWARDS HIGH-FIDELITY MARKET SIMULATION FOR AI RESEARCH
- Sep 2023: C++ design patterns for low-latency applications including high-frequency trading
- Quant firms types and other relevant details
- HRT Summer Interns projects: https://www.hudsonrivertrading.com/hrtbeat/intern-spotlight-software-engineering-summer-projects/
- https://www.hudsonrivertrading.com/hrtbeat/intern-spotlight-hrt-ai-labs-project/
- The empirical work presented in the blogpost is very interesting (congrats to all involved). I want to add to the discussion by mentioning that diffusion models will always under-characterize tail probabilities when your target (e.g. equity returns) is heavy-tailed. This is a mathematical result proven in our recent paper (Tam and Dunson https://arxiv.org/abs/2501.07763)
- https://www.hudsonrivertrading.com/hrtbeat/intern-spotlight-hrt-ai-labs-project/
Basics GK
Data are of two types Quantitative and Qualitative
- Quantitative ⇒ you can measure ⇒ Finance is all about numbers ⇒ Quant Finance ⇒ Data-driven, analytical, model-based Important considering factor for Venture capitals, Investors etc.
- Qualitative ⇒ subjective factors like management quality, brand value, regulatory risks, and macroeconomic trends Important considering factor for Private equity, Risk management, HFT, asset pricing etc.
Foundation (CPU/Hardware)
- CPU cache hierarchy (L1/L2/L3)
- Cache lines and alignment
- Cache coherency (MESI/MOESI)
- False sharing
- True sharing and cache bouncing
- Memory barriers and fences
- Store buffers and load buffers
- Write-combining
- Branch prediction (static/dynamic)
- Instruction pipelining
- Out-of-order execution
- Speculative execution
- SIMD basics (SSE, AVX, NEON)
- Prefetching (hardware/software)
- TLB (Translation Lookaside Buffer)
- Page faults and memory paging
- NUMA topology and awareness
- CPU affinity and core pinning
- Hyper-threading effects
Memory & Data Structures
- Memory layout and padding
- Struct packing and alignment
- Pointer aliasing
- Temporal/spatial locality
- Working set size
- Cache line coloring
- Ring buffers
- Circular queues
- Lock-free queues (MPMC, SPSC)
- Skip lists (lock-free variants)
- Hash tables (concurrent)
- Memory pools and pre-allocation
- Object reuse patterns
- Disruptor pattern
- Bounded queues vs unbounded
Synchronization & Concurrency
- Atomics (compare-and-swap, load/store)
- Memory ordering (acquire/release/relaxed)
- Spinlocks vs mutexes
- Reader-writer locks
- Condition variables
- Semaphores
- Lock-free vs wait-free
- ABA problem
- Acquire/release semantics
- Sequential consistency
- Double-checked locking
- Seqlock pattern
Threading & Scheduling
- Thread creation overhead
- Thread pooling
- Work stealing
- Thread affinity pinning
- NUMA-aware scheduling
- Real-time scheduling (SCHED_FIFO/SCHED_RR)
- CPU isolation (isolcpus)
- Context switching costs
- Jitter sources
- Priority inversion
- Busy-wait loops
- Backpressure strategies
I/O & Networking
- Polling vs interrupts
- Interrupt coalescing
- Socket options (TCP_NODELAY, SO_REUSEADDR)
- UDP vs TCP tradeoffs
- Non-blocking I/O
- epoll/kqueue/IOCP
- Event-driven architecture
- Reactor pattern
- Proactor pattern
- Zero-copy (sendfile, mmap, io_uring)
- RX/TX ring buffers (NIC level)
- DPDK basics
- Kernel bypass
- Packet filtering/XDP
System Calls & OS Interaction
- Syscall overhead
- Avoiding syscalls
- Batch syscalls
- vDSO (virtual dynamic shared object)
- Read/write/mmap syscalls
- mlock/mlockall
- Process vs thread creation
- Signal handling in low-latency code
Profiling & Analysis Tools
- perf (Linux performance counters)
- Flamegraphs
- VTune (Intel)
- Cachegrind/Callgrind
- Strace syscall tracing
- ltrace library tracing
- GDB debugging
- Valgrind/Helgrind
- ThreadSanitizer
- CPU cycle counting (RDTSC)
- Microbenchmarking frameworks
- Statistical significance in benchmarks
- Variance and tail latency analysis
- Load testing tools
C++ Specific
- Move semantics and RVO
- RAII and scope guards
- Smart pointers (unique/shared)
- Noexcept and exception safety
- Constexpr and compile-time computation
- Templates and specialization
- SFINAE and concepts
- Variadic templates
- Inline assembly (asm)
- Compiler intrinsics (_builtin*)
- Volatile and compiler barriers
- Undefined behavior pitfalls
- Aliasing rules
- Link-time optimization (LTO)
- Profile-guided optimization (PGO)
Rust Specific
- Ownership and borrowing semantics
- Send/Sync traits
- Interior mutability (Cell/RefCell/Atomic)
- Async/await for systems
- Tokio/async-std runtimes
- Crossbeam (threading/concurrency)
- Parking lot mutexes
- Unsafe code and correctness
- Inline assembly in Rust
- SIMD in Rust (packed_simd, std::simd)
Design Patterns & Architecture
- Ring buffer patterns
- Event sourcing
- Command pattern
- Observer pattern
- Pub-sub architectures
- Pipeline patterns
- Batching for throughput
- Backpressure handling
- Graceful degradation
- Circuit breakers
- Rate limiting
Benchmarking & Validation
- Microbenchmarking methodology
- Cold vs warm cache testing
- Variance measurement
- Reproducibility
- Tail latency percentiles
- Throughput vs latency tradeoffs
- Load generation
- Stress testing
- Long-running stability tests
- Regression testing
Real-world HFT/Low-Latency Specifics
- Order matching engines
- Market data processing
- Serialization formats (FIX, protobuf, flatbuffers)
- Time synchronization (NTP, PTP)
- Latency budgets
- Jitter quantification
- Tick-to-trade timing
- Colocation considerations
- Network latency measurement
- Hardware clocking
Build & Deployment
- CMake/Bazel build optimization
- Compiler flags for performance
- Static vs dynamic linking
- Code generation options (-O3, -march, etc)
- Stripping/dead code elimination
- Docker for reproducibility
- Linux container tuning
- Kernel parameters (sysctl)