如何根据证券交易所的订单簿计算资产价格?

How is the asset price calculated from the order books in the stock exchange?

我想使用 C# 编程语言创建证券交易所模拟。但是我无法决定如何指定资产的价格。

例如,下面的table是一个资产的订单簿:

Buy                                 Sell             
-----------------------------       ----------------------------
ID   Time       Size    Price       ID  Price   Size    Time    
4    8:00:04    250     100         1   101     750     8:00:01 
6    8:00:10    500     100         5   101     500     8:00:05 
2    8:00:01    750     97          8   101     750     8:00:30 
7    8:00:10    150     96          3   102     250     8:00:02 

最简单的订单簿匹配算法是价格-时间-优先算法。也就是说匹配的优先级是价格,然后是时间。提供最优惠价格和早到的参与者将获得奖励。

每种资产在证券交易所都有当前价格。但是我怎样才能计算出这个资产的价格呢?有什么算法吗?

交易所通常会显示 'top of the book',显示最佳出价(有人愿意购买的最高价格)和要价(有人愿意出售的最低价格)。

如果您看到提供单一价格的交易所,它是通过以下两种方式之一得出的:

  • 若有近期(有效)交易,则为最后成交价
  • 否则为参考价

什么是参考价?

大多数股票和衍生品交易所都为每本书保留一个参考价。这用于防止接受与参考价格相差太远的订单 - 即 'extreme trading range'.

参考价通常设置为当日最后成交价,但在交易发生前如何设置?

参考价通常在每次交易重置后(例如一天的开始、一周的开始或新书的开始)确定为以下优先顺序之一:

  1. 在初始拍卖期间发现的价格(通常仅在股票市场)
  2. 如果没有拍卖,则最后交易(或结算,取决于市场)价格
  3. 使用另一个市场运营商的价格运行购买同一本书
  4. 或者市场运营商可以使用自己的 'reasonable' 方法来确定参考价格,例如新证券的初始上市

如何应用?

因此,如果您想在 BTC 中设置一个新的 'current price' 但您的账簿上还没有任何交易,那么因为 BTC 已经被广泛交易,您可以:

  1. 使用您运行宁
  2. 的货币对在币安上的最后交易价格
  3. 从其他人 运行 的多本 BTC 书籍中取最后价格的平均值或中位数
  4. 手动设置一些您认为会同时吸引买卖双方的价格