#金融科技 #模拟 #市场模拟器 #交易所模拟器

bin+lib 匹配_引擎

一种使用FIFO或按比例匹配算法匹配订单的匹配引擎。参考 https://corporatefinanceinstitute.com/resources/career-map/sell-side/capital-markets/matching-orders/

9 个版本

0.1.8 2023 年 10 月 9 日
0.1.7 2023 年 10 月 9 日

70金融

每月 45 次下载

MIT/Apache

130KB
1.5K SLoC

一个简单的市场模拟器项目,具有以下功能

  • 接受订单
  • 从文件接受订单
  • 使用 FIFO 匹配器或按比例匹配器匹配订单(https://corporatefinanceinstitute.com/resources/career-map/sell-side/capital-markets/matching-orders/)

模块匹配引擎是后端引擎,具有所有匹配功能,带有 CLI。

匹配引擎

匹配引擎公开了创建订单簿并将其匹配以生成执行或填充所需的 API。典型用例将是从包含订单的文件创建订单簿,每个订单一行,如下所示,然后使用匹配引擎运行匹配算法。有关订单格式,请参阅 CLI 部分。


use matching_engine::common::utils::{create_order_book, read_input};
use matching_engine::matchers::fifo_matcher::FIFOMatcher;
use matching_engine::matchers::matcher::Matcher;

let input = read_input("test_data/orders.txt");
let mut order_book = create_order_book(input);
//create a matcher
let mut matcher = FIFOMatcher;// or Prorata Matcher // match the order book with the matcher to produce executions let mut fills = matcher.match_order_book(&mut order_book);

API 发布在 https://crates.io/crates/matching_engine

CLI

代码库还包含一个 CLI 接口,可以按照以下方式执行

执行 cargo run -- -h 或

matching_engine -h 获取完整的用法帮助

示例

对于以下订单文件

id1 IBM 300 602.5 买入
id2 IBM 300 602.5 卖出
id3 IBM 100 602.5 买入
id4 IBM 100 602.5 卖出
id5 IBM 300 602 买入
id6 IBM 300 601.9 买入
id4 IBM 100 602.1 卖出

执行 cargo run -- prorata_test_data/orders.txt 将生成以下输出

如果我们使用 ProrataMatcher 执行此命令

执行 cargo run -- prorata_test_data/orders.txt PRO 将生成以下输出

依赖关系

~6–16MB
~183K SLoC