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),带我们深入体验高频交易系统的核心逻辑。
订单簿需要处理四类事件:
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() # 时间优先级关键
orders
以O(1)复杂度快速检索bids
/asks
维护价格队列from sortedcontainers import SortedDict
class Book:
def __init__(self):
self.bids = SortedDict(lambda x: -x) # 买盘降序排列
self.asks = SortedDict() # 卖盘升序排列
self.orders = {} # order_id -> Order
通过订阅模式实现数据流解耦:
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))