예전 글
2022.07.28 - [금융공학] - 선도와 선물 #1 : 선도와
2022.07.28 - [금융공학] - 선도와 선물 #2 : 선물(futures)에서 가장 유명한 파생상품 중 하나인 선물(futures)과 선도(forward)를 다뤘습니다.
이번 글에서는 선물과 더불어 파생상품의 양대산맥인 옵션에 대해서 알아보겠습니다.
옵션이란?
옵션(option)
정해진 미래(만기)에 정해진 가격(행사가)으로 기초자산을 사거나 팔 수 있는 권리입니다.
살 수 있는 권리는 콜옵션(call option) , 팔 수 있는 권리는 풋옵션(put option)이라 합니다.
옵션은 권리이므로, 만기 때 이 옵션을 가지고 있는 사람은 권리를 행사할 수도, 권리를 포기할 수도 있습니다.
옵션의 매수, 매도
그런데 옵션을 가진 사람이라는 뜻은, 누군가는 옵션을 만들어 이 사람에게 팔았다는 뜻이겠죠. 즉, 옵션도 매수, 매도 개념이 있습니다. 옵션을 가진 자(즉, 옵션을 매수한 자)는 나중에 상황 봐서 권리를 행사하든 말든 하겠지만, 이 사람에게 옵션을 대준 자(즉, 옵션 매도한 자)는 권리가 아닙니다. 옵션 매수자가 권리를 행사하면 그 권리에 맞는 약속을 반드시 이행합니다.
옵션 매수와 매도를 이해해 보기 위해 아래 가상 시나리오를 설정했습니다.
위의 그림은 실제와 다르지만, 옵션 거래에 대한 많은 특징을 나타내주고 있습니다.
○ 내가 어떤 권리를 행사하고 싶을 때는 우선 거래상대방을 찾아야 합니다. 나는 권리를 사는 것이고, 거래상대방은 권리를 파는 것입니다.
○ 권리는 아무리 실현 불가능해 보이더라도, 조그이라도 금액을 지불합니다. 이 금액을 옵션의 프리미엄이라고 합니다. 아무리 실현 불가능해 보이더라도 위 신풍제약처럼 폭등할 수가 있기 때문이죠.
○ 옵션 매도자는 얼마라도 받아야 거래에 응하게 되죠. 이 값이 바로 옵션 프리미엄입니다. 옵션 매도자의 무서운 현실은, 옵션이 권리가 아니고 의무라는 것입니다. 옵션 매수자가 권리를 행사하게 되면 반드시 응해야 합니다. (신풍제약 124,000원짜리를 7,240원에 살 권리를 행사하면 매도한 사람은 찍소리 않고 신풍제약 주식을 넘겨줘야 하는 것이죠)
옵션 매도의 무서움이 여기에서 나오는 것입니다. 손실이 어마무시해질 수 있는 것이죠
○ 반면에 옵션 매수자는 복권을 사는 심정일 수도 있습니다. 권리 행사가 불가능해 보이는 상황이라도 조금의 프리미엄만 지불하고 기다리면 희박한 확률이나마 대박을 거머쥘 수도 있으니까요(신풍제약처럼) 하지만 대박의 기회는 좀처럼 않고 거의 대부분 옵션 프리미엄만큼 날리게 되는 겁니다. 극단적으로 로또 매주 사는 사람들과 같은 원리죠.
옵션의 페이오프 구조
옵션은 기초자산을 특정가격으로 사거나 파는 권리라 했습니다. 권리라 하니, 법에 등장하고 인간관계를 다루는 인문학에서 주로 쓰일 단어 같지만 의외로 심플한 수학적 표현이 가능합니다.
옵션의 특정 미래, 즉 만기를 $T$라 하고, 특정 가격을 행사가(strike)라 부르고 $K$라 쓰겠습니다.
콜옵션(call option)
기초자산을 살 수 있는 권리라 했습니다. 만기 때의 기초자산 가격을 $S_T$라 합시다.
만일 $S_T >K$라 하면, 이 기초자산을 $K$에 시세보다 싸게 살 수 있으므로 권리를 당연히 행사하겠죠. 바로 차익만
$$ S_T-K$$ 가 됩니다. 만일 기초자산이 $K$보다 싸다고 하면 $K$에 살 바보는 없겠죠. 당연히 권리를 포기하게 됩니다. 이 때는 페이오프 자체가 없으므로 $0$이 됩니다. 따라서 이것을 종합해 보면
$$\max(S_T-K, 0)$$
이 됩니다.
풋옵션(put option)
풋옵션은 기초자산을 팔 수 있는 권리입니다. 만일 $K$가 $S_T$보다 크다면, 싼 주식($S_T$)을 비싼 값($K$)에 파는 것이므로 바로 수익
$$ K-S_T $$
가 발생하지요. 반면 $S_T$가 $K$보다 비싸다면, 비싼 주식을 싸게 팔 바보는 없으므로 옵션의 권리를 포기하게 됩니다. 종합해 보면 풋옵션의 페이오프는
$$\max(K-S_T,0)$$
가 됩니다.
그림으로 이해해 보죠.
해당 그래프를 그린 python code는 아래와 같습니다.
import numpy as np
import matplotlib.pyplot as plt
def option_payoff():
strike = 100
stock = np.linspace(0, 200, 201)
call_payoff = np.array([np.max([s-strike,0]) for s in stock])
put_payoff = np.array([np.max([strike-s,0]) for s in stock])
print(stock)
print(call_payoff)
plt.figure(figsize=(20,10))
plt.suptitle('option payoff', fontsize = 20)
plt.subplot(1,2,1)
plt.plot(stock, call_payoff, 'c-')
plt.title('call option')
plt.subplot(1,2,2)
plt.plot(stock, put_payoff, 'm-')
plt.title('put option')
plt.show()
if __name__ == '__main__':
option_payoff()
○ 주의할 점 numpy.max 나 numpy.min을 쓸 때, 리스트 형이 아닌 numpy.max(-1,0)을 하니 값이 -1이 나옵니다. 아무래도 두 번째 인자 0은 axis를 컨트롤하는 숫자로 작용하는 것 같아요. 따라서
call_payoff = np.array([np.max([s-strike,0]) for s in stock])
put_payoff = np.array([np.max([strike-s,0]) for s in stock])
위의 코드처럼 np.max 안에 s-strike, 0 을 list형으로 묶어 줘야 합니다.
콜옵션과 풋옵션의 관계
콜옵션, 풋옵션의 만기 페이오프가 다소 복잡해 보이지만, 다소 강력한 관계를 가지고 있습니다.
같은 행사가를 가진 콜옵션 페이오프와 풋옵션 페이오프의 차이를 그래프로 그려봤습니다.
cyan(옥색) 색은 call payoff 에서 put payoff를 뺀 값입니다. 선형이 나오죠. 이를 수식으로도 증명할 수 있습니다.
$$ \max(S -K ,0) -\max(K-S,0)$$
은, 만일 $S>K$이면 앞의 max만 살아남아 $S-K$가 되고, $S\leq K$면 준식은 $0-(K-S)=S-K$ 이므로 어느 경우에나
$$S-K$$
가 나옵니다. 해당 코드는 아래 코드를 실행하여 보면 됩니다.
def call_put_relation():
strike = 100
stock = np.linspace(0, 200, 201)
call_payoff = np.array([np.max([s - strike, 0]) for s in stock])
put_payoff = np.array([np.max([strike - s, 0]) for s in stock])
call_minus_put = call_payoff - put_payoff
plt.plot(stock, call_payoff, 'r', linewidth= 3, label='call')
plt.plot(stock, put_payoff, 'b', linewidth = 3, label='put')
plt.plot(stock, call_minus_put, 'c', linestyle= '-.', label='call minus put')
plt.xlabel('stock')
plt.ylabel('payoff')
plt.text(strike, -10, 'Strike')
plt.legend()
plt.show()
위의 관계식은 만기 시점 $T$에 만족합니다. 그러면 현재 시점의 콜옵션과 풋옵션의 관계식은 어떻게 될까요?
다음의 포트폴리오를 생각해 봅시다.
- 콜옵션 매수: 매수 프리미엄 $c$
- 풋옵션 매도: 매도 프리미엄 $p$
- 은행 대출: $c-p$ (음수면 은행에 예금이라 생각하면 됨)
포트폴리오 | 시점 $t=0$ (현재) | 만기시점 $t=T$ |
콜옵션 매수 | $-c$ | $\max(S_T -K)$ |
풋옵션 매도 | $p$ | $-\max(K-S_T)$ |
대출 or 예금 | $c-p$ | $-(c-p)e^{rT}$ |
합 | 0 | $ (S_T-K)-(c-p)e^{rT}$ |
현재시점의 포트폴리오가 $0$으로 출발했기 때문에 만기 페이오프인
$$ (S_T-K)-(c-p)e^{rT}$$
의 현재가치가 $0$이 되어야 합니다.
$$ c-p = e^{-rT} (S_T- K)$$
이죠.
만일 연속 배당 $q$가 있는 주식의 경우에 $S_T$의 현재가치는 $S_0 e^{-qT}$입니다(이건 선물, 선도 글에서 또, 델타원 상품의 글에서 너무 많이 다뤘으므로 생략합니다.)
따라서
$$ c + Ke^{-rT} = p +S_0 e^{-qT}$$
라는 콜옵션과 풋옵션의 관계식을 얻게 되죠. 이것을 풋콜 패리티(Put Call Parity)라 합니다.
풋콜 패리티는 콜옵션과 풋옵션 가격(프리미엄)이 유의미 한지, 정합성은 있는지를 판단하는데 굉장히 유용한 지표로 쓰입니다. 뿐만 아니라 콜옵션과 풋옵션을 합성하여 선물을 만드는 기법에도 큰 역할을 합니다. 또한 옵션의 가격 계산이나 민감도 등을 구할 때도 쓰입니다.
엄청 중요한 식이므로 강조하고 마무리하도록 하겠습니다.
풋콜 패리티, put call parity
무위험 이자율 $r$, 기초자산의 연속 배당률 $q$일 때, 콜옵션과 풋옵션의 가격 $c, p$는 다음의 관계식을 만족한다.
$$ c + Ke^{-rT} = p +S_0 e^{-qT},$$
$K$는 옵션의 행사 가격(콜, 풋 동일), $T$는 만기, $S_0$는 기초자산의 현재가이다.
'금융공학' 카테고리의 다른 글
옵션 #3. 옵션 프리미엄 구하기(FDM) (0) | 2022.08.18 |
---|---|
옵션 #2. 옵션 프리미엄 구하기(Closed form) (0) | 2022.08.17 |
파생상품의 가격 결정: binomial tree로 델타원상품 가격 구하기 VBA (0) | 2022.08.13 |
파생상품의 가격 결정: binomial tree로 델타원상품 가격 구하기 (0) | 2022.08.13 |
파생상품의 가격 결정: binomial tree를 이용해 봅시다. (0) | 2022.08.12 |
댓글