토이프로젝트 정리 노트, 3부작 중 2편. 1년 만기 등가격(ATM) 콜 하나를 팔고 50스텝에 걸쳐 헤지. GBM 경로 5만 개, 거래비용 0~2% 스윕, 두 hedger를 같은 P&L 회계로 채점. 코드는 repo. 1편(변동성 예측)에 이어, 금융 배경 없이 읽도록 썼다.
신경망이 옵션 헤지에서 교과서 공식을 이길 수 있나. 답부터 말하면, 거래비용이 0에 가까운 깨끗한 세상에서는 못 이긴다. 비용이 0.5%를 넘고 가격에 점프가 끼는 순간부터 이긴다. 그리고 그 결론에 닿기 전에, 신경망이 위험을 줄이는 척하며 몰래 거래만 줄이던 버그를 먼저 잡아야 했다.
콜을 판다는 것
콜 옵션은 "미래에 정해진 가격(행사가)에 주식을 살 권리"를 사고파는 계약이다. 파는 쪽은 수수료(프리미엄)를 받는다. 대신 주가가 행사가 위로 치솟으면 그 차액을 물어줘야 한다. 받는 돈은 정해져 있고, 물어줄 돈은 천장이 없다.

은행은 고객에게 옵션을 팔고(영업), 그 위험을 주식 매매로 상쇄한다(트레이딩). 이 상쇄가 헤지다. 완벽히 헤지하면 주가가 어디로 가든 손익이 0 근처에 묶이고, 받은 프리미엄만 남는다. 몇 주를 들고 있어야 상쇄되는지를 알려주는 게 델타고, 그 델타를 매 순간 따라가는 게 Black-Scholes(BS) 델타 헤지다.
문제는 BS가 깨끗한 세상을 가정한다는 데 있다. 공짜로, 연속으로, 가격이 매끄럽게 움직인다는 가정. 현실에는 거래할 때마다 비용이 들고, 가격은 가끔 점프한다. 그래서 교과서 헤지는 늘 조금씩 어긋난다. 신경망이 그 틈을 데이터로 직접 메울 수 있을까.
hedger를 학습시키는 법
신경망 hedger는 매 스텝에서 현재 주가, 남은 시간, 지금 들고 있는 주식 수를 보고 "다음에 몇 주를 들지"를 정하는 작은 네트워크다. 수천 개의 가상 경로 위에서 헤지를 돌려보고, 결과 손익의 꼬리 위험을 재서, 그 꼬리가 덜 나빠지도록 역전파로 조금씩 고친다.
꼬리 위험은 CVaR로 잰다. 최악 5% 시나리오의 평균 손실이다. 데스크를 터뜨리는 건 평균적인 날이 아니라 꼬리라서, 평균이 아니라 이 꼬리를 본다.
첫 판은 처참했다
신경망 hedger가 모든 비용 수준에서 BS 델타한테 졌다. 비용이 커질수록 더 크게 졌다. 깨끗한 GBM 세상에서는 ML이 안 먹히나 싶었다.
그런데 숫자 하나가 안 맞았다. 비용 0에서 학습이 최소화했다고 보고한 목적함수 값은 약 7.2인데, 같은 모델로 실제 측정한 꼬리 위험(CVaR)은 약 2.75였다. 둘이 같은 걸 재고 있다면 붙어 있어야 한다. 3배 가까이 벌어졌다.
범인은 목적함수였다. 처음엔 Rockafellar-Uryasev라는 CVaR 공식을 썼는데, 거기 들어가는 VaR 값 w를 신경망과 함께 학습되도록 풀어뒀다. w가 제대로 수렴하지 못하고 진짜 VaR보다 낮게 깔리면, 이 공식은 슬그머니 '평균 손익 최대화'로 변질된다. 비용이 있는 세상에서 평균을 키우는 답은 단순하다. 거래를 덜 해라. 그래서 신경망은 헤지를 살살 하는 법을 배웠다. 평균 손익은 좋아 보였고, 꼬리는 더 두꺼워졌다. 위험을 줄이라고 시켰는데 위험을 키우고 있었다.
고친 방법은 목적함수를 파라미터 없는 top-k Expected Shortfall로 바꾼 것이다. 최악 k개(상위 5%) 손실의 평균을 직접 최소화한다. 첫 gradient부터 꼬리만 본다. 바꾸고 나니 학습 점수와 실측 CVaR이 일치했고, 그제서야 기대한 결과가 나왔다. 교훈은 한 줄이다. 모델이 내가 줄이라고 한 그것을 줄이고 있는지부터 확인할 것.
고치고 나서: 비용이 갈림길

비용이 0일 때는 BS 델타가 이긴다(2.28 vs 2.63). 이건 실패가 아니라 정답이다. 등가격, 매끄러운 GBM, 일정한 변동성, 비례 비용만 있는 세상에서 BS 델타는 이미 최적이라, 신경망은 그걸 흉내 내며 약간의 오차만 더할 뿐이다. 짜낼 게 없다.
비용이 0.5%를 넘으면 뒤집힌다. 2%에서 신경망은 꼬리 위험을 11.80에서 7.85로, 3분의 1쯤 깎는다. 평균 비용 손실도 -6.62에서 -4.54로 함께 줄인다(약 31%). 비용을 의식해 "꼭 필요할 때만 거래하는" 무거래 밴드 같은 행동을 스스로 배운 건데, 비용에 눈먼 BS 델타는 이걸 못 한다. 한 번의 운 좋은 학습일까 싶어 비용마다 시드 3개로 재학습했더니, 비용 0.5% 이상에서는 세 시드 모두 신경망이 이겼다(시드 간 편차 std ≤ 0.15). 교차는 시드 우연이 아니다.
우위가 커지는 곳
GBM은 BS 델타에게 가장 유리한 세상이다. 진짜 시험은 그 가정이 깨지는 시장이다. 같은 비용(1%)에서, 각 시장마다 공정한 가격을 똑같이 주고(가격 오류가 아니라 헤지 품질만 비교) 신경망의 CVaR 개선폭을 시드 3개로 쟀다.
| 시장 | 무엇이 깨지나 | BS CVaR | 신경망 CVaR | 개선폭 (3시드) |
|---|---|---|---|---|
| GBM | 없음 (BS가 정답) | 6.91 | 5.45 | 21.2% ± 1.8 |
| Heston 확률변동성 | 변동성이 숨어 움직임 | 9.92 | 7.64 | 23.0% ± 0.9 |
| Merton 점프확산 | 가격이 갑자기 점프 | 16.21 | 11.83 | 27.0% ± 0.4 |
점프가 끼면 우위가 확실히 커진다. Merton의 개선폭 밴드 [26.6, 27.5]는 GBM의 [18.8, 23.0] 위에 완전히 떨어져 있다. 연속적인 델타 공식은 구조적으로 점프 갭을 헤지할 수 없고, 학습된 정책은 그걸 꽤 회복한다. 반면 Heston은 밴드가 GBM과 겹쳐서, 깨끗한 우열을 주장하지 않는다. 이 Heston 세팅이 교과서에서 살짝만 벗어난 약한 설정(v0 = θ = 0.04)이라, 시장은 더 어려워졌지만 신경망이 추가로 짜낼 구조는 적었던 것으로 보인다. 내 추측인데, v0를 장기 평균에서 떼어 놓거나 변동성의 변동성을 키우면 진짜 Heston 우위가 열릴 것 같다. 확인은 다음 과제.
1편을 끼워 넣으면
여기까진 변동성을 0.2로 고정했다. 1편에서 예측한 SPY의 실제 변동성(HAR 한스텝 예측 σ ≈ 0.074)을 이 hedger에 직접 먹여봤다. 그리고 현실적인 질문을 던졌다. 데스크는 자기 예측 σ로 헤지하는데 시장이 다른 변동성을 실현하면 어떻게 되나.
신경망은 예측이 빗나가는 전 구간에서 우위를 유지했다. 다만 정직하게 보면, 더 우아하게 버틴 건 아니다. 예측 대비 실현 변동성이 3배로 튈 때 상대적 악화율은 BS가 약 4.1배, 신경망이 약 4.3배로 비슷하다. 신경망이 예측 오차를 더 잘 흡수한 게 아니라, 그냥 낮은 데서 시작해 낮게 유지될 뿐이다.
남는 것
이 시장들(GBM, Merton, Heston)은 실제 옵션 가격에 맞춰 보정한 게 아니라 손으로 정한 파라미터다. 결론은 방향성이지 보정된 손익 연구가 아니다. 다음 probe는 Merton과 Heston을 실제 옵션 곡면에 맞추고, 주식 하나가 아니라 다른 옵션으로도 헤지해 베가까지 잡는 것. 그리고 비용뿐 아니라 시장 국면까지 입력으로 받는 단일 정책.
3편은 헤지를 떠나 호가창 자체로 내려간다. 매수·매도 주문의 불균형(order flow)이 다음 순간 가격이 어디로 갈지를 정말 말해주는지. 거기서는 단순한 게 또 한 번 이긴다.
Setup: sell one 1y ATM European call (S₀=K=100, σ=20%, r=0), 50-step hedge along 50k GBM paths. Risk = empirical CVaR₉₅ (mean of worst 5% P&L). Proportional cost 0–2%. Multi-seed (3) on the deep hedger; BS delta is deterministic. Markets GBM/Merton/Heston use fixed hand-set parameters, not calibrated to an option surface.