限價訂單簿

訂單簿與錢包更新

  • May 19, 2015

早上好,

我正在開發自己的證券交易所繫統,並已實施限價單(基本)匹配。該系統只是我自己的DIY解決方案,主要是為了好玩。整個系統使用我自己的文本協議,讓交易者能夠登錄/下訂單/接收通知。這是為 BTC 交換完成的。

然而,當談到交易者錢包的計算時,我被困住了。

我不認為我確切地知道幕後發生了什麼,因此如果有人能為我提供一些啟示,我將不勝感激。

我相信錢包只在 3 個地方更新:

  • 新訂單下達:交易者下訂單時錢包會發生什麼(買/賣)
  • 取消訂單下達:當他下達取消訂單(買/賣)時,交易者錢包會發生什麼
  • 匹配並生成交易(全部/部分) - 兩個交易者的錢包會發生什麼?

我想了解的是,當訂單下達/取消/匹配時,交易者錢包中的 BTC 和美元會發生什麼情況,以及如何處理。

非常感謝您對此的投入。

只有交易會影響帳戶。請參閱下面的範例實現。positionandmoney應該在一開始就被初始化。請注意,它們都quantity可以是正數和負數。

public static class PNL {
   private double position = 0; // number of BTC
   private double money = 0.0; // USD

   public double get_position() {
       return position;
   }

   public void on_execution(double price, double quantity) {
       position += quantity;
       money -= quantity * price;
   }

   public double get_pnl(double current_price){
       return money + position * current_price;
   }
}

下新訂單或修改現有訂單時,會影響賬戶的風險和敞口。風險經理必須驗證,在最壞的情況下,暴露不會違反暴露限制。此外,它需要考慮訂單的 In-Flight 狀態。這是CME 如何管理它的範例。同樣,訂單取消也只影響風險管理。

引用自:https://quant.stackexchange.com/questions/17874