首页 > 解决方案 > 资产价格是如何从证券交易所的订单簿中计算出来的?

问题描述

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

例如,下表是资产的订单簿:

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 

最简单的订单簿匹配算法是价格时间优先算法。这意味着匹配的优先级首先是价格,然后是时间。参与者因提供最优惠的价格和早到而获得奖励。

每项资产在证券交易所都有一个当前价格。但是我如何计算这个资产的价格呢?有什么算法可以解决这个问题吗?

标签: algorithmfinancestock

解决方案


交易所通常会显示“书的顶部”,显示最佳出价(某人愿意购买的最高价格)和要价(某人愿意出售的最低价格)。

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

  • 如果有最近(有效)的交易,那么它是最后的交易价格
  • 否则为参考价

什么是参考价?

大多数股票和衍生品交易所对每本书都有一个参考价格。这用于防止接受与参考价格相差太远的订单 - 即“极端交易范围”。

通常参考价格设置为当天的最后交易价格,但在任何交易发生之前,它是如何设置的呢?

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

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

如何应用这个?

因此,如果您想在 BTC 中设置一个新的“当前价格”,但您的账簿上还没有任何交易,那么由于 BTC 已经广泛交易,您可以:

  1. 使用您正在运行的货币对在 binance 上交易的最后价格
  2. 从其他人经营的多本 BTC 账簿中取最后价格的平均值或中位数
  3. 手动设置一些您认为会吸引买家和卖家的其他价格

推荐阅读