파생 프라이싱 강의 다음 실습이 몬테카를로였습니다. 폴더에는 「6장 금융에서의 몬테카를로 시뮬레이션 실행 캡처」가 남아 있습니다. 화면은 경로가 부채처럼 퍼지는 그림이었습니다. 그 그림만 보면 난수를 많이 뽑으면 뭔가 정답에 가까워지는 마술처럼 보입니다. 검수자 자리에서는 반대입니다. 난수의 개수보다, 어떤 측도로 어떤 페이오프를 평균하는가가 먼저입니다.
블랙-숄즈 닫힌 해가 있는 유럽 바닐라는, 몬테카를로를 쓰기 전에 닫힌 해와 같은 입력을 넣었을 때 숫자가 붙는지부터 봅니다. 그 대조가 실패하면 경로 수는 의미가 없습니다. 닫힌 해가 없는 배리어·아시아안·다중 자산으로 가기 전에, 바닐라에서 엔진이 살아 있는지 확인하는 것이 실습의 진짜 숙제였습니다.
몬테카를로 코드 리뷰의 첫 질문은 “경로를 몇 개 뽑았는가”가 아닙니다. “위험중립 측도로 할인된 페이오프를 평균하고 있는가”입니다.
실습이 보여 주려던 세 층
| 층 | 하는 일 | 자주 깨지는 지점 |
|---|---|---|
| 난수 | 표준정규 또는 균등을 뽑아 브라운 증분을 만듭니다 | 시드 없음, 전역 난수, 같은 시드로 두 자산을 독립이라 주장 |
| 경로 | 기하브라운 등으로 S를 앞으로 밀고 페이오프를 계산합니다 | 드리프트에 μ를 넣고 위험중립이 아님, 시간 격자 Δt 단위 실수 |
| 추정 | 할인 평균과 표준오차를 냅니다 | 오차 없이 점추정만, 분산 감소를 켰는지 로그에 없음 |
왜 오차가 1/√N으로만 줄어드는가
몬테카를로 추정의 표준오차는 경로 수 N의 제곱근에 반비례해서 줄어듭니다. 오차를 절반으로 줄이려면 경로 수를 4배로 늘려야 하고, 10분의 1로 줄이려면 100배가 필요합니다. 이 수렴 속도는 차원(자산 수)과 무관하다는 것이 몬테카를로의 강점이지만, 동시에 “많이 돌리면 정확해진다”는 말이 실무에서는 계산 비용 없이 공짜가 아니라는 뜻이기도 합니다.
대안으로 쓰이는 준난수(quasi-random, 예: Sobol 수열)는 잘 설계된 저차원 문제에서 O(1/N)에 가까운 더 빠른 수렴을 보이기도 합니다. 다만 고차원 배리어·바스켓 상품에서는 이 이점이 줄어들고, 표준오차 추정 자체가 준난수에서는 별도 기법(scrambling 등)을 요구합니다. 실습 노트북이 표준정규 난수만 다뤘다면, 준난수는 다음 단계로 남겨 둘 주제입니다.
닫힌 해와 붙이는 방법
유럽 콜을 예로 들면, 같은 S0, K, r, σ, T를 블랙-숄즈 식과 몬테카를로에 넣습니다. 경로 수 N을 키울수록 추정치가 식 값 주위로 줄어들어야 합니다. 한쪽으로 치우치면 보통 세 가지입니다. 할인 누락, 영업일·달력 혼선, 변동성을 연율이 아닌 구간 값으로 넣은 경우입니다.
실습 캡처의 y축이 가격이고 x축이 시간이면, 한 경로는 샘플일 뿐입니다. 가격은 많은 경로의 평균입니다. 그림의 가운데 굵은 선이 평균인지, 그냥 한 경로인지 코드에서 확인하지 않으면 발표 슬라이드만 예쁩니다.
- 바닐라 콜/풋을 닫힌 해와 대조합니다. 상대 오차 허용치를 미리 적습니다.
- 풋-콜 패리티가 몬테카를로 추정에도 대략 성립하는지 봅니다. 성립하지 않으면 페이오프 부호를 의심합니다.
- 그다음에야 배리어, 평균가, 바스켓으로 갑니다.
분산을 줄이는 것과 숫자를 꾸미는 것
안티테틱, 컨트롤 베리에이트, 중요도 샘플링은 실습에서 이름이 나옵니다. 검수에서는 “켰는가”보다 “무엇을 대조군으로 썼는가”입니다. 블랙-숄즈 바닐라를 컨트롤로 쓰는 아시아안은 이해가 됩니다. 상관 없는 다른 상품을 컨트롤로 쓰면 분산이 줄어도 편향을 모릅니다.
- 시드를 고정한 재현 스크립트가 있어야 리뷰가 됩니다.
- 표준오차를 가격 옆에 출력합니다. 점추정만 있는 노트북은 미완성입니다.
- 분산 감소를 켜기 전·후를 같은 N에서 비교합니다. N을 같이 바꾸면 효과가 섞입니다.
세 가지 분산 감소 기법을 실무에서 어떻게 나누는가
| 기법 | 원리 | 적합한 상황 |
|---|---|---|
| 안티테틱 변량 | 난수 Z와 −Z 쌍을 같은 시간 격자에서 사용, 음의 상관으로 분산 상쇄 | 구현이 가장 쉬움. 단조 페이오프에서 효과가 큼 |
| 컨트롤 베리에이트 | 닫힌 해가 있는 유사 상품과의 차이만 추정 | 아시아안 대비 유럽 바닐라처럼 상관이 높은 대조군이 있을 때 |
| 중요도 샘플링 | 확률측도를 바꿔 희귀 사건(꼬리 위험)의 표본 밀도를 높임 | 배리어 옵션, 신용 위험처럼 페이오프가 드물게만 0이 아닌 경우 |
미국형 옵션과 경로 의존 상품 — 몬테카를로의 다음 난관
유럽형은 만기 시점 페이오프만 평균하면 되지만, 조기행사가 가능한 미국형 옵션은 각 시점마다 “지금 행사할지, 기다릴지”를 결정해야 합니다. 순방향으로 경로를 생성하는 몬테카를로는 이 역방향 의사결정과 원래 궁합이 나쁩니다. 실무에서는 Longstaff-Schwartz 최소자승 몬테카를로(LSM)가 표준적으로 쓰입니다. 각 시점에서 “계속 보유할 때의 기대가치”를 현재 상태변수에 대한 회귀식으로 근사하고, 그 값과 즉시행사가치를 비교해 조기행사 여부를 결정하는 방식입니다.
이 방법을 실습 엔진에 바로 얹으면 안 되는 이유가 있습니다. 회귀에 쓰는 기저함수 선택, 인더머니 경로만 회귀에 포함시키는 관행, 그리고 조기행사 경계의 편향(look-ahead bias) 문제가 별도로 검증되어야 하기 때문입니다. 유럽형 바닐라에서 엔진을 통과시키지 못한 상태로 LSM까지 확장하면, 오류가 어느 층에서 왔는지 구분할 수 없습니다.
암호화폐·주말에 그대로 쓰면 안 되는 이유
기하브라운과 일정 변동성은 주 5일, 거의 연속 거래되는 주식을 염두에 둔 이야기입니다. 24시간 거래되고 점프가 잦은 자산에 같은 난수 경로를 overnight 공백 없이 밀어 넣으면, 주말 할증이 사라집니다. 실습 엔진을 코인에 이식할 때는 달력과 점프, 자금조달 비용을 따로 적어야 합니다. 적지 않으면 그것은 시세 스케치이지 장부 가격이 아닙니다.
주문흐름(order flow) 논문 쪽 실습과 몬테카를로는 층이 다릅니다. 전자는 체결의 비대칭을 보고, 후자는 위험중립 평균입니다. 한 노트북에 둘을 섞어 “알파”라고 이름 붙이면 검수를 거절합니다.
하루 검수 체크리스트
- 입력 단위: 가격 통화, 금리 연속/이산, 변동성 연율, T의 연 단위.
- 난수: 시드, 차원(자산 수), 상관 행렬이 양정치인지.
- 측도: 드리프트가 r−q 인지 μ 인지.
- 페이오프: 만기만인지, 경로 의존인지, 조기행사인지.
- 출력: 추정, 표준오차, 닫힌 해가 있으면 차이.
- 재현: 같은 시드로 두 번 돌려 같은 숫자가 나오는지.
문제 정의와 닫힌 해 대조
실습 캡처의 경로 그림은 분포의 표본입니다. 가격은 위험중립 측도로 할인한 페이오프의 평균입니다. 유럽 콜에 동일한 S0, K, r, σ, T를 블랙-숄즈 식과 몬테카를로에 넣고, 경로 수 N을 키울 때 추정치가 식 값으로 수렴하는지 확인하지 않으면 이후 배리어·아시아안 실험은 근거가 없습니다.
estimate = exp(-r*T) * mean(payoff(paths)) stderr = exp(-r*T) * std(payoff(paths)) / sqrt(N)
시드가 고정되지 않은 노트북은 재현할 수 없으므로, 검수 대상이 아닙니다. 코인·주말 시장에 GBM을 그대로 이식하지 마십시오.
실습 노트북에서 숫자가 붙지 않을 때
닫힌 해와 어긋나면 경로를 늘리기 전에 입력을 한 장에 적습니다. S0, K, r, q, σ, T, 일수 계산(365인지 영업일인지), 할인(연속인지 이산인지). 이 일곱이 블랙-숄즈 식과 시뮬레이터에서 같아야 합니다. 실습 캡처의 굵은 선이 평균인지 한 경로인지는 범례가 아니라 코드의 mean(axis=0) 유무로 봅니다.
| 증상 | 먼저 의심할 것 | 확인 |
|---|---|---|
| 추정이 한쪽으로 치우침 | 드리프트에 μ, 할인 누락 | r−q와 exp(−rT) |
| N을 키워도 오차가 안 줄어듦 | 같은 시드를 자산 두 개에 공유 | 차원별 난수 스트림 |
| 안티테틱을 켰더니 더 벌어짐 | 홀짝 경로를 다른 Δt로 생성 | 쌍을 같은 격자에 묶음 |
분산 감소는 로그에 켜기 전·후가 있어야 한다
컨트롤 베리에이트로 바닐라를 쓰는 아시아안은 이해가 됩니다. 상관 없는 다른 만기 상품을 컨트롤로 쓰면 분산만 줄어 보입니다. 같은 N에서 켜기 전 표준오차와 켠 뒤 표준오차를 나란히 출력하지 않은 노트북은 미완성입니다. 시드를 고정한 재실행이 다른 숫자를 내면, 전역 난수 객체를 다른 셀이 소비한 것입니다. 엔진 함수 안에서 생성기를 만드십시오.
코인 시세에 GBM을 주말 없이 밀면 자금조달 비용과 점프가 사라집니다. 그것은 스케치입니다. 주문흐름 비대칭과 위험중립 평균을 한 시트에 더해 “알파”라고 이름 붙이면 검수를 거절합니다. 투자 조언이 아닙니다.
Takeaway
- 몬테카를로는 난수 개수의 자랑이 아니라, 측도와 페이오프의 평균입니다.
- 닫힌 해가 있는 바닐라에서 엔진을 통과시키지 못하면 복잡한 상품으로 가지 않습니다.
- 표준오차와 시드가 없는 결과는 재현할 수 없습니다.
- 코인·주말·점프 시장에 GBM을 그대로 이식하지 마십시오.
- 오차는 경로 수의 제곱근에 반비례합니다. 정확도를 올리려면 계산 비용이 기하급수적으로 늘어난다는 것을 먼저 받아들여야 합니다.
- 미국형·경로의존 상품은 Longstaff-Schwartz 같은 별도 방법론이 필요하며, 유럽형 검증 없이 바로 확장하면 오류 원인을 구분할 수 없습니다.
- 투자 조언이 아닙니다. 장부 가격은 내부 검증 기준이 따로 있어야 합니다.
앞선 닫힌 해 검수는 블랙-숄즈 프라이서 검수 노트에 있습니다.