Processing math: 60%
본문 바로가기
금융공학

키움 ELS 1호의 만기근처 평가가격의 변화

by hustler78 2022. 11. 21.
728x90
반응형

아래의 글

 

2022.11.17 - [금융이야기] - 키움 ELS 1호의 화끈한 신고식!

 

키움 ELS 1호의 화끈한 신고식!

금융공학 파트에서 ELS를 소개한 바 있습니다 ( [금융공학] - 스텝다운 ELS). ELS와 관련하여 잘 알려져 있지만, 굉장히 흥미진진한 스토리가 생각나길래 이 글을 작성합니다. 1. 레전드의 시작 : 키

sine-qua-none.tistory.com

에서 다룬 ELS (키움 ELS1호)가 천신만고 끝에 상환되었음을 이야기했습니다.

 

2010.9월 키움증권에서 ELS를 론칭하는데, 그 수익률이 무리 년 30%이었습니다. 3년에 만기 상환되면 무려 90%의 수익률을 자랑했었죠. 

KT와 현대미포조선을 기초자산으로 하였는데, 중간 결과는 신통치 않았습니다. 5번의 조기상환 기회를 그냥 날리고, 무려 중간에 낙인 배리어까지 터치하는 등 퍼포먼스가 저조했었죠.

 

하지만, 꾸역꾸역 회복하던 주가는 마침내 만기상환 배리어를 극적으로 상회하며 90% 수익상환으로 막을 내리게 됩니다.

 

 

이 글의 목적은

 키움 ELS1호는 만기 근처에 그 가격이 얼마를 형성하고 있었을까?

를 알아보기 위함입니다. 원래 ELS는 다양한 조기상환과 낙인 배리어까지 고려해야 하고, 두 가지 자산이 움직이므로 가격을 계산하기가 어렵습니다. 하지만, 낙인을 이미 쳤고, 만기상환밖에 안 남은 시점에서는 가격을 계산하기가 수월해집니다.

 

스텝다운 ELS에서 설명한 복잡한 ELS 구조에서 아래 그림의 수익구조만 남습니다.

 

 

 

얼마나 무시무시하냐면, 100억을 투자한 사람이 있을 때,

 

○ 워스트포퍼머가 80 배리어를 조금이라도 넘기면 90억의 수익 발생 : 원금 포함 총 190억원 획득

○ 워스트 포퍼머가 80을 하회하면 최소 20억 손실 즉, 최대 80억 밖에 못 건지는 상황

 

안팎으로 110억에 워스트 포퍼머의 움직임이 달려있던 상황이었죠.

 

만기 5일 전부터의 상황을 정리해 보면 이렇습니다.

잔존만기 일자 현대미포조선
퍼포먼스
KT
퍼포먼스
워스트포퍼머
만기 5일전 2013-08-23 0.802 0.789 0.789
만기 4일전 2013-08-26 0.801 0.787 0.787
만기 3일전 2013-08-27 0.806 0.785 0.785
만기 2일전 2013-08-28 0.810 0.787 0.787
만기 1일전 2013-08-29 0.811 0.795 0.795
만기 2013-08-30 0.812 0.806 0.806

(만기 때 워스트 퍼포머가 0.8을 상회하며 수익 상환되는 모습)

 

 

자 이제 ELS 가격을 구해 보겠습니다.

 

 

 

ELS의 가격 구하는 과정

 

1. 주가 패스를 만들기 위한 파라미터 산출

저 당시 현대미포조선과 KT의 역사적 변동성(180일) 상관계수를 구하고, 그 당시 CD91 금리 등을 조사했더니 다음과 같은 파라미터가 산출되었습니다. (배당은 없다고 가정했습니다.)

 

구분 현대미포조선 KT
변동성 30.1% 23.2%
상관계수 0.04
무위험 이자율 2.5%

 

2. 만기 때 종가를 GBM으로 산출

현대미포조선과 KT의 퍼포먼스를 Xt,Yt, 변동성을 각각 σX,σY, 현재가를 각각 X0,Y0 라 하면 시점 t의 퍼포먼스는 각각

Xt=X0exp((r0.5σ2X)t+σXtwX)Yt=Y0exp((r0.5σ2Y)t+σYtwY) 

 

이고 wX,wY는 서로 상관계수가 ρ인 표준정규분포 난수입니다. 따라서  서로 독립인 표준정규분포 zX,zY를 뽑아

wX=zX , wY=ρzX+1ρ2zY

로 생성할 수 있습니다 ( [수학의 재미/행렬 이론] - 촐레스키 분해를 참고하시기 바랍니다.)

 

 

3. 워스트퍼포머를 산출하여 배리어와 비교, 수익 계산하기

mt=min

와 같이 만기 때 워스트포퍼머 m_t 를 산출한 후 이 친구를 배리어와 비교합니다. 넘으면 90% 수익, 아니면 워스트포퍼머만큼 손실인 것이죠. 수식으로 쓰면

 

\text{payoff} =  \begin{cases} 90\%  &,& m_t \geq 80\%\\ m_t-1 &,& otherwise \end{cases}

입니다.

 

 

4. 2~3 과정을 많이 반복하여 수익 데이터 많이 산출 후 평균(MonteCarlo Simulation)

몬테카를로 시뮬레이션을 위해 2~4를 가능한 많이 반복하여 수익 데이터를 많이 뽑아냅니다. 그런 후 이를 평균하면 평균 수익이 나오게 되죠.

 

자세한 내용은 시뮬레이션 설명을 참고해 보시기 바랍니다.

 

 

 

5.  4에서 구한 값을 현재가치로 할인하기

구하고자 하는 시점에 형성된 무위험 이자율 r과 잔존 만기 t에서 얻어지는 할인 팩터

\exp(-r\cdot t)

를 4에서 구한 값에 곱해주어 현재가치로 할인합니다. 바로 이 값이 ELS의 공정가치가 됩니다.

 

 

 

 

 

파이썬 코딩

 

파이썬으로 이 상황을 코딩하여 보겠습니다.

 

import numpy as np
from scipy.stats import multivariate_normal
from scipy.stats import norm

def kiwoom_lastChance():
    spot_series = np.array([[0.802, 0.789],
                            [0.801, 0.787],
                            [0.806, 0.785],
                            [0.81, 0.787],
                            [0.811, 0.795],
                            [0.812, 0.806]
                            ])

    maturity = np.array([5, 4, 3, 2, 1, 0])

    vol = np.array([0.301, 0.232])
    rho = 0.04
    rfr = 0.025
    drift = rfr - 0.5 * vol ** 2

    barrier = 0.8
    coupon = 0.9

    np.random.seed(seed=0)
    norm_rand = np.random.normal(size=(10000, 2))
    norm_rand_correlated = norm_rand
    norm_rand_correlated[:, 1] = rho * norm_rand[:, 0] + np.sqrt(1 - rho ** 2) * norm_rand[:, 1]

    for s, t in zip(spot_series, maturity):
        s_expected = s * np.exp(drift * t / 365 + vol * np.sqrt(t / 365) * norm_rand_correlated)
        worst_performer = np.min(s_expected, axis=1)
        payoff = np.where(worst_performer >= barrier, coupon, worst_performer - 1)
        payoff_average = payoff.mean()
        val = np.exp(-rfr * t) * payoff_average
        print('time to maturity: {} day. Values is {:.3f}'.format(t, val))

if __name__ == '__main__':
    kiwoom_lastChance()

 

간략히 살펴보겠습니다.

 

    spot_series = np.array([[0.802, 0.789],
                            [0.801, 0.787],
                            [0.806, 0.785],
                            [0.81, 0.787],
                            [0.811, 0.795],
                            [0.812, 0.806]
                            ])	#만기 5일전부터 만기때까지 두 기초자산의 퍼포먼스 : 현재가 역할을 함

    maturity = np.array([5, 4, 3, 2, 1, 0])	#만기 5일전~ 0일전

 

 


    vol = np.array([0.301, 0.232])	# 각 자산의 변동성
    rho = 0.04						# 자산 간 상관계수
    rfr = 0.025						# 무위험 이자율
    drift = rfr - 0.5 * vol ** 2	# GBM 에서 drift 항

    barrier = 0.8					# 만기상환 배리어
    coupon = 0.9					# 만기시 지급쿠폰

 

 


    np.random.seed(seed=0)		# seed 고정
    norm_rand = np.random.normal(size=(10000, 2))	#10000개의 워스트 포퍼머를 산출할 예정, 열의 2인 자산의 개수
    norm_rand_correlated = norm_rand	
    norm_rand_correlated[:, 1] = rho * norm_rand[:, 0] + np.sqrt(1 - rho ** 2) * norm_rand[:, 1]
    # Cholesky 분포로 correlated 된 난수를 산출

 

 


    for s, t in zip(spot_series, maturity):		# 만기 t일 전의 기초자산 퍼포먼스를 s라 하여 for문 돌림
        s_expected = s * np.exp(drift * t / 365 + vol * np.sqrt(t / 365) * norm_rand_correlated)
        # GBM 으로 만기 종가 생성 : s_expected는 2 원소로 이루어진 배열
        worst_performer = np.min(s_expected, axis=1)
        # 행방향으로 min을 구해서 각각의 worst_performer 10000개를 구함
        
        payoff = np.where(worst_performer >= barrier, coupon, worst_performer - 1)
        # where문을 이용하여 worst performer에 따른 수익 산출
        
        payoff_average = payoff.mean()
        # 수익의 기댓값 산출
        
        val = np.exp(-rfr * t) * payoff_average		# 수익기댓값을 할인
        print('time to maturity: {} day. Values is {:.3f}'.format(t, val))

 


결과를 보겠습니다.

 

time to maturity: 5 day. Values is -0.035
time to maturity: 4 day. Values is -0.069
time to maturity: 3 day. Values is -0.090
time to maturity: 2 day. Values is -0.081
time to maturity: 1 day. Values is 0.062
time to maturity: 0 day. Values is 0.900

결과가 어떤가요?  만기 5일 전에는 예상손익이 손실 -3.5%,  4일 전에는 -6.9% 이러다가 만기 하루 전에는 6.2% 수익.. 이런 식이었습니다. 즉, 분명히 90%의 수익을 챙길 확률이 있는데도, 손실 가능성도 역시 크게 보고 있었다는 얘기죠.

 

이를 피부로 느끼기 위해 실제 투자 집행된  50억을 이 ELS의 발행금액이라  가정해 봅시다.

 

일자 손익기대율 50억 투자시
기대손익(억원)
50억 투자시
상환금액(억원)
만기 5일전 -3.50% -1.75 48.25
만기 4일전 -6.90% -3.45 46.55
만기 3일전 -9.00% -4.5 45.5
만기 2일전 -8.10% -4.05 45.95
만기 1일전 6.20% 3.1 53.1
만기 90.00% 45 95

 

바로 전날까지 만기 기대수익이 3.1억 밖에 안되었습니다. 이를 헤지 운용한 증권사는 아주 잘 쳐줘야 3.1억만 만들어놓은 상황일 테고요. 그런데 주식이 오르면서 실제 실현된 수익이 45억으로 뻥튀기되면서, 이를 고객에게 원금 50억과 함께, 총 95억을 지급해야 됩니다. 

발행 증권사는 아무리 잘했어도 막판 기초자산 움직임 한 틱 때문에  42억 정도가 갑자기 손실로 터진 상황

입니다. 어쩌면 훨씬 더 될지도 모르죠. 헤지운용으로 만들어내지 못한 금액 42억(45 - 3.1)은 당연히 회사 돈으로 줄 수밖에 없죠.

 

 

ELS의 이러한 현상, 즉,  손익 구조의 급격한 변화에 의해 헤지 운용이 잘 안되고 손실이 발행하는 위험을 핀 리스크라 합니다, ELS의 핀리스크는 조기상환이 순연될수록 커지며, 만기로 다가올수록 더 증가하게 됩니다. 엎친데 덮친 격으로 낙인을 친 기초자산들이 회복하여 수익 배리어를 상회하게 되는 날이면, 그 손실은 걷잡을 수 없이 증가할 가능성이 있습니다.

 

 

728x90
반응형