이 페이지는 자동 번역되었습니다. 영어 원문이 정본입니다. 영어로 읽기
메인 콘텐츠로 건너뛰기

마켓메이커 보호 (MMP)

마켓메이커를 위한 체결 윈도우 제한 및 자동 취소 동작입니다.

개요

MMP는 다음과 같은 방식으로 급격한 불리한 체결로부터 마켓메이커를 보호합니다:

  1. 롤링 시간 윈도우 내에서 누적 체결 지표를 추적
  2. 제한 초과 시 주문 취소
  3. 동일한 지갑+기초자산에 대한 다른 모든 MMP 활성화 주문을 자동 취소

설정

MMP 설정 지정

엔드포인트: POST /mmp-config

요청: SetMmpConfigRequest

{
"wallet": "0x...",
"currency": "BTC",
"interval_ms": 60000,
"frozen_time_ms": 300000,
"qty_limit": 1000000,
"delta_limit": 10.0,
"vega_limit": 5.0,
"enabled": true,
"nonce": 1,
"signature": "0x..."
}

필드:

  • wallet: 지갑 주소
  • currency: 기초자산 통화 (예: "BTC", "ETH")
  • interval_ms: 롤링 윈도우 길이 (밀리초)
  • frozen_time_ms: 트리거 후 동결 지속 시간 (밀리초)
  • qty_limit: 선택적 수량 제한 (계약 단위)
  • delta_limit: 선택적 델타 제한
  • vega_limit: 선택적 베가 제한
  • enabled: 해당 지갑+통화에 대해 MMP 활성화 여부

응답: ApiResponse<MmpConfigData>

MMP 설정 조회

엔드포인트: GET /mmp-config?wallet=...&currency=...

쿼리 파라미터:

  • wallet (필수)
  • currency (선택적 필터)

응답: MmpConfigResponse

{
"success": true,
"data": [
{
"wallet_address": "0x...",
"currency": "BTC",
"interval_ms": 60000,
"frozen_time_ms": 300000,
"qty_limit": 1000000,
"delta_limit": 10.0,
"vega_limit": 5.0,
"enabled": true
}
]
}

MMP 설정 삭제

엔드포인트: DELETE /mmp-config

요청: DeleteMmpConfigRequest

{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}

응답: ApiResponse<String>

MMP 상태 초기화

엔드포인트: POST /mmp-config/reset

요청: ResetMmpRequest

{
"wallet": "0x...",
"currency": "BTC",
"nonce": 1,
"signature": "0x..."
}

응답: ApiResponse<String>

참고: MMP 체결 윈도우 상태를 초기화합니다 (누적 지표 삭제, 통화 동결 해제).

MMP 동작 (반드시 이해해야 할 사항)

체결 처리 순서

MMP 평가는 체결 이후(POST-FILL)에 이루어집니다:

  1. 엔진이 먼저 매칭하고 체결을 수락합니다
  2. 그 후 MMP가 누적 지표를 확인합니다
  3. 제한이 초과된 경우:
    • MMP가 트리거됩니다
    • 활성 주문의 잔여 수량 처리가 중단됩니다
    • 주문이 CANCELED 상태가 되며 사유는 "MMP triggered during fill processing"입니다
    • 엔진이 MmpTriggered 이벤트를 발행합니다
    • 엔진이 동일한 지갑+기초자산에 대한 다른 모든 MMP 활성화 미체결 주문을 자동 취소합니다

시사점: MMP가 트리거되기 전에 설정된 임계값을 초과하는 체결이 발생할 수 있습니다.

트리거 조건

설정된 제한 중 하나라도 초과되면 MMP가 트리거됩니다:

  • 수량 제한: cumulative_qty > qty_limit
  • 델타 제한: |cumulative_delta| > delta_limit
  • 베가 제한: |cumulative_vega| > vega_limit

누적 지표는 롤링 윈도우(interval_ms)에 걸쳐 계산됩니다.

취소 동작

MMP가 트리거되면:

  1. 활성 주문: 잔여 수량 처리가 중단되고, 주문이 CANCELED 상태가 되며 사유는 "MMP triggered during fill processing"입니다
  2. 기타 주문: 동일한 지갑+기초자산에 대한 다른 모든 MMP 활성화 미체결 주문이 "Order canceled by MMP trigger" 사유로 자동 취소됩니다

참고: MMP가 활성화된 주문만 취소됩니다. mmp_enabled=false인 주문은 영향을 받지 않습니다.

동결 동작

MMP가 트리거된 후:

  • 해당 통화는 frozen_time_ms 밀리초 동안 동결됩니다
  • 동결 상태에서는 새로운 체결이 거부될 수 있습니다 (구현에 따라 다름)

체결 지표 계산

수량

  • 출처: 체결 size (계약 단위)
  • 누적: 롤링 윈도우 내 모든 체결의 합계

델타

  • 출처: 체결 심볼과 GreeksCache로부터 계산
  • 누적: 롤링 윈도우 내 모든 체결 델타의 합계

베가

  • 출처: 체결 심볼과 GreeksCache로부터 계산
  • 누적: 롤링 윈도우 내 모든 체결 베가의 합계

롤링 윈도우

윈도우 만료 처리

interval_ms보다 오래된 체결은 윈도우에서 자동으로 제거됩니다:

  • 제거는 주기적으로 실행됩니다 (백그라운드 작업)
  • 오래된 체결이 제거될 때 누적 지표가 감소합니다

윈도우 초기화

POST /mmp-config/reset을 통해 MMP 상태를 초기화합니다:

  • 윈도우 내 모든 체결 삭제
  • 누적 지표를 0으로 초기화
  • 통화 동결 해제

MMP 이벤트

MmpTriggered 이벤트

내부 이벤트 (현재 WS 클라이언트로 전달되지 않음):

MmpTriggeredMessage {
wallet: WalletAddress,
currency: String,
reason: String, // "qty_limit" | "delta_limit" | "vega_limit"
}

모범 사례

설정

  1. 적절한 제한 설정: 리스크 허용 범위와 일반적인 체결 규모를 기반으로 설정하세요
  2. 통화별 설정 사용: 기초자산별로 설정하세요 (BTC, ETH 등)
  3. MMP 트리거 모니터링: 트리거 발생 빈도가 높다면 제한 설정이 잘못되었거나 시장 상황이 불리하다는 신호일 수 있습니다

주문 관리

  1. MMP를 선택적으로 활성화: 보호가 필요한 주문에만 mmp_enabled=true를 설정하세요
  2. 일관된 통화 사용: 동일한 기초자산에 대한 모든 주문이 MMP 설정에서 동일한 통화를 사용하도록 하세요
  3. MMP 취소 처리: MMP 트리거에 의한 취소를 감지하고 호가 제시를 조정하는 로직을 구현하세요

모니터링

  1. MMP 트리거 추적: "MMP triggered during fill processing""Order canceled by MMP trigger" 사유를 모니터링하세요
  2. 체결 윈도우 검토: MMP 설정을 통해 누적 지표를 확인하세요 (현재 API로는 노출되지 않음)
  3. 제한 조정: MMP가 너무 자주 트리거되면 제한을 높이고, 너무 드물게 트리거되면 제한을 낮추세요

일반적인 문제

MMP가 너무 자주 트리거됨

원인:

  • 일반적인 체결 규모에 비해 제한이 너무 낮음
  • 불리한 시장 상황
  • 빠른 호가 제시로 인한 다수의 체결

해결책:

  • qty_limit, delta_limit, 또는 vega_limit을 높이세요
  • interval_ms를 늘려 윈도우 내 더 많은 체결을 허용하세요
  • 호가 제시 빈도를 줄이세요

MMP가 트리거되지 않음

원인:

  • 제한이 너무 높음
  • 주문에 MMP가 활성화되지 않음 (mmp_enabled=false)
  • 통화 불일치 (MMP 설정 통화 != 주문 기초자산)

해결책:

  • 제한을 낮추세요
  • 주문에 mmp_enabled=true가 설정되어 있는지 확인하세요
  • MMP 설정 통화가 주문 기초자산과 일치하는지 확인하세요

예상치 못한 취소

증상: 예상하지 못한 상황에서 주문이 "Order canceled by MMP trigger" 사유로 취소됩니다.

원인: 동일한 지갑+기초자산에 대한 다른 주문이 MMP를 트리거했습니다.

해결책: MMP가 트리거되면 동일한 기초자산에 대한 모든 MMP 활성화 주문을 검토하세요.