diff --git a/protocol/0016-PFUT-product_builtin_future.md b/protocol/0016-PFUT-product_builtin_future.md index e1b4444ac..aef2f9b70 100644 --- a/protocol/0016-PFUT-product_builtin_future.md +++ b/protocol/0016-PFUT-product_builtin_future.md @@ -80,7 +80,8 @@ If `max_price` is specified, mark price candidates greater than `max_price` shou If `max_price` is specified: - When `binary_settlement` parameter is set to `false` any value `0 <= settlement_price <= max_price` should be accepted as a settlement price. -- When `binary_settlement` parameter is set to `true` only `settlement_price=0` or `settlement_price=max_price` should be accepted. +- When `binary_settlement` parameter is set to `true` AND the market has been [suspended with a governance vote](./0028-GOVE-governance.md#62-suspend-the-market) any value `0 <= settlement_price <= max_price` should be accepted as a settlement price. This is needed to allow community to close the markets which never reach their termination in orderly fashion, when a price that's considered "fair" may be neither `0` nor `max_price`. +- When `binary_settlement` parameter is set to `true` AND the trading termination was triggered only `settlement_price=0` or `settlement_price=max_price` should be accepted. - Any other values get ignored and market does not settle, instead it still waits for subsequent values from the settlement oracle until a value which passes the above conditions arrives. ## 3. Binary options @@ -118,7 +119,10 @@ Optional parameters: 1. When `max_price` is specified and the market is setup to use oracle based mark price and the value received from oracle is greater than `max_price` then it gets ignored and mark-to-market settlement doesn't occur until a mark price candidate within the `[0, max_price]` range arrives. (0016-PFUT-017) 1. When `max_price` is specified and `binary_settlement` flag is set to `false`, and the final settlement price candidate received from the oracle is less than or equal to `max_price` then it gets used as is and the final cashflows are calculated according to that price. (0016-PFUT-018) 1. When `max_price` is specified and the final settlement price candidate received from the oracle is greater than `max_price` the value gets ignored, next a value equal to `max_price` comes in from the settlement oracle and market settles correctly. The market behaves in this way irrespective of how `binary_settlement` flag is set. (0016-PFUT-019) -1. When `max_price` is specified, the `binary_settlement` flag is set to `true` and the final settlement price candidate received from the oracle is greater than `0` and less than `max_price` the value gets ignored, next a value of `0` comes in from the settlement oracle and market settles correctly. (0016-PFUT-020) +1. When `max_price` is specified, the `binary_settlement` flag is set to `true`, the trading termination trigger has been successfully received and the final settlement price candidate received from the oracle is greater than `0` and less than `max_price` the value gets ignored, next a value of `0` comes in from the settlement oracle and market settles correctly. (0016-PFUT-020) +1. When `max_price` is specified, the `binary_settlement` flag is set to `true`, the market has been suspended via governance and another governance vote proposes to terminate the market, the termination price which is greater than `0` and less than `max_price` gets accepted and the market settles correctly. (0016-PFUT-029) +1. When `max_price` is specified, the `binary_settlement` flag is set to `true`, the market has been suspended via governance and another governance vote proposes to terminate the market, the termination price which is equal to `0` gets accepted and the market settles correctly. (0016-PFUT-030) +1. When `max_price` is specified, the `binary_settlement` flag is set to `true`, the market has been suspended via governance and another governance vote proposes to terminate the market, the termination price which is equal to `max_price` gets accepted and the market settles correctly. (0016-PFUT-031) 1. When `max_price` is specified and the market is ran in a fully-collateralised mode and it has parties with open positions settling it at a price of `max_price` works correctly and the sum of all final settlement cashflows equals 0 (loss socialisation does not happen). Assuming general account balances of all parties were `0` after opening the positions and all of their funds were in the margin accounts: long parties end up with balances equal to `position size * max_price` and short parties end up with `0` balances. (0016-PFUT-021) 1. When `max_price` is specified and the market is ran in a fully-collateralised mode and it has parties with open positions settling it at a price of `0` works correctly and the sum of all final settlement cashflows equals 0 (loss socialisation does not happen). Assuming general account balances of all parties were `0` after opening the positions and all of their funds were in the margin accounts: short parties end up with balances equal to `abs(position size) * max_price` and long parties end up with `0` balances. (0016-PFUT-022) 1. When `max_price` is specified and the market is ran in a fully-collateralised mode and a party opens a long position at a `max_price`, no closeout happens when mark to market settlement is carried out at a price of `0`. (0016-PFUT-023) diff --git a/protocol/colosseo-features.json b/protocol/colosseo-features.json index 0f5fac0be..f305a5af4 100644 --- a/protocol/colosseo-features.json +++ b/protocol/colosseo-features.json @@ -366,7 +366,6 @@ "0056-REWA-167" ] }, - "Spot stop orders": { "milestone": "colosseo", "acs": [ @@ -486,7 +485,8 @@ "acs": [ "0012-POSR-031", "0012-POSR-032", - "0012-POSR-033"] + "0012-POSR-033" + ] }, "Order spam": { "milestone": "colosseo_II", @@ -636,6 +636,14 @@ "0094-PRAC-008" ] }, + "Misc": { + "milestone": "genbutemple", + "acs": [ + "0016-PFUT-029", + "0016-PFUT-030", + "0016-PFUT-031" + ] + }, "Unknown": { "milestone": "unknown", "acs": []