Skip to content

Commit

Permalink
Revert "Increase conditional order trigger multiplier to 25 (#1460)"
Browse files Browse the repository at this point in the history
This reverts commit 25dbefe.
  • Loading branch information
jayy04 committed Jul 5, 2024
1 parent ae0bf05 commit 08a2ba2
Show file tree
Hide file tree
Showing 4 changed files with 37 additions and 107 deletions.
14 changes: 0 additions & 14 deletions protocol/testutil/constants/orders.go
Original file line number Diff line number Diff line change
Expand Up @@ -932,13 +932,6 @@ var (
Subticks: 50_500_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price51500_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Carl_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 100_000_000,
Subticks: 51_500_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Dave_Num0_Id2_Clob0_Sell1BTC_Price49500_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Dave_Num0, ClientId: 2, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Expand Down Expand Up @@ -1094,13 +1087,6 @@ var (
Subticks: 3_030_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price48500_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Dave_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100_000_000,
Subticks: 48_500_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlock{GoodTilBlock: 10},
}
Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price49500_GTB10 = clobtypes.Order{
OrderId: clobtypes.OrderId{SubaccountId: Dave_Num1, ClientId: 0, ClobPairId: 0},
Side: clobtypes.Order_SIDE_SELL,
Expand Down
56 changes: 0 additions & 56 deletions protocol/testutil/constants/stateful_orders.go
Original file line number Diff line number Diff line change
Expand Up @@ -871,20 +871,6 @@ var (
ConditionType: clobtypes.Order_CONDITION_TYPE_TAKE_PROFIT,
ConditionalOrderTriggerSubticks: 20,
}
ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_48700 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Alice_Num0,
ClientId: 0,
OrderFlags: clobtypes.OrderIdFlags_Conditional,
ClobPairId: 0,
},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 100_000_000,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlockTime{GoodTilBlockTime: 10},
ConditionType: clobtypes.Order_CONDITION_TYPE_TAKE_PROFIT,
ConditionalOrderTriggerSubticks: 48_700_000_000,
}
ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_49700 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Alice_Num0,
Expand Down Expand Up @@ -984,20 +970,6 @@ var (
ConditionType: clobtypes.Order_CONDITION_TYPE_STOP_LOSS,
ConditionalOrderTriggerSubticks: 50_300_000_000,
}
ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_51300 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Alice_Num0,
ClientId: 0,
OrderFlags: clobtypes.OrderIdFlags_Conditional,
ClobPairId: 0,
},
Side: clobtypes.Order_SIDE_BUY,
Quantums: 100_000_000,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlockTime{GoodTilBlockTime: 10},
ConditionType: clobtypes.Order_CONDITION_TYPE_STOP_LOSS,
ConditionalOrderTriggerSubticks: 51_300_000_000,
}
ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_50001 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Bob_Num0,
Expand Down Expand Up @@ -1040,34 +1012,6 @@ var (
ConditionType: clobtypes.Order_CONDITION_TYPE_TAKE_PROFIT,
ConditionalOrderTriggerSubticks: 50_300_000_000,
}
ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_51300 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Bob_Num0,
ClientId: 0,
OrderFlags: clobtypes.OrderIdFlags_Conditional,
ClobPairId: 0,
},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100_000_000,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlockTime{GoodTilBlockTime: 10},
ConditionType: clobtypes.Order_CONDITION_TYPE_TAKE_PROFIT,
ConditionalOrderTriggerSubticks: 51_300_000_000,
}
ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_48700 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Bob_Num0,
ClientId: 0,
OrderFlags: clobtypes.OrderIdFlags_Conditional,
ClobPairId: 0,
},
Side: clobtypes.Order_SIDE_SELL,
Quantums: 100_000_000,
Subticks: 50_000_000_000,
GoodTilOneof: &clobtypes.Order_GoodTilBlockTime{GoodTilBlockTime: 10},
ConditionType: clobtypes.Order_CONDITION_TYPE_STOP_LOSS,
ConditionalOrderTriggerSubticks: 48_700_000_000,
}
ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_49700 = clobtypes.Order{
OrderId: clobtypes.OrderId{
SubaccountId: Bob_Num0,
Expand Down
72 changes: 36 additions & 36 deletions protocol/x/clob/e2e/conditional_orders_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -1014,24 +1014,24 @@ func TestConditionalOrder_TriggeringUsingMatchedPrice(t *testing.T) {
constants.Dave_Num1_500000USD,
},
ordersForFirstBlock: []clobtypes.Order{
// Trigger price is $48,700.
constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_48700,
// Trigger price is $49,700.
constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_49700,
},
ordersForSecondBlock: []clobtypes.Order{
// Create a match with price $48,500.
// Create a match with price $49,500.
// This price can trigger the conditional order if unbounded.
// The bounded price is $50,000 - $50,000 * 2.5% = $48,750, which would not trigger the conditional order.
constants.Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price48500_GTB10,
// The bounded price is $50,000 - $50,000 * 0.5% = $49,750, which would not trigger the conditional order.
constants.Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price49500_GTB10,
constants.Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price50003_GTB10,
},

expectedExistInState: map[clobtypes.OrderId]bool{
constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_48700.OrderId: true,
constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_49995.OrderId: true,
},
expectedInTriggeredStateAfterBlock: map[uint32]map[clobtypes.OrderId]bool{
2: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_48700.OrderId: false},
3: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_48700.OrderId: false},
4: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_48700.OrderId: false},
2: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_49995.OrderId: false},
3: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_49995.OrderId: false},
4: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_TP_49995.OrderId: false},
},
},
"StopLoss/Buy conditional order is placed and not triggered by matched price": {
Expand Down Expand Up @@ -1065,24 +1065,24 @@ func TestConditionalOrder_TriggeringUsingMatchedPrice(t *testing.T) {
constants.Dave_Num1_500000USD,
},
ordersForFirstBlock: []clobtypes.Order{
// Trigger price is $51,300.
constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_51300,
// Trigger price is $50,300.
constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_50300,
},
ordersForSecondBlock: []clobtypes.Order{
// Create a match with price $51,500.
// Create a match with price $50,500.
// This price can trigger the conditional order if unbounded.
// The bounded price is $50,000 + $50,000 * 2.5% = $51,250, which would not trigger the conditional order.
constants.Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price51500_GTB10,
// The bounded price is $50,000 + $50,000 * 0.5% = $50,250, which would not trigger the conditional order.
constants.Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price50500_GTB10,
constants.Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price49997_GTB10,
},

expectedExistInState: map[clobtypes.OrderId]bool{
constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_51300.OrderId: true,
constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_50005.OrderId: true,
},
expectedInTriggeredStateAfterBlock: map[uint32]map[clobtypes.OrderId]bool{
2: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_51300.OrderId: false},
3: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_51300.OrderId: false},
4: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_51300.OrderId: false},
2: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_50005.OrderId: false},
3: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_50005.OrderId: false},
4: {constants.ConditionalOrder_Alice_Num0_Id0_Clob0_Buy1BTC_Price50000_GTBT10_SL_50005.OrderId: false},
},
},
"TakeProfit/Sell conditional order is placed and not triggered by matched price": {
Expand Down Expand Up @@ -1116,24 +1116,24 @@ func TestConditionalOrder_TriggeringUsingMatchedPrice(t *testing.T) {
constants.Dave_Num1_500000USD,
},
ordersForFirstBlock: []clobtypes.Order{
// Trigger price is $51,300.
constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_51300,
// Trigger price is $50,300.
constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_50300,
},
ordersForSecondBlock: []clobtypes.Order{
// Create a match with price $51,500.
// Create a match with price $50,500.
// This price can trigger the conditional order if unbounded.
// The bounded price is $50,000 + $50,000 * 2.5% = $51,250, which would not trigger the conditional order.
constants.Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price51500_GTB10,
// The bounded price is $50,000 + $50,000 * 0.5% = $50,250, which would not trigger the conditional order.
constants.Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price50500_GTB10,
constants.Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price49997_GTB10,
},

expectedExistInState: map[clobtypes.OrderId]bool{
constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_51300.OrderId: true,
constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_50005.OrderId: true,
},
expectedInTriggeredStateAfterBlock: map[uint32]map[clobtypes.OrderId]bool{
2: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_51300.OrderId: false},
3: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_51300.OrderId: false},
4: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_51300.OrderId: false},
2: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_50005.OrderId: false},
3: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_50005.OrderId: false},
4: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_TP_50005.OrderId: false},
},
},
"StopLoss/Sell conditional order is placed and not triggered by matched price": {
Expand Down Expand Up @@ -1167,24 +1167,24 @@ func TestConditionalOrder_TriggeringUsingMatchedPrice(t *testing.T) {
constants.Dave_Num1_500000USD,
},
ordersForFirstBlock: []clobtypes.Order{
// Trigger price is $48,700.
constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_48700,
// Trigger price is $49,700.
constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_49700,
},
ordersForSecondBlock: []clobtypes.Order{
// Create a match with price $48,500.
// Create a match with price $49,500.
// This price can trigger the conditional order if unbounded.
// The bounded price is $50,000 - $50,000 * 2.5% = $48,750, which would not trigger the conditional order.
constants.Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price48500_GTB10,
// The bounded price is $50,000 - $50,000 * 0.5% = $49,750, which would not trigger the conditional order.
constants.Order_Dave_Num1_Id0_Clob0_Sell1BTC_Price49500_GTB10,
constants.Order_Carl_Num1_Id0_Clob0_Buy1BTC_Price50003_GTB10,
},

expectedExistInState: map[clobtypes.OrderId]bool{
constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_48700.OrderId: true,
constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_49995.OrderId: true,
},
expectedInTriggeredStateAfterBlock: map[uint32]map[clobtypes.OrderId]bool{
2: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_48700.OrderId: false},
3: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_48700.OrderId: false},
4: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_48700.OrderId: false},
2: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_49995.OrderId: false},
3: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_49995.OrderId: false},
4: {constants.ConditionalOrder_Bob_Num0_Id0_Clob0_Sell1BTC_Price50000_GTBT10_SL_49995.OrderId: false},
},
},
"TakeProfit/Buy conditional order is placed and triggered immediately by matched price": {
Expand Down
2 changes: 1 addition & 1 deletion protocol/x/clob/types/constants.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,4 +25,4 @@ const StatefulOrderTimeWindow time.Duration = 95 * 24 * time.Hour // 95 days.
// The lower bound is calculated as:
//
// lower_bound = (1 - min_price_change_ppm / 1_000_000 * conditional_order_trigger_multiplier) * oracle_price
const ConditionalOrderTriggerMultiplier uint64 = 25
const ConditionalOrderTriggerMultiplier uint64 = 5

0 comments on commit 08a2ba2

Please sign in to comment.