← 기사 목록으로
July 15, 2026
5분 소요

TWAP vs VWAP vs POV: 실행 벤치마크 선택하기 (그리고 각각이 언제 당신을 속이는지 알기)

TWAP vs VWAP vs POV: 실행 벤치마크 선택하기 (그리고 각각이 언제 당신을 속이는지 알기)
#실행
#twap
#vwap
#pov
#implementation-shortfall
#거래량곡선
#알고리즘트레이딩
#백테스트

모든 실행 스케줄러는 거래량 예측에 대한 베팅이다. TWAP은 유동성이 시간에 걸쳐 균일하다는 데 베팅한다. VWAP은 오늘의 거래량 곡선이 어제와 비슷할 것이라는 데 베팅한다. POV는 지금 테이프에 찍히는 거래량이 지금 거래해야 할 좋은 이유라는 데 베팅한다 — 그 테이프의 일부가 바로 당신 자신이라는 사실을 포함해서다. 이 중 어느 베팅도 벤더 문서에는 베팅이라고 명시되어 있지 않다. 그래서 셋을 비교하는 대부분의 글은 기능 비교표처럼 읽힌다: TWAP은 "단순하고", VWAP은 "똑똑하고", POV는 "적응적이다." 이런 프레이밍은 어느 것이 언제, 얼마나 손실을 입히는지에 대해서는 아무것도 말해주지 않는다.

이 글은 알고리즘 트레이딩의 주문 유형에서 시작한 시리즈의 2부다. 그 글에서 우리는 각각 약 40줄짜리 파이썬으로 장난감 수준의 TWAP과 VWAP 실행기를 만들었다. 그런 실행기들은 배관 설비로서는 문제없다. 이 글은 그 배관이 숨기고 있는 모든 것에 관한 것이다: 암묵적 가정, 벤치마크 정치학, 그리고 리플레이된 오더북 데이터를 이용한 재현 가능한 정면 대결 실험이 세 알고리즘이 단순히 "다른 맛"이 아니라 서로 다른 실패 모드를 가진 서로 다른 리스크 프로파일임을 보여준다.

세 가지 스케줄러, 세 가지 숨겨진 베팅

표기법을 정하자. 크기 XX의 부모 주문을 구간 [0,T][0, T]에 걸쳐 NN개 구간으로 나누어 실행해야 한다. xix_i를 구간 ii의 자식 수량, viv_i를 구간 ii의 시장 거래량, pip_i를 구간 ii의 평균 가격이라 하자. 구간 전체에 걸친 시장 VWAP은 다음과 같다.

VWAP=ipiviivi.\mathrm{VWAP} = \frac{\sum_i p_i v_i}{\sum_i v_i}.

TWAPxi=X/Nx_i = X/N을 거래한다: 동일 시간에 동일 수량. 암묵적 가정은 유동성 — 깊이, 스프레드, 거래량 — 이 시간에 걸쳐 균일하므로 동일한 슬라이스는 동일한 임팩트를 유발한다는 것이다. 이는 지금까지 존재한 모든 시장에서 거짓이지만, 우아하게 실패한다: 스케줄이 결정론적이고, 완료가 구조적으로 보장되며, 최악의 경우라도 얇은 시간대에 고정된 클립을 넣고 그만큼 더 넓은 스프레드를 지불하는 정도다. 덜 논의되는 두 번째 가정은 아무도 지켜보고 있지 않다는 것이다. 매 60초마다 :00에 자식 주문을 발사하는 TWAP은 메트로놈이고, 메트로놈은 프론트런당한다. 진지한 TWAP은 자식 주문의 타이밍과 크기를 무작위화한다; 스케줄은 시계가 아니라 기댓값이 균일한 준-포아송 과정이어야 한다.

VWAPxi=Xuix_i = X \cdot u_i를 거래한다. 여기서 uiu_i는 구간 ii의 일일 거래량 중 예측 비중이며, iui=1\sum_i u_i = 1이다. 이제 베팅이 명시적이 된다: 과거 데이터로 추정한 곡선 {ui}\{u_i\}를 보유하고, 오늘이 그것을 따를 것이라 가정한다. 가정은 거래량이 균일하다는 것이 아니라 예측 가능하고 외생적이라는 것이다 — 곡선은 당신이 거래하는지 여부에 신경 쓰지 않는다. 예측이 좋으면 VWAP은 시장이 흡수할 수 있는 곳에 거래를 집중시키고, 시장 VWAP 대비 슬리피지는 거의 자명하게 작아진다. 예측이 나쁘면 — 예정에 없던 뉴스 이벤트가 하루 거래량의 40%를 곡선상 6%로 배정된 시간대로 몰아넣으면 — VWAP은 태연하게 낡은 스케줄을 계속 거래하고 그 차이를 당신이 떠안게 된다. VWAP은 실행 리스크를 거래량 예측 리스크로 전환한다. 그것이 전체 트레이드오프이며, VWAP 엔진에서 흥미로운 엔지니어링이 슬라이서가 아니라 예측기에 있는 이유다.

POV(percentage of volume, 참여율이라고도 함)는 예측을 포기한다: 각 구간에서 관측된 거래량의 고정 비율 γ\gammaxt=γVtx_t = \gamma \cdot V_t를 거래한다. 이는 VWAP을 압도하는 것처럼 보인다 — 그냥 따라갈 수 있는데 왜 거래량을 예측하는가? 함정은 이제 신호가 내생적이라는 데 있다. 당신 자신의 체결이 테이프에 찍힌다. 나머지 시장이 한 구간에서 MM을 거래하고 당신이 전체 테이프 거래량의 γ\gamma 비율을 목표로 한다면, 당신의 수량은 x=γ(M+x)x = \gamma(M + x)를 풀어야 한다. 즉

x=γ1γM.x = \frac{\gamma}{1-\gamma}\,M.

γ=0.10\gamma = 0.10에서는 이 보정이 미미하다(타인 거래량의 11.1%). γ=0.25\gamma = 0.25에서는 다른 모두의 흐름의 33%를 거래하는 셈이다; γ=0.5\gamma = 0.5에서는 나머지 시장 전체와 일대일로 맞먹게 되고 고정점이 발산한다. POV는 또한 TWAP과 VWAP이 모두 제공하는 유일한 보장을 포기한다: 완료 시점이 없다는 것이다. 거래량이 사라지면 당신의 스케줄도 함께 사라진다. POV의 병리 현상은 아래에서 다시 다루겠다. 별도의 절을 할애할 가치가 있기 때문이다.

나중에 중요해질 프레이밍을 하나 더 짚어두자: 이 셋 중 어느 것도 어떤 형식적 의미에서도 "최적"이 아니다. 비용-리스크 목적함수를 실제로 최소화하는 스케줄러는 Almgren–Chriss 계열이다(Almgren and Chriss, 2000, "Optimal Execution of Portfolio Transactions," Journal of Risk 3, 5–39). 이는 Almgren–Chriss와 최적 실행 스케줄 이론에서 제대로 다룬다. TWAP은 선형 임팩트 하에서 리스크 회피 계수가 0인 Almgren–Chriss의 특수 케이스다; VWAP은 거래량 가중 벤치마크 대비 추적 오차를 최소화하는 전략이다(Konishi, 2002, "Optimal slice of a VWAP trade," Journal of Financial Markets 5(2)); POV는 어떤 목적함수에도 대응하지 않는 휴리스틱이며, 바로 그 때문에 그 실패 모드가 그토록 기이한 것이다.

시장이 결코 닫히지 않을 때 거래량 곡선 추정하기

주식 문헌은 상대적으로 쉬웠다. 주식의 인트라데이 거래량은 U자형이다 — 개장 때 무겁고, 점심시간에 조용하고, 마감을 향해 다시 무거워진다. 이는 Jain and Joh(1988, "The Dependence between Hourly Prices and Trading Volume," JFQA 23(3))가 문서화했고, Admati and Pfleiderer(1988, "A Theory of Intraday Patterns: Volume and Price Variability," Review of Financial Studies 1(1))가 이론적 근거를 부여했다. 이들은 재량적 유동성 트레이더와 정보 트레이더가 시간상 내생적으로 군집한다는 것을 보였다. U자형은 개장 및 마감 경매라는 두 개의 확고한 이벤트에 고정되어 있어서 곡선이 안정적이고, 구간별 거래량 비중의 20일 이동평균만으로도 90%는 해결된다.

암호화폐에는 개장도 마감도 없으므로, 순진한 생각은 거래량이 평평해야 하고 TWAP ≈ VWAP이라는 것이다. 이 순진한 생각은 틀렸다. 암호화폐 인트라데이 거래량에는 구조가 있다 — 다만 다른 시계에 고정되어 있을 뿐이다:

세션 효과. 거래량은 그것을 거래하는 사람과 데스크의 깨어 있는 시간을 따라간다. BTC와 ETH 메이저에서 가장 무거운 대역은 미국 오후와 유럽 저녁이 겹치는 시간대(대략 UTC 13:00–21:00)이며, UTC 00:00–08:00 근처의 아시아 선반이 부차적으로 존재하고, 메이저 코인에서는 UTC 04:00–06:00 근처에 뚜렷한 저점이 나타난다. 특정 지역 소유가 집중된 알트 페어는 자국 세션 쪽으로 더 강하게 치우친다.

펀딩 타임스탬프. 무기한 선물은 고정된 UTC 시각에 펀딩을 정산한다 — 역사적으로 UTC 00:00, 08:00, 16:00에 8시간마다 이루어졌으나, Binance와 다른 거래소들은 2025–2026년 이후 많은 계약을 4시간, 심지어 1시간 정산 주기로 옮겼다. 정산 전후 몇 분간은 안정적으로 높은 거래량을 기록한다: 베이시스 트레이더가 캐리 포지션을 열고 닫으며, 펀딩 스냅샷을 게임하려는 이들이 바로 그 경계에서 거래한다. 이것들은 스파이크이지 선반이 아니다 — 30분 버킷의 곡선은 이를 포착하지만, 2시간 버킷의 곡선은 이를 평균화해 없애버려서 VWAP이 유동성이 가장 좋을 때 정확히 과소 참여하게 만든다.

주간 계절성. 메이저 코인의 주말 거래량은 구조적으로 평일보다 낮으며, UTC 일요일 저녁(아시아 월요일 아침, 그리고 BTC 선물의 CME 재개장)은 나름의 고유한 시그니처를 갖는다. 모든 요일을 하나로 뭉친 시간대별 곡선 하나는 모형 설정 오류다; 요일 × 시간대 그리드가 필요하다.

예정된 이벤트. Deribit 옵션은 UTC 08:00(금요일, 분기별 클러스터 포함)에 만기되고, 미국 매크로 지표는 UTC 12:30/14:00에 발표되며, CME 정산은 베이시스 흐름에 중요하다. 이것들은 계절성이 아니라 캘린더 피처다 — 기준 곡선을 오염시키지 말고 더미 변수로 처리해야 한다.

예측기를 영리하게 만들기 전에 정직하게 유지한다는 정신에서, 실용적인 추정기는 다음과 같다:

import pandas as pd

def volume_curve(trades: pd.DataFrame, bucket="30min") -> pd.Series:
    """day-of-week x time-of-day volume shares from a trades tape."""
    v = trades["qty"].resample(bucket).sum()
    day_total = v.groupby(v.index.date).transform("sum")
    share = v / day_total                      # fraction of that day's volume
    key = [v.index.dayofweek, v.index.time]
    curve = share.groupby(key).median()
    return curve / curve.groupby(level=0).transform("sum")  # renormalize per day

평균 대신 중앙값을 쓰는 것은 스타일상의 선택이 아니다. 암호화폐 거래량은 극도로 두꺼운 꼬리를 가지고 있다; 단 한 번의 청산 캐스케이드가 10분 만에 하루 거래량의 15%를 차지할 수 있으며, 평균 기반 곡선은 그 이후로 영원히 해당 버킷에서 스파이크를 기대하게 된다. 주식 문헌은 정적 곡선보다 더 나아갔다. Białkowski, Darolles and Le Fol(2008, "Improving VWAP strategies: A dynamic volume approach," Journal of Banking & Finance 32(9), 1709–1722)은 구간 거래량을 공통 시장 성분과 ARMA/SETAR 동학으로 모델링된 종목별 성분으로 분해하며, 이 분해가 정적인 고전적 곡선 대비 VWAP 추적 리스크를 상당히 줄인다는 것을 보인다. 암호화폐로의 번역은 직접적이다: 상위 N개 페어로부터 시장 전체 곡선을 추정하고(공통 요인이 강하다 — 펀딩 시계와 세션은 공유된다), 실시간으로 업데이트하는 평균회귀 인트라데이 프로세스로 해당 페어의 편차를 모델링하는 것이다. 더 최근에는 Genet(2025, "Deep Learning for VWAP Execution in Crypto Markets: Beyond the Volume Curve," arXiv:2502.13722)이 Binance 데이터에서 학습된 종단간 스케줄이 정적 곡선 VWAP을 능가함을 보였다 — 이는 암호화폐에서 파이프라인의 가장 약한 고리가 슬라이싱이 아니라 거래량 곡선임을 보여주는 증거다.

운영상의 요약: 모든 날을 뭉친 정적 곡선은 허수아비 VWAP이다. "암호화폐에서 VWAP이 TWAP을 겨우 이긴다"는 비교 결과를 보게 된다면, 결론을 내리기 전에 그 VWAP에 실제로 펀딩 스파이크와 평일/주말 구분이 담긴 곡선이 투입되었는지 확인하라.

펀딩 스파이크와 세션 구조가 있는 암호화폐 인트라데이 거래량 히트맵

POV의 병리: 자기 꼬리를 쫓는 알고리즘

POV의 매력 포인트는 적응성이다: 시장이 거래할 때 거래하라. 세 가지 뚜렷한 병리 현상이 이를 훼손한다.

1. 피드백 루프. 위에서 다룬 내생성은 단순한 회계상의 보정이 아니다. 당신의 자식 주문이 거래량을 만들고; 거래량이 당신의 목표를 높이고; 당신의 목표가 다시 거래량을 만든다. 적당한 γ\gamma에서는 고정점 x=γ1γMx = \frac{\gamma}{1-\gamma}M이 안정적이지만, 사후 거래 리포트가 보여주는 측정된 참여율(전체 테이프의 γ\gamma)은 당신이 없었을 때의 시장 대비 당신의 발자국을 과소평가한다(γ1γ\frac{\gamma}{1-\gamma}가 실제 값이다). 더 나쁜 것은 2차 피드백이 존재한다는 점이다: 당신의 체결이 가격을 움직이고, 가격 움직임이 모멘텀 흐름을 끌어들여 스탑을 발동시키고, 그 흐름이 테이프 거래량을 높이고, 당신의 POV 엔진은 자신이 유발한 거래량을 가속하라는 초대로 읽는다. 이는 최적 행동과 정확히 반대다 — 임팩트를 인지하는 스케줄러(합리적인 파라미터의 Almgren–Chriss, 그리고 Almgren, Thum, Hauptmann and Li, 2005, "Direct Estimation of Equity Market Impact," Risk 18(7) 같은 실증적 임팩트 추정치)는 가격을 밀어올린 후에는 속도를 늦추기를 원한다. 청산 캐스케이드는 병리적 극한이다: 거대한 테이프 거래량, 일방향 오더북, 그리고 바닐라 POV는 프린트가 찍히는 곳이라는 이유로 스퀴즈의 정점을 향해 가장 세게 매수한다.

2. 게임당하기. POV 알고는 거래량으로 촉발되는 주문 흐름 기계이며, 촉발되는 모든 것은 미끼가 될 수 있다. 대규모 참여 매수자를 의심하는 포식자는 거래량을 찍어낼 수 있다 — 규칙이 허용하는 곳에서는 자기 거래로, 아니면 그냥 소량으로 활발히 거래해서 — POV 엔진을 앞당긴 다음, 마크업된 가격에 유동성을 공급할 수 있다. 이것은 Brunnermeier and Pedersen(2005, "Predatory Trading," Journal of Finance 60(4))의 일반적 메커니즘의 소규모 사례다: 당신의 미래 수요가 과거 행동으로부터 예측 가능할 때, 다른 이들이 그것보다 먼저 거래하고 당신이 마주하는 가격 경로는 예상보다 더 나빠진다. TWAP은 시간상의 스케줄을 노출하지만, POV는 반응 함수를 노출한다. 이는 더 위험한데, 상대방이 필요할 때 이를 호출할 수 있기 때문이다.

3. 끝나지 않는 꼬리. POV에는 시계가 없다. UTC 16:00까지 BTC 500개를 사야 하는데 거래량이 14:00에 증발한다면, 순수 POV는 그냥 앉아서 기다린다 — 설계상 스스로 완료할 능력이 없는 것이다. 그래서 모든 프로덕션 POV는 최소 속도 하한선과 따라잡기 모드를 갖추고 있으며, 손실이 숨는 곳이 바로 이 따라잡기 모드다: 하루 종일 10% 참여율로 소극적으로 거래하다가, 목표 참여율의 세 배에 달하는 실효 참여율로 얇은 마감 시간대를 뚫고 남은 부모 주문의 30%를 몰아친다. 사후 거래 평균은 괜찮아 보이지만, 마지막 트랑슈의 한계 비용은 잔혹하다. POV 리포트가 이 꼬리 부분을 별도로 분리해서 보여주지 않는다면, 당신은 그 실제 비용을 본 적이 없는 것이다.

def pov_child_qty(tape_vol: float, gamma: float, remaining: float,
                  t_left_s: float, min_rate: float) -> float:
    target = gamma / (1.0 - gamma) * tape_vol   # exclude our own prints
    floor = remaining / max(t_left_s, 1.0) * CHILD_INTERVAL_S
    if t_left_s < CATCHUP_HORIZON_S:            # deadline dominates
        floor = max(floor, remaining * CHILD_INTERVAL_S / t_left_s)
    return min(remaining, max(target, floor, min_rate))

이 스니펫에서 두 가지 세부사항이 실제 역할을 한다: 목표치는 자기 자신을 제외한 테이프 거래량의 γ1γ\frac{\gamma}{1-\gamma}를 사용한다(반응 대상인 테이프에서 자신의 체결을 빼야 하는데, 놀랍게도 많은 구현이 이를 하지 않는다), 그리고 데드라인 하한선은 시간이 다 되어감에 따라 POV를 잔량에 대한 TWAP으로 전환시켜, 적어도 꼬리 비용을 예측 가능하게 만든다.

POV 피드백 루프: 체결이 거래량을 만들고, 거래량이 목표치를 높인다

벤치마크: VWAP을 이기고도 왜 돈을 잃을 수 있는가

스케줄러와 벤치마크는 별개의 선택이며, 이 둘을 혼동하는 것이 사후 거래 분석에서 가장 흔한 죄악이다. 두 벤치마크가 지배적이다.

VWAP 벤치마크 — 평균 체결가를 구간 VWAP과 비교하는 방식 — 는 Berkowitz, Logue and Noser(1988, "The Total Cost of Transactions on the NYSE," Journal of Finance 43(1))가 도입했다. 이들은 그날의 거래량 가중 가격을 기관 실행 품질을 위한 중립적 잣대로 제안했다. 이것이 업계 기본값이 된 것은 기술적 이유만큼이나 사회학적 이유 때문이다: 계산하기 쉽고, 설명하기 쉬우며, 단순히 하루에 걸쳐 거래를 분산시키기만 해도 나쁘게 보이기 어렵다.

**Implementation shortfall(도착가 기준)**은 Perold(1988, "The Implementation Shortfall: Paper Versus Reality," Journal of Portfolio Management 14(3), 4–9)에서 비롯된다: 결정이 내려진 순간의 가격 p0p_0에 대해 모든 것을 측정하라. 매수 주문 XX에 대해 체결 수량 XfX_f, 평균 가격 pˉ\bar{p}, 종료 가격 pTp_T라 하면:

IS=(pˉp0)Xf실행 비용  +  (pTp0)(XXf)기회 비용  +  수수료.\mathrm{IS} = \underbrace{(\bar{p} - p_0)\,X_f}_{\text{실행 비용}} \;+\; \underbrace{(p_T - p_0)\,(X - X_f)}_{\text{기회 비용}} \;+\; \text{수수료}.

Perold의 요점은 종이 위 포트폴리오와 실제 포트폴리오 사이의 간극이 정확히 이 값이라는 것이다 — 그리고 이 지표는 VWAP 벤치마크가 조용히 무시하는, 실행에 실패한 부분에 대해서도 비용을 청구한다는 점에 주목하라. 그 기회 비용 항이 바로 IS를 POV에 대한 유일하게 정직한 벤치마크로 만드는 요소다. POV의 대표적 실패 모드가 미체결 수량이기 때문이다.

이제 함정을 보자. VWAP을 벤치마크로 쓰는 데는 두 가지 구조적 사각지대가 있다.

자기 참조적이다. 당신의 체결은 벤치마크 안에 포함되어 있다. 당신이 구간 거래량의 30%를 차지한다면, VWAP의 약 30%가 당신 자신의 평균 가격이며, VWAP 대비 측정된 슬리피지는 당신 자신의 참여율에 의해 기계적으로 축소된다 — 주문이 크고 임팩트가 클수록 점수가 더 좋아진다. 극한에서 당신이 유일한 트레이더라면, 가격을 얼마나 심하게 움직였든 상관없이 정확히 0의 슬리피지로 VWAP을 이긴다. VWAP 슬리피지는 비용이 아니라 스케줄 준수도를 측정한다.

결정 시점 대비 드리프트를 무시한다. 구체적인 숫자로 보자: 결정 가격 $60,000에서 BTC 100개를 매수하기로 결정한다. 시장이 오후 내내 상승 추세를 보여 구간 VWAP은 $60,320을 기록하고, 당신은 평균 $60,290에 체결된다. VWAP 리포트: –5bp, 벤치마크 대비 우수, 데스크는 초록불을 받는다. 도착가 리포트: BTC 100개에 대해 결정가 대비 $290를 더 지불했다 — +48bp, $29,000의 implementation shortfall. 두 숫자 모두 정확하다. 그러나 그중 하나만이 돈이다. 그리고 인센티브 왜곡은 더 깊다: VWAP으로 평가받는 트레이더는 추세가 있는 날에는 속도를 늦춰야 한다(거래를 분산할수록 벤치마크를 더 잘 추적하니까). 이는 가격이 당신으로부터 멀어지고 있을 때 shortfall을 최소화하는 것과는 정확히 반대다. 벤치마크는 비용을 잘못 측정할 뿐 아니라 — 잘못된 행동을 처방한다. Kissell(2013, The Science of Algorithmic Trading and Portfolio Management, Academic Press)은 이 벤치마크 선택 문제를 상세히 다룬다. 그의 프레이밍은 새겨둘 가치가 있다: 벤치마크는 누구의 리스크를 관리하고 있는지를 인코딩한다. VWAP은 실행 데스크의 체면 리스크를 관리한다. 도착가는 포트폴리오의 손익을 관리한다.

실용적인 해법: 전략은 implementation shortfall로 평가하라; VWAP 슬리피지는 진단용으로 사용하라(드리프트가 당신과 벤치마크 모두에 영향을 미치므로, 스케줄링 능력과 타이밍 운을 분리해준다); 그리고 구간 거래량의 10%를 넘는 주문을 낸 사람이 참여율을 함께 명시하지 않고 VWAP 슬리피지만 인용하도록 두지 마라.

실험: 세 알고리즘, 하나의 테이프

정의를 확정했으니, 비교 기사들이 결코 하지 않는 것을 해보자: 동일한 리플레이 데이터 위에서 동일한 부모 주문에 대해 세 스케줄러를 실행하고 형용사가 아니라 비용 분포를 살펴보는 것이다. 이 하니스는 체결 시뮬레이션: 부분 체결, 큐 포지션, 그리고 당신의 백테스트 체결이 거짓말인 이유에서 설명한 이벤트 기반 체결 시뮬레이터 위에서 돌아간다 — 리플레이된 L2 뎁스, 자식 지정가 주문은 큐 포지션을 획득하고, 공격적인 자식 주문은 오더북을 뚫고 지나가며, 우리의 체결이 스케줄러가 관측하는 테이프를 교란한다(이는 앞서의 피드백 절에서 다뤘듯 POV에 엄청나게 중요하다).

설정은 다음과 같다. 여러분 자신의 데이터로 재현할 수 있다:

  • 상품/데이터: BTCUSDT 무기한 선물, 90일간의 L2 리플레이(상위 20레벨, 100ms) + 체결 테이프.
  • 부모 주문: 알고리즘당 500건, 알고리즘 간 동일: 무작위 시작 시각, 구간 T=4T = 4시간, 크기는 30일 후행 ADV의 0.75%(임팩트가 실재할 만큼 크면서도 셋 다 그럴듯하게 완료할 수 있을 만큼 작은 크기), 매수 사이드, 결정 가격 = 시작 시점 중간가.
  • TWAP: 48개 자식 슬라이스, ±30% 타이밍/크기 지터.
  • VWAP: 30분 단위 요일 × 시간대 중앙값 곡선(위의 추정기), 매주 재적합, 인트라데이 업데이트 없음 — 의도적으로 단순한 버전.
  • POV: 자기 제외 테이프 거래량의 γ=12%\gamma = 12\%, 최소 속도 하한선, 마지막 30분간 TWAP 따라잡기.
  • 지표: 결정 가격 대비 bp 단위의 IS(수수료 포함), bp 단위의 VWAP 슬리피지, 완료율, 그리고 — 아무도 리포트하지 않는 것 — 각 부모 주문의 마지막 4분위 구간의 IS.

우리 실행에서 얻은 대표적인 결과다(여러분의 숫자는 다르겠지만, 형태는 다르지 않을 것이다):

Metric (bps vs arrival) TWAP VWAP POV 12%
Mean IS 11.8 9.6 8.9
Median IS 9.1 7.7 6.4
Std of IS 21.5 19.8 26.3
95th percentile IS 46 41 58
Mean VWAP slippage +1.9 +0.4 –0.8
Completion at T 100% 100% 96.4%
Mean IS, final quartile of parent 12.5 10.2 19.7

중요도가 높아지는 순서로 세 가지 해석을 짚어보자:

평균은 POV를 좋게 포장하고, 꼬리는 POV를 유죄로 만든다. POV는 평균과 중앙값 IS에서 이긴다 — 실현된 유동성에 적응하는 것은 정적 곡선 대비 실제로 몇 bp의 가치가 있다. 하지만 IS 표준편차와 95번째 백분위수는 셋 중 최악이고, 완료율은 100%가 아니며, 마지막 4분위 비용은 헤드라인 수치의 두 배가 넘는다: 끝나지 않는 꼬리와 따라잡기 모드가 평균이 숨기는 바로 그곳에 비용을 집중시킨다. 부모 주문이 알파 기반이고 확고한 데드라인이 있다면, 중요한 숫자는 바로 그 꼬리이며, POV의 평균 우위는 그것을 상쇄하지 못한다.

VWAP이 TWAP 대비 갖는 우위는 정확히 예측 품질에 달려 있다. 실현된 거래량 곡선 오차(예측 uiu_i와 실현 비중 사이의 L1L_1 거리)로 VWAP–TWAP IS 격차를 조건부로 살펴보면 관계는 단조적이다: 예측이 가장 좋은 3분위 날들에서 VWAP은 TWAP을 약 4bp 앞서고; 예측이 가장 나쁜 3분위 날들에서는 격차가 노이즈 범위 안에 있거나 때로는 뒤집힌다. 암호화폐에서는 예측이 가장 나쁜 3분위가 무작위가 아니다 — 캐스케이드가 발생한 날과 뉴스가 있는 날인데, 이는 전반적으로도 비용이 가장 높은 날이기도 하다. VWAP은 어차피 쉬운 날에 더 좋은 성과를 냄으로써 평균을 개선하는 셈이다.

VWAP 슬리피지와 IS는 알고리즘의 순위를 다르게 매긴다. POV는 음의 평균 VWAP 슬리피지를 기록한다 — 당연하다. 바로 그 벤치마크를 정의하는 거래량에 비례해서 거래하고, 그 체결이 벤치마크 안에 들어앉아 있으니까. VWAP 스코어보드로는 POV가 여기서 최고의 알고리즘이다; 도착가 스코어보드와 완료 리스크로는 가장 위험한 알고리즘이다. 같은 테이프, 같은 체결인데 정반대의 결론이다 — 이것이 바로 앞 절의 논지를 표로 옮겨놓은 것이다.

TWAP, VWAP, POV의 implementation shortfall 분포

이 하니스 자체는 체결 시뮬레이터 주변에 약 50줄로 이루어져 있으며 매 순간 그럴 가치가 있다. 스케줄러 선택을 취향 논쟁에서 측정으로 전환시켜주기 때문이다:

for parent in sample_parents(n=500, horizon="4h", adv_frac=0.0075):
    for algo in (twap, vwap, pov):
        sim = ReplaySim(l2_stream(parent.window), fees=TAKER_MAKER)
        fills = sim.run(algo.schedule(parent))          # fills perturb the tape
        report(parent, algo, is_bps(fills, parent.p0),
               vwap_slip_bps(fills, sim.tape), fills.completion)

실전에서 선택하기

이 모든 것에서 나오는 정직한 선택 규칙은 다음과 같다:

  • 확고한 데드라인, 알파 기반 부모 주문: TWAP 또는 프론트 로드된 Almgren–Chriss 스케줄. 평평한 유동성이라는 세금을 지불하고; 완료 보장과 제한된 꼬리를 사라. 자식 주문을 무작위화하라.
  • 벤치마크 기반 흐름(문자 그대로 VWAP으로 평가받는 경우), 또는 평범한 날의 대량 주문: VWAP — 그리고 엔지니어링 예산을 거래량 예측기에 투입하라: 요일 그리드, 펀딩 스파이크 해상도, Białkowski–Darolles–Le Fol 방식의 인트라데이 동적 업데이트. 게으른 곡선을 가진 VWAP 엔진은 단계만 추가된 TWAP일 뿐이다.
  • 기회주의적, 확고한 데드라인 없음, 유동성에 민감함: 자기 제외 거래량으로 계산한 적당한 γ\gamma(≤15%)의 POV, 캐스케이드 필터(테이프 거래량 z-스코어가 폭발하면 참여율 상한 설정)와 별도로 비용을 측정하는 데드라인 폴백을 갖춘 형태로.
  • 무엇을 운용하든: Perold를 따라 도착가 대비 implementation shortfall로 평가하라. VWAP 슬리피지는 스케줄링 능력의 진단 도구로만 유지하고, 절대 스코어보드로 삼지 마라 — 스코어보드는 돈으로 표시되어야 하며, 오직 도착가만이 그렇다.

그리고 이 실험이 계속해서 강조하는 메타 규칙: 여러분 자신의 리플레이 데이터에서 평균이 아니라 분포를 비교하라. 스케줄러는 거래량 예측에 대한 베팅이며, 꼬리를 무시한 채 평균 지급액으로 베팅을 평가해서는 안 된다 — 그것이 바로 시장이 당신에게 POV를 팔아넘기는 방식이다.

blog.disclaimer

Authors

Eugen Soloviov
Eugen Soloviov

Trading-systems engineer

Trading-systems engineer building bots since 2017: cross-exchange arbitrage (connected up to 30 venues), cointegration-based pairs arbitrage across spot and futures, scalping, news and sentiment-driven strategies, trend algorithms, and portfolio management and balancing algorithms. Also builds sub-millisecond order execution, big-data warehouses, backtesting engines, AI agents, and trading interfaces (incl. open-source profitmaker.cc). Stack: JS/TS, Python, Rust/Zig/Go, DevOps, backend, frontend, architecture.

Newsletter

시장에서 앞서 나가세요

뉴스레터를 구독하여 독점적인 AI 트레이딩 통찰력, 시장 분석 및 플랫폼 업데이트를 받아보세요.

귀하의 개인정보를 존중합니다. 언제든지 구독을 취소할 수 있습니다.