결제 및 만기
Hypercall의 옵션은 유러피언 스타일이며 현금으로 결제됩니다. 만기 시 포지션은 기초자산의 기준가격을 기반으로 자동 결제되며, 결제 금액이 계정에 입금되거나 차감됩니다.
만기 시각
메인넷에서 SpaceX(SPCX) 계약은 만기일 미국 동부시간(ET) 오후 4시에 만기됩니다.
테스트넷은 현재 만기일 08:00 UTC 에 만기됩니다.
만기 시:
- 신규 주문은 거부됩니다
- 미체결 주문은 취소됩니다
- 포지션은 결제 프로세스에 진입합니다
상품 수명주기
상품은 세 가지 상태를 거칩니다:
| 상태 | 설명 | 거래 |
|---|---|---|
| Active | 정상 거래 | 가능 |
| Expired Pending Price | 오라클의 결제가격 대기 중 | 불가능 |
| Settled | 결제 완료, 포지션 종료 | 해당 없음 |
상태 전환
- Active → Expired Pending Price: 계약 만기 시각 도달
- Expired Pending Price → Settled: 결제가격 확보 및 모든 포지션 결제 완료
상품이 Expired Pending Price 상태에 진입하면 모든 미체결 주문이 취소되고 신규 주문은 "Instrument has expired"와 함께 거부됩니다.
결제가격
결제가격은 해당 기초자산에 대한 Hyperliquid 오라클 인덱스 가격의 30분 TWAP(시간가중평균가격)입니다.
| 파라미터 | 값 |
|---|---|
| 가격 소스 | Hyperliquid 오라클 (인덱스 가격) |
| TWAP 윈도우 | 30분 |
| 윈도우 종료 | 계약 만기 시각 |
오라클은 만기 30분 전부터 샘플링을 시작하여 만기 시각에 TWAP을 계산합니다.
결제에는 최종 확정된 TWAP이 필요합니다. 만기 시점에 최종 확정 가격을 사용할 수 없는 경우, 해당 상품은 Expired Pending Price 상태를 유지하며 자동으로 재시도합니다. 해당 상태에서 거래는 이미 비활성화되어 있지만, 현금 입출금은 최종 확정된 오라클 가격이 존재한 이후에만 처리됩니다.
결제 금액 계산
결제 금액은 만기 시 옵션의 내재가치로 계산됩니다:
콜옵션:
풋옵션:
여기서:
- = 결제가격 (30분 TWAP)
- = 행사가격
- = 포지션 크기 (부호 포함: 롱은 양수, 숏은 음수)
예시
롱 콜 (내가격, ITM):
- 포지션: 롱 2 BTC-100000-C
- 결제가격: $105,000
- 내재가치: max(0, 105000 - 100000) = $5,000
- 결제 금액: 10,000** (입금)
숏 콜 (내가격, ITM):
- 포지션: 숏 2 BTC-100000-C
- 결제가격: $105,000
- 결제 금액: 10,000** (차감)
롱 풋 (외가격, OTM):
- 포지션: 롱 1 BTC-100000-P
- 결제가격: $105,000
- 내재가치: max(0, 100000 - 105000) = $0
- 결제 금액: $0 (무가치 만료)
결제 프로세스
결제가 진행되는 절차:
- 가격 조회: 오라클이 30분 TWAP을 반환합니다
- 금액 계산: 각 포지션에 대한 내재가치를 계산합니다
- 현금 업데이트: 결제 금액이 계정 잔고에 추가(롱 ITM)되거나 차감(숏 ITM)됩니다
- 포지션 제거: 포지션이 종료되고 포트폴리오에서 제거됩니다
- 이벤트 발생: WebSocket을 통해
PositionExpired메시지가 전송됩니다
결제는 멱등성 보장과 함께 포지션 단위로 원자적으로 처리됩니다. 재실행이나 재시작이 이중 결제를 유발할 수 없습니다.
WebSocket 이벤트
PositionExpired
포지션이 결제될 때 전송됩니다:
{
"type": "PositionExpired",
"wallet_address": "0x...",
"symbol": "BTC-20250131-100000-C",
"position_size": 2.0,
"settlement_price": 5000.0,
"settlement_value": 10000.0,
"timestamp": 1738310400000
}
| 필드 | 설명 |
|---|---|
position_size | 부호 포함 포지션 크기 (양수 = 롱, 음수 = 숏) |
settlement_price | 계약당 내재가치 |
settlement_value | 총 현금 결제 금액 |
MarketExpired
상품이 Expired Pending Price 상태로 전환될 때 전송됩니다:
{
"type": "MarketUpdate",
"symbol": "BTC-20250131-100000-C",
"status": "MARKET_EXPIRED",
"timestamp": 1738310400000
}
API 엔드포인트
상품 상태 조회
GET /instruments/{symbol}
상품의 현재 상태(ACTIVE, EXPIRED_PENDING_PRICE, SETTLED)를 반환합니다.
결제 내역 조회
GET /settlement/history?wallet=0x...
계정의 결제 기록을 반환합니다.
응답:
{
"success": true,
"data": [
{
"symbol": "BTC-20250131-100000-C",
"position_size": 2.0,
"settlement_price": 5000.0,
"settlement_value": 10000.0,
"settled_at": 1738310400000
}
]
}
장애 처리
오라클 사용 불가
만기 시 오라클이 결제가격을 제공할 수 없는 경우:
- 상품은
Expired Pending Price상태를 유지합니다 - 시스템은 30초마다 재시도합니다
- 최종 확정 가격 대기가 지속되면 프로덕션 경보가 발생합니다
오라클 사용 가능 여부와 무관하게 만기 시점에 거래는 즉시 차단됩니다.
최종 확정 가격 지연
최종 확정 TWAP이 지연되는 경우:
- 결제가 지연됩니다
- 시스템은 최종 확정된 오라클 결제가격을 기다립니다
- 사용자에게는 상품이
Expired Pending Price상태로 유지되는 것으로 보일 수 있습니다 - 현금 결제는 재시도 경로가 최종 확정 가격을 적용한 이후에 반영됩니다
시스템 재시작
결제 상태는 데이터베이스에 저장됩니다. 시스템이 재시작되는 경우:
- 시작 시 DB에서 만기된 상품을 식별합니다
- 결제가 자동으로 계속됩니다
- 멱등성 보장으로 이중 결제가 방지됩니다
파라미터
| 파라미터 | 값 | 설명 |
|---|---|---|
| 만기 확인 주기 | 60초 | 시스템의 만기 확인 빈도 |
| TWAP 윈도우 | 30분 | 결제가격 평균 산출 구간 |
| 결제 재시도 주기 | 30초 | 가격을 사용할 수 없을 때의 재시도 빈도 |
| 최종 확정 가격 경보 임계값 | 30분 | 만기된 상품이 여전히 최종 확정 가격을 기다리는 경우 경고 |
| 지급 대기 경보 임계값 | 1시간 | 결제 지급 항목이 미적용 상태로 남아 있는 경우 심각 경보 |
모범 사례
- 만기 모니터링: 포트폴리오 엔드포인트를 통해 포지션의 만기일을 추적하세요
- 사전 계획: 결제를 피하려면 만기 전에 포지션을 종료하세요
- 결제가격 확인: 오라클 가격이 예상과 일치하는지 확인하세요
- WebSocket 구독: 실시간
PositionExpired이벤트를 수신하여 즉시 알림을 받으세요 - 증거금 버퍼 유지: 잠재적인 ITM 숏 결제에 대비해 충분한 증거금을 확보하세요
온체인 결제
메인넷에서는 결제가격이 계산 후 온체인에 게시됩니다:
- 오라클이 결제 TWAP을 계산하고 최종 만기 가격을 게시합니다.
- Exchange 컨트랙트는 게시된 결제가격을 온체인에서 검증할 수 있습니다.
- 실시간 오라클 피드는 온체인으로 스트리밍되지 않습니다. 최종 결제가격이 만기에 대한 온체인 기준입니다.
참고 문서: