【问题标题】:Which are the order matching algorithms most commonly used by electronic financial exchanges?电子金融交易所最常用的订单匹配算法有哪些?
【发布时间】:2012-10-18 04:52:04
【问题描述】:

电子金融交易所最常用的订单匹配算法有哪些? 某处是否有订单匹配算法列表?

【问题讨论】:

    标签: algorithm finance


    【解决方案1】:

    一般来说,有两组匹配算法,一组用于市场的每一种状态:

    • 持续交易
    • 拍卖

    竞价交易的算法种类繁多,可在开市前、收市时等使用。但大多数情况下,市场会进行连续交易。因此,我将在这里进入后一类。

    最常用的是价格/时间优先Pro-Rata。两者都针对各种类型的产品和用例进行了调整和扩展,但为简洁起见,我将在这里只解释基础知识。


    价格/时间优先,又名 FIFO,确保

    同一价位的所有订单均按时间优先成交;价格水平的第一个订单是第一个匹配的订单。

    说订单簿,按价格和时间排序如下:

    Id   Side    Time   Qty   Price   Qty    Time   Side  
    ---+------+-------+-----+-------+-----+-------+------
    #3                        20.30   200   09:05   SELL  
    #1                        20.30   100   09:01   SELL  
    #2                        20.25   100   09:03   SELL  
    #5   BUY    09:08   200   20.20                       
    #4   BUY    09:06   100   20.15                       
    #6   BUY    09:09   200   20.15                       
    

    注意:按时间排序的顺序是买方订单升序,卖方订单降序,因此优先级最高的订单始终在中心,优先级向外递减(向上或向下,取决于边)。

    现在想象一个新的限价单“在 20.35 买入 250 股”进来,然后它会被执行,顺序如下:

    1. 20.25 时 100 股(订单 #2)
    2. 20.30 时 100 股(订单 #1)
    3. 20.30 50 股(订单#3)

    这会使订单簿处于以下状态:

    Id   Side    Time   Qty   Price   Qty    Time   Side  
    ---+------+-------+-----+-------+-----+-------+------
    #3                        20.30   150   09:05   SELL  
    #5   BUY    09:08   200   20.20                       
    #4   BUY    09:06   100   20.15                       
    #6   BUY    09:09   200   20.15                       
    


    Pro-Rata 忽略下订单的时间,并根据订单的相对数量以价格水平为所有订单分配成交数量。再拿上面的初始订单簿,让我们匹配相同的“buy 250@20.35”订单。

    填充将是:

    1. 100@20.25(订单#2,留下150)
    2. 50@20.30(订单 #1,150 x 1/3 = 50)
    3. 100@20.30(订单 #3,150 x 2/3 = 100)

    像这样留下以下订单:

    Id   Side    Time   Qty   Price   Qty    Time   Side  
    ---+------+-------+-----+-------+-----+-------+------
    #3                        20.30   100   09:05   SELL  
    #1                        20.30    50   09:01   SELL  
    #5   BUY    09:08   200   20.20                       
    #4   BUY    09:06   100   20.15                       
    #6   BUY    09:09   200   20.15                       
    


    CME 小组提供了他们使用的list of matching algorithms,以及每个人的描述链接。

    更多信息,您可能还想查看Rajeev's pages上的“订单匹配”相关文档。

    【讨论】:

    • 谢谢。我从你的描述中理解了发生了什么,但我对表格有点困惑——例如在第一个表中,为什么在按价格和时间排序时,在订单 #1 之前显示订单 #3?我猜左边两列是买单,右边两列是卖单?
    • 是买入还是卖出暗示在表的哪一边 QtyTime 在,但我添加了买入/卖出指示表使其立即显而易见。我使用 id 只是为了让您可以在不同表之间关联订单。我选择了 ids 来反映订单的提交时间(-> Time 列)。
    • 感谢您的改进,但我不得不说我仍然对行排序感到困惑。据我了解,您是按价格排序,然后按时间排序,因此所有相同价格的订单都应按时间递增顺序出现。所以根据我的说法,#4 正确地在 #6 之前,因为它们的价格相同,而 #4 首先出现;但后来我希望#1 在 #3 之前,因为它们的价格相同并且它首先发生(#1 为 9:01,#3 为 9:05)。 #1 怎么会出现在 #3 之后?
    • 时间排序有点混乱,我同意。我在回答中添加了以下评论:NB: The order for sorting by time is ascending for sell-side orders and descending for buy side order, so that the order with the highest priority is always in the center and priorities decrease outwards (up or down, depending on the side).
    • Rajeev 的页面在回程机器中,但所有 PDF 都丢失了。有人有吗?
    【解决方案2】:

    通常他们使用先进先出类算法,因为它们最大化有效订单的数量。

    每个交易所都有自己的一套规则,这些规则在他们的网站上进行了解释。 这个here 就是一个例子。

    【讨论】:

    猜你喜欢
    • 2010-12-18
    • 2010-12-21
    • 1970-01-01
    • 2017-09-19
    • 2021-03-11
    • 2011-01-17
    • 2010-11-21
    • 1970-01-01
    • 2013-11-21
    相关资源
    最近更新 更多