GitHub - hudson-trading/inside-at-hrt: Coding exercises for the Inside@HRT event

一、引言

Hudson River Trading(HRT)作为全球顶尖的量化交易公司,其工程文化始终围绕三个核心:正确性(Correctness)、高效性(Efficiency)和可维护性(Maintainability)。本次Workshop通过构建订单簿(Order Book)和匹配引擎(Matching Engine),带我们深入体验高频交易系统的核心逻辑。

二、订单簿(Order Book)设计精要

1. 核心事件处理

订单簿需要处理四类事件:

class Order:
    def __init__(self, order_id, symbol, price, size, is_bid):
        self.order_id = order_id
        self.symbol = symbol
        self.price = price
        self.size = size
        self.timestamp = time.time()  # 时间优先级关键

2. 数据结构设计

from sortedcontainers import SortedDict

class Book:
    def __init__(self):
        self.bids = SortedDict(lambda x: -x)  # 买盘降序排列
        self.asks = SortedDict()              # 卖盘升序排列
        self.orders = {}  # order_id -> Order

3. 回调机制实现

通过订阅模式实现数据流解耦:

def sub_on_inside(self, callback):
    self.callbacks.append(callback)

def _trigger_callbacks(self, symbol):
    for cb in self.callbacks:
        cb(symbol, self.get_best_bid(symbol), self.get_best_ask(symbol))