Closeout Agent

Any on-chain actor with an associated margin account can initiate the Final Settlement Process for a Product, once the product is in the FINAL_SETTLEMENT state. Such an on-chain actor is termed a “Closeout Agent”.

A Closeout Agent initiates the Final Settlement Process by calling the

Clearing System’s initiateFinalSettlement(..) method with _Closeout

Data_. Closeout Data consists of an array of addresses denoting a set of MAs that (1) each have a non-zero position in the product and (2) collectively offset each other (i.e., the sum of their position sizes is 0).

When a Closeout Agent calls initiateFinalSettlement(..), the Clearing System performs the Final Settlement Process Checks:

  1. For each account in Closeout Data, fetch the account’s position quantity Q:
  1. If checksum == 0, proceed to the Final Settlement Closeout; if it does not, the checks fail and the process is aborted.

Final Settlement Closeout executes as follows:

The product will transition from FINAL_SETTLEMENT state to EXPIRED state if the open interest in the product is zero; otherwise, the product remains in FINAL_SETTLEMENT state.

initiateFinalSettlement(..) can be called multiple times whilst the open interest is non-zero.

Notes:

(CLOSEOUT_FEE_RATE - CLOSEOUT_REWARD_RATE) * POINT_VALUE * FSP * OPEN_INTEREST * 2