Building a Financial Exchange from first principles
18 hours ago
- #financial-exchange
- #high-frequency-trading
- #system-design
- 速度与简洁很少并存,但 farzi.exchange 旨在从其第一原理构建的模拟股票交易所中实现这两者。
- 金融交易所的核心是通过订单簿和匹配算法来匹配订单,其规则确保确定性和公平性。
- farzi.exchange 是一个价格时间优先交易所,根据价格和时间匹配订单,平局时考虑披露数量或订单规模。
- 关键订单类型包括限价订单、市价订单和冰山订单,每种都服务于不同的交易目的和场景。
- 交易所架构包括每个交易品种使用并行 goroutine 的匹配引擎,以及使用二叉树实现速度优化的内存订单簿。
- 发射器将事件扇出到消费者,聚合器从交易生成K线图,持久化层将数据异步存储在 PostgreSQL 中。
- 市场数据层通过 websocket 提供实时数据,通过 API 提供历史数据,使用 CQRS 分离以实现可扩展性。
- 做市商角色(Farzi Maker、Seth、Scalper、Gambler)在缺乏真实交易者时提供流动性和价格变动。
- Farzi 10 指数根据底层交易品种的价值计算,每笔交易后更新并以 100 毫秒间隔采样。
- 该交易所一天处理了超过 2800 万笔交易和 1.22 亿个订单,客户端部署在 Vercel,后端托管于 AWS,显示出显著的可扩展性。